]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
microblaze: Fix initrd support
authorMichal Simek <michal.simek@xilinx.com>
Thu, 2 May 2013 13:53:51 +0000 (15:53 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Fri, 3 May 2013 06:13:45 +0000 (08:13 +0200)
Initrd/ramdisk support has been never validated.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/microblaze/mm/init.c

index 09affecb15f9f36aa914e1c97cbdab59a912c48b..f394ad84c7cffb8eb7b6e3c797a33775a3941a9f 100644 (file)
@@ -258,16 +258,7 @@ static void free_init_pages(char *what, unsigned long start, unsigned long end)
 #ifdef CONFIG_BLK_DEV_INITRD
 void free_initrd_mem(unsigned long start, unsigned long end)
 {
-       int pages = 0;
-       for (; start < end; start += PAGE_SIZE) {
-               ClearPageReserved(virt_to_page(start));
-               init_page_count(virt_to_page(start));
-               free_page(start);
-               totalram_pages++;
-               pages++;
-       }
-       printk(KERN_NOTICE "Freeing initrd memory: %dk freed\n",
-                                       (int)(pages * (PAGE_SIZE / 1024)));
+       free_init_pages("initrd memory", start, end);
 }
 #endif
 
@@ -438,10 +429,11 @@ asmlinkage void __init mmu_init(void)
 
 #if defined(CONFIG_BLK_DEV_INITRD)
        /* Remove the init RAM disk from the available memory. */
-/*     if (initrd_start) {
-               mem_pieces_remove(&phys_avail, __pa(initrd_start),
-                                 initrd_end - initrd_start, 1);
-       }*/
+       if (initrd_start) {
+               unsigned long size;
+               size = initrd_end - initrd_start;
+               memblock_reserve(virt_to_phys(initrd_start), size);
+       }
 #endif /* CONFIG_BLK_DEV_INITRD */
 
        /* Initialize the MMU hardware */