I found that my Framework Laptop 13 with an AMD Ryzen 7 7840U, running BIOS version 3.18, reports that AVIC is not supported.
Running the following command on Linux:
cpuid -l 0x8000000a -1
prints the following SVM feature information:
CPU:
SVM Secure Virtual Machine (0x8000000a/eax):
SvmRev: SVM revision = 0x1 (1)
SVM Secure Virtual Machine (0x8000000a/edx):
nested paging = true
LBR virtualization = true
SVM lock = true
NRIP save = true
MSR based TSC rate control = true
VMCB clean bits support = true
flush by ASID = true
decode assists = true
PMC virtualization = false
SSSE3/SSE5 opcode set disable = false
pause intercept filter = true
pause filter threshold = true
AVIC: AMD virtual interrupt controller = false
virtualized VMLOAD/VMSAVE = false
virtualized global interrupt flag (GIF) = true
GMET: guest mode execute trap = true
X2AVIC: virtualized X2APIC = true
supervisor shadow stack = true
guest Spec_ctl support = true
ROGPT: read-only guest page table = true
host MCE override = true
INVLPGB/TLBSYNC hyperv interc enable = false
VNMI: NMI virtualization = true
IBS virtualization = true
extended LVT AVIC access changes = true
guest VMCB addr check = true
bus lock threshold = false
idle HLT intercept = false
EXITINFO1 non-interceptible shutdown = false
NASID: number of address space identifiers = 0x8000 (32768):
As shown above, X2AVIC: virtualized X2APIC is reported as supported, but AVIC: AMD virtual interrupt controller is reported as unsupported.
Because AVIC is unavailable, KVM cannot enable x2AVIC. The kernel prints the following message in dmesg:
[ 3.730860] kvm_amd: [Firmware Bug]: Cannot enable x2AVIC, AVIC is unsupported
I am wondering whether this combination is expected, since x2AVIC is reported as supported while the base AVIC feature is not. For additional context, AVIC is reported as supported on my older PC with an AMD Ryzen 5 1600.
Does this indicate that the CPU itself may support AVIC, but that the feature is currently disabled by the BIOS or firmware?
If this is controlled by firmware, would it be possible to enable AVIC in a future BIOS update?
AVIC and x2AVIC provide hardware-assisted virtualization for guest local APIC operations. They can reduce VM exits for APIC-related operations, including interrupt delivery, IPI handling, and x2APIC MSR accesses, which may improve virtual machine performance.
Although I used Linux to check these CPU features, this issue may also affect VM performance on Windows. For that reason, I am not posting this under a Linux-specific category.