From: sashiko-bot@kernel.org
To: "Mikhail Kshevetskiy" <mikhail.kshevetskiy@iopsys.eu>
Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org
Subject: Re: [PATCH v11 20/37] pinctrl: airoha: fix IRQ mask/unmask code
Date: Thu, 06 Aug 2026 22:24:18 +0000 [thread overview]
Message-ID: <20260806222419.1AF1F1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260806220615.4078303-21-mikhail.kshevetskiy@iopsys.eu>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
Pre-existing issues:
- [High] Lost edge-triggered interrupts due to clearing interrupt status after running the handler and using handle_simple_irq.
- [High] Sleeping in atomic context on PREEMPT_RT due to regmap calls within irq_mask/irq_unmask.
--
--- Patch [20]: [PATCH v11 20/37] pinctrl: airoha: fix IRQ mask/unmask code ---
commit 6fffeeb5d12a43c2d9965d0cb9e5d1e4595a6f8f
Author: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
pinctrl: airoha: fix IRQ mask/unmask code
This commit adds missing gpiochip_enable_irq() and gpiochip_disable_irq()
calls to the IRQ mask and unmask functions. This ensures gpiolib correctly
sets the GPIOD_FLAG_IRQ_IS_ENABLED bit.
> diff --git a/drivers/pinctrl/airoha/pinctrl-airoha.c b/drivers/pinctrl/airoha/pinctrl-airoha.c
> index f3078f9b14a76..4859fcebac7de 100644
> --- a/drivers/pinctrl/airoha/pinctrl-airoha.c
> +++ b/drivers/pinctrl/airoha/pinctrl-airoha.c
> @@ -2595,6 +2595,7 @@ static void airoha_irq_unmask(struct irq_data *data)
> if (WARN_ON_ONCE(data->hwirq >= ARRAY_SIZE(gpiochip->irq_type)))
> return;
>
> + gpiochip_enable_irq(gc, irqd_to_hwirq(data));
> switch (gpiochip->irq_type[data->hwirq]) {
> case IRQ_TYPE_LEVEL_LOW:
> val = val << 1;
[ ... ]
> @@ -2629,6 +2630,7 @@ static void airoha_irq_mask(struct irq_data *data)
>
> regmap_clear_bits(pinctrl->regmap, gpiochip->level[index], mask);
> regmap_clear_bits(pinctrl->regmap, gpiochip->edge[index], mask);
[Severity: High]
This is a pre-existing issue, but does calling regmap_clear_bits() here
cause a sleep in atomic context on PREEMPT_RT?
Since airoha_irq_mask() is called by the core irq framework with the raw
desc->lock held, using a syscon regmap which defaults to a sleepable
spinlock on PREEMPT_RT could lead to a lockdep splat or crash. This also
applies to the regmap_update_bits() call in airoha_irq_unmask().
> + gpiochip_disable_irq(gc, irqd_to_hwirq(data));
> }
[Severity: High]
This isn't a bug introduced by this patch, but does the driver lose
edge-triggered interrupts in the handler?
Looking at airoha_irq_handler(), the hardware status is cleared via
regmap_write() after the handler has executed:
drivers/pinctrl/airoha/pinctrl-airoha.c:airoha_irq_handler() {
...
generic_handle_irq(irq_find_mapping(girq->domain,
offset));
regmap_write(pinctrl->regmap,
pinctrl->gpiochip.status[i], BIT(irq));
...
}
Also, airoha_pinctrl_add_gpiochip() hardcodes handle_simple_irq for all
interrupt types:
drivers/pinctrl/airoha/pinctrl-airoha.c:airoha_pinctrl_add_gpiochip() {
...
girq->handler = handle_simple_irq;
...
}
If a second edge happens while the interrupt is being serviced, wouldn't the
hardware latch the status, only for it to be wiped out by the regmap_write()
after generic_handle_irq() returns without being serviced?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260806220615.4078303-1-mikhail.kshevetskiy@iopsys.eu?part=20
next prev parent reply other threads:[~2026-08-06 22:24 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 22:05 [PATCH v11 00/37] pinctrl: airoha: split on shared and SoC drivers, add more SoCs Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 01/37] dt-bindings: pinctrl: airoha: en7581: fix misprint in i2s function name Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 02/37] dt-bindings: pinctrl: airoha: an7583: fix device tree binding schema Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 03/37] pinctrl: airoha: fix mdio bitfield names Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 04/37] pinctrl: airoha: an7581: fix pinconf of i2c_scl/i2c_sda pins Mikhail Kshevetskiy
2026-08-06 22:18 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 05/37] pinctrl: airoha: an7583: fix I2C0_SDA_PD register bit order Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 06/37] dt-bindings: pinctrl: airoha: en7581: allow configuration of pcie_reset pins as gpio or pwm Mikhail Kshevetskiy
2026-08-06 22:31 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 07/37] pinctrl: airoha: an7581: fix mux/conf of pcie_reset pins Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 08/37] dt-bindings: pinctrl: airoha: an7583: allow configuration of non-gpio default pins as gpio and pwm Mikhail Kshevetskiy
2026-08-06 22:26 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 09/37] pinctrl: airoha: an7583: fix muxing of non-gpio default pins Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 10/37] pinctrl: airoha: fix I2C1 pin mux config for AN7581 Mikhail Kshevetskiy
2026-08-06 22:20 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 11/37] dt-bindings: pinctrl: airoha: an7583: add i2c0 group for i2c function Mikhail Kshevetskiy
2026-08-06 22:20 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 12/37] pinctrl: airoha: fix I2C pin mux config for AN7583 Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 13/37] pinctrl: airoha: fix AN7583 MDIO pin mux config Mikhail Kshevetskiy
2026-08-06 22:21 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 14/37] pinctrl: airoha: an7583: fix spi group pins Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 15/37] pinctrl: airoha: add missed get_direction() function for gpio_chip Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 16/37] pinctrl: airoha: add set_direction() helper " Mikhail Kshevetskiy
2026-08-06 22:28 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 17/37] pinctrl: airoha: minor improvements Mikhail Kshevetskiy
2026-08-06 22:21 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 18/37] pinctrl: airoha: fix getting gpiochip/pinctrl pointers in the IRQ handling code Mikhail Kshevetskiy
2026-08-06 22:05 ` [PATCH v11 19/37] pinctrl: airoha: add missed IRQ resource helpers Mikhail Kshevetskiy
2026-08-06 22:21 ` sashiko-bot
2026-08-06 22:05 ` [PATCH v11 20/37] pinctrl: airoha: fix IRQ mask/unmask code Mikhail Kshevetskiy
2026-08-06 22:24 ` sashiko-bot [this message]
2026-08-06 22:05 ` [PATCH v11 21/37] pinctrl: airoha: fix edge-triggered interrupts handling Mikhail Kshevetskiy
2026-08-06 22:23 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 22/37] pinctrl: airoha: remove not needed irq_type[] array Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 23/37] pinctrl: airoha: statically allocate gpio regs structure Mikhail Kshevetskiy
2026-08-06 22:31 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 24/37] pinctrl: airoha: move common definitions to the separate header Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 25/37] pinctrl: airoha: split driver on shared code and SoC specific drivers Mikhail Kshevetskiy
2026-08-06 22:37 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 26/37] pinctrl: airoha: an7581: remove en7581 prefix from variable names Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 27/37] pinctrl: airoha: an7583: remove an7583 prefix from variable names and definitions Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 28/37] pinctrl: airoha: an7583: rename registers to match its an7583 names Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 29/37] dt-bindings: pinctrl: airoha: an7583: add missed features Mikhail Kshevetskiy
2026-08-06 22:26 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 30/37] pinctrl: airoha: an7583: add support for npu_uart pinmux Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 31/37] pinctrl: airoha: an7583: add support for pon_alt pinmux Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 32/37] pinctrl: airoha: an7583: add support for olt pinmux Mikhail Kshevetskiy
2026-08-06 22:06 ` [PATCH v11 33/37] dt-bindings: pinctrl: airoha: add support of en7523 pin controller Mikhail Kshevetskiy
2026-08-06 22:34 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 34/37] pinctrl: airoha: add support of en7523 SoC Mikhail Kshevetskiy
2026-08-06 22:33 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 35/37] pinctrl: airoha: try to find chip scu node by phandle first Mikhail Kshevetskiy
2026-08-06 22:29 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 36/37] dt-bindings: pinctrl: airoha: add support of an7563 pin controller Mikhail Kshevetskiy
2026-08-06 22:34 ` sashiko-bot
2026-08-06 22:06 ` [PATCH v11 37/37] pinctrl: airoha: add support of an7563 SoC Mikhail Kshevetskiy
2026-08-07 16:07 ` [PATCH v11 00/37] pinctrl: airoha: split on shared and SoC drivers, add more SoCs Linus Walleij
2026-08-07 16:17 ` Benjamin Larsson
2026-08-07 16:38 ` Mikhail Kshevetskiy
2026-08-07 17:20 ` Linus Walleij
2026-08-07 17:22 ` Mikhail Kshevetskiy
2026-08-07 18:45 ` Linus Walleij
2026-08-07 19:02 ` Mikhail Kshevetskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260806222419.1AF1F1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=mikhail.kshevetskiy@iopsys.eu \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.