Paolo Bonzini <pbonz...@redhat.com> writes: > SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES >> >> the problem with it is that we don't have 'apic_access_addr' field in >> eVMCS ('virtual_apic_page_addr' is there). By running the same setup >> with eVMCS disabled I figured out which address can be hardcoded to make >> it boot. >> > > Maybe it's really hard coded (what is the value? Is it consistent across > Hyper-V version?) Can you try changing KVM to enable it and see if the > hardcoded APIC access address works?
Unfortunately, it's not the same even between BIOS and UEFI booted WS2016 (Gen1/Gen2). It is, however, the same across reboot for the same image so for example for WS2016Gen1 it is '0x294000' so if I do: diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c index fab7451a5793..8366b2a02b3b 100644 --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -1433,6 +1433,8 @@ static int copy_enlightened_to_vmcs12(struct vcpu_vmx *vmx) vmcs12->tpr_threshold = evmcs->tpr_threshold; vmcs12->guest_rip = evmcs->guest_rip; + vmcs12->apic_access_addr = 0x294000; it all works. I'm really puzzled. -- Vitaly