[Skiboot] [PATCH 04/28] pci: When restoring bus numbers after a reset, also restore device cache

Benjamin Herrenschmidt benh at kernel.crashing.org
Thu Jul 7 11:49:55 AEST 2016


PCIe devices cache the bus number on the first config write, make sure
we restore them when at the same time

Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Acked-by: Michael Neuling <mikey at neuling.org>
---
 core/pci.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/core/pci.c b/core/pci.c
index 9b65a49..7ba5169 100644
--- a/core/pci.c
+++ b/core/pci.c
@@ -1605,8 +1605,14 @@ static int __pci_restore_bridge_buses(struct phb *phb,
 				      struct pci_device *pd,
 				      void *data __unused)
 {
-	if (!pd->is_bridge)
+	if (!pd->is_bridge) {
+		uint32_t vdid;
+
+		/* Make all devices below a bridge "re-capture" the bdfn */
+		if (pci_cfg_read32(phb, pd->bdfn, 0, &vdid) == 0)
+			pci_cfg_write32(phb, pd->bdfn, 0, vdid);
 		return 0;
+	}
 
 	pci_cfg_write8(phb, pd->bdfn, PCI_CFG_PRIMARY_BUS,
 		       pd->primary_bus);
-- 
2.7.4



More information about the Skiboot mailing list