public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
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/

  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