From: Greg Kroah-Hartman Date: Thu, 27 Feb 2020 13:18:09 +0000 (+0100) Subject: drop queue-4.9/kvm-nvmx-handle-nested-posted-interrupts-when-apicv-is-disabled-for... X-Git-Tag: v4.4.215~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=586d687bdfe48a0500e571cf816814d6935761fd;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-4.9/kvm-nvmx-handle-nested-posted-interrupts-when-apicv-is-disabled-for-l1.patch It never was applied here --- diff --git a/queue-4.9/kvm-nvmx-handle-nested-posted-interrupts-when-apicv-is-disabled-for-l1.patch b/queue-4.9/kvm-nvmx-handle-nested-posted-interrupts-when-apicv-is-disabled-for-l1.patch deleted file mode 100644 index 676ca65f58f..00000000000 --- a/queue-4.9/kvm-nvmx-handle-nested-posted-interrupts-when-apicv-is-disabled-for-l1.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 91a5f413af596ad01097e59bf487eb07cb3f1331 Mon Sep 17 00:00:00 2001 -From: Vitaly Kuznetsov -Date: Thu, 20 Feb 2020 18:22:05 +0100 -Subject: KVM: nVMX: handle nested posted interrupts when apicv is disabled for L1 - -From: Vitaly Kuznetsov - -commit 91a5f413af596ad01097e59bf487eb07cb3f1331 upstream. - -Even when APICv is disabled for L1 it can (and, actually, is) still -available for L2, this means we need to always call -vmx_deliver_nested_posted_interrupt() when attempting an interrupt -delivery. - -Suggested-by: Paolo Bonzini -Signed-off-by: Vitaly Kuznetsov -Cc: stable@vger.kernel.org -Signed-off-by: Paolo Bonzini -Signed-off-by: Greg Kroah-Hartman - -diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h -index 40a0c0fd95ca..a84e8c5acda8 100644 ---- a/arch/x86/include/asm/kvm_host.h -+++ b/arch/x86/include/asm/kvm_host.h -@@ -1146,7 +1146,7 @@ struct kvm_x86_ops { - void (*load_eoi_exitmap)(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap); - void (*set_virtual_apic_mode)(struct kvm_vcpu *vcpu); - void (*set_apic_access_page_addr)(struct kvm_vcpu *vcpu, hpa_t hpa); -- void (*deliver_posted_interrupt)(struct kvm_vcpu *vcpu, int vector); -+ int (*deliver_posted_interrupt)(struct kvm_vcpu *vcpu, int vector); - int (*sync_pir_to_irr)(struct kvm_vcpu *vcpu); - int (*set_tss_addr)(struct kvm *kvm, unsigned int addr); - int (*set_identity_map_addr)(struct kvm *kvm, u64 ident_addr); -diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c -index afcd30d44cbb..cc8ee8125712 100644 ---- a/arch/x86/kvm/lapic.c -+++ b/arch/x86/kvm/lapic.c -@@ -1046,11 +1046,8 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, - apic->regs + APIC_TMR); - } - -- if (vcpu->arch.apicv_active) -- kvm_x86_ops->deliver_posted_interrupt(vcpu, vector); -- else { -+ if (kvm_x86_ops->deliver_posted_interrupt(vcpu, vector)) { - kvm_lapic_set_irr(vector, apic); -- - kvm_make_request(KVM_REQ_EVENT, vcpu); - kvm_vcpu_kick(vcpu); - } -diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c -index a391b29138f0..8787a123b8e7 100644 ---- a/arch/x86/kvm/svm.c -+++ b/arch/x86/kvm/svm.c -@@ -5258,8 +5258,11 @@ static void svm_load_eoi_exitmap(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap) - return; - } - --static void svm_deliver_avic_intr(struct kvm_vcpu *vcpu, int vec) -+static int svm_deliver_avic_intr(struct kvm_vcpu *vcpu, int vec) - { -+ if (!vcpu->arch.apicv_active) -+ return -1; -+ - kvm_lapic_set_irr(vec, vcpu->arch.apic); - smp_mb__after_atomic(); - -@@ -5271,6 +5274,8 @@ static void svm_deliver_avic_intr(struct kvm_vcpu *vcpu, int vec) - put_cpu(); - } else - kvm_vcpu_wake_up(vcpu); -+ -+ return 0; - } - - static bool svm_dy_apicv_has_pending_interrupt(struct kvm_vcpu *vcpu) ---- a/arch/x86/kvm/vmx.c -+++ b/arch/x86/kvm/vmx.c -@@ -3822,24 +3822,29 @@ static int vmx_deliver_nested_posted_interrupt(struct kvm_vcpu *vcpu, - * 2. If target vcpu isn't running(root mode), kick it to pick up the - * interrupt from PIR in next vmentry. - */ --static void vmx_deliver_posted_interrupt(struct kvm_vcpu *vcpu, int vector) -+static int vmx_deliver_posted_interrupt(struct kvm_vcpu *vcpu, int vector) - { - struct vcpu_vmx *vmx = to_vmx(vcpu); - int r; - - r = vmx_deliver_nested_posted_interrupt(vcpu, vector); - if (!r) -- return; -+ return 0; -+ -+ if (!vcpu->arch.apicv_active) -+ return -1; - - if (pi_test_and_set_pir(vector, &vmx->pi_desc)) -- return; -+ return 0; - - /* If a previous notification has sent the IPI, nothing to do. */ - if (pi_test_and_set_on(&vmx->pi_desc)) -- return; -+ return 0; - - if (!kvm_vcpu_trigger_posted_interrupt(vcpu, false)) - kvm_vcpu_kick(vcpu); -+ -+ return 0; - } - - /* diff --git a/queue-4.9/series b/queue-4.9/series index bbf097ebc0c..b2fea674c66 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -163,4 +163,3 @@ netfilter-xt_hashlimit-limit-the-max-size-of-hashtable.patch ata-ahci-add-shutdown-to-freeze-hardware-resources-of-ahci.patch xen-enable-interrupts-when-calling-_cond_resched.patch s390-mm-explicitly-compare-page_default_key-against-zero-in-storage_key_init_range.patch -kvm-nvmx-handle-nested-posted-interrupts-when-apicv-is-disabled-for-l1.patch