[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <de02114842041993402e3e774bcd84020e06e828.camel@gmx.de>
Date: Mon, 25 Aug 2025 12:10:21 +0200
From: Mike Galbraith <efault@....de>
To: lkml <linux-kernel@...r.kernel.org>
Cc: Robert Hancock <robert.hancock@...ian.com>, Doug Berger
<opendmb@...il.com>, Florian Fainelli <florian.fainelli@...adcom.com>,
Breno Leitao <leitao@...ian.org>
Subject: Re: netpoll: raspberrypi [4 5] driver locking woes
On Mon, 2025-08-25 at 07:53 +0200, Mike Galbraith wrote:
>
> On the pi4, lockdep muttered about ring->lock in bcmgenet_xmit() and
> bcmgenet_tx_poll() - switching to irqsave/restore spinlock variants
> there silenced it.
The deadlock splat below.
[ 90.529661] =====================================================
[ 90.535817] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
[ 90.542508] 6.17.0-rc2-v8-lockdep #529 Tainted: G C
[ 90.548929] -----------------------------------------------------
[ 90.555092] swapper/0/0 [HC0[0]:SC1[1]:HE0:SE0] is trying to acquire:
[ 90.561605] ffffff8102518d48 (&ring->lock){+.-.}-{3:3}, at: bcmgenet_xmit+0x78/0x860
[ 90.569439]
[ 90.569439] and this task is already holding:
[ 90.575341] ffffffd6357c3298 (target_list_lock){..-.}-{3:3}, at: write_msg+0x60/0x1b0 [netconsole]
[ 90.584408] which would create a new lock dependency:
[ 90.589507] (target_list_lock){..-.}-{3:3} -> (&ring->lock){+.-.}-{3:3}
[ 90.596283]
[ 90.596283] but this new dependency connects a HARDIRQ-irq-safe lock:
[ 90.604305] (&host->lock){-.-.}-{3:3}
[ 90.604322]
[ 90.604322] ... which became HARDIRQ-irq-safe at:
[ 90.614339] lock_acquire+0x1d4/0x368
[ 90.618124] _raw_spin_lock+0x50/0x70
[ 90.621899] bcm2835_mmc_irq+0x28/0x8c8
[ 90.625870] __handle_irq_event_percpu+0x94/0x318
[ 90.630699] handle_irq_event+0x54/0xb8
[ 90.634668] handle_fasteoi_irq+0x12c/0x270
[ 90.638980] handle_irq_desc+0x48/0x68
[ 90.642846] generic_handle_domain_irq+0x24/0x38
[ 90.647603] gic_handle_irq+0x48/0xd8
[ 90.651391] call_on_irq_stack+0x30/0x70
[ 90.655435] do_interrupt_handler+0xdc/0xe8
[ 90.659762] el1_interrupt+0x34/0x68
[ 90.663450] el1h_64_irq_handler+0x18/0x28
[ 90.667674] el1h_64_irq+0x6c/0x70
[ 90.671195] d_alloc_parallel+0x3dc/0x9e8
[ 90.675332] __lookup_slow+0x98/0x188
[ 90.679112] lookup_noperm+0x74/0x88
[ 90.682810] simple_start_creating+0x70/0xe8
[ 90.687209] start_creating+0x7c/0x110
[ 90.691082] __debugfs_create_file+0x54/0x230
[ 90.695577] debugfs_create_file_unsafe+0x28/0x40
[ 90.700413] debugfs_create_u32+0x78/0x90
[ 90.704562] link_and_create_debugfs+0x78/0xf8
[ 90.709127] _regulator_get_common+0x14c/0x398
[ 90.713716] _regulator_get+0x48/0xa0
[ 90.717489] _devm_regulator_get+0x60/0xb0
[ 90.721720] devm_regulator_get_optional+0x1c/0x30
[ 90.726649] mmc_regulator_get_supply+0x48/0x1c8
[ 90.731402] sdhci_setup_host+0x904/0xd30
[ 90.735534] sdhci_add_host+0x20/0x60
[ 90.739325] sdhci_iproc_probe+0xc8/0x108
[ 90.743462] platform_probe+0x64/0xa8
[ 90.747246] really_probe+0xc4/0x2a8
[ 90.750937] __driver_probe_device+0x80/0x140
[ 90.755432] driver_probe_device+0xe0/0x170
[ 90.759739] __device_attach_driver+0xc0/0x148
[ 90.764322] bus_for_each_drv+0x88/0xf0
[ 90.768282] __device_attach_async_helper+0xb8/0xe8
[ 90.773300] async_run_entry_fn+0x3c/0xf0
[ 90.777436] process_one_work+0x20c/0x5e8
[ 90.781573] worker_thread+0x1c8/0x378
[ 90.785448] kthread+0x168/0x230
[ 90.788792] ret_from_fork+0x10/0x20
[ 90.792488]
[ 90.792488] to a HARDIRQ-irq-unsafe lock:
[ 90.798033] (&ring->lock){+.-.}-{3:3}
[ 90.798051]
[ 90.798051] ... which became HARDIRQ-irq-unsafe at:
[ 90.808240] ...
[ 90.808245] lock_acquire+0x1d4/0x368
[ 90.813784] _raw_spin_lock+0x50/0x70
[ 90.817570] bcmgenet_xmit+0x78/0x860
[ 90.821359] dev_hard_start_xmit+0xc0/0x2d0
[ 90.825671] sch_direct_xmit+0x98/0x1e8
[ 90.829633] __dev_queue_xmit+0x5a0/0x13a8
[ 90.833856] packet_xmit+0xcc/0x150
[ 90.837465] packet_sendmsg+0x8e8/0x1328
[ 90.841515] __sock_sendmsg+0x64/0xc0
[ 90.845295] ____sys_sendmsg+0x270/0x2b0
[ 90.849343] ___sys_sendmsg+0x88/0xf0
[ 90.853133] __sys_sendmsg+0x88/0x100
[ 90.856913] __arm64_sys_sendmsg+0x2c/0x40
[ 90.861138] invoke_syscall+0x50/0x120
[ 90.865011] el0_svc_common.constprop.0+0x48/0xf0
[ 90.869851] do_el0_svc+0x24/0x38
[ 90.873290] el0_svc+0x4c/0x178
[ 90.876543] el0t_64_sync_handler+0xa0/0xe8
[ 90.880858] el0t_64_sync+0x198/0x1a0
[ 90.884644]
[ 90.884644] other info that might help us debug this:
[ 90.884644]
[ 90.892742] Chain exists of:
[ 90.892742] &host->lock --> target_list_lock --> &ring->lock
[ 90.892742]
[ 90.903035] Possible interrupt unsafe locking scenario:
[ 90.903035]
[ 90.909901] CPU0 CPU1
[ 90.914482] ---- ----
[ 90.919060] lock(&ring->lock);
[ 90.922311] local_irq_disable();
[ 90.928297] lock(&host->lock);
[ 90.934107] lock(target_list_lock);
[ 90.940356] <Interrupt>
[ 90.943001] lock(&host->lock);
[ 90.946430]
[ 90.946430] *** DEADLOCK ***
[ 90.946430]
[ 90.952419] 12 locks held by swapper/0/0:
[ 90.956468] #0: ffffff8100049948 ((wq_completion)events_bh_highpri){+.-.}-{0:0}, at: process_one_work+0x190/0x5e8
[ 90.966944] #1: ffffffc080003e60 ((work_completion)(&bh->bh)){+.-.}-{0:0}, at: process_one_work+0x1b8/0x5e8
[ 90.976885] #2: ffffff81082f2230 (&dev->event_lock){..-.}-{3:3}, at: input_event+0x50/0xb8
[ 90.985339] #3: ffffffd6a169c3c8 (rcu_read_lock){....}-{1:3}, at: input_pass_values+0x38/0x2e8
[ 90.994141] #4: ffffffd6a169c3c8 (rcu_read_lock){....}-{1:3}, at: __handle_sysrq+0x8/0x308
[ 91.002591] #5: ffffffd6a162a8e8 (console_lock){+.+.}-{0:0}, at: vprintk_default+0x40/0x58
[ 91.011041] #6: ffffffd6a162a940 (console_srcu){....}-{0:0}, at: console_flush_all+0x88/0x4a8
[ 91.019751] #7: ffffffd6a162ab00 (console_owner){..-.}-{0:0}, at: console_lock_spinning_enable+0x50/0x90
[ 91.029437] #8: ffffffd6a162ab28 (printk_legacy_map-wait-type-override){....}-{4:4}, at: console_flush_all+0x2a0/0x4a8
[ 91.040346] #9: ffffffd6357c3298 (target_list_lock){..-.}-{3:3}, at: write_msg+0x60/0x1b0 [netconsole]
[ 91.049854] #10: ffffffd6a169c3c8 (rcu_read_lock){....}-{1:3}, at: netpoll_send_skb+0x4c/0x4b0
[ 91.058655] #11: ffffff8108050118 (_xmit_ETHER#2){+.-.}-{3:3}, at: netpoll_send_skb+0x3e4/0x4b0
[ 91.067545]
[ 91.067545] the dependencies between HARDIRQ-irq-safe lock and the holding lock:
[ 91.076524] -> (&host->lock){-.-.}-{3:3} {
[ 91.080836] IN-HARDIRQ-W at:
[ 91.084181] lock_acquire+0x1d4/0x368
[ 91.089907] _raw_spin_lock+0x50/0x70
[ 91.095623] bcm2835_mmc_irq+0x28/0x8c8
[ 91.101520] __handle_irq_event_percpu+0x94/0x318
[ 91.108301] handle_irq_event+0x54/0xb8
[ 91.114198] handle_fasteoi_irq+0x12c/0x270
[ 91.120450] handle_irq_desc+0x48/0x68
[ 91.126259] generic_handle_domain_irq+0x24/0x38
[ 91.132944] gic_handle_irq+0x48/0xd8
[ 91.138669] call_on_irq_stack+0x30/0x70
[ 91.144655] do_interrupt_handler+0xdc/0xe8
[ 91.150904] el1_interrupt+0x34/0x68
[ 91.156538] el1h_64_irq_handler+0x18/0x28
[ 91.162699] el1h_64_irq+0x6c/0x70
[ 91.168156] d_alloc_parallel+0x3dc/0x9e8
[ 91.174230] __lookup_slow+0x98/0x188
[ 91.179951] lookup_noperm+0x74/0x88
[ 91.185582] simple_start_creating+0x70/0xe8
[ 91.191919] start_creating+0x7c/0x110
[ 91.197739] __debugfs_create_file+0x54/0x230
[ 91.204164] debugfs_create_file_unsafe+0x28/0x40
[ 91.210927] debugfs_create_u32+0x78/0x90
[ 91.217009] link_and_create_debugfs+0x78/0xf8
[ 91.223517] _regulator_get_common+0x14c/0x398
[ 91.230028] _regulator_get+0x48/0xa0
[ 91.235752] _devm_regulator_get+0x60/0xb0
[ 91.241910] devm_regulator_get_optional+0x1c/0x30
[ 91.248773] mmc_regulator_get_supply+0x48/0x1c8
[ 91.255461] sdhci_setup_host+0x904/0xd30
[ 91.261535] sdhci_add_host+0x20/0x60
[ 91.267260] sdhci_iproc_probe+0xc8/0x108
[ 91.273330] platform_probe+0x64/0xa8
[ 91.279058] really_probe+0xc4/0x2a8
[ 91.284684] __driver_probe_device+0x80/0x140
[ 91.291118] driver_probe_device+0xe0/0x170
[ 91.297367] __device_attach_driver+0xc0/0x148
[ 91.303881] bus_for_each_drv+0x88/0xf0
[ 91.309781] __device_attach_async_helper+0xb8/0xe8
[ 91.316734] async_run_entry_fn+0x3c/0xf0
[ 91.322804] process_one_work+0x20c/0x5e8
[ 91.328878] worker_thread+0x1c8/0x378
[ 91.334686] kthread+0x168/0x230
[ 91.339969] ret_from_fork+0x10/0x20
[ 91.345605] IN-SOFTIRQ-W at:
[ 91.348943] lock_acquire+0x1d4/0x368
[ 91.354671] _raw_spin_lock_irqsave+0x60/0x90
[ 91.361097] bcm2835_mmc_tasklet_finish+0x20/0x100
[ 91.367962] tasklet_action_common+0x1a4/0x1c8
[ 91.374476] tasklet_action+0x48/0x60
[ 91.380187] handle_softirqs+0x144/0x528
[ 91.386175] __do_softirq+0x1c/0x28
[ 91.391725] ____do_softirq+0x18/0x30
[ 91.397444] call_on_irq_stack+0x30/0x70
[ 91.403434] do_softirq_own_stack+0x24/0x38
[ 91.409679] __irq_exit_rcu+0x100/0x1f8
[ 91.415580] irq_exit_rcu+0x18/0x58
[ 91.421126] el1_interrupt+0x38/0x68
[ 91.426759] el1h_64_irq_handler+0x18/0x28
[ 91.432921] el1h_64_irq+0x6c/0x70
[ 91.438377] _raw_spin_unlock_irqrestore+0x6c/0xa0
[ 91.445237] bcm2835_mmc_request+0x64/0xc8
[ 91.451405] __mmc_start_request+0x7c/0x158
[ 91.457654] mmc_start_request+0xa0/0xf0
[ 91.463640] mmc_wait_for_req+0x78/0x110
[ 91.469620] mmc_wait_for_cmd+0x6c/0xb0
[ 91.475522] sdio_reset+0x60/0x138
[ 91.480972] mmc_rescan+0x2bc/0x338
[ 91.486518] process_one_work+0x20c/0x5e8
[ 91.492594] worker_thread+0x1c8/0x378
[ 91.498402] kthread+0x168/0x230
[ 91.503683] ret_from_fork+0x10/0x20
[ 91.509316] INITIAL USE at:
[ 91.512586] lock_acquire+0x1d4/0x368
[ 91.518205] _raw_spin_lock_irqsave+0x60/0x90
[ 91.524557] bcm2835_mmc_reset+0x34/0x238
[ 91.530529] bcm2835_mmc_probe+0x1a0/0x730
[ 91.536616] platform_probe+0x64/0xa8
[ 91.542248] really_probe+0xc4/0x2a8
[ 91.547794] __driver_probe_device+0x80/0x140
[ 91.554131] driver_probe_device+0xe0/0x170
[ 91.560293] __device_attach_driver+0xc0/0x148
[ 91.566719] bus_for_each_drv+0x88/0xf0
[ 91.572514] __device_attach+0xa4/0x198
[ 91.578336] device_initial_probe+0x1c/0x30
[ 91.584498] bus_probe_device+0xb4/0xc0
[ 91.590308] deferred_probe_work_func+0x90/0xd8
[ 91.596822] process_one_work+0x20c/0x5e8
[ 91.602793] worker_thread+0x1c8/0x378
[ 91.608528] kthread+0x168/0x230
[ 91.613721] ret_from_fork+0x10/0x20
[ 91.619253] }
[ 91.621101] ... key at: [<ffffffd6a234d8d8>] __key.2+0x0/0x10
[ 91.627629] -> (console_owner){..-.}-{0:0} {
[ 91.632029] IN-SOFTIRQ-W at:
[ 91.635272] lock_acquire+0x1d4/0x368
[ 91.640831] console_lock_spinning_enable+0x74/0x90
[ 91.647609] console_flush_all+0x2ac/0x4a8
[ 91.653594] console_unlock+0x84/0x188
[ 91.659228] vprintk_emit+0x24c/0x450
[ 91.664772] vprintk_default+0x40/0x58
[ 91.670406] vprintk+0x3c/0x80
[ 91.675335] _printk+0x64/0x98
[ 91.680264] __handle_sysrq+0x1ec/0x308
[ 91.685985] sysrq_filter+0xcc/0x518
[ 91.691442] input_handle_events_filter+0x58/0xc0
[ 91.698030] input_pass_values+0x1fc/0x2e8
[ 91.704029] input_handle_event+0x450/0x558
[ 91.710090] input_event+0x6c/0xb8
[ 91.715384] hidinput_report_event+0x4c/0x78
[ 91.721545] hid_report_raw_event+0xb4/0x418
[ 91.727707] hid_input_report+0x138/0x1a0
[ 91.733604] hid_irq_in+0x180/0x308
[ 91.738959] __usb_hcd_giveback_urb+0x98/0x160
[ 91.745310] usb_giveback_urb_bh+0xb0/0x150
[ 91.751371] process_one_work+0x20c/0x5e8
[ 91.757281] bh_worker+0x1b0/0x218
[ 91.762563] workqueue_softirq_action+0x80/0x98
[ 91.768988] tasklet_hi_action+0x20/0x60
[ 91.774784] handle_softirqs+0x144/0x528
[ 91.780607] __do_softirq+0x1c/0x28
[ 91.785976] ____do_softirq+0x18/0x30
[ 91.791522] call_on_irq_stack+0x30/0x70
[ 91.797331] do_softirq_own_stack+0x24/0x38
[ 91.803404] __irq_exit_rcu+0x100/0x1f8
[ 91.809113] irq_exit_rcu+0x18/0x58
[ 91.814494] el1_interrupt+0x38/0x68
[ 91.819951] el1h_64_irq_handler+0x18/0x28
[ 91.825938] el1h_64_irq+0x6c/0x70
[ 91.831219] default_idle_call+0x84/0x140
[ 91.837104] do_idle+0x22c/0x298
[ 91.842208] cpu_startup_entry+0x3c/0x50
[ 91.848030] rest_init+0x108/0x1a0
[ 91.853312] start_kernel+0x760/0x8c8
[ 91.858856] __primary_switched+0x88/0x98
[ 91.864742] INITIAL USE at:
[ 91.867923] lock_acquire+0x1d4/0x368
[ 91.873368] console_lock_spinning_enable+0x74/0x90
[ 91.880063] console_flush_all+0x2ac/0x4a8
[ 91.885955] console_unlock+0x84/0x188
[ 91.891506] vprintk_emit+0x24c/0x450
[ 91.896963] vprintk_default+0x40/0x58
[ 91.902508] vprintk+0x3c/0x80
[ 91.907349] _printk+0x64/0x98
[ 91.912191] register_console+0x3a8/0x4e0
[ 91.918000] con_init+0x1c8/0x270
[ 91.923106] console_init+0x98/0x2a0
[ 91.928474] start_kernel+0x4e8/0x8c8
[ 91.933931] __primary_switched+0x88/0x98
[ 91.939741] }
[ 91.941495] ... key at: [<ffffffd6a162ab00>] console_owner_dep_map+0x0/0x28
[ 91.949158] ... acquired at:
[ 91.952233] console_lock_spinning_enable+0x74/0x90
[ 91.957345] console_flush_all+0x2ac/0x4a8
[ 91.961664] console_unlock+0x84/0x188
[ 91.965625] vprintk_emit+0x24c/0x450
[ 91.969485] vprintk_default+0x40/0x58
[ 91.973447] vprintk+0x3c/0x80
[ 91.976703] _printk+0x64/0x98
[ 91.979964] bcm2835_mmc_send_command+0x944/0xa08
[ 91.984894] bcm2835_mmc_request+0x58/0xc8
[ 91.989207] __mmc_start_request+0x7c/0x158
[ 91.993603] mmc_start_request+0xa0/0xf0
[ 91.997745] mmc_wait_for_req+0x78/0x110
[ 92.001876] mmc_wait_for_cmd+0x6c/0xb0
[ 92.005931] sdio_reset+0x60/0x138
[ 92.009547] mmc_rescan+0x2bc/0x338
[ 92.013231] process_one_work+0x20c/0x5e8
[ 92.017461] worker_thread+0x1c8/0x378
[ 92.021421] kthread+0x168/0x230
[ 92.024855] ret_from_fork+0x10/0x20
[ 92.028640]
[ 92.030136] -> (target_list_lock){..-.}-{3:3} {
[ 92.034720] IN-SOFTIRQ-W at:
[ 92.037882] lock_acquire+0x1d4/0x368
[ 92.043251] _raw_spin_lock_irqsave+0x60/0x90
[ 92.049324] write_msg+0x60/0x1b0 [netconsole]
[ 92.055486] console_flush_all+0x2e4/0x4a8
[ 92.061296] console_unlock+0x84/0x188
[ 92.066753] vprintk_emit+0x24c/0x450
[ 92.072122] vprintk_default+0x40/0x58
[ 92.077579] vprintk+0x3c/0x80
[ 92.082332] _printk+0x64/0x98
[ 92.087091] __handle_sysrq+0x1ec/0x308
[ 92.092636] sysrq_filter+0xcc/0x518
[ 92.097911] input_handle_events_filter+0x58/0xc0
[ 92.104337] input_pass_values+0x1fc/0x2e8
[ 92.110152] input_handle_event+0x450/0x558
[ 92.116044] input_event+0x6c/0xb8
[ 92.121144] hidinput_report_event+0x4c/0x78
[ 92.127129] hid_report_raw_event+0xb4/0x418
[ 92.133120] hid_input_report+0x138/0x1a0
[ 92.138835] hid_irq_in+0x180/0x308
[ 92.144034] __usb_hcd_giveback_urb+0x98/0x160
[ 92.150189] usb_giveback_urb_bh+0xb0/0x150
[ 92.156093] process_one_work+0x20c/0x5e8
[ 92.161815] bh_worker+0x1b0/0x218
[ 92.166919] workqueue_softirq_action+0x80/0x98
[ 92.173168] tasklet_hi_action+0x20/0x60
[ 92.178802] handle_softirqs+0x144/0x528
[ 92.184435] __do_softirq+0x1c/0x28
[ 92.189629] ____do_softirq+0x18/0x30
[ 92.194993] call_on_irq_stack+0x30/0x70
[ 92.200630] do_softirq_own_stack+0x24/0x38
[ 92.206529] __irq_exit_rcu+0x100/0x1f8
[ 92.212074] irq_exit_rcu+0x18/0x58
[ 92.217267] el1_interrupt+0x38/0x68
[ 92.222548] el1h_64_irq_handler+0x18/0x28
[ 92.228357] el1h_64_irq+0x6c/0x70
[ 92.233462] default_idle_call+0x84/0x140
[ 92.239184] do_idle+0x22c/0x298
[ 92.244112] cpu_startup_entry+0x3c/0x50
[ 92.249746] rest_init+0x108/0x1a0
[ 92.254852] start_kernel+0x760/0x8c8
[ 92.260221] __primary_switched+0x88/0x98
[ 92.265942] INITIAL USE at:
[ 92.269022] lock_acquire+0x1d4/0x368
[ 92.274303] _raw_spin_lock_irqsave+0x60/0x90
[ 92.280289] make_netconsole_target+0xe4/0x1d0 [netconsole]
[ 92.287507] configfs_mkdir+0x184/0x4c0
[ 92.292964] vfs_mkdir+0x1a8/0x280
[ 92.297981] do_mkdirat+0x140/0x180
[ 92.303086] __arm64_sys_mkdirat+0x38/0x58
[ 92.308807] invoke_syscall+0x50/0x120
[ 92.314173] el0_svc_common.constprop.0+0x48/0xf0
[ 92.320514] do_el0_svc+0x24/0x38
[ 92.325444] el0_svc+0x4c/0x178
[ 92.330195] el0t_64_sync_handler+0xa0/0xe8
[ 92.336005] el0t_64_sync+0x198/0x1a0
[ 92.341282] }
[ 92.342961] ... key at: [<ffffffd6357c3298>] target_list_lock+0x18/0xffffffffffffed80 [netconsole]
[ 92.352553] ... acquired at:
[ 92.355542] _raw_spin_lock_irqsave+0x60/0x90
[ 92.360123] write_msg+0x60/0x1b0 [netconsole]
[ 92.364789] console_flush_all+0x2e4/0x4a8
[ 92.369099] console_unlock+0x84/0x188
[ 92.373062] vprintk_emit+0x24c/0x450
[ 92.376932] vprintk_default+0x40/0x58
[ 92.380894] vprintk+0x3c/0x80
[ 92.384150] _printk+0x64/0x98
[ 92.387407] __handle_sysrq+0x1ec/0x308
[ 92.391458] sysrq_filter+0xcc/0x518
[ 92.395242] input_handle_events_filter+0x58/0xc0
[ 92.400172] input_pass_values+0x1fc/0x2e8
[ 92.404486] input_handle_event+0x450/0x558
[ 92.408885] input_event+0x6c/0xb8
[ 92.412495] hidinput_report_event+0x4c/0x78
[ 92.416984] hid_report_raw_event+0xb4/0x418
[ 92.421471] hid_input_report+0x138/0x1a0
[ 92.425697] hid_irq_in+0x180/0x308
[ 92.429394] __usb_hcd_giveback_urb+0x98/0x160
[ 92.434059] usb_giveback_urb_bh+0xb0/0x150
[ 92.438461] process_one_work+0x20c/0x5e8
[ 92.442687] bh_worker+0x1b0/0x218
[ 92.446294] workqueue_softirq_action+0x80/0x98
[ 92.451050] tasklet_hi_action+0x20/0x60
[ 92.455185] handle_softirqs+0x144/0x528
[ 92.459322] __do_softirq+0x1c/0x28
[ 92.463020] ____do_softirq+0x18/0x30
[ 92.466892] call_on_irq_stack+0x30/0x70
[ 92.471030] do_softirq_own_stack+0x24/0x38
[ 92.475429] __irq_exit_rcu+0x100/0x1f8
[ 92.479478] irq_exit_rcu+0x18/0x58
[ 92.483177] el1_interrupt+0x38/0x68
[ 92.486960] el1h_64_irq_handler+0x18/0x28
[ 92.491273] el1h_64_irq+0x6c/0x70
[ 92.494882] default_idle_call+0x84/0x140
[ 92.499107] do_idle+0x22c/0x298
[ 92.502541] cpu_startup_entry+0x3c/0x50
[ 92.506677] rest_init+0x108/0x1a0
[ 92.510287] start_kernel+0x760/0x8c8
[ 92.514160] __primary_switched+0x88/0x98
[ 92.518383]
[ 92.519881]
[ 92.519881] the dependencies between the lock to be acquired
[ 92.519887] and HARDIRQ-irq-unsafe lock:
[ 92.531155] -> (&ring->lock){+.-.}-{3:3} {
[ 92.535283] HARDIRQ-ON-W at:
[ 92.538452] lock_acquire+0x1d4/0x368
[ 92.543821] _raw_spin_lock+0x50/0x70
[ 92.549190] bcmgenet_xmit+0x78/0x860
[ 92.554559] dev_hard_start_xmit+0xc0/0x2d0
[ 92.560458] sch_direct_xmit+0x98/0x1e8
[ 92.566001] __dev_queue_xmit+0x5a0/0x13a8
[ 92.571813] packet_xmit+0xcc/0x150
[ 92.577004] packet_sendmsg+0x8e8/0x1328
[ 92.582637] __sock_sendmsg+0x64/0xc0
[ 92.588006] ____sys_sendmsg+0x270/0x2b0
[ 92.593640] ___sys_sendmsg+0x88/0xf0
[ 92.599009] __sys_sendmsg+0x88/0x100
[ 92.604380] __arm64_sys_sendmsg+0x2c/0x40
[ 92.610188] invoke_syscall+0x50/0x120
[ 92.615644] el0_svc_common.constprop.0+0x48/0xf0
[ 92.622072] do_el0_svc+0x24/0x38
[ 92.627088] el0_svc+0x4c/0x178
[ 92.631929] el0t_64_sync_handler+0xa0/0xe8
[ 92.637827] el0t_64_sync+0x198/0x1a0
[ 92.643195] IN-SOFTIRQ-W at:
[ 92.646364] lock_acquire+0x1d4/0x368
[ 92.651733] _raw_spin_lock+0x50/0x70
[ 92.657104] bcmgenet_tx_poll+0x30/0xe8
[ 92.662647] __napi_poll.constprop.0+0x44/0x268
[ 92.668898] net_rx_action+0x320/0x390
[ 92.674355] handle_softirqs+0x144/0x528
[ 92.679987] __do_softirq+0x1c/0x28
[ 92.685178] ____do_softirq+0x18/0x30
[ 92.690549] call_on_irq_stack+0x30/0x70
[ 92.696183] do_softirq_own_stack+0x24/0x38
[ 92.702079] __irq_exit_rcu+0x100/0x1f8
[ 92.707625] irq_exit_rcu+0x18/0x58
[ 92.712818] el0_interrupt+0x60/0x138
[ 92.718195] __el0_irq_handler_common+0x18/0x28
[ 92.724438] el0t_64_irq_handler+0x10/0x20
[ 92.730254] el0t_64_irq+0x198/0x1a0
[ 92.735529] INITIAL USE at:
[ 92.738608] lock_acquire+0x1d4/0x368
[ 92.743890] _raw_spin_lock+0x50/0x70
[ 92.749171] bcmgenet_xmit+0x78/0x860
[ 92.754452] dev_hard_start_xmit+0xc0/0x2d0
[ 92.760262] sch_direct_xmit+0x98/0x1e8
[ 92.765720] __dev_queue_xmit+0x5a0/0x13a8
[ 92.771440] packet_xmit+0xcc/0x150
[ 92.776552] packet_sendmsg+0x8e8/0x1328
[ 92.782091] __sock_sendmsg+0x64/0xc0
[ 92.787374] ____sys_sendmsg+0x270/0x2b0
[ 92.792918] ___sys_sendmsg+0x88/0xf0
[ 92.798198] __sys_sendmsg+0x88/0x100
[ 92.803479] __arm64_sys_sendmsg+0x2c/0x40
[ 92.809201] invoke_syscall+0x50/0x120
[ 92.814570] el0_svc_common.constprop.0+0x48/0xf0
[ 92.820908] do_el0_svc+0x24/0x38
[ 92.825837] el0_svc+0x4c/0x178
[ 92.830591] el0t_64_sync_handler+0xa0/0xe8
[ 92.836399] el0t_64_sync+0x198/0x1a0
[ 92.841681] }
[ 92.843353] ... key at: [<ffffffd6a2347b30>] __key.6+0x0/0x10
[ 92.849690] ... acquired at:
[ 92.852685] lock_acquire+0x1d4/0x368
[ 92.856555] _raw_spin_lock+0x50/0x70
[ 92.860428] bcmgenet_xmit+0x78/0x860
[ 92.864301] netpoll_start_xmit+0x118/0x1b0
[ 92.868702] netpoll_send_skb+0x3a8/0x4b0
[ 92.872928] netpoll_send_udp+0x2ac/0x418
[ 92.877153] write_msg+0x124/0x1b0 [netconsole]
[ 92.881907] console_flush_all+0x2e4/0x4a8
[ 92.886220] console_unlock+0x84/0x188
[ 92.890181] vprintk_emit+0x24c/0x450
[ 92.894052] vprintk_default+0x40/0x58
[ 92.898013] vprintk+0x3c/0x80
[ 92.901270] _printk+0x64/0x98
[ 92.904527] __handle_sysrq+0x1ec/0x308
[ 92.908576] sysrq_filter+0xcc/0x518
[ 92.912363] input_handle_events_filter+0x58/0xc0
[ 92.917289] input_pass_values+0x1fc/0x2e8
[ 92.921604] input_handle_event+0x450/0x558
[ 92.926003] input_event+0x6c/0xb8
[ 92.929612] hidinput_report_event+0x4c/0x78
[ 92.934103] hid_report_raw_event+0xb4/0x418
[ 92.938592] hid_input_report+0x138/0x1a0
[ 92.942816] hid_irq_in+0x180/0x308
[ 92.946513] __usb_hcd_giveback_urb+0x98/0x160
[ 92.951179] usb_giveback_urb_bh+0xb0/0x150
[ 92.955580] process_one_work+0x20c/0x5e8
[ 92.959803] bh_worker+0x1b0/0x218
[ 92.963413] workqueue_softirq_action+0x80/0x98
[ 92.968166] tasklet_hi_action+0x20/0x60
[ 92.972304] handle_softirqs+0x144/0x528
[ 92.976438] __do_softirq+0x1c/0x28
[ 92.980142] ____do_softirq+0x18/0x30
[ 92.984008] call_on_irq_stack+0x30/0x70
[ 92.988145] do_softirq_own_stack+0x24/0x38
[ 92.992547] __irq_exit_rcu+0x100/0x1f8
[ 92.996595] irq_exit_rcu+0x18/0x58
[ 93.000293] el1_interrupt+0x38/0x68
[ 93.004077] el1h_64_irq_handler+0x18/0x28
[ 93.008390] el1h_64_irq+0x6c/0x70
[ 93.012005] default_idle_call+0x84/0x140
[ 93.016230] do_idle+0x22c/0x298
[ 93.019657] cpu_startup_entry+0x3c/0x50
[ 93.023794] rest_init+0x108/0x1a0
[ 93.027403] start_kernel+0x760/0x8c8
[ 93.031274] __primary_switched+0x88/0x98
[ 93.035500]
[ 93.036995]
[ 93.036995] stack backtrace:
[ 93.041406] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G C 6.17.0-rc2-v8-lockdep #529 PREEMPTLAZY
[ 93.052226] Tainted: [C]=CRAP
[ 93.055218] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT)
[ 93.061114] Call trace:
[ 93.063580] show_stack+0x20/0x38 (C)
[ 93.067276] dump_stack_lvl+0x90/0xd0
[ 93.070973] dump_stack+0x18/0x28
[ 93.074317] check_irq_usage+0x720/0x9e8
[ 93.078277] __lock_acquire+0x1388/0x1fa0
[ 93.082327] lock_acquire+0x1d4/0x368
[ 93.086023] _raw_spin_lock+0x50/0x70
[ 93.089720] bcmgenet_xmit+0x78/0x860
[ 93.093418] netpoll_start_xmit+0x118/0x1b0
[ 93.097642] netpoll_send_skb+0x3a8/0x4b0
[ 93.101691] netpoll_send_udp+0x2ac/0x418
[ 93.105741] write_msg+0x124/0x1b0 [netconsole]
[ 93.110320] console_flush_all+0x2e4/0x4a8
[ 93.114455] console_unlock+0x84/0x188
[ 93.118240] vprintk_emit+0x24c/0x450
[ 93.121935] vprintk_default+0x40/0x58
[ 93.125723] vprintk+0x3c/0x80
[ 93.128802] _printk+0x64/0x98
[ 93.131882] __handle_sysrq+0x1ec/0x308
[ 93.135756] sysrq_filter+0xcc/0x518
[ 93.139363] input_handle_events_filter+0x58/0xc0
[ 93.144118] input_pass_values+0x1fc/0x2e8
[ 93.148255] input_handle_event+0x450/0x558
[ 93.152478] input_event+0x6c/0xb8
[ 93.155912] hidinput_report_event+0x4c/0x78
[ 93.160225] hid_report_raw_event+0xb4/0x418
[ 93.164539] hid_input_report+0x138/0x1a0
[ 93.168586] hid_irq_in+0x180/0x308
[ 93.172107] __usb_hcd_giveback_urb+0x98/0x160
[ 93.176596] usb_giveback_urb_bh+0xb0/0x150
[ 93.180822] process_one_work+0x20c/0x5e8
[ 93.184870] bh_worker+0x1b0/0x218
[ 93.188303] workqueue_softirq_action+0x80/0x98
[ 93.192881] tasklet_hi_action+0x20/0x60
[ 93.196841] handle_softirqs+0x144/0x528
[ 93.200808] __do_softirq+0x1c/0x28
[ 93.204325] ____do_softirq+0x18/0x30
[ 93.208019] call_on_irq_stack+0x30/0x70
[ 93.211983] do_softirq_own_stack+0x24/0x38
[ 93.216205] __irq_exit_rcu+0x100/0x1f8
[ 93.220078] irq_exit_rcu+0x18/0x58
[ 93.223600] el1_interrupt+0x38/0x68
[ 93.227208] el1h_64_irq_handler+0x18/0x28
[ 93.231345] el1h_64_irq+0x6c/0x70
[ 93.234778] default_idle_call+0x84/0x140 (P)
[ 93.239179] do_idle+0x22c/0x298
[ 93.242436] cpu_startup_entry+0x3c/0x50
[ 93.246403] rest_init+0x108/0x1a0
[ 93.249830] start_kernel+0x760/0x8c8
[ 93.253525] __primary_switched+0x88/0x98
Powered by blists - more mailing lists