Re: [PATCH] PCI: quirks: Add warm reset quirk for IBM Spyre accelerator
From: Shivaprasad G Bhat <hidden>
Date: 2026-08-06 16:50:32
Also in:
linux-pci, lkml
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:quoted
From: Shivaprasad G Bhat <redacted> 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
quoted
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 <redacted> Signed-off-by: Shivaprasad G Bhat <redacted> ---
</snip>