• Radim Krčmář's avatar
    KVM: SVM: fix interrupt injection (apic->isr_count always 0) · f563db4b
    Radim Krčmář authored
    In commit b4eef9b3, we started to use hwapic_isr_update() != NULL
    instead of kvm_apic_vid_enabled(vcpu->kvm).  This didn't work because
    SVM had it defined and "apicv" path in apic_{set,clear}_isr() does not
    change apic->isr_count, because it should always be 1.  The initial
    value of apic->isr_count was based on kvm_apic_vid_enabled(vcpu->kvm),
    which is always 0 for SVM, so KVM could have injected interrupts when it
    shouldn't.
    
    Fix it by implicitly setting SVM's hwapic_isr_update to NULL and make the
    initial isr_count depend on hwapic_isr_update() for good measure.
    
    Fixes: b4eef9b3 ("kvm: x86: vmx: NULL out hwapic_isr_update() in case of !enable_apicv")
    Reported-and-tested-by: default avatarBorislav Petkov <bp@suse.de>
    Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    f563db4b
svm.c 113 KB