Thread (18 messages) 18 messages, 4 authors, 2011-06-11

Re: [v2] powerpc: Force page alignment for initrd

From: Milton Miller <hidden>
Date: 2011-05-21 10:36:30
Also in: lkml

On Fri, 20 May 2011 about 13:23:36 -0000, Dave Carroll wrote:
When using 64K pages with a separate cpio rootfs, U-Boot will align
the rootfs on a 4K page boundary. When the memory is reserved, and
subsequent early memblock_alloc is called, it will allocate memory
between the 64K page alignment and reserved memory. When the reserved
memory is subsequently freed, it is done so by pages, causing the
early memblock_alloc requests to be re-used, which in my case, caused
the device-tree to be clobbered.

This patch forces initrd to be kernel page aligned, to match the
mechanism used to free reserved memory.
Actually it is only forcing the memory reserved for the initrd (its
not moving the contents nor filling the extra space).
quoted hunk ↗ jump to hunk
@@ -555,7 +555,8 @@ static void __init early_reserve_mem(void)
 #ifdef CONFIG_BLK_DEV_INITRD
        /* then reserve the initrd, if any */
        if (initrd_start && (initrd_end > initrd_start))
-               memblock_reserve(__pa(initrd_start), initrd_end - initrd_start);
+               memblock_reserve(_ALIGN_DOWN(__pa(initrd_start), PAGE_SIZE),
+                       PAGE_ALIGN(initrd_end) - _ALIGN_DOWN(initrd_start, PAGE_SIZE));
Please align up the end, then change free_initrd_mem (32 and 64 bit)
to do the same range extension.

Thanks,
milton
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help