From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: "Dong, Eddie" <eddie.dong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel <kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Re: [kvm-commits] KVM: Fix ioapic level-triggered interrupt redelivery
Date: Wed, 19 Sep 2007 15:41:39 +0200 [thread overview]
Message-ID: <46F12713.9030004@qumranet.com> (raw)
In-Reply-To: <10EA09EFD8728347A513008B6B0DA77A014E8AF2-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
Dong, Eddie wrote:
>> diff --git a/drivers/kvm/ioapic.c b/drivers/kvm/ioapic.c
>> index 3ee13c3..b8c7da4 100644
>> --- a/drivers/kvm/ioapic.c
>> +++ b/drivers/kvm/ioapic.c
>> @@ -243,17 +243,10 @@ void kvm_ioapic_set_irq(struct
>> kvm_ioapic *ioapic, int irq, int level)
>> entry = ioapic->redirtbl[irq];
>> if (!level)
>> ioapic->irr &= ~mask;
>> - if (entry.fields.trig_mode) { /* level triggered */
>> - if (level && !entry.fields.remote_irr) {
>> - ioapic->irr |= mask;
>> - ioapic_service(ioapic, irq);
>> - }
>> - } else if (level && !(ioapic->irr & mask)) {
>> - /*
>> - * edge triggered
>> - */
>> + else {
>> ioapic->irr |= mask;
>> - ioapic_service(ioapic, irq);
>> + if (!entry.fields.trig_mode ||
>> !entry.fields.remote_irr)
>> + ioapic_service(ioapic, irq);
>>
>
> Good fix for ioapic->irr to indicate the line state. But
> I think this one will cause a redunadant edge trigger IRQ. A device
> model may repeat call SET_IRQ_LINE state even w/o state change
> (thus no IRQ), with this logic, a redunadnat IRQ will happen.
>
> if (!entry.fields.trig_mode || =====>
> if ((!entry.fields.trig_mode && (old_irr & mask ==0)) ||
>
>
Thanks, I'll do that.
> Also architectually level = 0 may also mean an IRQ to IOAPIC
> if the polarity is negative though today we may not see this.
> But this change will expose the risk, and the propose of pass-through
> hardware device will change the polarity.
>
Sure, if you run Xen + pci passthrough with the polarity reversal on kvm :)
We do want a correct polarity implementation -- I'll do that later on.
I certainly won't say no to patches...
--
error compiling committee.c: too many arguments to function
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
next prev parent reply other threads:[~2007-09-19 13:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20070918122732.3F11D250D4F@il.qumranet.com>
[not found] ` <20070918122732.3F11D250D4F-LjA0eNSCdXrQnzwC+xcbyw@public.gmane.org>
2007-09-19 13:32 ` [kvm-commits] KVM: Fix ioapic level-triggered interrupt redelivery Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A014E8AF2-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-09-19 13:41 ` Avi Kivity [this message]
[not found] ` <46F12713.9030004-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-19 13:52 ` Avi Kivity
[not found] ` <46F1299C.3060509-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-19 14:02 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A014E8AF4-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-09-19 14:10 ` Avi Kivity
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46F12713.9030004@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=eddie.dong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox