This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


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

To: <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] newer Linux: handle_level_irq() vs. handle_fasteoi_irq()
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Thu, 22 Apr 2010 13:09:08 +0100
Delivery-date: Thu, 22 Apr 2010 05:10:00 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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


Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>