[PATCH v3 1/3] ARM: sun7i/sun6i: irqchip: Add irqchip driver for NMI controller
Carlo Caione
carlo.caione at gmail.com
Wed Jan 29 08:21:37 EST 2014
On Wed, Jan 29, 2014 at 1:58 PM, Maxime Ripard
<maxime.ripard at free-electrons.com> wrote:
>
> So, to sum things up, what you see is something like:
>
> handle_level_irq
> | device device
> | mask ack handler irq acked unmask
> | | | | | |
> v v v v v v
>
> NMI -> GIC:
> +--------+ +---------------------
> ---------------+ +-----+
>
> PMIC -> NMI:
> +-------------------------+
> ------------+ +-------------
>
> And you get a "rogue" retrigger because the NMI -> GIC level went up
> again.
I'd say something like:
handle_level_irq
| device device
| mask ack handler irq acked unmask
| | | | | |
v v v v v v
NMI -> GIC:
+-----------------------------+
---------------+ +------
PMIC -> NMI:
+-------------------------+
------------+ +-------------
> I'm not exactly sure on how to fix this. Maybe by adding a call to the
> irqchip's ack just before the unmask in irq_finalize_oneshot?
That is exactly what the unmask callback in the NMI controller driver does.
The unmask_irq() in irq_finalize_oneshot() calls the unmask callback
in the driver (sunxi_sc_nmi_ack_and_unmask()) that ACKs the line
before unmasking it again.
Best,
--
Carlo Caione
More information about the linux-arm-kernel
mailing list