Gleb Natapov wrote on 2013-04-11: > On Thu, Apr 11, 2013 at 07:54:01AM +0000, Zhang, Yang Z wrote: >> Gleb Natapov wrote on 2013-04-11: >>> On Wed, Apr 10, 2013 at 09:22:20PM +0800, Yang Zhang wrote: >>>> 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 pending_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. >>>> >>>> Signed-off-by: Yang Zhang <yang.z.zhang@xxxxxxxxx> >>>> --- >>>> virt/kvm/ioapic.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 >>>> files changed, 38 insertions(+), 1 deletions(-) >>>> diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c >>>> index a49fcd5..aeac154 100644 >>>> --- a/virt/kvm/ioapic.c >>>> +++ b/virt/kvm/ioapic.c >>>> @@ -147,6 +147,26 @@ static void kvm_rtc_eoi_tracking_restore_all(struct >>> kvm_ioapic *ioapic) >>>> __rtc_irq_eoi_tracking_restore_one(vcpu); >>>> } >>>> +static void rtc_irq_eoi(struct kvm_ioapic *ioapic, struct kvm_vcpu *vcpu) >>>> +{ >>>> + if (test_and_clear_bit(vcpu->vcpu_id, ioapic->rtc_status.dest_map)) >>>> + --ioapic->rtc_status.pending_eoi; >>>> + >>>> + WARN_ON(ioapic->rtc_status.pending_eoi < 0); >>>> +} >>>> + >>>> +static bool rtc_irq_check_coalesced(struct kvm_ioapic *ioapic, int irq, >>>> + bool line_status) >>>> +{ >>>> + if (irq != RTC_GSI || !line_status) >>>> + return false; >>> Please move the check from rtc_irq_check_coalesced() to >>> kvm_ioapic_set_irq() like this: if (irq == RTC_GSI && line_status && >>> rtc_irq_check_coalesced(ioapic, irq, line_status)) .... >>> >>> I was going to fix it myself while applying, but since there will be >>> new posted interrupt series anyway you can as well fix this one too. >> You mean fix it and send out it with posted interrupt series? Or just >> rebase the posted interrupt series on the top of this fix, but needn't >> to send out it? >> > Send both series. RTC one with this change. Sure. Best regards, Yang -- 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