* Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables @ 2008-01-12 17:44 Patrick Georgi 2008-01-12 18:18 ` Robert Millan 2008-01-15 18:05 ` Robert Millan 0 siblings, 2 replies; 7+ messages in thread From: Patrick Georgi @ 2008-01-12 17:44 UTC (permalink / raw) To: grub-devel Hi, I had several issues with getting GRUB2 to run on CoreBoot (aka LinuxBIOS), which I'll describe here. They're rather trivial (I have patches), so someone with a working relationship with the FSF, experience with the GRUB2 codebase and C, and 15 minutes time for each issue should be able to fix these issues in a way suitable for GRUB2 mainline. First issue: Right now, grub2 has a hard coded location for the lbtables and gives up if they're not there. According to the coreboot sources, these tables can start anywhere between 0x500 and 0x1000, or between 0xf0000 and 0x100000 at a 16 byte boundary. To find it, checking for the "LBIO"-signature (as is done already) should be enough. Regards, Patrick Georgi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables 2008-01-12 17:44 Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables Patrick Georgi @ 2008-01-12 18:18 ` Robert Millan 2008-01-15 18:05 ` Robert Millan 1 sibling, 0 replies; 7+ messages in thread From: Robert Millan @ 2008-01-12 18:18 UTC (permalink / raw) To: The development of GRUB 2 On Sat, Jan 12, 2008 at 05:44:42PM +0000, Patrick Georgi wrote: > Hi, > > I had several issues with getting GRUB2 to run on CoreBoot (aka > LinuxBIOS), which I'll describe here. Thank you for the reports. If noone beats me to it, I'll allocate some time next tuesday to look into them. -- Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call, if you are unable to speak? (as seen on /.) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables 2008-01-12 17:44 Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables Patrick Georgi 2008-01-12 18:18 ` Robert Millan @ 2008-01-15 18:05 ` Robert Millan 2008-01-15 18:47 ` Patrick Georgi 1 sibling, 1 reply; 7+ messages in thread From: Robert Millan @ 2008-01-15 18:05 UTC (permalink / raw) To: The development of GRUB 2 On Sat, Jan 12, 2008 at 05:44:42PM +0000, Patrick Georgi wrote: > > First issue: Right now, grub2 has a hard coded location for the lbtables > and gives up if they're not there. > According to the coreboot sources, these tables can start anywhere > between 0x500 and 0x1000, or between 0xf0000 and 0x100000 at a 16 byte > boundary. > To find it, checking for the "LBIO"-signature (as is done already) should > be enough. Is the "LBIO" signature schedule to change due to CoreBoot rename? Should we check for another one as well? -- Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call, if you are unable to speak? (as seen on /.) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables 2008-01-15 18:05 ` Robert Millan @ 2008-01-15 18:47 ` Patrick Georgi 2008-01-16 13:40 ` Robert Millan 0 siblings, 1 reply; 7+ messages in thread From: Patrick Georgi @ 2008-01-15 18:47 UTC (permalink / raw) To: grub-devel 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? Regards, Patrick Georgi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables 2008-01-15 18:47 ` Patrick Georgi @ 2008-01-16 13:40 ` Robert Millan 2008-01-16 19:39 ` Uwe Hermann 0 siblings, 1 reply; 7+ messages in thread From: Robert Millan @ 2008-01-16 13:40 UTC (permalink / raw) To: The development of GRUB 2 [-- Attachment #1: Type: text/plain, Size: 678 bytes --] 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 <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call… if you are unable to speak? (as seen on /.) [-- Attachment #2: coreboot_table.diff --] [-- Type: text/x-diff, Size: 2859 bytes --] * 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 <grub/err.h> #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 <grub/err.h> 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; } ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables 2008-01-16 13:40 ` Robert Millan @ 2008-01-16 19:39 ` Uwe Hermann 2008-01-16 21:19 ` Robert Millan 0 siblings, 1 reply; 7+ messages in thread From: Uwe Hermann @ 2008-01-16 19:39 UTC (permalink / raw) To: The development of GRUB 2 On Wed, Jan 16, 2008 at 02:40:02PM +0100, Robert Millan wrote: > + 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. */ Maybe a more verbose comment here? > + 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"); "coreboot" please. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables 2008-01-16 19:39 ` Uwe Hermann @ 2008-01-16 21:19 ` Robert Millan 0 siblings, 0 replies; 7+ messages in thread From: Robert Millan @ 2008-01-16 21:19 UTC (permalink / raw) To: The development of GRUB 2 On Wed, Jan 16, 2008 at 08:39:09PM +0100, Uwe Hermann wrote: > On Wed, Jan 16, 2008 at 02:40:02PM +0100, Robert Millan wrote: > > + 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. */ > > Maybe a more verbose comment here? > > > > + 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"); > > "coreboot" please. Fixed, thanks. -- Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call… if you are unable to speak? (as seen on /.) ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-01-16 21:21 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-01-12 17:44 Using GRUB2 with CoreBoot (formerly known as LinuxBIOS) 1/4: Find tables Patrick Georgi 2008-01-12 18:18 ` Robert Millan 2008-01-15 18:05 ` Robert Millan 2008-01-15 18:47 ` Patrick Georgi 2008-01-16 13:40 ` Robert Millan 2008-01-16 19:39 ` Uwe Hermann 2008-01-16 21:19 ` Robert Millan
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.