[PATCH] kexec: remove memory reserve patching for powerpc device tree

Michael Neuling mikey at neuling.org
Thu Sep 21 11:10:30 EST 2006


This code no longer needed with Jimi's auto reserve of device tree blob
kernel patch now in 2.6.18.    

This patch will break Linux if you're kexecing to a kernel which doesn't
have this patch (ie. earlier than 2.6.17).  Required kernel patch is
this one:   
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4d1f3f25d9c303d1ce63b42cc94c54ac0ab2e950

Signed-off-by: Michael Neuling <mikey at neuling.org>
---
This should be save to include now 2.6.18 has been released.  

 kexec/arch/ppc64/fs2dt.c           |    2 --
 kexec/arch/ppc64/kexec-elf-ppc64.c |   19 -------------------
 2 files changed, 21 deletions(-)

Index: kexec-tools-1.101/kexec/arch/ppc64/fs2dt.c
===================================================================
--- kexec-tools-1.101.orig/kexec/arch/ppc64/fs2dt.c
+++ kexec-tools-1.101/kexec/arch/ppc64/fs2dt.c
@@ -445,8 +445,6 @@ int create_flatten_tree(struct kexec_inf
 	bb->version = 2;
 	bb->last_comp_version = 2;
 
-	reserve(me, bb->totalsize); /* patched later in kexec_load */
-
 	buf = (unsigned char *) malloc(bb->totalsize);
 	*bufp = buf;
 	memcpy(buf, bb, bb->off_mem_rsvmap);
Index: kexec-tools-1.101/kexec/arch/ppc64/kexec-elf-ppc64.c
===================================================================
--- kexec-tools-1.101.orig/kexec/arch/ppc64/kexec-elf-ppc64.c
+++ kexec-tools-1.101/kexec/arch/ppc64/kexec-elf-ppc64.c
@@ -81,8 +81,6 @@ int elf_ppc64_load(int argc, char **argv
 	off_t seg_size = 0;
 	struct mem_phdr *phdr;
 	size_t size;
-	unsigned long long *rsvmap_ptr;
-	struct bootblock *bb_ptr;
 	unsigned int nr_segments, i;
 	int result, opt;
 	unsigned long my_kernel, my_dt_offset;
@@ -249,23 +247,6 @@ int elf_ppc64_load(int argc, char **argv
 				0, 0, max_addr, -1);
 	}
 
-	/* patch reserve map address for flattened device-tree
-	 * find last entry (both 0) in the reserve mem list.  Assume DT
-	 * entry is before this one
-	 */
-	bb_ptr = (struct bootblock *)(
-		(unsigned char *)info->segment[(info->nr_segments)-1].buf);
-	rsvmap_ptr = (unsigned long long *)(
-		(unsigned char *)info->segment[(info->nr_segments)-1].buf +
-		bb_ptr->off_mem_rsvmap);
-	while (*rsvmap_ptr || *(rsvmap_ptr+1))
-		rsvmap_ptr += 2;
-	rsvmap_ptr -= 2;
-	*rsvmap_ptr = (unsigned long long)(
-		info->segment[(info->nr_segments)-1].mem);
-	rsvmap_ptr++;
-	*rsvmap_ptr = (unsigned long long)bb_ptr->totalsize;
-
 	nr_segments = info->nr_segments;
 
 	/* Set kernel */



More information about the Linuxppc-dev mailing list