[U-Boot] U-boot resets when booting Linux kernel

Simon Boman simon.boman at gmail.com
Mon Nov 24 11:25:27 CET 2008


2008/11/21 Simon Boman <simon.boman at gmail.com>:
> 2008/11/21 Jerry Van Baren <gerald.vanbaren at ge.com>:
>> Simon Boman wrote:
>>>
>>> 2008/11/20 Wolfgang Denk <wd at denx.de>:
>>>>
>>>> Dear "Simon Boman",
>>
>> [snip]
>>
>>>
>>> Thank you for your help, I find your example at your site
>>> http://www.denx.de/wiki/DULG/DecodingUBootCrashDumps which was great!
>>>
>>> Now I have got find where the U-boot goes wrong:
>>>
>>> FDT_ERR_NOSPACE in the file: /libfdt/fdt_rw.c
>>>
>>> where the values is:
>>> end: 007faff2 oldlen: 0 newlen: 16, fdt: 007fa000, totsize: 4096
>>>
>>> Before fdt_splice is called the values is:
>>> end: 007faff2 oldlen: 8 newlen: 8, fdt: 007fa000, totsize: 22219
>>>
>>> Do you have any clue why it's missing 2 bytes for the fdt??
>>>
>>> TIA
>>> Simon
>>
>> Hi Simon,
>>
>> You probably need to use the dtc -p (pad) option when you build your fdt
>> blob so that there is more space.  The error message is indicating you are
>> running out of space to add/modify the blob you are currently using.
>>
>> HTH,
>> gvb
>>
>
> Hi Jerry!
>
> I have tried that, but after have used 6000 bytes padding of 3900
> bytes code i don't think that is the solution.
> and at the example above the fdt is 22219 bytes (19000 padding) = 0x56CB
> and then the totalsize is changed to 4096 = 0x1000 which give an end
> of the fdt to 007fb000 and the comparing is false when the "real end"
> is 007faff2 + 10 = 007fb002
> So what is going wrong?
> /Simon
>

I can add that this occur after "Delete the old LMB reservation" in
bootm.c and the function fdt_resize(of_flat_tree) is executing. The
problem as I have understood it, is that the blob is resized so its
fits one block 0x1000. But the boundary is two bytes too small..
007faff2 + 10 = 007fb002
/Simon


More information about the U-Boot mailing list