Gregory Haskins wrote:
> Agreed.  I was thinking that the interface for the "IOAPIC in kernel" model 
> would look something like the way the pic_send_irq() function looks, except 
> it would also convey BUS/IOAPIC id.
>
> so: kvm_inject_interrupt(int bus, int pin, int value);
>
> and the "kvmpic" driver would currently translate as bus = 0 (giving us 
> IRQ0-23).  E.g. 
>
> kvmpic_send_irq(int irq, int value)
> {
>    kvm_inject_interrupt(0, irq, value);
> }
>   

With appropriate modeling of edge vs level triggered, and translation of 
pin to vector, yes.

>
>   
>> Everything should keep working, that is a must.  We just need the 
>> interfaces to follow the hardware faithfully.  The issue with the ioapic 
>> eoi is worrying me performance wise, though; it looks like we need to 
>> push the ioapic too if we are to have no- compromise performance on 
>> unmodified OSes.
>>     
>
> Not sure if this will make you feel better, but it appears as though both the 
> QEMU and the in-kernel model that I inherited don't accurately support IOAPIC 
> EOI already.  From that you can infer that there must not be any 
> level-sensitive interrupts in use today.  Since the system seems to only have 
> the legacy ISA model (which dictates edge triggers, IIRC), this makes sense.  
> However, if we want to support level triggers in the future, we will have to 
> address this.  I would be uncomfortable designing something that doesn't take 
> the IOAPIC EOI into account, even if its not immediately used.
>
>   

pci is level triggered, so maybe the guests just handle the inaccuracy.

>> For unmodified guests, use the existing pci irq routing.  I certainly 
>> wouldn't want to debug anything else.  For modified guests, there's no 
>> real problem.
>>     
>
> Ill take your word for it ;)  I spent a few minutes looking through the linux 
> kernel trying to figure out how to get a hint about a free vector without 
> assigning one statically in the header files and came up empty handed.  Im 
> sure there is a way (or maybe static is ok?).
>
>   

No idea really, but the paravirt_ops stuff probably provides the right 
hooks.

-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to