Skip to content

Workaround Windows failing to find 64bit SMBIOS entry point with SeaBIOS

Igor Mammedov requested to merge (removed):smbios_blob_v4 into c9s

Based on v4: https://patchew.org/QEMU/20240314152302.2324164-1-imammedo@redhat.com/ hence not commit ids for most of the patches.

Windows (10) bootloader when running on top of SeaBIOS, fails to find SMBIOSv3 entry point. Tracing it shows that it looks for v2 anchor markers only and not v3. Tricking it into believing that entry point is found lets Windows successfully locate and parse SMBIOSv3 tables. Whether it will be fixed on Windows side is not clear so here goes a workaround.

Idea is to try build v2 tables if QEMU configuration permits, and fallback to v3 tables otherwise. That will mask Windows issue form majority of users. However if VM configuration can't be described (typically large VMs) by v2 tables, QEMU will use SMBIOSv3 and Windows will hit the issue again. In this case complain to Microsoft and/or use UEFI instead of SeaBIOS (requires reinstall).

Summary of Changes

Downstream changes applicable to x86:

  • keep 'pc' based machine types using 32 bit SMBIOS entrypoint
  • keep 'q35' based machines 9.2 and older using 32 bit SMBIOS entrypoint
  • make the latest 'q35' based machines use 'auto' entry point (incl. 9.4 machine type)

Approved Development Ticket

Jira: https://issues.redhat.com/browse/RHEL-21705

Edited by Miroslav Rezanina

Merge request reports