From patchwork Sun Apr 11 04:02:26 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Blanchard X-Patchwork-Id: 57967 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on bilbo.ozlabs.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.1 X-Original-To: tony@bakeyournoodle.com Delivered-To: tony@bilbo.ozlabs.org Received: from bilbo.ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id CABAEB7F1E for ; Sun, 11 Apr 2010 18:48:38 +1000 (EST) Received: by ozlabs.org (Postfix, from userid 1010) id 3A7E4B7D20; Sun, 11 Apr 2010 14:07:31 +1000 (EST) Date: Sun, 11 Apr 2010 14:02:26 +1000 From: Anton Blanchard To: yaboot-devel@lists.ozlabs.org Subject: [PATCH 1/10] Remove sysmap support Message-ID: <20100411040226.GB3142@kryten> References: <20100411040149.GA3142@kryten> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20100411040149.GA3142@kryten> User-Agent: Mutt/1.5.20 (2009-06-14) X-Mailman-Approved-At: Sun, 11 Apr 2010 18:48:32 +1000 X-BeenThere: yaboot-devel@lists.ozlabs.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Technical and development discussion regarding yaboot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: yaboot-devel-bounces+tony=bakeyournoodle.com@lists.ozlabs.org Errors-To: yaboot-devel-bounces+tony=bakeyournoodle.com@lists.ozlabs.org Content-Length: 6093 Lines: 175 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);