Message ID | 20240217114017.11551-4-dwmw2@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: x86/xen updates | expand |
On 17/02/2024 11:27, David Woodhouse wrote: > From: David Woodhouse <dwmw@amazon.co.uk> > > The kvm_xen_inject_vcpu_vector() function has a comment saying "the fast > version will always work for physical unicast", justifying its use of > kvm_irq_delivery_to_apic_fast() and the WARN_ON_ONCE() when that fails. > > In fact that assumption isn't true if X2APIC isn't in use by the guest > and there is (8-bit x)APIC ID aliasing. A single "unicast" destination > APIC ID *may* then be delivered to multiple vCPUs. Remove the warning, > and in fact it might as well just call kvm_irq_delivery_to_apic(). > > Reported-by: Michal Luczaj <mhal@rbox.co> > Fixes: fde0451be8fb3 ("KVM: x86/xen: Support per-vCPU event channel upcall via local APIC") > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> > --- > arch/x86/kvm/xen.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > Reviewed-by: Paul Durrant <paul@xen.org>
diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 847d9e75df6d..e6c7353e5315 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -10,7 +10,7 @@ #include "x86.h" #include "xen.h" #include "hyperv.h" -#include "lapic.h" +#include "irq.h" #include <linux/eventfd.h> #include <linux/kvm_host.h> @@ -571,7 +571,6 @@ void kvm_xen_update_runstate(struct kvm_vcpu *v, int state) void kvm_xen_inject_vcpu_vector(struct kvm_vcpu *v) { struct kvm_lapic_irq irq = { }; - int r; irq.dest_id = v->vcpu_id; irq.vector = v->arch.xen.upcall_vector; @@ -580,8 +579,7 @@ void kvm_xen_inject_vcpu_vector(struct kvm_vcpu *v) irq.delivery_mode = APIC_DM_FIXED; irq.level = 1; - /* The fast version will always work for physical unicast */ - WARN_ON_ONCE(!kvm_irq_delivery_to_apic_fast(v->kvm, NULL, &irq, &r, NULL)); + kvm_irq_delivery_to_apic(v->kvm, NULL, &irq, NULL); } /*