powerpc/eeh: No hotplug on permanently removed dev
[linux-2.6-block.git] / arch / powerpc / kernel / pci_of_scan.c
index 83c26d829991e8b8c118d6fa8d8d5bb7ffc68fda..ea6470c21f4e4e86152093c6126990a73544bf62 100644 (file)
@@ -304,6 +304,9 @@ static struct pci_dev *of_scan_pci_dev(struct pci_bus *bus,
        struct pci_dev *dev = NULL;
        const __be32 *reg;
        int reglen, devfn;
+#ifdef CONFIG_EEH
+       struct eeh_dev *edev = of_node_to_eeh_dev(dn);
+#endif
 
        pr_debug("  * %s\n", dn->full_name);
        if (!of_device_is_available(dn))
@@ -321,6 +324,12 @@ static struct pci_dev *of_scan_pci_dev(struct pci_bus *bus,
                return dev;
        }
 
+       /* Device removed permanently ? */
+#ifdef CONFIG_EEH
+       if (edev && (edev->mode & EEH_DEV_REMOVED))
+               return NULL;
+#endif
+
        /* create a new pci_dev for this device */
        dev = of_create_pci_dev(dn, bus, devfn);
        if (!dev)