querying smbios type=1 UUID in Windows not possible when using SMBIOS 64 bit entry

Host environment

  • Operating system: Proxmox VE 8 (but using upstream build of QEMU)
  • OS/kernel version: Linux pve8a1 6.5.11-5-pve #1 SMP PREEMPT_DYNAMIC PMX 6.5.11-5 (2023-11-27T19:52Z) x86_64 GNU/Linux
  • Architecture: x86
  • QEMU flavor: qemu-system-x86_64
  • QEMU version: QEMU emulator version 8.1.0 (v8.1.0)
  • QEMU command line:
    ./qemu-system-x86_64 \
    -accel 'kvm' \
    -chardev 'socket,id=qmp,path=/var/run/qemu-server/126.qmp,server=on,wait=off' \
    -mon 'chardev=qmp,mode=control' \
    -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
    -mon 'chardev=qmp-event,mode=control' \
    -pidfile /var/run/qemu-server/126.pid \
    -smbios 'type=1,uuid=aad890cd-55b7-4e60-b51b-504f6e6ad5ba' \
    -smp '4,sockets=1,cores=4,maxcpus=4' \
    -vnc 'unix:/var/run/qemu-server/126.vnc,password=on' \
    -m 4096 \
    -nodefaults \
    -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
    -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
    -device 'pci-bridge,id=pci.3,chassis_nr=3,bus=pci.0,addr=0x5' \
    -device 'VGA,id=vga,bus=pci.0,addr=0x2,edid=off' \
    -device 'virtio-scsi-pci,id=virtioscsi0,bus=pci.3,addr=0x1' \
    -drive 'file=/var/lib/vz/images/126/vm-126-disk-0.qcow2,if=none,id=drive-scsi0,format=qcow2' \
    -device 'scsi-hd,bus=virtioscsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \
    -machine 'pc-i440fx-8.1'

Emulated/Virtualized environment

  • Operating system: Windows Server 2022 (also affects Windows Server 2019 and Windows 10)
  • OS/kernel version: Build 20348.fe_release.210507-1500
  • Architecture: x86

Description of problem

Querying the UUID in Powershell with get-wmiobject win32_computersystemproduct | Select-Object -expandProperty UUID will return no value. When using -machine 'pc-i440fx-8.1,smbios-entry-point-type=32' or -machine 'pc-i440fx-8.0' the command works as expected. When using -machine 'pc-i440fx-8.0,smbios-entry-point-type=64' the issue is also present.

Commit bf376f30 changed the default for machine version 8.1, so that explains that part.

It's not clear to me if this is a bug in QEMU or a bug/limitation of the guest OS when 64 bit entry is used by SMBIOS.

Additional information

Originally reported for Windows 10 in the Proxmox VE community forum (AFAIK the downstream build in Proxmox VE does not patch the relevant code paths): https://forum.proxmox.com/threads/136942/

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information