Subject: Re: ELDK 4.2/kilauea/3.5+ kernel broken

From: Robert Berger <[email-masked]>
Date: Thu, 18 Oct 2012 23:05:17 +0300

Hi,

On 10/18/2012 10:03 PM, Benjamin Herrenschmidt wrote:
> On Thu, 2012-10-18 at 20:45 +0300, Robert Berger wrote:
>> -       mtdcri(SDR0, *sdr_addr, upper_32_bits(res.start));      /*HIGH addr */
>> -       mtdcri(SDR0, *sdr_addr + 1, lower_32_bits(res.start));  /* Low addr */
>> +       SDR0_WRITE(sdr_addr, (u64)res.start >> 32);      /*HIGH addr */
>> +       SDR0_WRITE(sdr_addr + 1, res.start & 0xFFFFFFFF); /* Low addr */
>> +
>>  
>>         msi->msi_dev = of_find_node_by_name(NULL, "ppc4xx-msi");
>> -       if (!msi->msi_dev)
>> +       if (msi->msi_dev)
>>                 return -ENODEV; 
> 
> The above changes look bad. The first one is stupid, the second one is clearly broken.
> 
> The diff us from good to bad right ? Looks like somebody added a very busted patch.

this (from 3.6) does not work:

-       mtdcri(SDR0, *sdr_addr, upper_32_bits(res.start));      /*HIGH
addr */
-       mtdcri(SDR0, *sdr_addr + 1, lower_32_bits(res.start));  /* Low
addr */

The good old file (which works) is this:

+       SDR0_WRITE(sdr_addr, (u64)res.start >> 32);      /*HIGH addr */
+       SDR0_WRITE(sdr_addr + 1, res.start & 0xFFFFFFFF); /* Low addr */
+

> 
> If I look at the code in current upstream, I see:
> 
> 	mtdcri(SDR0, *sdr_addr, upper_32_bits(res.start));	/*HIGH addr */
> 	mtdcri(SDR0, *sdr_addr + 1, lower_32_bits(res.start));	/* Low addr */
> 
> 	msi->msi_dev = of_find_node_by_name(NULL, "ppc4xx-msi");
> 	if (!msi->msi_dev)
> 		return -ENODEV;
> 
> 
> Which looks correct. So this might be something specific to ELDK ?

I will be on the road from tomorrow for a week or so, but maybe I can
isolate the exact lines which break it. I can also try a newer compiler
to see if this changes anything.

Is there someone out there with a kilauea board who can boot a 3.6.
mainline kernel with a default config with a rootfs over nfs?

> Cheers,
> Ben.

Regards,

Robert