From: tasmiya <tasmiya@linux.ibm.com>
To: Harsh Prateek Bora <harshpb@linux.ibm.com>,
Shivaprasad G Bhat <sbhat@linux.ibm.com>,
maddy@linux.ibm.com, linuxppc-dev@lists.ozlabs.org
Cc: mpe@ellerman.id.au, npiggin@gmail.com, chleroy@kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] powerpc/rtas_pci: No hotplug on permanently removed device on pSeries
Date: Wed, 26 Aug 2026 16:37:16 +0530 [thread overview]
Message-ID: <6a37522d-ac3d-4992-a240-40fcd49557aa@linux.ibm.com> (raw)
In-Reply-To: <c6117753-10a7-4e10-bd8f-526a5dd8a300@linux.ibm.com>
Greetings,
Latest Patch tested
: https://lore.kernel.org/linuxppc-dev/178246517230.1267.12206176311111155505.stgit@linux.ibm.com/
I have tested latest patch in my environment. The patch fixes the issue
reported.
On 25/08/26 8:46 pm, Harsh Prateek Bora wrote:
> Hi Tasmiya,
>
> There was a v2 posted here:
> https://lore.kernel.org/linuxppc-dev/178246517230.1267.12206176311111155505.stgit@linux.ibm.com/
>
>
> Although a minor change in return value and re-ordering before
> CONFIG_BLOCKED incorporated in v2, it's better to test v2 and provide
> test feedback on the same.
>
> Thanks
> Harsh
>
> On 25/08/26 3:52 pm, tasmiya wrote:
>> Greetings,
>>
>> Tested-by: Tasmiya Nalatwad <tasmiya@linux.ibm.com>
>> Reported-by: Tasmiya Nalatwad <tasmiya@linux.ibm.com>
>>
>>
>> I have Tested the patch in my KVM guest environment with device
>> passthrough via vfio, It works fine and fixes the issue.
>> Triggered EEH freeze beyond eeh_max_freezes to permanently remove the
>> device, then hotplugged a new PCI device. Without the patch, the
>> rescan attempted to bring back the permanently removed device. With
>> the patch applied, the removed device is correctly skipped during
>> rescan and only newly hotplugged device is seen in the guest.
>>
>>
>> Thank you,
>>
>> Tasmiya
>>
>>
>> On 27/04/26 8:25 am, Shivaprasad G Bhat wrote:
>>> The eeh_driver disables and offlines the PE permanently when it
>>> exceeds the freeze count beyond eeh_max_freeze within the last hour.
>>> The PE is only offline, so the device tree entries, eeh device
>>> references are all intact till the real unplug of the device from
>>> the guest/host takes place.
>>>
>>> On pSeries, with a new hotplug of any PCI device, the drmgr initiates
>>> a system-wide PCI rescan, which finds devices offlined by the
>>> eeh_driver
>>> and there will be attempts to bring them online. This leads to
>>> recurring EEHs either at the config read time itself or a bit
>>> later depending on the type of the problem.
>>>
>>> For PowerNV, the commit d2b0f6f77ee5 ("powerpc/eeh: No hotplug on
>>> permanently removed dev") introduced the EEH_DEV_REMOVED flag to
>>> prevent such inadvertent rescans on hierarchical toplogies relavent in
>>> Baremetal setups. For pSeries, such topologies don't really make sense
>>> as the devices are either part of the same PE OR exposed as independent
>>> devices on multiple virtual PHBs. However, the inadvertent rescans are
>>> still a possibility with either hotplug of a new device or otherwise
>>> with manual system-wide pci bus rescan attempts.
>>>
>>> So the patch checks for EEH_DEV_REMOVED before allowing config space
>>> access just like PowerNV, making the PCI core omit the PE, and thus
>>> preventing subsequent EEH recurances. The patch is tested on PowerVM
>>> and KVM machines with single and multi-function devices, and on the
>>> devices behind a switch. The unplug of the affected devices post EEH
>>> removal is also working fine as expected.
>>>
>>> Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
>>> References: d2b0f6f77ee5 ("powerpc/eeh: No hotplug on permanently
>>> removed dev")
>>> ---
>>> arch/powerpc/kernel/rtas_pci.c | 6 ++++++
>>> 1 file changed, 6 insertions(+)
>>>
>>> diff --git a/arch/powerpc/kernel/rtas_pci.c b/arch/powerpc/kernel/
>>> rtas_pci.c
>>> index fccf96e897f6..ce24b18712ca 100644
>>> --- a/arch/powerpc/kernel/rtas_pci.c
>>> +++ b/arch/powerpc/kernel/rtas_pci.c
>>> @@ -57,6 +57,9 @@ int rtas_pci_dn_read_config(struct pci_dn *pdn,
>>> int where, int size, u32 *val)
>>> if (pdn->edev && pdn->edev->pe &&
>>> (pdn->edev->pe->state & EEH_PE_CFG_BLOCKED))
>>> return PCIBIOS_SET_FAILED;
>>> +
>>> + if (pdn->edev && pdn->edev->mode & EEH_DEV_REMOVED)
>>> + return PCIBIOS_SET_FAILED;
>>> #endif
>>> addr = rtas_config_addr(pdn->busno, pdn->devfn, where);
>>> @@ -108,6 +111,9 @@ int rtas_pci_dn_write_config(struct pci_dn *pdn,
>>> int where, int size, u32 val)
>>> if (pdn->edev && pdn->edev->pe &&
>>> (pdn->edev->pe->state & EEH_PE_CFG_BLOCKED))
>>> return PCIBIOS_SET_FAILED;
>>> +
>>> + if (pdn->edev && pdn->edev->mode & EEH_DEV_REMOVED)
>>> + return PCIBIOS_SET_FAILED;
>>> #endif
>>> addr = rtas_config_addr(pdn->busno, pdn->devfn, where);
>>>
>>>
>>
>
prev parent reply other threads:[~2026-08-26 11:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-27 2:55 [PATCH] powerpc/rtas_pci: No hotplug on permanently removed device on pSeries Shivaprasad G Bhat
2026-05-12 17:17 ` Harsh Prateek Bora
2026-05-12 17:44 ` Harsh Prateek Bora
2026-06-26 9:14 ` Shivaprasad G Bhat
2026-08-25 10:22 ` tasmiya
2026-08-25 15:16 ` Harsh Prateek Bora
2026-08-26 11:07 ` tasmiya [this message]
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=6a37522d-ac3d-4992-a240-40fcd49557aa@linux.ibm.com \
--to=tasmiya@linux.ibm.com \
--cc=chleroy@kernel.org \
--cc=harshpb@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=sbhat@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox