On Thu, Dec 04, 2014 at 04:54:43PM +1100, Gavin Shan wrote: Please ignore this one. I'll rebase the repost new revision later. Thanks, Gavin >The series of patches depends on the OPAL firmware changes. If the firmware >doesn't have the changes, PCI hotplug slots won't be populated properly. >Other than that, no more problems found. > >A new driver "powernv-php.ko" is introduced by the patchset to support >PCI hotplug for PowerNV platform. The device tree is scanned when the >driver is loaded. If any PCI device node is equipped with property "ibm, >slot-pluggable" and "ibm,reset-by-firmware", it's regarded as hotpluggable >slot and the driver creates/registers slot for it. After that, the sysfs >entries can be used to operate the slot. > >PATCH[1-4]: Necessary code changes to PPC PCI subsystem in order to > support PCI slots for PPC PowerNV platform. >PATCH[5] : powernv-php driver to support PCI hotplug for PowerNV > platform. > >Testing >======= ># cat /proc/cpuinfo | grep -i powernv >platform : PowerNV >machine : PowerNV 8286-41A > ># pwd >/sys/bus/pci/slots ># ls >C10 C11 C12 C14 C15 C6 C7 C8 C9 > ># lspci -s 0003::. >0003:00:00.0 PCI bridge: IBM Device 03dc >0003:01:00.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:01.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:08.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:09.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:10.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:11.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:03:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02) >0003:09:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:09:00.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:09:00.2 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:09:00.3 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:0f:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3] ># pwd >/sys/bus/pci/slots/C10 ># cat address >0003:09:00 ># cat cur_bus_speed >5.0 GT/s PCIe ># cat max_bus_speed >8.0 GT/s PCIe ># cat power >1 ># echo 0 > power ># lspci -s 0003::. >0003:00:00.0 PCI bridge: IBM Device 03dc >0003:01:00.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:01.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:08.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:09.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:10.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:11.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:03:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02) >0003:0f:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3] ># echo 1 > power ># lspci -s 0003::. >0003:00:00.0 PCI bridge: IBM Device 03dc >0003:01:00.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:01.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:08.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:09.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:10.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:02:11.0 PCI bridge: PLX Technology, Inc. Device 8748 (rev ca) >0003:03:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02) >0003:09:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:09:00.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:09:00.2 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:09:00.3 Ethernet controller: Broadcom Corporation NetXtreme BCM5719 Gigabit Ethernet PCIe (rev 01) >0003:0f:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3] > >Changelog >========= >v1 -> v2: > * Separate powernv-php driver to support PCI hotplug for > PowerNV platform. > * Check if the OPAL API supported by firmware before calling > into it, which is necessary for back-compability. > * Separate patch for factoring pnv_pci_poll(). > >Gavin Shan (5): > powerpc/pci: Move pcibios_find_pci_bus() around > powerpc/pci: Don't scan empty slot > powerpc/powernv: Introduce pnv_pci_poll() > powerpc/powernv: Functions to retrieve PCI slot status > PCI/hotplug: PowerPC PowerNV PCI hotplug driver > > arch/powerpc/include/asm/opal.h | 4 + > arch/powerpc/include/asm/pnv-pci.h | 3 + > arch/powerpc/kernel/pci-hotplug.c | 39 ++- > arch/powerpc/platforms/powernv/eeh-ioda.c | 28 +- > arch/powerpc/platforms/powernv/opal-wrappers.S | 2 + > arch/powerpc/platforms/powernv/pci.c | 43 +++ > arch/powerpc/platforms/powernv/pci.h | 1 + > arch/powerpc/platforms/pseries/pci_dlpar.c | 32 --- > drivers/pci/hotplug/Kconfig | 12 + > drivers/pci/hotplug/Makefile | 4 + > drivers/pci/hotplug/powernv_php.c | 126 ++++++++ > drivers/pci/hotplug/powernv_php.h | 70 +++++ > drivers/pci/hotplug/powernv_php_slot.c | 382 +++++++++++++++++++++++++ > 13 files changed, 687 insertions(+), 59 deletions(-) > create mode 100644 drivers/pci/hotplug/powernv_php.c > create mode 100644 drivers/pci/hotplug/powernv_php.h > create mode 100644 drivers/pci/hotplug/powernv_php_slot.c > >Thanks, >Gavin -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html