From: Shivaprasad G Bhat <sbhat@linux.ibm.com>
To: Bjorn Helgaas <helgaas@kernel.org>, Avinash Roy <avinash@linux.ibm.com>
Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, bhelgaas@google.com,
npiggin@gmail.com, chleroy@kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org,
Avinash Roy <avinash.roy1@linux.ibm.com>
Subject: Re: [PATCH] PCI: quirks: Add warm reset quirk for IBM Spyre accelerator
Date: Thu, 6 Aug 2026 22:20:02 +0530 [thread overview]
Message-ID: <72ce5fa7-d12b-40e5-a4a2-f2de414088d1@linux.ibm.com> (raw)
In-Reply-To: <20260805171840.GA2126423@bhelgaas>
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 <sbhat@linux.ibm.com>
>>
>> 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 <avinash.roy1@linux.ibm.com>
>> Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
>> ---
</snip>
next prev parent reply other threads:[~2026-08-06 16:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-05 12:51 [PATCH] PCI: quirks: Add warm reset quirk for IBM Spyre accelerator Avinash Roy
2026-08-05 17:18 ` Bjorn Helgaas
2026-08-06 16:50 ` Shivaprasad G Bhat [this message]
2026-08-06 17:26 ` Bjorn Helgaas
2026-08-19 15:34 ` Avinash Roy
2026-08-19 16:05 ` Avinash Roy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=72ce5fa7-d12b-40e5-a4a2-f2de414088d1@linux.ibm.com \
--to=sbhat@linux.ibm.com \
--cc=avinash.roy1@linux.ibm.com \
--cc=avinash@linux.ibm.com \
--cc=bhelgaas@google.com \
--cc=chleroy@kernel.org \
--cc=helgaas@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.