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

Sebastian Andrzej Siewior
2011-08-23T08:14:50Z

* 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