From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1JF8Wm-00029d-HU for mharc-grub-devel@gnu.org; Wed, 16 Jan 2008 08:42:00 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JF8Wk-00027p-Iw for grub-devel@gnu.org; Wed, 16 Jan 2008 08:41:58 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JF8Wj-000266-Dw for grub-devel@gnu.org; Wed, 16 Jan 2008 08:41:57 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JF8Wj-00025r-8R for grub-devel@gnu.org; Wed, 16 Jan 2008 08:41:57 -0500 Received: from aybabtu.com ([69.60.117.155]) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JF8Wi-0007De-W1 for grub-devel@gnu.org; Wed, 16 Jan 2008 08:41:57 -0500 Received: from [192.168.10.6] (helo=thorin) by aybabtu.com with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from ) id 1JF8Wd-00073n-7G for grub-devel@gnu.org; Wed, 16 Jan 2008 14:41:55 +0100 Received: from rmh by thorin with local (Exim 4.63) (envelope-from ) id 1JF8Us-0006tF-U5 for grub-devel@gnu.org; Wed, 16 Jan 2008 14:40:02 +0100 Date: Wed, 16 Jan 2008 14:40:02 +0100 From: Robert Millan To: The development of GRUB 2 Message-ID: <20080116134002.GA26468@thorin> References: <20080115180547.GA21853@thorin> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="3V7upXqbjpZ4EhLz" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Organization: free as in freedom X-Message-Flag: Worried about Outlook viruses? Switch to Thunderbird! www.mozilla.com/thunderbird X-Debbugs-No-Ack: true User-Agent: Mutt/1.5.13 (2006-08-11) X-detected-kernel: by monty-python.gnu.org: Genre and OS details not recognized. Subject: Re: Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jan 2008 13:41:58 -0000 --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Tue, Jan 15, 2008 at 06:47:54PM +0000, Patrick Georgi wrote: > Am Tue, 15 Jan 2008 19:05:47 +0100 schrieb Robert Millan: > > Is the "LBIO" signature schedule to change due to CoreBoot rename? > > Should we check for another one as well? > I'm not sure if the rename extends to that, given that it's an > incompatible interface change. > I'd go with just "LBIO" for the time being, it will take a while until > the rename is completed anyway. If things change, I'll tell you, okay? Ok. See attached patch. Comments, anyone? -- Robert Millan I know my rights; I want my phone call! What use is a phone call… if you are unable to speak? (as seen on /.) --3V7upXqbjpZ4EhLz Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="coreboot_table.diff" * include/grub/i386/linuxbios/memory.h (GRUB_MEMORY_MACHINE_LINUXBIOS_TABLE_ADDR): Remove macro. * kern/i386/linuxbios/table.c (grub_linuxbios_table_iterate): Do not receive `table_header' as argument. Instead, probe for it in the known memory ranges where it can be present. (grub_available_iterate): Do not pass a fixed `table_header' address to grub_linuxbios_table_iterate(). diff -ur ../grub2/include/grub/i386/linuxbios/memory.h ./include/grub/i386/linuxbios/memory.h --- ../grub2/include/grub/i386/linuxbios/memory.h 2007-10-31 23:35:13.000000000 +0100 +++ ./include/grub/i386/linuxbios/memory.h 2008-01-16 13:36:24.000000000 +0100 @@ -28,8 +28,6 @@ #include #endif -#define GRUB_MEMORY_MACHINE_LINUXBIOS_TABLE_ADDR 0x500 - #define GRUB_MEMORY_MACHINE_LOWER_USABLE 0x9fc00 /* 640 kiB - 1 kiB */ #define GRUB_MEMORY_MACHINE_LOWER_SIZE 0xf0000 /* 960 kiB */ diff -ur ../grub2/kern/i386/linuxbios/table.c ./kern/i386/linuxbios/table.c --- ../grub2/kern/i386/linuxbios/table.c 2007-10-31 23:35:13.000000000 +0100 +++ ./kern/i386/linuxbios/table.c 2008-01-16 14:35:35.000000000 +0100 @@ -1,6 +1,6 @@ /* * GRUB -- GRand Unified Bootloader - * Copyright (C) 2007 Free Software Foundation, Inc. + * Copyright (C) 2007,2008 Free Software Foundation, Inc. * * GRUB is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,13 +21,33 @@ #include static grub_err_t -grub_linuxbios_table_iterate (grub_linuxbios_table_header_t table_header, - int (*hook) (grub_linuxbios_table_item_t)) +grub_linuxbios_table_iterate (int (*hook) (grub_linuxbios_table_item_t)) { + grub_linuxbios_table_header_t table_header; grub_linuxbios_table_item_t table_item; - if (grub_memcmp (table_header->signature, "LBIO", 4)) - grub_fatal ("Could not find LinuxBIOS table\n"); + auto int check_signature (grub_linuxbios_table_header_t); + int check_signature (grub_linuxbios_table_header_t table_header) + { + if (! grub_memcmp (table_header->signature, "LBIO", 4)) + return 1; + + return 0; + } + + /* Assuming sizeof(*table_header) alignment. */ + + for (table_header = 0x500; table_header < 0x1000; table_header++) + if (check_signature (table_header)) + goto signature_found; + + for (table_header = 0xf0000; table_header < 0x100000; table_header++) + if (check_signature (table_header)) + goto signature_found; + + grub_fatal ("Could not find CoreBoot table\n"); + +signature_found: table_item = (grub_linuxbios_table_item_t) ((long) table_header + @@ -62,8 +82,7 @@ return 0; } - grub_linuxbios_table_iterate (GRUB_MEMORY_MACHINE_LINUXBIOS_TABLE_ADDR, - iterate_linuxbios_table); + grub_linuxbios_table_iterate (iterate_linuxbios_table); return 0; } --3V7upXqbjpZ4EhLz--