[SeaBIOS] [PATCH] enable_vga_console(): print machine UUID under seabios version message

Laszlo Ersek lersek at redhat.com
Tue Dec 11 13:00:04 CET 2012


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



More information about the SeaBIOS mailing list