From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, pbonzini@redhat.com, mst@redhat.com,
gaosong@loongson.cn, alistair.francis@wdc.com,
palmer@dabbelt.com, bin.meng@windriver.com, liwei1518@gmail.com,
dbarboza@ventanamicro.com, zhiwei_liu@linux.alibaba.com,
imammedo@redhat.com, anisinha@redhat.com, philmd@linaro.org,
wangyanan55@huawei.com, eblake@redhat.com, armbru@redhat.com,
qemu-arm@nongnu.org, qemu-riscv@nongnu.org, f.ebner@proxmox.com
Subject: [PATCH 00/19] Workaround Windows failing to find 64bit SMBIOS entry point with SeaBIOS
Date: Tue, 27 Feb 2024 16:47:30 +0100 [thread overview]
Message-ID: <20240227154749.1818189-1-imammedo@redhat.com> (raw)
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).
Default compat setting of smbios-entry-point-type after series
for pc/q35 machines:
* 9.0-newer: 'auto'
* 8.1-8.2: '64'
* 8.0-older: '32'
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2008
CC: peter.maydell@linaro.org
CC: pbonzini@redhat.com
CC: mst@redhat.com
CC: gaosong@loongson.cn
CC: alistair.francis@wdc.com
CC: palmer@dabbelt.com
CC: bin.meng@windriver.com
CC: liwei1518@gmail.com
CC: dbarboza@ventanamicro.com
CC: zhiwei_liu@linux.alibaba.com
CC: imammedo@redhat.com
CC: anisinha@redhat.com
CC: philmd@linaro.org
CC: wangyanan55@huawei.com
CC: eblake@redhat.com
CC: armbru@redhat.com
CC: qemu-arm@nongnu.org
CC: qemu-riscv@nongnu.org
CC: f.ebner@proxmox.com
Igor Mammedov (19):
tests: smbios: make it possible to write SMBIOS only test
tests: smbios: add test for -smbios type=11 option
tests: smbios: add test for legacy mode CLI options
smbios: cleanup smbios_get_tables() from legacy handling
smbios: get rid of smbios_smp_sockets global
smbios: get rid of smbios_legacy global
smbios: avoid mangling user provided tables
smbios: don't check type4 structures in legacy mode
smbios: build legacy mode code only for 'pc' machine
smbios: handle errors consistently
smbios: clear smbios_tables pointer after freeing
get rid of global smbios_ep_type
smbios: extend smbios-entry-point-type with 'auto' value
smbios: in case of entry point is 'auto' try to build v2 tables 1st
smbios: error out when building type 4 table is not possible
smbios: clear smbios_type4_count before building tables
tests: acpi/smbios: whitelist expected blobs
pc/q35: set SMBIOS entry point type to 'auto' by default
tests: acpi: update expected SSDT.dimmpxm blob
hw/i386/fw_cfg.h | 3 +-
include/hw/firmware/smbios.h | 29 +-
hw/arm/virt.c | 6 +-
hw/i386/Kconfig | 1 +
hw/i386/fw_cfg.c | 14 +-
hw/i386/pc.c | 4 +-
hw/i386/pc_piix.c | 4 +
hw/i386/pc_q35.c | 3 +
hw/loongarch/virt.c | 7 +-
hw/riscv/virt.c | 6 +-
hw/smbios/Kconfig | 2 +
hw/smbios/meson.build | 4 +
hw/smbios/smbios.c | 481 +++++++++++----------------
hw/smbios/smbios_legacy.c | 185 +++++++++++
hw/smbios/smbios_legacy_stub.c | 16 +
qapi/machine.json | 5 +-
tests/data/acpi/q35/SSDT.dimmpxm | Bin 1815 -> 1815 bytes
tests/data/smbios/type11_blob | Bin 0 -> 11 bytes
tests/data/smbios/type11_blob.legacy | Bin 0 -> 10 bytes
tests/qtest/bios-tables-test.c | 81 ++++-
20 files changed, 535 insertions(+), 316 deletions(-)
create mode 100644 hw/smbios/smbios_legacy.c
create mode 100644 hw/smbios/smbios_legacy_stub.c
create mode 100644 tests/data/smbios/type11_blob
create mode 100644 tests/data/smbios/type11_blob.legacy
--
2.39.3
next reply other threads:[~2024-02-27 15:49 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-27 15:47 Igor Mammedov [this message]
2024-02-27 15:47 ` [PATCH 01/19] tests: smbios: make it possible to write SMBIOS only test Igor Mammedov
2024-02-28 9:35 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 02/19] tests: smbios: add test for -smbios type=11 option Igor Mammedov
2024-02-28 9:55 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 03/19] tests: smbios: add test for legacy mode CLI options Igor Mammedov
2024-02-28 11:11 ` Ani Sinha
2024-02-28 13:59 ` Igor Mammedov
2024-02-28 14:18 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 04/19] smbios: cleanup smbios_get_tables() from legacy handling Igor Mammedov
2024-02-28 11:27 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 05/19] smbios: get rid of smbios_smp_sockets global Igor Mammedov
2024-02-29 7:51 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 06/19] smbios: get rid of smbios_legacy global Igor Mammedov
2024-02-29 10:53 ` Ani Sinha
2024-02-29 14:29 ` Igor Mammedov
2024-03-01 8:33 ` Ani Sinha
2024-03-04 17:38 ` Daniel Henrique Barboza
2024-02-27 15:47 ` [PATCH 07/19] smbios: avoid mangling user provided tables Igor Mammedov
2024-03-04 9:55 ` Ani Sinha
2024-03-04 14:17 ` Igor Mammedov
2024-02-27 15:47 ` [PATCH 08/19] smbios: don't check type4 structures in legacy mode Igor Mammedov
2024-03-04 7:16 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 09/19] smbios: build legacy mode code only for 'pc' machine Igor Mammedov
2024-03-04 10:55 ` Ani Sinha
2024-03-04 14:23 ` Igor Mammedov
2024-03-04 16:43 ` Igor Mammedov
2024-02-27 15:47 ` [PATCH 10/19] smbios: handle errors consistently Igor Mammedov
2024-03-04 11:14 ` Ani Sinha
2024-03-04 13:39 ` Igor Mammedov
2024-03-04 13:53 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 11/19] smbios: clear smbios_tables pointer after freeing Igor Mammedov
2024-03-04 13:54 ` Ani Sinha
2024-03-04 14:25 ` Igor Mammedov
2024-02-27 15:47 ` [PATCH 12/19] get rid of global smbios_ep_type Igor Mammedov
2024-03-04 17:38 ` Daniel Henrique Barboza
2024-03-05 8:39 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 13/19] smbios: extend smbios-entry-point-type with 'auto' value Igor Mammedov
2024-02-27 17:00 ` Markus Armbruster
2024-03-05 9:15 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 14/19] smbios: in case of entry point is 'auto' try to build v2 tables 1st Igor Mammedov
2024-03-05 6:00 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 15/19] smbios: error out when building type 4 table is not possible Igor Mammedov
2024-03-05 11:36 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 16/19] smbios: clear smbios_type4_count before building tables Igor Mammedov
2024-02-27 15:47 ` [PATCH 17/19] tests: acpi/smbios: whitelist expected blobs Igor Mammedov
2024-02-27 15:47 ` [PATCH 18/19] pc/q35: set SMBIOS entry point type to 'auto' by default Igor Mammedov
2024-03-05 12:21 ` Ani Sinha
2024-02-27 15:47 ` [PATCH 19/19] tests: acpi: update expected SSDT.dimmpxm blob Igor Mammedov
2024-02-27 15:49 ` [PATCH 00/19] Workaround Windows failing to find 64bit SMBIOS entry point with SeaBIOS Michael S. Tsirkin
2024-02-29 13:18 ` Fiona Ebner
2024-03-01 13:55 ` Fiona Ebner
2024-03-05 10:08 ` Michael S. Tsirkin
2024-03-05 10:32 ` Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240227154749.1818189-1-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=alistair.francis@wdc.com \
--cc=anisinha@redhat.com \
--cc=armbru@redhat.com \
--cc=bin.meng@windriver.com \
--cc=dbarboza@ventanamicro.com \
--cc=eblake@redhat.com \
--cc=f.ebner@proxmox.com \
--cc=gaosong@loongson.cn \
--cc=liwei1518@gmail.com \
--cc=mst@redhat.com \
--cc=palmer@dabbelt.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=wangyanan55@huawei.com \
--cc=zhiwei_liu@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).