--- linux-2.6.22.14/arch/powerpc/kernel/prom.c 2008-01-22 13:59:14.000000000 +0200 +++ linux/arch/powerpc/kernel/prom.c 2008-01-15 10:59:50.000000000 +0200 @@ -759,6 +759,14 @@ static int __init early_init_dt_scan_cho (strcmp(uname, "chosen") != 0 && strcmp(uname, "chosen@0") != 0)) return 0; +#ifdef CONFIG_BLK_DEV_INITRD + lprop = of_get_flat_dt_prop(node, "linux,initrd", NULL); + if (lprop) { + initrd_start = (unsigned) __va(lprop[0]); + initrd_end = initrd_start + lprop[1]; + } +#endif + #ifdef CONFIG_PPC64 /* check if iommu is forced on or off */ if (of_get_flat_dt_prop(node, "linux,iommu-off", NULL) != NULL) @@ -1026,6 +1034,11 @@ void __init early_init_devtree(void *par of_scan_flat_dt(early_init_dt_scan_root, NULL); of_scan_flat_dt(early_init_dt_scan_memory, NULL); +#ifdef CONFIG_BLK_DEV_INITRD + if (initrd_start) + lmb_reserve(__pa(initrd_start), initrd_end - initrd_start); +#endif + /* Save command line for /proc/cmdline and then parse parameters */ strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE); parse_early_param();