Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: Windows 10 x86_64 won't boot on M3 mac #1385

Open
1 task done
popey opened this issue Jul 17, 2024 · 12 comments
Open
1 task done

bug: Windows 10 x86_64 won't boot on M3 mac #1385

popey opened this issue Jul 17, 2024 · 12 comments
Labels
bug Something isn't working

Comments

@popey
Copy link
Contributor

popey commented Jul 17, 2024

I confirm this bug has not already been reported

  • I have searched the issues and this bug has not been reported previously

Describe the bug

I pulled the tip of git, then ran quickemu, and Windows 10 didn't boot.

qemu-system-x86_64: can't apply global qemu64-x86_64-cpu.migratable=no: Property 'qemu64-x86_64-cpu.migratable' not found

To Reproduce
Steps to reproduce the behavior:

  1. On an M3 MacBook Pro, clone the quickemu project
  2. ./quickget windows 10
  3. ./quickemu --vm windows-10.conf

Expected behavior

A window appears with a perfectly smooth and bare-metal fast emulation of x86_64 Windows.

But I'd take a window of some kind.

Quickemu output

Quickemu 4.9.6 using /opt/homebrew/bin/qemu-system-x86_64 v9.0.1
 - Host:     macOS 14.5 running Darwin 23.5.0 Alans-MacBook-Pro
 - CPU:      Apple M3 Pro
 - CPU VM:   qemu64, 1 Socket(s), 4 Core(s), 1 Thread(s)
 - RAM VM:   8G RAM
 - BOOT:     EFI (Windows), OVMF (/opt/homebrew/opt/qemu/share/qemu/edk2-x86_64-code.fd), SecureBoot (off).
 - Disk:     windows-10/disk.qcow2 (64G)
             Just created, booting from windows-10/Win10_22H2_EnglishInternational_x64v1.iso
 - Boot ISO: windows-10/Win10_22H2_EnglishInternational_x64v1.iso
 - CD-ROM:   windows-10/virtio-win.iso
 - Display:  COCOA, virtio-vga, GL (off), VirGL (off) @ (1280 x 800)
 - Sound:    intel-hda (hda-micro)
 - ssh:      On host:  ssh user@localhost -p 22220
 - WebDAV:   On guest: dav://localhost:9843/
 - smbd:     On guest: smb://10.0.2.4/qemu
 - Network:  User (virtio-net)
 - Monitor:  On host:  socat -,echo=0,icanon=0 unix-connect:windows-10/windows-10-monitor.socket
 - Serial:   On host:  socat -,echo=0,icanon=0 unix-connect:windows-10/windows-10-serial.socket
 - Process:  ERROR! Failed to start windows-10.conf as windows-10

qemu-system-x86_64: can't apply global qemu64-x86_64-cpu.migratable=no: Property 'qemu64-x86_64-cpu.migratable' not found

System information

----------------------------------
        Quickemu 4.9.6
----------------------------------
Distro:	macOS 14.5
Kernel:	Darwin 23.5.0 arm64
Memory:	36G
GPU:
 -Apple M3 Pro
----------------------------------
            curl 8.6.0
----------------------------------
Libraries: libcurl/8.6.0 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.61.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features:  alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM NTLM_WB SPNEGO SSL threadsafe UnixSockets
----------------------------------
            QEMU 9.0.1
----------------------------------
Available CPUs:
  a64fx
  arm1026
  arm1136
  arm1136-r2
  arm1176
  arm11mpcore
  arm926
  arm946
  cortex-a15
  cortex-a35
  cortex-a53
  cortex-a55
  cortex-a57
  cortex-a7
  cortex-a710
  cortex-a72
  cortex-a76
  cortex-a8
  cortex-a9
  cortex-m0
  cortex-m3
  cortex-m33
  cortex-m4
  cortex-m55
  cortex-m7
  cortex-r5
  cortex-r52
  cortex-r5f
  host
  max
  neoverse-n1
  neoverse-n2
  neoverse-v1
  pxa250
  pxa255
  pxa260
  pxa261
  pxa262
  pxa270-a0
  pxa270-a1
  pxa270
  pxa270-b0
  pxa270-b1
  pxa270-c0
  pxa270-c5
  sa1100
  sa1110
  ti925t
----------------------------------
               CPU
----------------------------------
Apple M3 Pro

Screenshots

I wish.

Additional context

I like tacos.

@ymauray
Copy link
Member

ymauray commented Jul 17, 2024

On my m2 macbook I had to remove "migratable=no" from the CPU variable definition, on lines 468 and 470. I then got to the install screen.

Can't do much for your tacos, though.

@popey
Copy link
Contributor Author

popey commented Jul 17, 2024

Thanks @ymauray

Yup! That worked.

image

@ymauray
Copy link
Member

ymauray commented Jul 17, 2024

Now all we need to do is let @flexiondotorg do his magic and turn this hack into something beautiful !

@popey
Copy link
Contributor Author

popey commented Jul 17, 2024

Step one: Buy a mac.

Workaround: Come to my office tomorrow and play with mine.

@lj3954
Copy link
Member

lj3954 commented Jul 17, 2024

What's the purpose of migratable=no in the CPU argument for exclusively Windows guests? #1269 also references an issue with it.

@popey
Copy link
Contributor Author

popey commented Jul 17, 2024

I think that with migratable=no QEMU makes the guest CPU more consistent with the host and less basic. Without this option set, it allows for save/load of the VM state, and migration from one version to another. e.g. save state on QEMU 8, upgrade qemu, and load state from that VM on QEMU 9. As the host and guest are different architectures, this passthrough isn't going to work as the feature capabilities of host and guest CPU differ too much.

So I am guessing there needs to be a path in that function which sets the CPU flags based on host CPU as well as guest CPU. Probably around line 403, where there's already a host CPU arch check.

@popey
Copy link
Contributor Author

popey commented Jul 18, 2024

I left it running overnight, and now I have a Windows 10 VM on my state-of-the-art Apple M3 Pro laptop, which has the performance of Windows 98 on a 486 :D

image

@ymauray
Copy link
Member

ymauray commented Jul 18, 2024

Yep, pretty much the same experience over here, with Windows 11 on an M2 macbook air !

@lj3954
Copy link
Member

lj3954 commented Jul 19, 2024

Related to this, future quickget will be able to build Windows images, including both development channels & aarch64: quickemu-project/quickget_configs@e0217c2. I don't believe quickemu is capable of booting aarch64 Windows yet, though.

@flexiondotorg
Copy link
Member

I don't believe quickemu is capable of booting aarch64 Windows yet, though.

Correct 👍 But we should totally support that at some point 🙂

@flexiondotorg flexiondotorg added the bug Something isn't working label Jul 19, 2024
@OhMyMndy
Copy link
Contributor

OhMyMndy commented Sep 12, 2024

I somehow have the same on a Fedora 40 host (running on Proxmox (KVM), CPU type Host) running Quickemu through Nix

Error: couldn't find RGB GLX visual or fbconfig
Quickemu 4.9.5 using /nix/store/jwgldppa6abzq9g4ymd72midn2h09bg8-qemu-8.2.6/bin/qemu-system-x86_64 v8.2.6
 - Host:     Fedora Linux 40 (Workstation Edition) running Linux 6.10.8-200.fc40.x86_64 dev-3
 - CPU:      AMD Ryzen 7 5800H with Radeon Graphics
 - CPU VM:   qemu64, 1 Socket(s), 4 Core(s), 1 Thread(s)
 - MSR:      WARNING! Ignoring unhandled Model-Specific Registers is disabled.

             echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs

             If you are unable to run macOS or Windows VMs then run the above 👆
             This will enable ignoring of unhandled MSRs until you reboot the host.
             You can make this change permanent by running: 'quickemu --ignore-msrs-always'
 - RAM VM:   8G RAM
 - EFI:      WARNING! /usr/share/OVMF/OVMF_CODE.fd is a symlink.
             Resolving to... /usr/share/edk2/ovmf/OVMF_CODE.fd
 - BOOT:     EFI (Windows), OVMF (/usr/share/edk2/ovmf/OVMF_CODE.fd), SecureBoot (off).
 - Disk:     windows-11/disk.qcow2 (64G)
             Looks unused, booting from windows-11/Win11_23H2_EnglishInternational_x64v2.iso
 - Boot ISO: windows-11/Win11_23H2_EnglishInternational_x64v2.iso
 - CD-ROM:   windows-11/virtio-win.iso
 - Display:  SDL, virtio-vga-gl, GL (on), VirGL (on) @ (1280 x 800)
 - Sound:    intel-hda (hda-micro)
 - ssh:      On host:  ssh user@localhost -p 22220
 - WebDAV:   On guest: dav://localhost:9843/
 - smbd:     On guest: smb://10.0.2.4/qemu
 - Network:  User (virtio-net)
 - Monitor:  On host:  nc -U "windows-11/windows-11-monitor.socket"
             or     :  socat -,echo=0,icanon=0 unix-connect:windows-11/windows-11-monitor.socket
 - Serial:   On host:  nc -U "windows-11/windows-11-serial.socket"
             or     :  socat -,echo=0,icanon=0 unix-connect:windows-11/windows-11-serial.socket
 - Process:  ERROR! Failed to start windows-11.conf as windows-11

qemu-system-x86_64: can't apply global qemu64-x86_64-cpu.migratable=no: Property 'qemu64-x86_64-cpu.migratable' not found
----------------------------------
        Quickemu 4.9.5
----------------------------------
Distro: Fedora Linux 40 (Workstation Edition)
Kernel: Linux 6.10.8-200.fc40.x86_64 x86_64
Memory: 35G
GPU:
 - Red Hat, Inc. Virtio 1.0 GPU (rev 01)
----------------------------------
            curl 8.7.1
----------------------------------
Libraries: libcurl/8.7.1 OpenSSL/3.0.14 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libidn2/2.3.7 libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.61.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features:  alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd
----------------------------------
            QEMU 8.2.6
----------------------------------
Available CPUs:
x86 486                   (alias configured by machine type)
x86 486-v1
x86 Broadwell             (alias configured by machine type)
x86 Broadwell-IBRS        (alias of Broadwell-v3)
x86 Broadwell-noTSX       (alias of Broadwell-v2)
x86 Broadwell-noTSX-IBRS  (alias of Broadwell-v4)
x86 Broadwell-v1          Intel Core Processor (Broadwell)
x86 Broadwell-v2          Intel Core Processor (Broadwell, no TSX)
x86 Broadwell-v3          Intel Core Processor (Broadwell, IBRS)
x86 Broadwell-v4          Intel Core Processor (Broadwell, no TSX, IBRS)
x86 Cascadelake-Server    (alias configured by machine type)
x86 Cascadelake-Server-noTSX  (alias of Cascadelake-Server-v3)
x86 Cascadelake-Server-v1  Intel Xeon Processor (Cascadelake)
x86 Cascadelake-Server-v2  Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES]
x86 Cascadelake-Server-v3  Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES, no TSX]
x86 Cascadelake-Server-v4  Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES, no TSX]
x86 Cascadelake-Server-v5  Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES, EPT switching, XSAVES, no TSX]
x86 Conroe                (alias configured by machine type)
x86 Conroe-v1             Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 Cooperlake            (alias configured by machine type)
x86 Cooperlake-v1         Intel Xeon Processor (Cooperlake)
x86 Cooperlake-v2         Intel Xeon Processor (Cooperlake) [XSAVES]
x86 Denverton             (alias configured by machine type)
x86 Denverton-v1          Intel Atom Processor (Denverton)
x86 Denverton-v2          Intel Atom Processor (Denverton) [no MPX, no MONITOR]
x86 Denverton-v3          Intel Atom Processor (Denverton) [XSAVES, no MPX, no MONITOR]
x86 Dhyana                (alias configured by machine type)
x86 Dhyana-v1             Hygon Dhyana Processor
x86 Dhyana-v2             Hygon Dhyana Processor [XSAVES]
x86 EPYC                  (alias configured by machine type)
x86 EPYC-Genoa            (alias configured by machine type)
x86 EPYC-Genoa-v1         AMD EPYC-Genoa Processor
x86 EPYC-IBPB             (alias of EPYC-v2)
x86 EPYC-Milan            (alias configured by machine type)
x86 EPYC-Milan-v1         AMD EPYC-Milan Processor
x86 EPYC-Milan-v2         AMD EPYC-Milan-v2 Processor
x86 EPYC-Rome             (alias configured by machine type)
x86 EPYC-Rome-v1          AMD EPYC-Rome Processor
x86 EPYC-Rome-v2          AMD EPYC-Rome Processor
x86 EPYC-Rome-v3          AMD EPYC-Rome-v3 Processor
x86 EPYC-Rome-v4          AMD EPYC-Rome-v4 Processor (no XSAVES)
x86 EPYC-v1               AMD EPYC Processor
x86 EPYC-v2               AMD EPYC Processor (with IBPB)
x86 EPYC-v3               AMD EPYC Processor
x86 EPYC-v4               AMD EPYC-v4 Processor
x86 GraniteRapids         (alias configured by machine type)
x86 GraniteRapids-v1      Intel Xeon Processor (GraniteRapids)
x86 Haswell               (alias configured by machine type)
x86 Haswell-IBRS          (alias of Haswell-v3)
x86 Haswell-noTSX         (alias of Haswell-v2)
x86 Haswell-noTSX-IBRS    (alias of Haswell-v4)
x86 Haswell-v1            Intel Core Processor (Haswell)
x86 Haswell-v2            Intel Core Processor (Haswell, no TSX)
x86 Haswell-v3            Intel Core Processor (Haswell, IBRS)
x86 Haswell-v4            Intel Core Processor (Haswell, no TSX, IBRS)
x86 Icelake-Server        (alias configured by machine type)
x86 Icelake-Server-noTSX  (alias of Icelake-Server-v2)
x86 Icelake-Server-v1     Intel Xeon Processor (Icelake)
x86 Icelake-Server-v2     Intel Xeon Processor (Icelake) [no TSX]
x86 Icelake-Server-v3     Intel Xeon Processor (Icelake)
x86 Icelake-Server-v4     Intel Xeon Processor (Icelake)
x86 Icelake-Server-v5     Intel Xeon Processor (Icelake) [XSAVES]
x86 Icelake-Server-v6     Intel Xeon Processor (Icelake) [5-level EPT]
x86 IvyBridge             (alias configured by machine type)
x86 IvyBridge-IBRS        (alias of IvyBridge-v2)
x86 IvyBridge-v1          Intel Xeon E3-12xx v2 (Ivy Bridge)
x86 IvyBridge-v2          Intel Xeon E3-12xx v2 (Ivy Bridge, IBRS)
x86 KnightsMill           (alias configured by machine type)
x86 KnightsMill-v1        Intel Xeon Phi Processor (Knights Mill)
x86 Nehalem               (alias configured by machine type)
x86 Nehalem-IBRS          (alias of Nehalem-v2)
x86 Nehalem-v1            Intel Core i7 9xx (Nehalem Class Core i7)
x86 Nehalem-v2            Intel Core i7 9xx (Nehalem Core i7, IBRS update)
x86 Opteron_G1            (alias configured by machine type)
x86 Opteron_G1-v1         AMD Opteron 240 (Gen 1 Class Opteron)
x86 Opteron_G2            (alias configured by machine type)
x86 Opteron_G2-v1         AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G3            (alias configured by machine type)
x86 Opteron_G3-v1         AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G4            (alias configured by machine type)
x86 Opteron_G4-v1         AMD Opteron 62xx class CPU
x86 Opteron_G5            (alias configured by machine type)
x86 Opteron_G5-v1         AMD Opteron 63xx class CPU
x86 Penryn                (alias configured by machine type)
x86 Penryn-v1             Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 SandyBridge           (alias configured by machine type)
x86 SandyBridge-IBRS      (alias of SandyBridge-v2)
x86 SandyBridge-v1        Intel Xeon E312xx (Sandy Bridge)
x86 SandyBridge-v2        Intel Xeon E312xx (Sandy Bridge, IBRS update)
x86 SapphireRapids        (alias configured by machine type)
x86 SapphireRapids-v1     Intel Xeon Processor (SapphireRapids)
x86 SapphireRapids-v2     Intel Xeon Processor (SapphireRapids)
x86 Skylake-Client        (alias configured by machine type)
x86 Skylake-Client-IBRS   (alias of Skylake-Client-v2)
x86 Skylake-Client-noTSX-IBRS  (alias of Skylake-Client-v3)
x86 Skylake-Client-v1     Intel Core Processor (Skylake)
x86 Skylake-Client-v2     Intel Core Processor (Skylake, IBRS)
x86 Skylake-Client-v3     Intel Core Processor (Skylake, IBRS, no TSX)
x86 Skylake-Client-v4     Intel Core Processor (Skylake, IBRS, no TSX) [IBRS, XSAVES, no TSX]
x86 Skylake-Server        (alias configured by machine type)
x86 Skylake-Server-IBRS   (alias of Skylake-Server-v2)
x86 Skylake-Server-noTSX-IBRS  (alias of Skylake-Server-v3)
x86 Skylake-Server-v1     Intel Xeon Processor (Skylake)
x86 Skylake-Server-v2     Intel Xeon Processor (Skylake, IBRS)
x86 Skylake-Server-v3     Intel Xeon Processor (Skylake, IBRS, no TSX)
x86 Skylake-Server-v4     Intel Xeon Processor (Skylake, IBRS, no TSX)
x86 Skylake-Server-v5     Intel Xeon Processor (Skylake, IBRS, no TSX) [IBRS, XSAVES, EPT switching, no TSX]
x86 Snowridge             (alias configured by machine type)
x86 Snowridge-v1          Intel Atom Processor (SnowRidge)
x86 Snowridge-v2          Intel Atom Processor (Snowridge, no MPX)
x86 Snowridge-v3          Intel Atom Processor (Snowridge, no MPX) [XSAVES, no MPX]
x86 Snowridge-v4          Intel Atom Processor (Snowridge, no MPX) [no split lock detect, no core-capability]
x86 Westmere              (alias configured by machine type)
x86 Westmere-IBRS         (alias of Westmere-v2)
x86 Westmere-v1           Westmere E56xx/L56xx/X56xx (Nehalem-C)
x86 Westmere-v2           Westmere E56xx/L56xx/X56xx (IBRS update)
x86 athlon                (alias configured by machine type)
x86 athlon-v1             QEMU Virtual CPU version 2.5+
x86 core2duo              (alias configured by machine type)
x86 core2duo-v1           Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
x86 coreduo               (alias configured by machine type)
x86 coreduo-v1            Genuine Intel(R) CPU           T2600  @ 2.16GHz
x86 kvm32                 (alias configured by machine type)
x86 kvm32-v1              Common 32-bit KVM processor
x86 kvm64                 (alias configured by machine type)
x86 kvm64-v1              Common KVM processor
x86 n270                  (alias configured by machine type)
x86 n270-v1               Intel(R) Atom(TM) CPU N270   @ 1.60GHz
x86 pentium               (alias configured by machine type)
x86 pentium-v1
x86 pentium2              (alias configured by machine type)
x86 pentium2-v1
x86 pentium3              (alias configured by machine type)
x86 pentium3-v1
x86 phenom                (alias configured by machine type)
x86 phenom-v1             AMD Phenom(tm) 9550 Quad-Core Processor
x86 qemu32                (alias configured by machine type)
x86 qemu32-v1             QEMU Virtual CPU version 2.5+
x86 qemu64                (alias configured by machine type)
x86 qemu64-v1             QEMU Virtual CPU version 2.5+
x86 base                  base CPU model type with no features enabled
x86 host                  processor with all supported host features
x86 max                   Enables all features supported by the accelerator in the current host

Recognized CPUID flags:
  3dnow 3dnowext 3dnowprefetch abm ace2 ace2-en acpi adx aes amd-no-ssb
  amd-psfd amd-ssbd amd-stibp amx-bf16 amx-complex amx-fp16 amx-int8
  amx-tile apic arat arch-capabilities arch-lbr auto-ibrs avic avx avx-ifma
  avx-ne-convert avx-vnni avx-vnni-int8 avx2 avx512-4fmaps avx512-4vnniw
  avx512-bf16 avx512-fp16 avx512-vp2intersect avx512-vpopcntdq avx512bitalg
  avx512bw avx512cd avx512dq avx512er avx512f avx512ifma avx512pf
  avx512vbmi avx512vbmi2 avx512vl avx512vnni bmi1 bmi2 bus-lock-detect cid
  cldemote clflush clflushopt clwb clzero cmov cmp-legacy cmpccxadd
  core-capability cr8legacy cx16 cx8 dca de decodeassists ds ds-cpl dtes64
  erms est extapic f16c fb-clear fbsdp-no flush-l1d flushbyasid fma fma4
  fpu fsgsbase fsrc fsrm fsrs full-width-write fxsr fxsr-opt fzrm gds-no
  gfni hle ht hypervisor ia64 ibpb ibrs ibrs-all ibs intel-pt intel-pt-lip
  invpcid invtsc kvm-asyncpf kvm-asyncpf-int kvm-hint-dedicated kvm-mmu
  kvm-msi-ext-dest-id kvm-nopiodelay kvm-poll-control kvm-pv-eoi kvm-pv-ipi
  kvm-pv-sched-yield kvm-pv-tlb-flush kvm-pv-unhalt kvm-steal-time kvmclock
  kvmclock kvmclock-stable-bit la57 lahf-lm lbrv lfence-always-serializing
  lm lwp mca mcdt-no mce md-clear mds-no misalignsse mmx mmxext monitor
  movbe movdir64b movdiri mpx msr mtrr no-nested-data-bp nodeid-msr npt
  nrip-save null-sel-clr-base nx osvw pae pat pause-filter pbe pbrsb-no
  pcid pclmulqdq pcommit pdcm pdpe1gb perfctr-core perfctr-nb pfthreshold
  pge phe phe-en pks pku pmm pmm-en pn pni popcnt prefetchiti
  pschange-mc-no psdp-no pse pse36 rdctl-no rdpid rdrand rdseed rdtscp rsba
  rtm sbdr-ssdp-no sep serialize sgx sgx-aex-notify sgx-debug sgx-edeccssa
  sgx-exinfo sgx-kss sgx-mode64 sgx-provisionkey sgx-tokenkey sgx1 sgx2
  sgxlc sha-ni skinit skip-l1dfl-vmentry smap smep smx spec-ctrl
  split-lock-detect ss ssb-no ssbd sse sse2 sse4.1 sse4.2 sse4a ssse3 stibp
  stibp-always-on svm svm-lock svme-addr-chk syscall taa-no tbm tce tm tm2
  topoext tsc tsc-adjust tsc-deadline tsc-scale tsx-ctrl tsx-ldtrk umip
  v-vmsave-vmload vaes vgif virt-ssbd vmcb-clean vme vmx vmx-activity-hlt
  vmx-activity-shutdown vmx-activity-wait-sipi vmx-any-errcode
  vmx-apicv-register vmx-apicv-vid vmx-apicv-x2apic vmx-apicv-xapic
  vmx-cr3-load-noexit vmx-cr3-store-noexit vmx-cr8-load-exit
  vmx-cr8-store-exit vmx-desc-exit vmx-enable-user-wait-pause
  vmx-encls-exit vmx-entry-ia32e-mode vmx-entry-load-bndcfgs
  vmx-entry-load-efer vmx-entry-load-pat vmx-entry-load-perf-global-ctrl
  vmx-entry-load-pkrs vmx-entry-load-rtit-ctl vmx-entry-noload-debugctl
  vmx-ept vmx-ept-1gb vmx-ept-2mb vmx-ept-advanced-exitinfo
  vmx-ept-execonly vmx-eptad vmx-eptp-switching vmx-exit-ack-intr
  vmx-exit-clear-bndcfgs vmx-exit-clear-rtit-ctl vmx-exit-load-efer
  vmx-exit-load-pat vmx-exit-load-perf-global-ctrl vmx-exit-load-pkrs
  vmx-exit-nosave-debugctl vmx-exit-save-efer vmx-exit-save-pat
  vmx-exit-save-preemption-timer vmx-flexpriority vmx-hlt-exit vmx-ins-outs
  vmx-intr-exit vmx-invept vmx-invept-all-context vmx-invept-single-context
  vmx-invept-single-context vmx-invept-single-context-noglobals
  vmx-invlpg-exit vmx-invpcid-exit vmx-invvpid vmx-invvpid-all-context
  vmx-invvpid-single-addr vmx-io-bitmap vmx-io-exit vmx-monitor-exit
  vmx-movdr-exit vmx-msr-bitmap vmx-mtf vmx-mwait-exit vmx-nmi-exit
  vmx-page-walk-4 vmx-page-walk-5 vmx-pause-exit vmx-ple vmx-pml
  vmx-posted-intr vmx-preemption-timer vmx-rdpmc-exit vmx-rdrand-exit
  vmx-rdseed-exit vmx-rdtsc-exit vmx-rdtscp-exit vmx-secondary-ctls
  vmx-shadow-vmcs vmx-store-lma vmx-true-ctls vmx-tsc-offset
  vmx-tsc-scaling vmx-unrestricted-guest vmx-vintr-pending vmx-vmfunc
  vmx-vmwrite-vmexit-fields vmx-vnmi vmx-vnmi-pending vmx-vpid
  vmx-wbinvd-exit vmx-xsaves vmx-zero-len-inject vnmi vpclmulqdq waitpkg
  wbnoinvd wdt x2apic xcrypt xcrypt-en xfd xgetbv1 xop xsave xsavec
  xsaveerptr xsaveopt xsaves xstore xstore-en xtpr

----------------------------------
               CPU
----------------------------------
Architecture:                         x86_64
CPU op-mode(s):                       32-bit, 64-bit
Address sizes:                        48 bits physical, 48 bits virtual
Byte Order:                           Little Endian
CPU(s):                               8
On-line CPU(s) list:                  0-7
Vendor ID:                            AuthenticAMD
Model name:                           AMD Ryzen 7 5800H with Radeon Graphics
CPU family:                           25
Model:                                80
Thread(s) per core:                   1
Core(s) per socket:                   8
Socket(s):                            1
Stepping:                             0
BogoMIPS:                             6387.98
Flags:                                fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr wbnoinvd arat npt lbrv nrip_save tsc_scale vmcb_clean flushbyasid pausefilter pfthreshold v_vmsave_vmload vgif umip pku ospke vaes vpclmulqdq rdpid fsrm arch_capabilities
Virtualization:                       AMD-V
Hypervisor vendor:                    KVM
Virtualization type:                  full
L1d cache:                            512 KiB (8 instances)
L1i cache:                            512 KiB (8 instances)
L2 cache:                             4 MiB (8 instances)
L3 cache:                             128 MiB (8 instances)
NUMA node(s):                         1
NUMA node0 CPU(s):                    0-7
Vulnerability Gather data sampling:   Not affected
Vulnerability Itlb multihit:          Not affected
Vulnerability L1tf:                   Not affected
Vulnerability Mds:                    Not affected
Vulnerability Meltdown:               Not affected
Vulnerability Mmio stale data:        Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed:               Not affected
Vulnerability Spec rstack overflow:   Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass:      Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:             Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:             Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                  Not affected
Vulnerability Tsx async abort:        Not affected

@OhMyMndy
Copy link
Contributor

OhMyMndy commented Sep 12, 2024

Did some quick testing on my end, with this patch I get it to run.

diff --git a/quickemu b/quickemu
index 10154b6..a252f5d 100755
--- a/quickemu
+++ b/quickemu
@@ -363,12 +363,14 @@ function configure_cpu() {
     # - macOS check for CPU flag: vmx
     # - Linux AMD check for CPU flag: svm
     # - Linux Intel check for CPU flag: vmx
+    if ! grep -E "(svm|vmx)" /proc/cpuinfo &>/dev/null; then
     case ${MANUFACTURER,,} in
         qemu|virtualbox) CPU_MODEL="qemu64"
                          QEMU_ACCEL="tcg"
                          HYPERVISOR="${MANUFACTURER,,}";;
         *) HYPERVISOR="";;
     esac
+    fi

Had to run it through NixGL to not end up without VirGL: nix run --impure github:nix-community/nixGL -- quickemu --vm ~/quickemu/windows-11.conf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants