From 85e5016b59d9974d7c2a9e27b3bc2914f8f5c639 Mon Sep 17 00:00:00 2001 From: Jimi Xenidis Date: Thu, 18 May 2006 17:03:05 -0500 Subject: [PATCH] --- yaml --- r: 28712 b: refs/heads/master c: 4d1f3f25d9c303d1ce63b42cc94c54ac0ab2e950 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/prom.c | 5 +++++ trunk/arch/powerpc/kernel/prom_init.c | 9 ++++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 9527c2f49df0..aa385ea48d7b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1dc461f0b03fab309eb9214df1c9b586aeaf3b22 +refs/heads/master: 4d1f3f25d9c303d1ce63b42cc94c54ac0ab2e950 diff --git a/trunk/arch/powerpc/kernel/prom.c b/trunk/arch/powerpc/kernel/prom.c index 8d0415b080bb..969f4abcc0be 100644 --- a/trunk/arch/powerpc/kernel/prom.c +++ b/trunk/arch/powerpc/kernel/prom.c @@ -1267,6 +1267,11 @@ static void __init early_reserve_mem(void) reserve_map = (u64 *)(((unsigned long)initial_boot_params) + initial_boot_params->off_mem_rsvmap); + + /* before we do anything, lets reserve the dt blob */ + lmb_reserve(__pa((unsigned long)initial_boot_params), + initial_boot_params->totalsize); + #ifdef CONFIG_PPC32 /* * Handle the case where we might be booting from an old kexec diff --git a/trunk/arch/powerpc/kernel/prom_init.c b/trunk/arch/powerpc/kernel/prom_init.c index 2442361772e2..98e201c38d27 100644 --- a/trunk/arch/powerpc/kernel/prom_init.c +++ b/trunk/arch/powerpc/kernel/prom_init.c @@ -1950,11 +1950,7 @@ static void __init flatten_device_tree(void) /* Version 16 is not backward compatible */ hdr->last_comp_version = 0x10; - /* Reserve the whole thing and copy the reserve map in, we - * also bump mem_reserve_cnt to cause further reservations to - * fail since it's too late. - */ - reserve_mem(RELOC(dt_header_start), hdr->totalsize); + /* Copy the reserve map in */ memcpy(rsvmap, RELOC(mem_reserve_map), sizeof(mem_reserve_map)); #ifdef DEBUG_PROM @@ -1967,6 +1963,9 @@ static void __init flatten_device_tree(void) RELOC(mem_reserve_map)[i].size); } #endif + /* Bump mem_reserve_cnt to cause further reservations to fail + * since it's too late. + */ RELOC(mem_reserve_cnt) = MEM_RESERVE_MAP_SIZE; prom_printf("Device tree strings 0x%x -> 0x%x\n",