Maxim Levitsky <mlevitsk@xxxxxxxxxx> writes: > On Tue, 2022-02-08 at 16:15 +0100, Vitaly Kuznetsov wrote: >> >> "hv-vapic" enables so-called "VP Assist" page and Enlightened VMCS GPA >> sits there, it is used instead of VMPTRLD (which becomes unsupported) >> >> Take a look at the newly introduced "hv-apicv"/"hv-avic" (the same >> thing) in QEMU: >> >> commit e1f9a8e8c90ae54387922e33e5ac4fd759747d01 >> Author: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> >> Date: Thu Sep 2 11:35:28 2021 +0200 >> >> i386: Implement pseudo 'hv-avic' ('hv-apicv') enlightenment >> >> when enabled, HV_APIC_ACCESS_RECOMMENDED is not set even with "hv-vapic" >> (but HV_APIC_ACCESS_AVAILABLE remains). >> > > Cool, I didn't expect this. I thought that hv-vapic only enables the AutoEOI > deprecation bit. > > This needs to be updated in hyperv.txt in qemu - it currently states that > hv-evmcs disables posted interrupts (that is APICv) EVMCS disables (not only) posted interrupts feature for nested guests. To be precise, it disables the following: #define EVMCS1_UNSUPPORTED_PINCTRL (PIN_BASED_POSTED_INTR | \ PIN_BASED_VMX_PREEMPTION_TIMER) #define EVMCS1_UNSUPPORTED_2NDEXEC \ (SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY | \ SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | \ SECONDARY_EXEC_APIC_REGISTER_VIRT | \ SECONDARY_EXEC_ENABLE_PML | \ SECONDARY_EXEC_ENABLE_VMFUNC | \ SECONDARY_EXEC_SHADOW_VMCS | \ SECONDARY_EXEC_TSC_SCALING | \ SECONDARY_EXEC_PAUSE_LOOP_EXITING) #define EVMCS1_UNSUPPORTED_VMEXIT_CTRL \ (VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL | \ VM_EXIT_SAVE_VMX_PREEMPTION_TIMER) #define EVMCS1_UNSUPPORTED_VMENTRY_CTRL (VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL) #define EVMCS1_UNSUPPORTED_VMFUNC (VMX_VMFUNC_EPTP_SWITCHING) > and hv-avic only mentions AutoEOI feature. True, this is hidden in "The enlightenment allows to use Hyper-V SynIC with hardware APICv/AVIC enabled". Any suggestions on how to improve this are more than welcome!. -- Vitaly