Messages in this thread | | | Date | Tue, 16 Nov 2010 22:14:01 -0800 | From | Dirk Brandewie <> | Subject | Re: [PATCH 1/5] of: Add support for linking device tree blobs into vmlinux |
| |
On 11/16/2010 06:58 PM, Grant Likely wrote: > On Tue, Nov 16, 2010 at 7:21 PM, Dirk Brandewie > <dirk.brandewie@gmail.com> wrote: >> >> On 11/16/2010 04:39 PM, David Daney wrote: >>> >>> Thanks for doing this. However I have a few comments... >>> >>> On 11/16/2010 02:41 PM, dirk.brandewie@gmail.com wrote: >>>> >>>> From: Dirk Brandewie<dirk.brandewie@gmail.com> >>>> >>>> /* .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
| |