powerpc/pci: Add missing hookup to pci_slot
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 26 Jan 2010 17:10:05 +0000 (17:10 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 29 Jan 2010 05:51:10 +0000 (16:51 +1100)
Add missing hookup to existing pci_slot when building the pci_dev from
scratch off the Open Firmware device-tree

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/pci_of_scan.c

index 693eb9a25bfa1fb528a4aef48784ce8dd319dac0..b6b2e86a50d2c0bffe2dfa3f69ef4f4de5ed9726 100644 (file)
@@ -123,6 +123,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
 {
        struct pci_dev *dev;
        const char *type;
+       struct pci_slot *slot;
 
        dev = alloc_pci_dev();
        if (!dev)
@@ -142,6 +143,10 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
        dev->needs_freset = 0;          /* pcie fundamental reset required */
        set_pcie_port_type(dev);
 
+       list_for_each_entry(slot, &dev->bus->slots, list)
+               if (PCI_SLOT(dev->devfn) == slot->number)
+                       dev->slot = slot;
+
        dev->vendor = get_int_prop(node, "vendor-id", 0xffff);
        dev->device = get_int_prop(node, "device-id", 0xffff);
        dev->subsystem_vendor = get_int_prop(node, "subsystem-vendor-id", 0);