Hi Bjorn,
Thanks for taking a look.
On 8/5/26 10:48 PM, Bjorn Helgaas wrote:
On Wed, Aug 05, 2026 at 06:21:32PM +0530, Avinash Roy wrote:
From: Shivaprasad G Bhat <[email protected]>
The IBM Spyre accelerator (PCI ID 1014:06a7) requires a dedicated warm
reset method for reliable EEH recovery on pSeries/ppc64 platforms.
FLR alone is insufficient because it does not re-initialize the Spyre
firmware state machine. On ppc64 with EEH enabled,
pcibios_set_pcie_reset_state() is overridden in
arch/powerpc/kernel/eeh.c to drive the platform-level PERST# signal via
EEH PE operations, which is the correct mechanism for full device
recovery after an EEH event.
This makes it sound like this mechanism is needed for EEH recovery for
*all* devices, not just Spyre. If that's the case it sounds like we
need more than just a Spyre-specific quirk.
Now I re-read it, The second statement needs to be re-worded. It does
sound like its true for all devices. Quirk is only for the Spyre card.
Will post a v2 fixing the same.
Thanks and Regards,
Shivaprasad
The reset function is placed in arch/powerpc/platforms/pseries/pci.c
where the EEH infrastructure is already present, declared in
pseries.h, and registered in the generic pci_dev_reset_methods[] table
in drivers/pci/quirks.c under a CONFIG_PPC_PSERIES guard.
This reset method is only registered when CONFIG_PPC_PSERIES is enabled,
so it is not available on other platforms.
Reset sequence:
- Assert PERST# via pcie_warm_reset, hold 250 ms
- Deassert PERST# via pcie_deassert_reset
- Wait 250 ms for PCIe link retrain and device recovery
Signed-off-by: Avinash Roy <[email protected]>
Signed-off-by: Shivaprasad G Bhat <[email protected]>
---
</snip>