>> >> Guest0 - blocked on I/O >> >> >> >> IRQ14 from your hardware >> >> Block IRQ14 >> >> Sent to guest (guest is blocked) >> >> >> >> IRQ14 from hard disk >> >> Ignored (as blocked) >> >> >> >> >> But now the timer will pop and the hard disk will get its irq. >> The guest will be released right after. > >How do you plan to do this ? If you unmask the interrupt then it will >immediately jam solid with IRQs from your hardware and the line will be >disabled.
Hope it should work like the following [Please correct me if I'm wrong]: - Make the device the last irqaction in the list - Our dummy handler will always return IRQ_HANDLED in case any other previous irqaction did not return such. It will also issue the timer and mask the irq in this case. The line is temporarily jammed but not disabled - note_interrupt() will not consider our irq unhandled and won't disable it. btw, if I'm not mistaken only after bad 99900/100000 the irq is disabled. - If the timer pops before the guest acks the irq, the timer handler will ack the irq and unmask it. The timer's job is only to prevent deadlocks. Maybe it's better to code it first then send RFC. Or wanted to get a feed back before hand to hear opinions and to know whether to use the deferred option or the irq polarity option. Both of them can lead to the above deadlock without the timer hack. Best regards, Dor. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/