Subject: Re: [PATCH] need check for devices with bad status status property in __of_scan_bus()

From: Sonny Rao <[email-masked]>
Date: Wed, 19 May 2010 03:47:08 -0500

On Mon, May 10, 2010 at 08:13:41PM -0500, Sonny Rao wrote:
> Hi Ben, 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 create our device nodes.
> 
> 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.
> 
> This has only been compile tested.
> 
> Signed-of-by: Sonny Rao <[email-masked]>
> 
> Index: common/arch/powerpc/kernel/pci_of_scan.c
> ===================================================================
> --- common/arch/powerpc/kernel.orig/pci_of_scan.c	2010-05-10 20:00:40.000000000 -0500
> +++ common/arch/powerpc/kernel/pci_of_scan.c	2010-05-10 20:03:04.000000000 -0500
> @@ -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", &reglen);
>  		if (reg == NULL || reglen < 20)
>  			continue;

Ok, it's now been actually tested with firmware
that marks some devices as failed and appears to work.

-- 
Sonny Rao, LTC OzLabs, BML team