qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/20] Workaround Windows failing to find 64bit SMBIOS entry point with SeaBIOS
@ 2024-03-05 15:57 Igor Mammedov
  2024-03-05 15:57 ` [PATCH v2 01/20] tests: smbios: make it possible to write SMBIOS only test Igor Mammedov
                   ` (19 more replies)
  0 siblings, 20 replies; 37+ messages in thread
From: Igor Mammedov @ 2024-03-05 15:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: peter.maydell, pbonzini, mst, gaosong, alistair.francis, palmer,
	bin.meng, liwei1518, dbarboza, zhiwei_liu, imammedo, anisinha,
	philmd, wangyanan55, eblake, armbru, qemu-arm, qemu-riscv,
	f.ebner

Changelog:
   * QAPI style fixes (Markus Armbruster <armbru@redhat.com>)
   * squash 11/19 into 10/19 (Ani Sinha <anisinha@redhat.com>)
   * split '[PATCH 09/19] smbios: build legacy mode code only for 'pc' machine'
     in 3 smaller patches, to make it more readable
       smbios: add smbios_add_usr_blob_size() helper                                  
       smbios: rename/expose structures/bitmaps used by both legacy and modern code                                                                  
       smbios: build legacy mode code only for 'pc' machine
   * pick up acks

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 (20):
  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: add smbios_add_usr_blob_size() helper
  smbios: rename/expose structures/bitmaps used by both legacy and
    modern code
  smbios: build legacy mode code only for 'pc' machine
  smbios: handle errors consistently
  smbios: 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         |  28 +-
 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, 534 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



^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2024-03-09  5:43 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-05 15:57 [PATCH v2 00/20] Workaround Windows failing to find 64bit SMBIOS entry point with SeaBIOS Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 01/20] tests: smbios: make it possible to write SMBIOS only test Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 02/20] tests: smbios: add test for -smbios type=11 option Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 03/20] tests: smbios: add test for legacy mode CLI options Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 04/20] smbios: cleanup smbios_get_tables() from legacy handling Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 05/20] smbios: get rid of smbios_smp_sockets global Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 06/20] smbios: get rid of smbios_legacy global Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 07/20] smbios: avoid mangling user provided tables Igor Mammedov
2024-03-06  6:41   ` Ani Sinha
2024-03-07  4:03     ` Ani Sinha
2024-03-08 17:19       ` Igor Mammedov
2024-03-09  5:42         ` Ani Sinha
2024-03-05 15:57 ` [PATCH v2 08/20] smbios: don't check type4 structures in legacy mode Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 09/20] smbios: add smbios_add_usr_blob_size() helper Igor Mammedov
2024-03-06  6:48   ` Ani Sinha
2024-03-05 15:57 ` [PATCH v2 10/20] smbios: rename/expose structures/bitmaps used by both legacy and modern code Igor Mammedov
2024-03-06  7:15   ` Ani Sinha
2024-03-05 15:57 ` [PATCH v2 11/20] smbios: build legacy mode code only for 'pc' machine Igor Mammedov
2024-03-06  7:27   ` Ani Sinha
2024-03-06 10:04     ` Igor Mammedov
2024-03-06 10:03   ` [PATCH v3 " Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 12/20] smbios: handle errors consistently Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 13/20] smbios: get rid of global smbios_ep_type Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 14/20] smbios: extend smbios-entry-point-type with 'auto' value Igor Mammedov
2024-03-08  7:25   ` Markus Armbruster
2024-03-08 12:21   ` [PATCH v3 " Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 15/20] smbios: in case of entry point is 'auto' try to build v2 tables 1st Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 16/20] smbios: error out when building type 4 table is not possible Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 17/20] smbios: clear smbios_type4_count before building tables Igor Mammedov
2024-03-06  7:47   ` Ani Sinha
2024-03-06  9:58     ` Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 18/20] tests: acpi/smbios: whitelist expected blobs Igor Mammedov
2024-03-06  8:31   ` Ani Sinha
2024-03-05 15:57 ` [PATCH v2 19/20] pc/q35: set SMBIOS entry point type to 'auto' by default Igor Mammedov
2024-03-05 15:57 ` [PATCH v2 20/20] tests: acpi: update expected SSDT.dimmpxm blob Igor Mammedov
2024-03-06  9:20   ` Ani Sinha
2024-03-06 10:01     ` Igor Mammedov

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).