On Wed, 2024-02-14 at 17:32 +0100, Michal Luczaj wrote: > As I understand, splat here is due to APIC map being gone (because of physical > APIC ID aliasing?), but I'm not sure what is the expected behaviour. Good catch, thank you. /* The fast version will always work for physical unicast */ WARN_ON_ONCE(!kvm_irq_delivery_to_apic_fast(v->kvm, NULL, &irq, &r, NULL)); So the comment is wrong, we *can't* rely on it being unicast. With APIC ID aliasing, it ends up being multicast. But I think we can just do this: --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -580,8 +580,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); } /*
Attachment:
smime.p7s
Description: S/MIME cryptographic signature