Re: [PATCH] PCI: quirks: Add warm reset quirk for IBM Spyre accelerator
Shivaprasad G Bhat <[email protected]>
| Newsgroups | org.ozlabs.lists.linuxppc-dev,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
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>