[PATCH 1/10] Remove sysmap support

Anton Blanchard anton at samba.org
Sun Apr 11 14:02:26 EST 2010


We have had in kernel kallsyms for years, and the less code that has to deal
with our fragile memory map the better.

Signed-off-by: Anton Blanchard <anton at samba.org>
---

Index: yaboot/include/yaboot.h
===================================================================
--- yaboot.orig/include/yaboot.h	2010-04-01 12:43:35.000000000 +1100
+++ yaboot/include/yaboot.h	2010-04-01 12:43:36.000000000 +1100
@@ -49,7 +49,6 @@
 struct boot_param_t {
 	struct boot_fspec_t	kernel;
 	struct boot_fspec_t	rd;
-	struct boot_fspec_t	sysmap;
 
 	char*	args;
 };
Index: yaboot/man/yaboot.conf.5
===================================================================
--- yaboot.orig/man/yaboot.conf.5	2010-04-01 12:43:35.000000000 +1100
+++ yaboot/man/yaboot.conf.5	2010-04-01 12:43:36.000000000 +1100
@@ -562,10 +562,6 @@ print to the user when asking him to pre
 
   Press ENTER to continue.
 .TP
-.BI "sysmap=" filename
-Specifies the path for the System.map file that goes with the kernel
-image (\fIimage=\fR).  This is for 2.4 kernels with a kernel debugger only.
-.TP
 .BI "single-key"
 Enables booting the image by hitting a single key when the cursor is at the
 first character in the input line, without the need to press <ENTER>
Index: yaboot/second/cfg.c
===================================================================
--- yaboot.orig/second/cfg.c	2010-04-01 12:43:35.000000000 +1100
+++ yaboot/second/cfg.c	2010-04-01 12:43:36.000000000 +1100
@@ -92,7 +92,6 @@ CONFIG cf_image[] =
      {cft_flag, "pause-after", NULL},
      {cft_strg, "pause-message", NULL},
      {cft_flag, "novideo", NULL},
-     {cft_strg, "sysmap", NULL},
      {cft_end, NULL, NULL}};
 
 static char flag_set;
Index: yaboot/second/yaboot.c
===================================================================
--- yaboot.orig/second/yaboot.c	2010-04-01 12:43:35.000000000 +1100
+++ yaboot/second/yaboot.c	2010-04-01 12:43:36.000000000 +1100
@@ -663,7 +663,6 @@ int get_params(struct boot_param_t* para
      static int first = 1;
      static char imagepath[1024];
      static char initrdpath[1024];
-     static char sysmappath[1024];
      static char manualinitrd[1024];
      static int definitrd = 1, hasarg = 0;
 
@@ -672,7 +671,6 @@ int get_params(struct boot_param_t* para
      params->args = "";
      params->kernel.part = -1;
      params->rd.part = -1;
-     params->sysmap.part = -1;
      defpart = boot.part;
 
      cmdinit();
@@ -1015,16 +1013,6 @@ int get_params(struct boot_param_t* para
 		    return 0;
 	       }
 	  }
-	  p = cfg_get_strg(label, "sysmap");
-	  if (p && *p) {
-	       DEBUG_F("Parsing sysmap path <%s>\n", p);
-	       strncpy(sysmappath, p, 1024);
-	       if (!parse_device_path(sysmappath, defdevice, defpart,
-				      "/boot/System.map", &params->sysmap)) {
-		    prom_printf("%s: Unable to parse\n", imagepath);
-		    return 0;
-	       }
-	  }
      }
      return 0;
 }
@@ -1044,8 +1032,6 @@ yaboot_text_ui(void)
      static struct boot_param_t	params;
      void		*initrd_base;
      unsigned long	initrd_size;
-     void                *sysmap_base;
-     unsigned long	sysmap_size;
      kernel_entry_t      kernel_entry;
      struct bi_record*	birec;
      char*               loc=NULL;
@@ -1058,8 +1044,6 @@ yaboot_text_ui(void)
      for (;;) {
 	  initrd_size = 0;
 	  initrd_base = 0;
-	  sysmap_base = 0;
-	  sysmap_size = 0;
 
 	  if (get_params(&params))
 	       return;
@@ -1122,55 +1106,6 @@ yaboot_text_ui(void)
 	  file.fs->close(&file);
 	  memset(&file, 0, sizeof(file));
 
-	  /* If sysmap, load it (only if booting a vmlinux).
-	   */
-	  if (flat_vmlinux && params.sysmap.file) {
-	       prom_printf("Loading System.map ...\n");
-	       if(strlen(boot.file) && !strcmp(boot.file,"\\\\") && params.sysmap.file[0] != '/'
-		  && params.sysmap.file[0] != '\\') {
-		    if (loc) free(loc);
-		    loc=(char*)malloc(strlen(params.sysmap.file)+3);
-		    if (!loc) {
-			 prom_printf ("malloc error\n");
-			 goto next;
-		    }
-		    strcpy(loc,boot.file);
-		    strcat(loc,params.sysmap.file);
-		    free(params.sysmap.file);
-		    params.sysmap.file=loc;
-	       }
-
-	       result = open_file(&params.sysmap, &file);
-	       if (result != FILE_ERR_OK) {
-		    prom_printf("%s:%d,", params.sysmap.dev, params.sysmap.part);
-		    prom_perror(result, params.sysmap.file);
-	       }
-	       else {
-		    sysmap_base = prom_claim(loadinfo.base+loadinfo.memsize, 0x100000, 0);
-		    if (sysmap_base == (void *)-1) {
-			 prom_printf("Claim failed for sysmap memory\n");
-			 prom_pause();
-			 sysmap_base = 0;
-		    } else {
-			 sysmap_size = file.fs->read(&file, 0xfffff, sysmap_base);
-			 if (sysmap_size == 0)
-			      sysmap_base = 0;
-			 else
-			      ((char *)sysmap_base)[sysmap_size++] = 0;
-		    }
-		    file.fs->close(&file);
-		    memset(&file, 0, sizeof(file));
-	       }
-	       if (sysmap_base) {
-		    prom_printf("System.map loaded at %p, size: %lu Kbytes\n",
-				sysmap_base, sysmap_size >> 10);
-		    loadinfo.memsize += _ALIGN(0x100000, 0x1000);
-	       } else {
-		    prom_printf("System.map load failed !\n");
-		    prom_pause();
-	       }
-	  }
-
 	  /* If ramdisk, load it (only if booting a vmlinux).  For now, we
 	   * can't tell the size it will be so we claim an arbitrary amount
 	   * of 4Mb.
@@ -1271,13 +1206,6 @@ yaboot_text_ui(void)
 	       birec->size = sizeof(struct bi_record) + sizeof(ulong);
 	       birec = (struct bi_record *)((ulong)birec + birec->size);
 
-	       if (sysmap_base) {
-	            birec->tag = BI_SYSMAP;
-	            birec->data[0] = (ulong)sysmap_base;
-	            birec->data[1] = sysmap_size;
-	            birec->size = sizeof(struct bi_record) + sizeof(ulong)*2;
-	            birec = (struct bi_record *)((ulong)birec + birec->size);
-	       }
 	       birec->tag = BI_LAST;
 	       birec->size = sizeof(struct bi_record);
 	       birec = (struct bi_record *)((ulong)birec + birec->size);


More information about the Yaboot-devel mailing list