On 12/11/12 05:54, Kevin O'Connor wrote:
On Mon, Dec 10, 2012 at 06:11:08PM +0100, Laszlo Ersek wrote:
There are users who would like to see the UUID at startup, and it probably won't bother others.
The patch isn't going to work for non-qemu users (eg, coreboot).
At least on qemu, I figured
afterReloc() [src/post.c] maininit() init_bios_tables() smbios_init() [src/smbios.c] qemu_cfg_smbios_load_external() -- via add_struct() macro smbios_init_type_1() -- via add_struct() macro, if qemu_cfg_smbios_load_external() fails qemu_cfg_smbios_load_field() -- linear search in QEMU_CFG_SMBIOS_ENTRIES qemu_cfg_smbios_entries() qemu_cfg_skip() / qemu_cfg_read() smbios_entry_point_init() vga_setup() [src/optionroms.c] enable_vga_console() [src/bootsplash.c] printf("SeaBIOS (version %s)\n\n", VERSION); [src/output.c]
I wanted to avoid parsing the SMBIOS System Information structure we just populated in smbios_init(). Looks like there's no way around it.
Can I base that parsing on SMBiosAddr? It seems to be set in all cases after init_bios_tables() returns. The above tree (init_bios_tables()->smbios_init()) is qemu specific, but:
(coreboot) init_bios_tables coreboot_copy_biostable scan_tables copy_table
(xen) init_bios_tables xen_copy_biostables copy_table
(common) copy_table copy_smbios /* ... */ SMBiosAddr = newpos
I'll try to rewrite the patch with SMBiosAddr.
Thanks! Laszlo