Re: [PATCH] tty: omap-serial: fix boot hang by converting to use athreaded IRQ handler (was Re: [PATCH] irq: always set IRQF_ONESHOT if noprimary handler is specified)

From: Sebastian Andrzej Siewior
Date: Tue Aug 23 2011 - 04:15:12 EST


* Paul Walmsley | 2011-08-22 23:10:21 [-0600]:

>IRQ handler type mismatch for IRQ 74

>It turns out that the omap-serial code used one threaded IRQ
>handler[1][2] and one non-threaded IRQ handler[3] that shared the same
>IRQ. During the 3.1-rc series, a patch was merged[4] that caused
>IRQF_ONESHOT to be set on the threaded handler, but the non-threaded
>handler did not have IRQF_ONESHOT set. Since interrupt handlers

Is the type of IRQ74 edge or line/eoi?
Since you registered the serial handler as threaded and the primary
handler did _not_ disable the irq source (due to the absence of the
IRQF_ONESHOT flag or a custom primary handler which does this by
changing a bit in the hardware) it is more or less luck that you did not
hang forever on the first serial interrupt. Well, it does not happen
with edge typed interrupt lines.

>that share the same IRQ must also share the presence or absence of
>IRQF_ONESHOT[5], this new commit caused a mismatch that prevented the
>non-threaded IRQ from registering.

In theory it should be okay if the handler without ONESHOT is either
primary only or primary + threaded and the primary disables the irq
source.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/