Re: [PATCH v3 2/2] powerpc: hotplug driver bridge support
From: Shawn Anastasio <hidden>
Date: 2024-06-27 17:11:20
Also in:
linux-pci, lkml
Hi Krishna, On 6/24/24 7:09 AM, Krishna Kumar wrote:
There is an issue with the hotplug operation when it's done on the bridge/switch slot. The bridge-port and devices behind the bridge, which become offline by hot-unplug operation, don't get hot-plugged/enabled by doing hot-plug operation on that slot. Only the first port of the bridge gets enabled and the remaining port/devices remain unplugged. The hot plug/unplug operation is done by the hotplug driver (drivers/pci/hotplug/pnv_php.c). Root Cause Analysis: This behavior is due to missing code for the switch/bridge. The existing driver depends on pci_hp_add_devices() function for device enablement. This function calls pci_scan_slot() on only one device-node/port of the bridge, not on all the siblings' device-node/port. The missing code needs to be added which will find all the sibling device-nodes/bridge-ports and will run explicit pci_scan_slot() on those. A new function has been added for this purpose which gets invoked from pci_hp_add_devices(). This new function pci_traverse_sibling_nodes_and_scan_slot() gets all the sibling bridge-ports by traversal and explicitly invokes pci_scan_slot on them. Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: Christophe Leroy <redacted> Cc: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Gaurav Batra <redacted> Cc: Nathan Lynch <redacted> Cc: Brian King <redacted> Signed-off-by: Krishna Kumar <redacted>
Other than the case with NVMe devices failing that we discussed in v1's thread, I can confirm that this patch resolves many of the issues we've encountered with PCIe hotplug on POWER9. Tested-by: Shawn Anastasio <redacted> Thanks, Shawn