Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

u-boot places device-tree in bss



Hello,
When the memory address for the device tree isn't provided to u-boot, u-boot
decides where to place the device tree by itself. For me, it chooses to place it
right after the code, overlapping the bss section. This means the device tree 
gets overwritten when clearing the bss and a bit later, NetBSD rightfully panics
because of a corrupt device tree.

Since u-boot leaves some space between the code and the device tree, it works
with a small kernel, but as soon as I enable more features and bss grows, I run 
into this issue.

I can work around this by giving u-boot a boot.scr that manually places the 
device tree, but I'm wondering if this could be fixed in NetBSD.

We could add a panic if we encounter this situation. That would be a bit more
helpful than the current error:
[ 1.0000000] panic: fdt_check_header failed: FDT_ERR_BADMAGIC

Another option would be to add some logic that preserves the device tree in this
scenario. For example, we could move the device tree out of the way of the bss 
if they overlap. The question is where would we move it though? Perhaps 
beyond the end of the bss section?

Any thought/opinions/suggestions? I'm happy to provide a patch if there is a
consensus for how this should be solved.

Thanks,
yuri


Home | Main Index | Thread Index | Old Index