kvm: x86: correctly reset dest_map->vector when restoring LAPIC state
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 14 Sep 2016 21:39:12 +0000 (23:39 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 15 Sep 2016 16:00:32 +0000 (18:00 +0200)
commitb0eaf4506f5f95d15d6731d72c0ddf4a2179eefa
tree3ac8bc41280e6db2809e844ee7ac173807b50fdc
parent77e5bdf9f7b2d20939c8d807f3e68778d6e1557a
kvm: x86: correctly reset dest_map->vector when restoring LAPIC state

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: 9e4aabe2bb3454c83dac8139cf9974503ee044db
Fixes: 4d99ba898dd0c521ca6cdfdde55c9b58aea3cb3d
Cc: stable@vger.kernel.org
Cc: Joerg Roedel <jroedel@suse.de>
Cc: David Gilbert <dgilbert@redhat.com>
Reviewed-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/ioapic.c