[PATCH AUTOSEL 6.16-5.4] pinctrl: stm32: Manage irq affinity settings
Sasha Levin
sashal at kernel.org
Tue Aug 5 06:08:40 PDT 2025
From: Cheick Traore <cheick.traore at foss.st.com>
[ Upstream commit 4c5cc2f65386e22166ce006efe515c667aa075e4 ]
Trying to set the affinity of the interrupts associated to stm32
pinctrl results in a write error.
Fill struct irq_chip::irq_set_affinity to use the default helper
function.
Signed-off-by: Cheick Traore <cheick.traore at foss.st.com>
Signed-off-by: Antonio Borneo <antonio.borneo at foss.st.com>
Link: https://lore.kernel.org/20250610143042.295376-3-antonio.borneo@foss.st.com
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
Signed-off-by: Sasha Levin <sashal at kernel.org>
---
LLM Generated explanations, may be completely bogus:
Based on my analysis, here's my assessment:
**Backport Status: YES**
This commit should be backported to stable kernel trees for the
following reasons:
1. **Fixes a real bug**: The commit message explicitly states "Trying to
set the affinity of the interrupts associated to stm32 pinctrl
results in a write error." This is a functional bug that affects
users trying to configure IRQ affinity on STM32 platforms.
2. **Small and contained fix**: The change is minimal - just adding a
single line:
```c
.irq_set_affinity = IS_ENABLED(CONFIG_SMP) ?
irq_chip_set_affinity_parent : NULL,
```
This is a one-line fix that adds the missing callback to the irq_chip
structure.
3. **Follows established patterns**: My analysis shows that other
GPIO/pinctrl drivers already implement this callback in the same way:
- `drivers/pinctrl/renesas/pinctrl-rzg2l.c`
- `drivers/gpio/gpio-thunderx.c`
- `drivers/gpio/gpio-msc313.c`
The STM32 driver was missing this standard callback that other
similar drivers have.
4. **No architectural changes**: This is purely a bug fix that enables
existing kernel functionality (IRQ affinity setting) to work
properly. It doesn't introduce new features or change any
architecture.
5. **Minimal regression risk**: The fix uses the standard
`irq_chip_set_affinity_parent` helper function that's already well-
tested in the kernel. The conditional compilation with
`IS_ENABLED(CONFIG_SMP)` ensures it's only enabled on SMP systems
where it's relevant.
6. **Related to known issues**: My search found related commits like
`3e17683ff4a8` ("irqchip/stm32-exti: Fix irq_set_affinity return
value") showing that the STM32 platform has had IRQ affinity issues
that needed fixing.
7. **Clear user impact**: Without this fix, users cannot set IRQ
affinity for GPIO interrupts on STM32 platforms, which can impact
system performance optimization and interrupt load balancing on
multi-core STM32 systems.
The commit meets all the stable tree criteria: it fixes an important
bug, is small and self-contained, has minimal risk, and doesn't
introduce new functionality. This is exactly the type of fix that should
be backported to ensure stable kernels have proper functionality.
drivers/pinctrl/stm32/pinctrl-stm32.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c
index ba49d48c3a1d..e6ad63df82b7 100644
--- a/drivers/pinctrl/stm32/pinctrl-stm32.c
+++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
@@ -411,6 +411,7 @@ static struct irq_chip stm32_gpio_irq_chip = {
.irq_set_wake = irq_chip_set_wake_parent,
.irq_request_resources = stm32_gpio_irq_request_resources,
.irq_release_resources = stm32_gpio_irq_release_resources,
+ .irq_set_affinity = IS_ENABLED(CONFIG_SMP) ? irq_chip_set_affinity_parent : NULL,
};
static int stm32_gpio_domain_translate(struct irq_domain *d,
--
2.39.5
More information about the linux-arm-kernel
mailing list