• Paolo Bonzini's avatar
    kvm: x86: correctly reset dest_map->vector when restoring LAPIC state · b0eaf450
    Paolo Bonzini authored
    When userspace sends KVM_SET_LAPIC, KVM schedules a check between
    the vCPU's IRR and ISR and the IOAPIC redirection table, in order
    to re-establish the IOAPIC's dest_map (the list of CPUs servicing
    the real-time clock interrupt with the corresponding vectors).
    
    However, __rtc_irq_eoi_tracking_restore_one was forgetting to
    set dest_map->vectors.  Because of this, the IOAPIC did not process
    the real-time clock interrupt EOI, ioapic->rtc_status.pending_eoi
    got stuck at a non-zero value, and further RTC interrupts were
    reported to userspace as coalesced.
    
    Fixes: 9e4aabe2
    Fixes: 4d99ba89
    Cc: stable@vger.kernel.org
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: David Gilbert <dgilbert@redhat.com>
    Reviewed-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    b0eaf450
ioapic.c 17.1 KB