powerpc/pci: Check devices status property when scanning OF tree
authorSonny Rao <sonnyrao@us.ibm.com>
Mon, 10 May 2010 15:13:41 +0000 (15:13 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 21 May 2010 07:31:09 +0000 (17:31 +1000)
We ran into an issue where it looks like we're not properly ignoring a
pci device with a non-good status property when we walk the device tree
and instanciate the Linux side PCI devices.

However, the EEH init code does look for the property and disables EEH
on these devices. This leaves us in an inconsistent where we are poking
at a supposedly bad piece of hardware and RTAS will block our config
cycles because EEH isn't enabled anyway.

Signed-of-by: Sonny Rao <sonnyrao@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/pci_of_scan.c

index cd11d5ca80dfffa8cf863df49d1f911931cddf24..6ddb795f83e8e9ccd62e713d997599baee77122a 100644 (file)
@@ -310,6 +310,8 @@ static void __devinit __of_scan_bus(struct device_node *node,
        /* Scan direct children */
        for_each_child_of_node(node, child) {
                pr_debug("  * %s\n", child->full_name);
+               if (!of_device_is_available(child))
+                       continue;
                reg = of_get_property(child, "reg", &reglen);
                if (reg == NULL || reglen < 20)
                        continue;