From: Yang Zhang <yang.z.zhang@xxxxxxxxx> Current interrupt coalescing logci which only used by RTC has conflict with Posted Interrupt. This patch introduces a new mechinism to use eoi to track interrupt: When delivering an interrupt to vcpu, the need_eoi set to number of vcpu that received the interrupt. And decrease it when each vcpu writing eoi. No subsequent RTC interrupt can deliver to vcpu until all vcpus write eoi. Changes from v2 to v3: * Remove unused irq_ack_notifier. * Acquire ioapic->lock before calculte destination vcpu map. * Copy vcpu_map to expected_eoi_timap on each RTC irq and clear it on eoi. Changes from v1 to v2: * Don't register a dumy ack notifier for RTC. Check it directly when calculating eoi exit bitmap. * Use kvm_apic_pending_eoi() instead call apic_test_vector() directly. * Check coalesced info before set ioapic->irr * Calculate destination vcpu map of RTC when ioapic entry or apic(id,ldr/dfr) changed. And only set need_eoi when delivering RTC interrupt. Yang Zhang (8): KVM: Parse ioapic entry to get destination vcpu KVM: Rename kvm_ioapic_make_eoibitmap_request to kvm_scan_ioapic_entry KVM: Add vcpu info to ioapic_update_eoi() KVM: Introduce struct rtc_status KVM: Recalculate destination vcpu map KVM: Add reset/restore rtc_status support KVM: Add rtc irq to eoi exit bitmap KVM: Use eoi to track RTC interrupt delivery status arch/x86/kvm/lapic.c | 52 ++++++++++------ arch/x86/kvm/lapic.h | 4 + virt/kvm/ioapic.c | 165 ++++++++++++++++++++++++++++++++++++++++++++++---- virt/kvm/ioapic.h | 14 ++++- virt/kvm/irq_comm.c | 4 +- 5 files changed, 205 insertions(+), 34 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html