aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGavin Shan <gwshan@linux.vnet.ibm.com>2017-02-20 10:57:51 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-02-22 16:51:18 +1100
commitb8a808f063985641477c39b257fdbae41fbf4ab1 (patch)
tree9367500da7a6dfb37a39fcbb7ae603d9bce13c09
parent99343c26ac8c6e49041bd2718c8b16e5d664f8fd (diff)
downloadskiboot-b8a808f063985641477c39b257fdbae41fbf4ab1.zip
skiboot-b8a808f063985641477c39b257fdbae41fbf4ab1.tar.gz
skiboot-b8a808f063985641477c39b257fdbae41fbf4ab1.tar.bz2
astbmc/p8dnu: Enable PCI slot's power supply on PEX8718 in hot-add path
This issue is reported from superMicro's "p8dnu" platform. PEX8718 is connected to PHB direct slot. We create dynamic PCI slots for its (2) downstream ports and all of them support surprise hotplug capability. The problem is power supply lost on hot-remove and it isn't turned on automatically on hot-add. It means the PCIe link behind the slot isn't up and the PCI adapter behind the slot can't be probed successfully. This fixes the issue by forcing to turn on the power supply on hardware when user (kernel) requests to do so, as we did for PEX9733. Reported-by: Hank Chang <hankmax0000@gmail.com> Signed-off-by: Gavin Shan <gwhsan@linux.vnet.ibm.com> Tested-by: Willie Liauw <williel@supermicro.com.tw> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--platforms/astbmc/slots.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/platforms/astbmc/slots.c b/platforms/astbmc/slots.c
index f28ad7d..8be7426 100644
--- a/platforms/astbmc/slots.c
+++ b/platforms/astbmc/slots.c
@@ -175,9 +175,11 @@ static void create_dynamic_slot(struct phb *phb, struct pci_device *pd)
* isn't turned on automatically when inserting PCI adapter to
* the slot at later point. We set a flag to the slot here, to
* turn on the power supply in (suprise or managed) hot-add path.
+ *
+ * We have same issue with PEX8718 as above on "p8dnu" platform.
*/
- if (dt_node_is_compatible(dt_root, "supermicro,p8dnu") &&
- slot->pd && slot->pd->vdid == 0x973310b5)
+ if (dt_node_is_compatible(dt_root, "supermicro,p8dnu") && slot->pd &&
+ (slot->pd->vdid == 0x973310b5 || slot->pd->vdid == 0x871810b5))
pci_slot_add_flags(slot, PCI_SLOT_FLAG_FORCE_POWERON);
}