[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] newer Linux: handle_level_irq() vs. handle_fasteoi_irq()



In order to be able to properly disable level triggered interrupts that,
due to malfunctioning hardware/firmware, never get de-asserted,
the use of handle_level_irq() in both pv-ops Dom0 and forward
ported kernels (starting with 2.6.19) seems problematic: Other than
with 2.6.18's use of __do_IRQ(), irq_chip->end() doesn't get called
anymore, and there also is no replacement call made from that
function (->umask() is only being called on non-disabled IRQs), and
hence the respective logic contained in pirq_end() doesn't really get
used anymore. handle_fasteoi_irq(), otoh, has an unconditional
->eoi() callout at its end, which would suit these needs.

The main difference of handle_fasteoi_irq() compared with
handle_level_irq() is that the IRQ doesn't get masked upfront.
I'm not really that much into the necessary details here, but it
would seem that using handle_fasteoi_irq() should be possible
if a hypothetical pirq_eoi() called clear_evtchn() along with
what end_pirq() currently does.

Any insight on potential problems with this would be
appreciated.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.