From patchwork Sun Apr 11 04:02:26 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1/10] Remove sysmap support Date: Sat, 10 Apr 2010 18:02:26 -0000 From: Anton Blanchard X-Patchwork-Id: 57967 Message-Id: <20100411040226.GB3142@kryten> To: yaboot-devel@lists.ozlabs.org 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 --- 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 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", ¶ms->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(¶ms)) 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(¶ms.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);