Skip to content
This repository was archived by the owner on Aug 31, 2026. It is now read-only.
This repository was archived by the owner on Aug 31, 2026. It is now read-only.

Subject: Native CPUID on AMD KVM causes Windows 11 kernel spin despite matching topology #2

Description

@qiusheng-aim

Hello,I tested Native CPUID with meowdiocre/devirtz-kernel-style AMD SVM changes on an Arch Linux KVM/VFIO host.Host:• AMD Ryzen 7 9800X3D, 8 cores / 16 threads• Arch Linux, Linux 7.1.3 Zen• Windows 11 guest, Q35 + OVMF, RTX 5080 VFIO passthrough• 24 GB HugePages, SATA disk, e1000e NICThe normal CPUID-intercept configuration is stable:• Windows boots to the physical RTX 5080 display.• host-passthrough, hypervisor=off, kvm hidden, aes=off• Guest topology: 6 cores / 12 threads, with 2 cores / 4 threads reserved for the host.For the Native CPUID test, I:• Cleared the AMD SVM INTERCEPT_CPUID.• Changed the guest to 8 cores / 16 threads.• Removed aes=off.• Pinned every guest vCPU to the host thread with the matching physical x2APIC ID:
0->0, 1->8, 2->1, 3->9, ... 14->7, 15->15.• Verified raw CPUID topology:◦ Leaf 0xB: 2 threads per core, 16 logical CPUs per package.◦ x2APIC IDs matched the QEMU topology and vCPU pinning.• Disabled AVIC/x2AVIC as an additional test. This did not change the result.Result:• OVMF now passes, unlike the earlier 6C/12T Native CPUID test.• Windows reaches 64-bit ntoskrnl, but remains on the boot screen.• All 16 vCPUs consume CPU continuously.• CPU0 remains in a small kernel loop; RIP changes only within the same nearby instructions.• Disk I/O stops progressing.• No QEMU errors, VFIO reset failures, AMD-Vi faults, or APIC pinning errors were found.Relevant raw CPUID features include:• 0xD: host XSAVE layout• 0x80000008: 48-bit physical/virtual address capability• 0x8000000A: AMD SVM capability• 0x8000001F: SME capability• 0x80000026: AMD extended topologyThe host/libvirt does not support SEV or launchSecurity, so the VM cannot fully provide every platform capability exposed by raw host CPUID.My conclusion is that Native CPUID bypasses QEMU/KVM’s filtered CPU contract. Even with matching core/thread count and APIC IDs, Windows sees CPUID features that are not fully consistent with the virtual XSAVE, MSR, memory-encryption, firmware, and ACPI platform state.Do you have a known stable approach for Native CPUID on AMD KVM with Windows, or guidance on which CPUID/MSR/platform capabilities must remain intercepted or emulated to avoid this Windows kernel spin?
Best regards,

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions