Re: [PATCH 1/5] of: Add support for linking device tree blobs into vmlinux
From: Dirk Brandewie <hidden>
Date: 2010-11-17 06:14:07
Also in:
linux-devicetree, lkml
On 11/16/2010 06:58 PM, Grant Likely wrote:
On Tue, Nov 16, 2010 at 7:21 PM, Dirk Brandewie [off-list ref] wrote:quoted
On 11/16/2010 04:39 PM, David Daney wrote:quoted
Thanks for doing this. However I have a few comments... On 11/16/2010 02:41 PM, dirk.brandewie@gmail.com wrote:quoted
From: Dirk Brandewie<redacted> /* .data section */ #define DATA_DATA \ *(.data) \@@ -468,7 +482,8 @@MCOUNT_REC() \ DEV_DISCARD(init.rodata) \ CPU_DISCARD(init.rodata) \ - MEM_DISCARD(init.rodata) + MEM_DISCARD(init.rodata) \ + KERNEL_DTB()I thought the init.rodata was only for data used by __init things. Although the current linker scripts do not put it in the section that gets recycled as usable memory. IIRC the unflattened version of the device tree has pointers to the flattened data. Since the device tree nodes are live for the entire kernel lifecycle, shouldn't the device tree blobs be in non-init memory?The contents of the blob get copied to allocated memory during unflatten_device_tree() so the blob that is linked in is no longer needed after init.Have you written a patch to add this behaviour? The current code doesn't. :-)
I misspoke, my blob gets copied to allocated memory during unflatten_device_tree. my early_init_dt_alloc_memory_arch() returns the physical address of a kmalloc'd buffer. You would want copy the dtb that your platform is going to use to non-init memory. --Dirk