Device Tree Corrupted after unflatten_device_tree()
Lixin.Yao at HSTX.com
Fri Oct 23 05:14:34 EST 2009
Great great finding! I added halting FEC (the Ethernet controller in
in platforms_fixups() and the problem disappears.
Thank you very much!
From: David Gibson [mailto:david at gibson.dropbear.id.au]
Sent: Wednesday, October 21, 2009 6:11 PM
To: Lixin Yao
Cc: michael at ellerman.id.au; linuxppc-dev at lists.ozlabs.org
Subject: Re: Device Tree Corrupted after unflatten_device_tree()
On Wed, Oct 21, 2009 at 10:43:55AM -0700, Lixin Yao wrote:
> When corrupted, curtain blocks of 64 bytes are messed up.
> This is a screen dump of a good unflattened device at beginning:
> When corrupted, it becomes following, note the 64 bock at 0x03ffdf00
> is messed up. And this kind of corruptions occur several times
> 03ffdf00 : ffffffff ffff000c db055be0 08060001 ..........[.....
> 03ffdf10 : 08000604 0001000c db055be0 ac141001 ..........[.....
> 03ffdf20 : 00000000 0000ac14 10530000 10530000 .........S...S..
> 03ffdf30 : 08000604 0001000c 36681bfe f874c01e ........6h...t..
Uh, oh. That looks like a broadcast ethernet packet (ARP,
specifically). Looks like a network device used by the firmware
hasn't been quiesced properly before booting the kernel and is DMAing
stuff straight on top of kernel memory. You'll probably need a hook
in the bootwrapper to shut down the ethernet.
There are some examples of this in arch/powerpc/boot already - look
David Gibson | I'll have my music baroque, and my
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_
| _way_ _around_!
More information about the Linuxppc-dev