Re: warning in kvm_hv_invalidate_tsc_page due to writes to guest memory from VM ioctl context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux