Hi,
I'd like to revise the definition of the SMBIOS tag in the Multiboot2 Info
structures to include ONLY the SMBIOS Entry Point structure (**). The current
definition includes the SMBIOS tables themselves, but this is wasteful (even
it the maximum size of the tables is 64k, they are always located in memory,
in reserved regions, and duplicating them would be a waste of space).
Additionally, many OS consumers need most of the values from the Entry Point
structure itself anyway. The alternate solution here is to include both the
Entry Point structure and the tables, but that's suboptimal because one would
have to include a pointer to the tables (located after the Entry Point
structure in memory when stored in a MBI2 tag), which would make relocating
(copying) the entire MBI2 structure much more complicated than a simple
memcpy. All this boils down to the fact that the most straightforward
solution is to JUST include the Entry Point structure, and to allow the SMBIOS
tables to remain where firmware placed them.
Thanks,
--S
(**) The SMBIOS Entry Point structure is documented in DMTF Specification
DSP0134 (SMBIOS Specification), the latest version of which is available from:
http://dmtf.org/sites/default/files/standards/documents/DSP0134_2.7.1.pdf
=== modified file 'doc/multiboot.texi'
--- doc/multiboot.texi 2012-01-24 20:11:24 +0000
+++ doc/multiboot.texi 2012-01-24 20:14:53 +0000
@@ -1072,21 +1072,21 @@
This tag contains pointer to amd64 EFI system table.
-@subsection SMBIOS tables
+@subsection SMBIOS Entry Point structure
@example
@group
+-------------------+
u32 | type = 13 |
u32 | size |
-u8 | major |
-u8 | minor |
-u8[6] | reserved |
- | smbios tables |
+ | smbios entry |
+ | point structure |
+-------------------+
@end group
@end example
-This tag contains a copy of SMBIOS tables as well as their version.
+This tag contains a copy of the SMBIOS entry point structure. The SMBIOS
+tables are located elsewhere in memory (in firmware-reserved regions),
+referenced by the SMBIOS Entry Point structure.
@subsection ACPI old RSDP
@example
=== modified file 'doc/multiboot2.h'
--- doc/multiboot2.h 2012-01-24 20:11:24 +0000
+++ doc/multiboot2.h 2012-01-24 20:15:15 +0000
@@ -334,10 +334,7 @@
{
multiboot_uint32_t type;
multiboot_uint32_t size;
- multiboot_uint8_t major;
- multiboot_uint8_t minor;
- multiboot_uint8_t reserved[6];
- multiboot_uint8_t tables[0];
+ multiboot_uint8_t entry_point[0];
};
struct multiboot_tag_old_acpi
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel