Re: [PATCH RESEND v2 0/7] powerpc/powernv: Unified PCI slot reset and hotplug

2015-02-17 Thread Stewart Smith
Gavin Shan gws...@linux.vnet.ibm.com writes:

 The patchset was built based on patchset powerpc/powernv: Simplify EEH
 implementation, which can be found from:

 https://patchwork.ozlabs.org/patch/439956/

 The patchset corresponds to skiboot changes, which manages PCI slots
 in a unified way: OPAL APIs used to do slot reset, power management,
 presence status retrival. The patchset shouldn't be merged before
 the OPAL firmware counterpart is merged:

 https://patchwork.ozlabs.org/patch/440463/

But this patchset will work with old OPAL, right? We're not breaking
compatibility with newer kernels (with this patchset) and older
firmware?

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH RESEND v2 0/7] powerpc/powernv: Unified PCI slot reset and hotplug

2015-02-17 Thread Gavin Shan
On Wed, Feb 18, 2015 at 08:44:19AM +1100, Stewart Smith wrote:
Gavin Shan gws...@linux.vnet.ibm.com writes:

 The patchset was built based on patchset powerpc/powernv: Simplify EEH
 implementation, which can be found from:

 https://patchwork.ozlabs.org/patch/439956/

 The patchset corresponds to skiboot changes, which manages PCI slots
 in a unified way: OPAL APIs used to do slot reset, power management,
 presence status retrival. The patchset shouldn't be merged before
 the OPAL firmware counterpart is merged:

 https://patchwork.ozlabs.org/patch/440463/

But this patchset will work with old OPAL, right? We're not breaking
compatibility with newer kernels (with this patchset) and older
firmware?

Yes. With old OPAL, the reset stuff in Linux works as before and we
shouldn't see hotpluggable slots from /sys/bus/pci/slots.

The compatibility issue was pointed by Ben. It's something fixed by
this revision (v2).

Thanks,
Gavin

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH RESEND v2 0/7] powerpc/powernv: Unified PCI slot reset and hotplug

2015-02-16 Thread Gavin Shan
The patchset was built based on patchset powerpc/powernv: Simplify EEH
implementation, which can be found from:

https://patchwork.ozlabs.org/patch/439956/

The patchset corresponds to skiboot changes, which manages PCI slots
in a unified way: OPAL APIs used to do slot reset, power management,
presence status retrival. The patchset shouldn't be merged before
the OPAL firmware counterpart is merged:

https://patchwork.ozlabs.org/patch/440463/

The kernel changes have been split into 2 parts:
(A) Use the unified PCI slot reset OPAL API, PATCH[1] and PATCH[2]
(B) powernv-php driver to support PCI hotplug for PowerNV platform, starting
from PATCH[3]. 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[3/4/5/6]: Necessary code changes to PPC PCI subsystem in order to
support PCI slots for PPC PowerNV platform.
PATCH[7]  : powernv-php driver to support PCI hotplug for PowerNV
platform.


Hotplug 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
   * Keep opal_pci_reinit(). In case the slot is resetted by kernel,
 instead of skiboot, this API should be called to restore states
 for those affected devices.
   * Reworked slot ID scheme so that old/new kernel can work with
 skiboot with or without unified PCI slot management support.
   * Code cleanup here and there.
   * 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