
Louis-Alexis EyraudandGreg Kroah-Hartman
7cb10f17bd
net: ethernet: mtk-star-emac: fix spinlock recursion issues on rx/tx poll
[ Upstream commit 6fe0866014 ]
Use spin_lock_irqsave and spin_unlock_irqrestore instead of spin_lock
and spin_unlock in mtk_star_emac driver to avoid spinlock recursion
occurrence that can happen when enabling the DMA interrupts again in
rx/tx poll.
```
BUG: spinlock recursion on CPU#0, swapper/0/0
lock: 0xffff00000db9cf20, .magic: dead4ead, .owner: swapper/0/0,
.owner_cpu: 0
CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted
6.15.0-rc2-next-20250417-00001-gf6a27738686c-dirty #28 PREEMPT
Hardware name: MediaTek MT8365 Open Platform EVK (DT)
Call trace:
show_stack+0x18/0x24 (C)
dump_stack_lvl+0x60/0x80
dump_stack+0x18/0x24
spin_dump+0x78/0x88
do_raw_spin_lock+0x11c/0x120
_raw_spin_lock+0x20/0x2c
mtk_star_handle_irq+0xc0/0x22c [mtk_star_emac]
__handle_irq_event_percpu+0x48/0x140
handle_irq_event+0x4c/0xb0
handle_fasteoi_irq+0xa0/0x1bc
handle_irq_desc+0x34/0x58
generic_handle_domain_irq+0x1c/0x28
gic_handle_irq+0x4c/0x120
do_interrupt_handler+0x50/0x84
el1_interrupt+0x34/0x68
el1h_64_irq_handler+0x18/0x24
el1h_64_irq+0x6c/0x70
regmap_mmio_read32le+0xc/0x20 (P)
_regmap_bus_reg_read+0x6c/0xac
_regmap_read+0x60/0xdc
regmap_read+0x4c/0x80
mtk_star_rx_poll+0x2f4/0x39c [mtk_star_emac]
__napi_poll+0x38/0x188
net_rx_action+0x164/0x2c0
handle_softirqs+0x100/0x244
__do_softirq+0x14/0x20
____do_softirq+0x10/0x20
call_on_irq_stack+0x24/0x64
do_softirq_own_stack+0x1c/0x40
__irq_exit_rcu+0xd4/0x10c
irq_exit_rcu+0x10/0x1c
el1_interrupt+0x38/0x68
el1h_64_irq_handler+0x18/0x24
el1h_64_irq+0x6c/0x70
cpuidle_enter_state+0xac/0x320 (P)
cpuidle_enter+0x38/0x50
do_idle+0x1e4/0x260
cpu_startup_entry+0x34/0x3c
rest_init+0xdc/0xe0
console_on_rootfs+0x0/0x6c
__primary_switched+0x88/0x90
```
Fixes: 0a8bd81fd6 ("net: ethernet: mtk-star-emac: separate tx/rx handling with two NAPIs")
Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://patch.msgid.link/20250424-mtk_star_emac-fix-spinlock-recursion-issue-v2-1-f3fde2e529d8@collabora.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-05-09 09:43:58 +02:00
..
2025-03-28 21:59:54 +01:00
2025-05-02 07:50:58 +02:00
2025-05-02 07:50:48 +02:00
2025-05-02 07:50:38 +02:00
2025-05-02 07:51:03 +02:00
2025-05-02 07:51:01 +02:00
2025-05-09 09:43:57 +02:00
2025-04-25 10:45:26 +02:00
2025-03-13 12:58:36 +01:00
2025-05-02 07:50:49 +02:00
2025-05-02 07:50:53 +02:00
2025-04-25 10:45:25 +02:00
2025-05-02 07:51:03 +02:00
2025-04-07 10:06:37 +02:00
2025-05-09 09:43:53 +02:00
2025-05-02 07:50:52 +02:00
2025-05-02 07:50:47 +02:00
2025-05-02 07:50:55 +02:00
2025-05-02 07:50:57 +02:00
2025-05-09 09:43:50 +02:00
2025-04-25 10:45:55 +02:00
2025-05-02 07:50:59 +02:00
2025-05-09 09:43:56 +02:00
2025-04-25 10:45:12 +02:00
2025-04-25 10:45:38 +02:00
2025-03-22 12:50:38 -07:00
2025-04-10 14:37:38 +02:00
2025-04-10 14:37:32 +02:00
2025-05-09 09:43:50 +02:00
2025-04-25 10:45:28 +02:00
2025-03-07 16:45:49 +01:00
2025-05-02 07:50:39 +02:00
2025-05-02 07:50:56 +02:00
2025-03-22 12:50:46 -07:00
2025-05-09 09:43:56 +02:00
2025-05-09 09:43:51 +02:00
2025-04-25 10:45:28 +02:00
2025-05-02 07:50:54 +02:00
2025-05-02 07:50:47 +02:00
2025-05-09 09:43:52 +02:00
2025-05-02 07:50:37 +02:00
2025-04-10 14:37:38 +02:00
2025-04-07 10:06:37 +02:00
2025-04-25 10:45:28 +02:00
2025-05-02 07:50:56 +02:00
2025-05-09 09:43:51 +02:00
2025-04-25 10:45:29 +02:00
2025-05-09 09:43:58 +02:00
2025-05-02 07:50:56 +02:00
2025-05-02 07:51:04 +02:00
2025-02-27 04:10:47 -08:00
2025-05-02 07:50:41 +02:00
2025-05-09 09:43:55 +02:00
2025-04-25 10:45:10 +02:00
2025-04-25 10:45:36 +02:00
2025-05-02 07:50:52 +02:00
2025-05-09 09:43:53 +02:00
2025-04-10 14:37:31 +02:00
2025-03-22 12:50:40 -07:00
2025-04-25 10:45:44 +02:00
2025-04-25 10:45:21 +02:00
2025-03-13 12:58:27 +01:00
2025-05-02 07:50:56 +02:00
2025-04-10 14:37:31 +02:00
2025-04-07 10:06:36 +02:00
2025-05-02 07:50:57 +02:00
2025-05-02 07:50:53 +02:00
2025-05-02 07:51:01 +02:00
2025-03-13 12:58:37 +01:00
2025-05-02 07:50:37 +02:00
2025-04-10 14:37:32 +02:00
2025-05-09 09:43:51 +02:00
2025-04-10 14:37:34 +02:00
2025-04-25 10:45:14 +02:00
2025-02-27 04:10:51 -08:00
2025-04-25 10:45:32 +02:00
2025-05-02 07:50:55 +02:00
2025-05-02 07:50:49 +02:00
2025-05-02 07:51:01 +02:00
2025-05-02 07:50:55 +02:00
2025-04-25 10:45:27 +02:00
2025-02-21 13:57:27 +01:00
2025-04-10 14:37:32 +02:00
2025-04-25 10:45:30 +02:00
2025-03-13 12:58:37 +01:00
2025-05-02 07:50:58 +02:00