Since disabling APICv has to be done for all vcpus on AMD-based system, adopt the newly introduced kvm_make_apicv_deactivate_request() intereface. Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx> --- arch/x86/kvm/hyperv.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index a39e38f..4f71a39 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -772,9 +772,17 @@ int kvm_hv_activate_synic(struct kvm_vcpu *vcpu, bool dont_zero_synic_pages) /* * Hyper-V SynIC auto EOI SINT's are - * not compatible with APICV, so deactivate APICV + * not compatible with APICV, so request + * to deactivate APICV permanently. + * + * Since this requires updating + * APIC_ACCESS_PAGE_PRIVATE_MEMSLOT, + * also take srcu lock. */ - kvm_vcpu_deactivate_apicv(vcpu); + vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); + kvm_make_apicv_deactivate_request(vcpu, true); + srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); + synic->active = true; synic->dont_zero_synic_pages = dont_zero_synic_pages; return 0; -- 1.8.3.1