* 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.