| From 5b339bdf164d8aee394609768f7e2e4415b0252a Mon Sep 17 00:00:00 2001 |
| From: Sonny Rao <sonnyrao@us.ibm.com> |
| Date: Mon, 10 May 2010 15:13:41 +0000 |
| Subject: powerpc/pci: Check devices status property when scanning OF tree |
| |
| From: Sonny Rao <sonnyrao@us.ibm.com> |
| |
| commit 5b339bdf164d8aee394609768f7e2e4415b0252a upstream. |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/powerpc/kernel/pci_of_scan.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/arch/powerpc/kernel/pci_of_scan.c |
| +++ b/arch/powerpc/kernel/pci_of_scan.c |
| @@ -310,6 +310,8 @@ static void __devinit __of_scan_bus(stru |
| /* 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", ®len); |
| if (reg == NULL || reglen < 20) |
| continue; |