[Skiboot] [PATCH 1/2] core/pci: Ignore PCI slot capability on root port

Gavin Shan gwshan at linux.vnet.ibm.com
Wed Mar 29 16:43:57 AEDT 2017


On Fri, Mar 10, 2017 at 11:25:45AM +1100, Gavin Shan wrote:
>We are creating PCI slot on root port, where the PCI slot isn't
>supported from hardware. For this case, we shouldn't read the PCI
>slot capability from hardware. When bogus data returned from the
>hardware, we will attempt to the PCI slot's power state or enable
>surprise hotplug functionality. All of them can't be accomplished
>without hardware support.
>
>This leaves the PCI slot's capability list 0 if PCICAP_EXP_CAP_SLOT
>isn't set in hardware (pcie_cap + 0x2). Otherwise, the PCI slot's
>capability list is retrieved from hardware (pcie_cap + 0x14).
>
>Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>

ping, Stewart?

>---
> core/pcie-slot.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
>diff --git a/core/pcie-slot.c b/core/pcie-slot.c
>index 64f0da6..aca59dd 100644
>--- a/core/pcie-slot.c
>+++ b/core/pcie-slot.c
>@@ -461,8 +461,13 @@ struct pci_slot *pcie_slot_create(struct phb *phb, struct pci_device *pd)
> 		       &slot->pcie_cap);
> 	pci_cfg_read32(phb, pd->bdfn, ecap + PCICAP_EXP_LCAP,
> 		       &slot->link_cap);
>-	pci_cfg_read32(phb, pd->bdfn, ecap + PCICAP_EXP_SLOTCAP,
>-		       &slot->slot_cap);
>+
>+	/* Leave PCI slot capability blank if PCI slot isn't supported */
>+	if (slot->pcie_cap & PCICAP_EXP_CAP_SLOT)
>+		pci_cfg_read32(phb, pd->bdfn, ecap + PCICAP_EXP_SLOTCAP,
>+			       &slot->slot_cap);
>+	else
>+		slot->slot_cap = 0;
>
> 	if (slot->slot_cap & PCICAP_EXP_SLOTCAP_HPLUG_CAP)
> 		slot->pluggable = 1;
>-- 
>2.7.4
>



More information about the Skiboot mailing list