[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] [RFC][PATCH 4/6] HVM PCI Passthrough (non-IOMMU)
Hi, Guy, The picture in my mind for polarity change is to change generic level-triggered handle flow like: When interrupt happens, ->ack(): 1. Change pin's polarity 2. EOI Do_IRQ_guest (either event to para-domain, or Assert/Deassert virtual wire of HVM domain), or handled by Xen itself ->end(): No-op By this way, you don't need to mask/unmask and also no need to call original level-triggered end() method. My knowledge about 'boot interrupt' issue is related to EOI masked RTE entry on some chipset, and not sure the influence of polarity change. Then ioapic_acknew may be replaced by this way which is more efficient if working. Two times interrupt may be still better than EOI-in-end which blocks other pending interrupt, and the 2nd interrupt should be quick since only xen internal status is touched. Also your patch miss one important feature to handle shared interrupt among domains, which is inevitable before VT-d interrupt mapping is fully supported. That part would be tricky, and may need change on both xen irq sub-system and virtual interrupt controller. :-) Thanks, Kevin >From: Guy Zana >Sent: 2007年6月1日 7:06 > >int.patch: > > - Supports only level-triggered interrupts. Edge interrupts support >will be > added shortly (should be fairly simple) > - Change polarity trick: in order to reflect the external device's >assertion > state, the ioapic pin gets its polarity changed whenever an >interrupt > occur. So an interrupt is generated when the _external_ line is >asserted > (then, polarity change is done) and another interrupt when the >_external_ > line is deassered (as a result from the polarity change), this >continues > repeatedly. > - It is implemented by introducing a new hw_interrupt_type, which is >exactly > the same as the ioapic_level_type hw_interrupt_type with its >end() > > callback replaced (see io_apic.c for more details). > - State machine: > Whenever an interrupt occur (both for an assertion or >deassertion): > 1. Ack & Mask the interrupt > 2. Assert/Deassert virtual line of NativeDom (Interrupt >action). > 3. Change pin's polarity > 4. EOI & Unmask > >Signed-off-by: Guy Zana <guy@xxxxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |