Hi,<br><br>My patch was:<br><br>@@ -150,12 +157,11 @@ static int ppc4xx_setup_pcieh_hw(struct platform_device *dev,<br>        if (!sdr_addr)<br>                return -1;<br><br>-       SDR0_WRITE(sdr_addr, (u64)res.start >> 32);      /*HIGH addr */<br>

-       SDR0_WRITE(sdr_addr + 1, res.start & 0xFFFFFFFF); /* Low addr */<br>-<br>+       mtdcri(SDR0, *sdr_addr, upper_32_bits(res.start));      /*HIGH addr */<br>+       mtdcri(SDR0, *sdr_addr + 1, lower_32_bits(res.start));  /* Low addr */<br>

<br>        msi->msi_dev = of_find_node_by_name(NULL, "ppc4xx-msi");<br>-       if (msi->msi_dev)<br>+       if (!msi->msi_dev)<br>                return -ENODEV;<br><br>        msi->msi_regs = of_iomap(msi->msi_dev, 0);<br>

<br><br>1. The first few lines: change from SDR0_WRITE to mtdcri since the old one cause crash. I use ELDK 4.2.<br><br>2. The second one should mean that: if not find any node then return error. So it should be "!msi->msi_dev"<br>

<br>Regards,<br>Mai La.<br><br><br><div class="gmail_quote">On Fri, Oct 19, 2012 at 3:05 AM, Robert Berger <span dir="ltr"><<a href="mailto:robert.karl.berger@gmail.com" target="_blank">robert.karl.berger@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<div class="im"><br>
On 10/18/2012 10:03 PM, Benjamin Herrenschmidt wrote:<br>
> On Thu, 2012-10-18 at 20:45 +0300, Robert Berger wrote:<br>
>> -       mtdcri(SDR0, *sdr_addr, upper_32_bits(res.start));      /*HIGH addr */<br>
>> -       mtdcri(SDR0, *sdr_addr + 1, lower_32_bits(res.start));  /* Low addr */<br>
>> +       SDR0_WRITE(sdr_addr, (u64)res.start >> 32);      /*HIGH addr */<br>
>> +       SDR0_WRITE(sdr_addr + 1, res.start & 0xFFFFFFFF); /* Low addr */<br>
>> +<br>
>><br>
>>         msi->msi_dev = of_find_node_by_name(NULL, "ppc4xx-msi");<br>
>> -       if (!msi->msi_dev)<br>
>> +       if (msi->msi_dev)<br>
>>                 return -ENODEV;<br>
><br>
> The above changes look bad. The first one is stupid, the second one is clearly broken.<br>
><br>
> The diff us from good to bad right ? Looks like somebody added a very busted patch.<br>
<br>
</div>this (from 3.6) does not work:<br>
<div class="im"><br>
-       mtdcri(SDR0, *sdr_addr, upper_32_bits(res.start));      /*HIGH<br>
addr */<br>
-       mtdcri(SDR0, *sdr_addr + 1, lower_32_bits(res.start));  /* Low<br>
addr */<br>
<br>
</div>The good old file (which works) is this:<br>
<div class="im"><br>
+       SDR0_WRITE(sdr_addr, (u64)res.start >> 32);      /*HIGH addr */<br>
+       SDR0_WRITE(sdr_addr + 1, res.start & 0xFFFFFFFF); /* Low addr */<br>
+<br>
<br>
><br>
</div><div class="im">> If I look at the code in current upstream, I see:<br>
><br>
>       mtdcri(SDR0, *sdr_addr, upper_32_bits(res.start));      /*HIGH addr */<br>
>       mtdcri(SDR0, *sdr_addr + 1, lower_32_bits(res.start));  /* Low addr */<br>
><br>
>       msi->msi_dev = of_find_node_by_name(NULL, "ppc4xx-msi");<br>
>       if (!msi->msi_dev)<br>
>               return -ENODEV;<br>
><br>
><br>
> Which looks correct. So this might be something specific to ELDK ?<br>
<br>
</div>I will be on the road from tomorrow for a week or so, but maybe I can<br>
isolate the exact lines which break it. I can also try a newer compiler<br>
to see if this changes anything.<br>
<br>
Is there someone out there with a kilauea board who can boot a 3.6.<br>
mainline kernel with a default config with a rootfs over nfs?<br>
<br>
><br>
> Cheers,<br>
> Ben.<br>
><br>
><br>
<br>
Regards,<br>
<br>
Robert<br>
</blockquote></div><br>