[PATCH v2 0/5] PCI Hotplug Driver for PowerPC PowerNV
Gavin Shan
gwshan at linux.vnet.ibm.com
Tue Feb 17 13:30:19 AEDT 2015
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
More information about the Linuxppc-dev
mailing list