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>