netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: netpoll: raspberrypi [4 5] driver locking woes
       [not found]   ` <f4fa3fcc637ffb6531982a90dbd9c27114e93036.camel@gmx.de>
@ 2025-08-28 14:57     ` Sean Anderson
  2025-08-28 17:26       ` Mike Galbraith
  0 siblings, 1 reply; 4+ messages in thread
From: Sean Anderson @ 2025-08-28 14:57 UTC (permalink / raw)
  To: Mike Galbraith, Robert Hancock; +Cc: Breno Leitao, netdev@vger.kernel.org

Hi Mike,

On 8/27/25 12:02, Mike Galbraith wrote:
> Unexpected addendum to done deal datapoint, so off list.
> 
> On Tue, 2025-08-26 at 11:49 +0200, Mike Galbraith wrote:
>> 
>> The pi5 gripe fix is equally trivial, but submitting that is pointless
>> given there's something else amiss in fingered commit.  This is all of
>> the crash info that escapes the box w/wo gripes silenced.
>> 
>> [   51.688868] sysrq: Trigger a crash
>> [   51.688892] Kernel panic - not syncing: sysrq triggered crash
>> [   51.698066] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.17.0-rc2-v8-lockdep #533 PREEMPTLAZY
>> [   51.707234] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
>> [   51.713085] Call trace:
>> [   51.715532]  show_stack+0x20/0x38 (C)
>> [   51.719206]  dump_stack_lvl+0x38/0xd0
>> [   51.722878]  dump_stack+0x18/0x28
>> 
>> That aspect is a punt and run atm (time.. and dash of laziness:).
> 
> Plan was to end datapoint thread, but after booting pi5's 6.12 kernel,
> for some reason I fired up netconsole.. and box promptly exhibited the
> netpoll locking bug warning, indicating presence of 138badbc21a0. 
> Instead of saying to self "nope, just walk away", I poked SysRq-C.. and
> the bloody damn monitoring box received a 100% complete death rattle. 
> Well bugger.

Did you get a backtrace for this?

And to be clear, the steps to reproduce this are to boot a kernel with
lockdep enabled with netconsole on macb and then hit sysrq?

> Two trees contain locking buglet introducing 138badbc21a0, 6.12.41 and
> 6.17.0, but only the later reproduces the above mess.  A quick stare at
> git diff inspired checking e6a532185daa, and sure enough reverting only
> it reproduced a functional netconsole, modulo warnings, ie the mess
> above manifests only with BOTH resident.  Either revert 138badbc21a0,
> or revert e6a532185daa and fix the 138badbc21a0 locking buglet, and the
> result is the same, a perfectly functional warning free netconsole.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: netpoll: raspberrypi [4 5] driver locking woes
  2025-08-28 14:57     ` netpoll: raspberrypi [4 5] driver locking woes Sean Anderson
@ 2025-08-28 17:26       ` Mike Galbraith
  2025-08-28 18:56         ` Sean Anderson
  0 siblings, 1 reply; 4+ messages in thread
From: Mike Galbraith @ 2025-08-28 17:26 UTC (permalink / raw)
  To: Sean Anderson, Robert Hancock; +Cc: Breno Leitao, netdev@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 2449 bytes --]

On Thu, 2025-08-28 at 10:57 -0400, Sean Anderson wrote:
> Hi Mike,
> 
> On 8/27/25 12:02, Mike Galbraith wrote:
> > Unexpected addendum to done deal datapoint, so off list.
> > 
> > On Tue, 2025-08-26 at 11:49 +0200, Mike Galbraith wrote:
> > > 
> > > The pi5 gripe fix is equally trivial, but submitting that is pointless
> > > given there's something else amiss in fingered commit.  This is all of
> > > the crash info that escapes the box w/wo gripes silenced.
> > > 
> > > [   51.688868] sysrq: Trigger a crash
> > > [   51.688892] Kernel panic - not syncing: sysrq triggered crash
> > > [   51.698066] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.17.0-rc2-v8-lockdep #533 PREEMPTLAZY
> > > [   51.707234] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
> > > [   51.713085] Call trace:
> > > [   51.715532]  show_stack+0x20/0x38 (C)
> > > [   51.719206]  dump_stack_lvl+0x38/0xd0
> > > [   51.722878]  dump_stack+0x18/0x28
> > > 
> > > That aspect is a punt and run atm (time.. and dash of laziness:).
> > 
> > Plan was to end datapoint thread, but after booting pi5's 6.12 kernel,
> > for some reason I fired up netconsole.. and box promptly exhibited the
> > netpoll locking bug warning, indicating presence of 138badbc21a0. 
> > Instead of saying to self "nope, just walk away", I poked SysRq-C.. and
> > the bloody damn monitoring box received a 100% complete death rattle. 
> > Well bugger.
> 
> Did you get a backtrace for this?

Yes, logs for 6.12.41 and 6.17.0-rc2 attached.

Since a patch has meanwhile landed, also a log of patched 6.17.0-rc3
now gripe free (yay) but with aforementioned broken output, followed by
addition of the e6a532185daa revert to confirm it still cures that.

> And to be clear, the steps to reproduce this are to boot a kernel with
> lockdep enabled with netconsole on macb and then hit sysrq?

Yup.

> > Two trees contain locking buglet introducing 138badbc21a0, 6.12.41 and
> > 6.17.0, but only the later reproduces the above mess.  A quick stare at
> > git diff inspired checking e6a532185daa, and sure enough reverting only
> > it reproduced a functional netconsole, modulo warnings, ie the mess
> > above manifests only with BOTH resident.  Either revert 138badbc21a0,
> > or revert e6a532185daa and fix the 138badbc21a0 locking buglet, and the
> > result is the same, a perfectly functional warning free netconsole.
> 


[-- Attachment #2: netconsole-rpi5-6.12-eth0.log --]
[-- Type: text/x-log, Size: 18613 bytes --]

[  349.336384] sysrq: Trigger a crash
[  349.336569] ------------[ cut here ]------------
[  349.336572] netpoll_send_skb_on_dev(): eth0 enabled interrupts in poll (macb_start_xmit+0x0/0xc48)
[  349.336622] WARNING: CPU: 0 PID: 0 at net/core/netpoll.c:385 netpoll_send_skb+0x4e4/0x528
[  349.336632] Modules linked in: netconsole quota_v2 quota_tree rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device algif_hash algif_skcipher af_alg bnep snd_soc_pcm512x_i2c snd_soc_pcm512x regmap_i2c spidev brcmfmac_wcc brcmfmac vc4 hci_uart btbcm bluetooth aes_ce_blk snd_soc_hdmi_codec v3d aes_ce_cipher ghash_ce drm_display_helper rpi_hevc_dec cec gpu_sched brcmutil drm_dma_helper drm_shmem_helper v4l2_mem2mem pisp_be gf128mul sha2_ce videobuf2_dma_contig sha256_arm64 ecdh_generic videobuf2_memops cfg80211 snd_soc_hifiberry_dacplus ecc videobuf2_v4l2 raspberrypi_hwmon designware_i2s sha1_ce libaes drm_kms_helper snd_soc_core videodev i2c_brcmstb spi_bcm2835 videobuf2_common rfkill gpio_keys clk_hifiberry_dacpro snd_compress binfmt_misc snd_pcm_dmaengine mc snd_pcm rp1_pio rp1_mailbox snd_timer raspberrypi_gpiomem i2c_designware_platform rp1_fw snd i2c_designware_core rp1_adc sg nvmem_rmem uio_pdrv_genirq uio nfsd drm fuse dm_mod i2c_dev ledtrig_pattern auth_rpcgss drm_panel_orientation_quirks backlight ip_tables
[  349.336710]  x_tables ipv6
[  349.336715] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.12.41-v8-lockdep #518
[  349.336721] Tainted: [W]=WARN
[  349.336722] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[  349.336724] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  349.336727] pc : netpoll_send_skb+0x4e4/0x528
[  349.336731] lr : netpoll_send_skb+0x4e4/0x528
[  349.336735] sp : ffffffc080003670
[  349.336737] x29: ffffffc080003670 x28: ffffff810099e600 x27: 0000000000000000
[  349.336741] x26: 0000000000000080 x25: ffffff812c8fc400 x24: ffffff8102e0c000
[  349.336745] x23: 00000000000000c0 x22: ffffff81395a9300 x21: ffffffd08de13a28
[  349.336748] x20: ffffff81183c1130 x19: ffffffd08d94fe40 x18: ffffffffffffffff
[  349.336752] x17: ffffffb1715bb000 x16: ffffffd08d0a9568 x15: 00000000fffffffd
[  349.336755] x14: 0000000000000001 x13: ffffffc080002f94 x12: 6920737470757272
[  349.336759] x11: fffffffffffe0000 x10: ffffffd08ddfa080 x9 : ffffffd08c545950
[  349.336762] x8 : 0000000000000001 x7 : ffffffd08dd770a0 x6 : 0000000000000001
[  349.336766] x5 : ffffffd08dd77000 x4 : 0000000000000001 x3 : 0000000000000000
[  349.336769] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffffffd08dd7cec0
[  349.336773] Call trace:
[  349.336774]  netpoll_send_skb+0x4e4/0x528
[  349.336778]  netpoll_send_udp+0x258/0x3e8
[  349.336783]  write_msg+0x100/0x138 [netconsole]
[  349.336792]  console_flush_all+0x264/0x4a0
[  349.336798]  console_unlock+0x84/0x188
[  349.336802]  vprintk_emit+0x22c/0x420
[  349.336807]  vprintk_default+0x40/0x58
[  349.336811]  vprintk+0x54/0xe0
[  349.336814]  _printk+0x64/0x98
[  349.336817]  __handle_sysrq+0xe0/0x2e0
[  349.336823]  sysrq_filter+0xcc/0x518
[  349.336827]  input_handle_events_filter+0x58/0xc0
[  349.336831]  input_pass_values+0x1e4/0x2c8
[  349.336836]  input_handle_event+0x450/0x558
[  349.336839]  input_event+0x68/0x98
[  349.336843]  hidinput_report_event+0x4c/0x78
[  349.336848]  hid_report_raw_event+0xb4/0x3e0
[  349.336850]  hid_input_report+0x138/0x1a0
[  349.336853]  hid_irq_in+0x180/0x308
[  349.336858]  __usb_hcd_giveback_urb+0x98/0x160
[  349.336863]  usb_giveback_urb_bh+0xb0/0x150
[  349.336867]  process_one_work+0x214/0x640
[  349.336873]  bh_worker+0x1b0/0x218
[  349.336877]  workqueue_softirq_action+0x80/0x98
[  349.336880]  tasklet_hi_action+0x20/0x60
[  349.336883]  handle_softirqs+0x154/0x528
[  349.336885]  __do_softirq+0x1c/0x28
[  349.336889]  ____do_softirq+0x18/0x30
[  349.336892]  call_on_irq_stack+0x30/0x70
[  349.336895]  do_softirq_own_stack+0x24/0x38
[  349.336898]  __irq_exit_rcu+0x100/0x1a0
[  349.336901]  irq_exit_rcu+0x18/0x58
[  349.336903]  el1_interrupt+0x38/0x70
[  349.336908]  el1h_64_irq_handler+0x18/0x28
[  349.336912]  el1h_64_irq+0x64/0x68
[  349.336914]  default_idle_call+0xa8/0x1f8
[  349.336917]  do_idle+0x22c/0x298
[  349.336920]  cpu_startup_entry+0x3c/0x50
[  349.336923]  rest_init+0x100/0x198
[  349.336925]  start_kernel+0x75c/0x900
[  349.336930]  __primary_switched+0x80/0x90
[  349.336934] irq event stamp: 8607573
[  349.336935] hardirqs last  enabled at (8607572): [<ffffffd08d2c7ce4>] el1_interrupt+0x44/0x70
[  349.336940] hardirqs last disabled at (8607573): [<ffffffd08d2c72f4>] el1_dbg+0x24/0x98
[  349.336944] softirqs last  enabled at (8607524): [<ffffffd08c4b04c8>] handle_softirqs+0x508/0x528
[  349.336947] softirqs last disabled at (8607545): [<ffffffd08c4102ac>] __do_softirq+0x1c/0x28
[  349.336949] ---[ end trace 0000000000000000 ]---
[  349.340398] ------------[ cut here ]------------
[  349.340399] WARNING: CPU: 0 PID: 0 at mm/slub.c:700 get_freelist+0x1bc/0x2b0
[  349.340405] Modules linked in: netconsole quota_v2 quota_tree rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device algif_hash algif_skcipher af_alg bnep snd_soc_pcm512x_i2c snd_soc_pcm512x regmap_i2c spidev brcmfmac_wcc brcmfmac vc4 hci_uart btbcm bluetooth aes_ce_blk snd_soc_hdmi_codec v3d aes_ce_cipher ghash_ce drm_display_helper rpi_hevc_dec cec gpu_sched brcmutil drm_dma_helper drm_shmem_helper v4l2_mem2mem pisp_be gf128mul sha2_ce videobuf2_dma_contig sha256_arm64 ecdh_generic videobuf2_memops cfg80211 snd_soc_hifiberry_dacplus ecc videobuf2_v4l2 raspberrypi_hwmon designware_i2s sha1_ce libaes drm_kms_helper snd_soc_core videodev i2c_brcmstb spi_bcm2835 videobuf2_common rfkill gpio_keys clk_hifiberry_dacpro snd_compress binfmt_misc snd_pcm_dmaengine mc snd_pcm rp1_pio rp1_mailbox snd_timer raspberrypi_gpiomem i2c_designware_platform rp1_fw snd i2c_designware_core rp1_adc sg nvmem_rmem uio_pdrv_genirq uio nfsd drm fuse dm_mod i2c_dev ledtrig_pattern auth_rpcgss drm_panel_orientation_quirks backlight ip_tables
[  349.340461]  x_tables ipv6
[  349.340464] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.12.41-v8-lockdep #518
[  349.340467] Tainted: [W]=WARN
[  349.340468] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[  349.340469] pstate: 604000c9 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  349.340472] pc : get_freelist+0x1bc/0x2b0
[  349.340475] lr : get_freelist+0x290/0x2b0
[  349.340477] sp : ffffffc080003460
[  349.340478] x29: ffffffc080003460 x28: 0000000000000000 x27: 0000000000000001
[  349.340482] x26: ffffffd08dd77000 x25: ffffffd08d93c448 x24: ffffff81001cec00
[  349.340485] x23: ffffffd08dd7cec0 x22: 0000000000100010 x21: 0000000000000000
[  349.340489] x20: 0000000080100010 x19: fffffffec4e56a40 x18: ffffffffffffffff
[  349.340492] x17: ffffffb1715bb000 x16: ffffffd08d0a9568 x15: 0000000000000006
[  349.340496] x14: 00000000000c2000 x13: 2d2d2d2d2d2d2d2d x12: 0000000000000000
[  349.340499] x11: 0000000000000190 x10: 0000000000000000 x9 : ffffffd08e70ab10
[  349.340503] x8 : ffffffd08dd7cec0 x7 : 0000000001298354 x6 : ffffffd08e6d4080
[  349.340506] x5 : 00000000000000c8 x4 : 0000000000040000 x3 : ffffffd08dd7cec0
[  349.340510] x2 : ffffffb1715bb000 x1 : ffffffd08dd7cec0 x0 : 0000000000000105
[  349.340513] Call trace:
[  349.340514]  get_freelist+0x1bc/0x2b0
[  349.340516]  ___slab_alloc+0xf4/0x10c0
[  349.340519]  __slab_alloc.constprop.0+0x6c/0xc8
[  349.340522]  kmem_cache_alloc_node_noprof+0x2e4/0x348
[  349.340525]  __alloc_skb+0x154/0x188
[  349.340529]  netpoll_send_udp+0xa8/0x3e8
[  349.340533]  write_msg+0x100/0x138 [netconsole]
[  349.340538]  console_flush_all+0x264/0x4a0
[  349.340542]  console_unlock+0x84/0x188
[  349.340546]  vprintk_emit+0x22c/0x420
[  349.340551]  vprintk_default+0x40/0x58
[  349.340555]  vprintk+0x54/0xe0
[  349.340557]  _printk+0x64/0x98
[  349.340560]  __handle_sysrq+0xe0/0x2e0
[  349.340565]  sysrq_filter+0xcc/0x518
[  349.340569]  input_handle_events_filter+0x58/0xc0
[  349.340572]  input_pass_values+0x1e4/0x2c8
[  349.340576]  input_handle_event+0x450/0x558
[  349.340580]  input_event+0x68/0x98
[  349.340583]  hidinput_report_event+0x4c/0x78
[  349.340587]  hid_report_raw_event+0xb4/0x3e0
[  349.340589]  hid_input_report+0x138/0x1a0
[  349.340592]  hid_irq_in+0x180/0x308
[  349.340596]  __usb_hcd_giveback_urb+0x98/0x160
[  349.340600]  usb_giveback_urb_bh+0xb0/0x150
[  349.340604]  process_one_work+0x214/0x640
[  349.340608]  bh_worker+0x1b0/0x218
[  349.340613]  workqueue_softirq_action+0x80/0x98
[  349.340615]  tasklet_hi_action+0x20/0x60
[  349.340618]  handle_softirqs+0x154/0x528
[  349.340620]  __do_softirq+0x1c/0x28
[  349.340622]  ____do_softirq+0x18/0x30
[  349.340625]  call_on_irq_stack+0x30/0x70
[  349.340628]  do_softirq_own_stack+0x24/0x38
[  349.340631]  __irq_exit_rcu+0x100/0x1a0
[  349.340634]  irq_exit_rcu+0x18/0x58
[  349.340636]  el1_interrupt+0x38/0x70
[  349.340640]  el1h_64_irq_handler+0x18/0x28
[  349.340644]  el1h_64_irq+0x64/0x68
[  349.340646]  default_idle_call+0xa8/0x1f8
[  349.340648]  do_idle+0x22c/0x298
[  349.340650]  cpu_startup_entry+0x3c/0x50
[  349.340652]  rest_init+0x100/0x198
[  349.340655]  start_kernel+0x75c/0x900
[  349.340658]  __primary_switched+0x80/0x90
[  349.340661] irq event stamp: 8607577
[  349.340662] hardirqs last  enabled at (8607576): [<ffffffd08d2c7ce4>] el1_interrupt+0x44/0x70
[  349.340666] hardirqs last disabled at (8607577): [<ffffffd08d2c72f4>] el1_dbg+0x24/0x98
[  349.340670] softirqs last  enabled at (8607524): [<ffffffd08c4b04c8>] handle_softirqs+0x508/0x528
[  349.340673] softirqs last disabled at (8607545): [<ffffffd08c4102ac>] __do_softirq+0x1c/0x28
[  349.340676] ---[ end trace 0000000000000000 ]---
[  349.340679] 
[  349.340680] ================================
[  349.340681] WARNING: inconsistent lock state
[  349.340682] 6.12.41-v8-lockdep #518 Tainted: G        W         
[  349.340684] --------------------------------
[  349.340684] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
[  349.340686] swapper/0/0 [HC0[0]:SC1[1]:HE0:SE0] takes:
[  349.340688] ffffff81fef12fc0 (&c->lock){?.-.}-{2:2}, at: ___slab_alloc+0x78/0x10c0
[  349.340695] {IN-HARDIRQ-W} state was registered at:
[  349.340697]   lock_acquire+0x208/0x360
[  349.340700]   put_cpu_partial+0x88/0x258
[  349.340703]   __slab_free+0x1c8/0x390
[  349.340705]   kmem_cache_free+0x29c/0x400
[  349.340708]   mempool_free_slab+0x24/0x38
[  349.340712]   mempool_free+0x48/0xb8
[  349.340715]   bio_free+0x70/0x90
[  349.340719]   bio_put+0x120/0x278
[  349.340722]   end_bio_bh_io_sync+0x44/0x88
[  349.340725]   bio_endio+0x18c/0x288
[  349.340728]   blk_mq_end_request_batch+0x274/0x500
[  349.340731]   nvme_pci_complete_batch+0xe0/0x138
[  349.340734]   nvme_irq+0x78/0x90
[  349.340736]   __handle_irq_event_percpu+0x94/0x308
[  349.340740]   handle_irq_event+0x54/0xb8
[  349.340743]   handle_fasteoi_irq+0xc8/0x268
[  349.340747]   handle_irq_desc+0x48/0x68
[  349.340750]   generic_handle_domain_irq+0x24/0x38
[  349.340753]   gic_handle_irq+0x48/0xd8
[  349.340755]   call_on_irq_stack+0x30/0x70
[  349.340758]   do_interrupt_handler+0xdc/0xe8
[  349.340761]   el1_interrupt+0x34/0x70
[  349.340765]   el1h_64_irq_handler+0x18/0x28
[  349.340769]   el1h_64_irq+0x64/0x68
[  349.340771]   default_idle_call+0xa8/0x1f8
[  349.340773]   do_idle+0x22c/0x298
[  349.340775]   cpu_startup_entry+0x3c/0x50
[  349.340777]   secondary_start_kernel+0x128/0x150
[  349.340781]   __secondary_switched+0xb8/0xc0
[  349.340785] irq event stamp: 8607577
[  349.340786] hardirqs last  enabled at (8607576): [<ffffffd08d2c7ce4>] el1_interrupt+0x44/0x70
[  349.340790] hardirqs last disabled at (8607577): [<ffffffd08d2c72f4>] el1_dbg+0x24/0x98
[  349.340794] softirqs last  enabled at (8607524): [<ffffffd08c4b04c8>] handle_softirqs+0x508/0x528
[  349.340797] softirqs last disabled at (8607545): [<ffffffd08c4102ac>] __do_softirq+0x1c/0x28
[  349.340800] 
[  349.340800] other info that might help us debug this:
[  349.340801]  Possible unsafe locking scenario:
[  349.340801] 
[  349.340801]        CPU0
[  349.340802]        ----
[  349.340803]   lock(&c->lock);
[  349.340805]   <Interrupt>
[  349.340806]     lock(&c->lock);
[  349.340807] 
[  349.340807]  *** DEADLOCK ***
[  349.340807] 
[  349.340808] 11 locks held by swapper/0/0:
[  349.340810]  #0: ffffff8100045548 ((wq_completion)events_bh_highpri){+.-.}-{0:0}, at: process_one_work+0x198/0x640
[  349.340818]  #1: ffffffc080003e60 ((work_completion)(&bh->bh)){+.-.}-{0:0}, at: process_one_work+0x1c0/0x640
[  349.340826]  #2: ffffff8102eaa230 (&dev->event_lock){+.-.}-{2:2}, at: input_event+0x50/0x98
[  349.340833]  #3: ffffffd08de13a28 (rcu_read_lock){....}-{1:2}, at: input_pass_values+0x38/0x2c8
[  349.340841]  #4: ffffffd08de13a28 (rcu_read_lock){....}-{1:2}, at: __handle_sysrq+0x8/0x2e0
[  349.340848]  #5: ffffffd08dda1c80 (console_lock){+.+.}-{0:0}, at: vprintk_default+0x40/0x58
[  349.340856]  #6: ffffffd08dda1cd8 (console_srcu){....}-{0:0}, at: console_flush_all+0x8c/0x4a0
[  349.340863]  #7: ffffffd08dda1e98 (console_owner){+.-.}-{0:0}, at: console_lock_spinning_enable+0x50/0x90
[  349.340871]  #8: ffffffd08dda1ec0 (printk_legacy_map-wait-type-override){+...}-{3:3}, at: console_flush_all+0x220/0x4a0
[  349.340878]  #9: ffffffd02cbab220 (target_list_lock){+.-.}-{2:2}, at: write_msg+0x64/0x138 [netconsole]
[  349.340886]  #10: ffffff81fef12fc0 (&c->lock){?.-.}-{2:2}, at: ___slab_alloc+0x78/0x10c0
[  349.340892] 
[  349.340892] stack backtrace:
[  349.340893] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.12.41-v8-lockdep #518
[  349.340897] Tainted: [W]=WARN
[  349.340898] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[  349.340899] Call trace:
[  349.340900]  dump_backtrace+0xa0/0x100
[  349.340902]  show_stack+0x20/0x38
[  349.340904]  dump_stack_lvl+0x90/0xd0
[  349.340909]  dump_stack+0x18/0x28
[  349.340912]  print_usage_bug.part.0+0x29c/0x368
[  349.340915]  mark_lock+0x724/0x928
[  349.340917]  mark_held_locks+0x54/0x90
[  349.340919]  lockdep_hardirqs_on_prepare+0x108/0x228
[  349.340921]  arm64_exit_el1_dbg.isra.0+0x30/0x58
[  349.340925]  el1_dbg+0x84/0x98
[  349.340928]  el1h_64_sync_handler+0xc8/0xe8
[  349.340932]  el1h_64_sync+0x64/0x68
[  349.340934]  get_freelist+0x1bc/0x2b0
[  349.340936]  ___slab_alloc+0xf4/0x10c0
[  349.340939]  __slab_alloc.constprop.0+0x6c/0xc8
[  349.340942]  kmem_cache_alloc_node_noprof+0x2e4/0x348
[  349.340945]  __alloc_skb+0x154/0x188
[  349.340947]  netpoll_send_udp+0xa8/0x3e8
[  349.340952]  write_msg+0x100/0x138 [netconsole]
[  349.340955]  console_flush_all+0x264/0x4a0
[  349.340960]  console_unlock+0x84/0x188
[  349.340964]  vprintk_emit+0x22c/0x420
[  349.340968]  vprintk_default+0x40/0x58
[  349.340972]  vprintk+0x54/0xe0
[  349.340974]  _printk+0x64/0x98
[  349.340977]  __handle_sysrq+0xe0/0x2e0
[  349.340981]  sysrq_filter+0xcc/0x518
[  349.340986]  input_handle_events_filter+0x58/0xc0
[  349.340989]  input_pass_values+0x1e4/0x2c8
[  349.340992]  input_handle_event+0x450/0x558
[  349.340996]  input_event+0x68/0x98
[  349.341000]  hidinput_report_event+0x4c/0x78
[  349.341003]  hid_report_raw_event+0xb4/0x3e0
[  349.341006]  hid_input_report+0x138/0x1a0
[  349.341008]  hid_irq_in+0x180/0x308
[  349.341012]  __usb_hcd_giveback_urb+0x98/0x160
[  349.341016]  usb_giveback_urb_bh+0xb0/0x150
[  349.341020]  process_one_work+0x214/0x640
[  349.341025]  bh_worker+0x1b0/0x218
[  349.341029]  workqueue_softirq_action+0x80/0x98
[  349.341031]  tasklet_hi_action+0x20/0x60
[  349.341034]  handle_softirqs+0x154/0x528
[  349.341036]  __do_softirq+0x1c/0x28
[  349.341038]  ____do_softirq+0x18/0x30
[  349.341041]  call_on_irq_stack+0x30/0x70
[  349.341044]  do_softirq_own_stack+0x24/0x38
[  349.341047]  __irq_exit_rcu+0x100/0x1a0
[  349.341049]  irq_exit_rcu+0x18/0x58
[  349.341052]  el1_interrupt+0x38/0x70
[  349.341056]  el1h_64_irq_handler+0x18/0x28
[  349.341059]  el1h_64_irq+0x64/0x68
[  349.341062]  default_idle_call+0xa8/0x1f8
[  349.341064]  do_idle+0x22c/0x298
[  349.341066]  cpu_startup_entry+0x3c/0x50
[  349.341068]  rest_init+0x100/0x198
[  349.341070]  start_kernel+0x75c/0x900
[  349.341073]  __primary_switched+0x80/0x90
[  350.513730] v3d 1002000000.v3d: [drm:v3d_reset [v3d]] *ERROR* Resetting GPU for hang.
[  350.517765] Kernel panic - not syncing: sysrq triggered crash
[  350.517769] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.12.41-v8-lockdep #518
[  350.517773] Tainted: [W]=WARN
[  350.517774] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[  350.813441] Call trace:
[  350.815900]  dump_backtrace+0xa0/0x100
[  350.819671]  show_stack+0x20/0x38
[  350.823004]  dump_stack_lvl+0x38/0xd0
[  350.826688]  dump_stack+0x18/0x28
[  350.830023]  panic+0x3c8/0x430
[  350.833096]  sysrq_handle_crash+0x40/0x90
[  350.837130]  __handle_sysrq+0xf0/0x2e0
[  350.840901]  sysrq_filter+0xcc/0x518
[  350.844498]  input_handle_events_filter+0x58/0xc0
[  350.849228]  input_pass_values+0x1e4/0x2c8
[  350.853348]  input_handle_event+0x450/0x558
[  350.857554]  input_event+0x68/0x98
[  350.860976]  hidinput_report_event+0x4c/0x78
[  350.865271]  hid_report_raw_event+0xb4/0x3e0
[  350.869564]  hid_input_report+0x138/0x1a0
[  350.873595]  hid_irq_in+0x180/0x308
[  350.877105]  __usb_hcd_giveback_urb+0x98/0x160
[  350.881575]  usb_giveback_urb_bh+0xb0/0x150
[  350.885782]  process_one_work+0x214/0x640
[  350.889815]  bh_worker+0x1b0/0x218
[  350.893238]  workqueue_softirq_action+0x80/0x98
[  350.897793]  tasklet_hi_action+0x20/0x60
[  350.901737]  handle_softirqs+0x154/0x528
[  350.905681]  __do_softirq+0x1c/0x28
[  350.909188]  ____do_softirq+0x18/0x30
[  350.912871]  call_on_irq_stack+0x30/0x70
[  350.916815]  do_softirq_own_stack+0x24/0x38
[  350.921023]  __irq_exit_rcu+0x100/0x1a0
[  350.924880]  irq_exit_rcu+0x18/0x58
[  350.928388]  el1_interrupt+0x38/0x70
[  350.931985]  el1h_64_irq_handler+0x18/0x28
[  350.936105]  el1h_64_irq+0x64/0x68
[  350.939529]  default_idle_call+0xa8/0x1f8
[  350.943561]  do_idle+0x22c/0x298
[  350.946807]  cpu_startup_entry+0x3c/0x50
[  350.950751]  rest_init+0x100/0x198
[  350.954170]  start_kernel+0x75c/0x900
[  350.957855]  __primary_switched+0x80/0x90
[  350.961888] SMP: stopping secondary CPUs
[  352.035165] SMP: failed to stop secondary CPUs 1
[  352.039823] Kernel Offset: 0x100c400000 from 0xffffffc080000000
[  352.045770] PHYS_OFFSET: 0x0
[  352.048666] CPU features: 0x10,00000017,00280928,0200720b
[  352.054093] Memory Limit: none
[  352.057167] ---[ end Kernel panic - not syncing: sysrq triggered crash ]---

[-- Attachment #3: netconsole-rpi5-6.17-eth0.log --]
[-- Type: text/x-log, Size: 17135 bytes --]

[   58.750302] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) show-all-locks(d) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(v) show-blocked-tasks(w) dump-ftrace-buffer(z) replay-kernel-logs(R) 
[   58.750681] ------------[ cut here ]------------
[   58.750690] netpoll_send_skb_on_dev(): eth0 enabled interrupts in poll (macb_start_xmit+0x0/0xd30)
[   58.750730] WARNING: CPU: 0 PID: 0 at net/core/netpoll.c:359 netpoll_send_skb+0x46c/0x4b0
[   58.816326] Modules linked in: netconsole quota_v2 quota_tree rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device algif_hash algif_skcipher af_alg bnep snd_soc_pcm512x_i2c snd_soc_pcm512x spidev regmap_i2c binfmt_misc hci_uart aes_ce_blk btbcm bluetooth ecdh_generic ecc aes_ce_cipher ghash_ce brcmfmac_cyw gf128mul snd_soc_hifiberry_dacplus sg raspberrypi_hwmon brcmfmac brcmutil i2c_brcmstb cfg80211 vc4 rfkill spi_bcm2835 rpi_hevc_dec snd_soc_hdmi_codec gpio_keys drm_exec drm_display_helper clk_hifiberry_dacpro cec pisp_be v4l2_mem2mem v3d videobuf2_dma_contig drm_dma_helper gpu_sched drm_shmem_helper drm_client_lib rp1_pci videobuf2_memops videobuf2_v4l2 videodev designware_i2s drm_kms_helper videobuf2_common mc snd_soc_core snd_compress i2c_designware_platform rp1_pio snd_pcm_dmaengine rp1_fw i2c_designware_core snd_pcm rp1_mailbox raspberrypi_gpiomem snd_timer rp1_adc snd nvmem_rmem uio_pdrv_genirq uio i2c_dev ledtrig_pattern drm fuse drm_panel_orientation_quirks backlight dm_mod nfsd auth_rpcgss ip_tables
[   58.816415]  x_tables ipv6
[   58.909197] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.17.0-rc2-v8-lockdep #532 PREEMPTLAZY 
[   58.918365] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[   58.924216] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   58.931202] pc : netpoll_send_skb+0x46c/0x4b0
[   58.935571] lr : netpoll_send_skb+0x46c/0x4b0
[   58.939939] sp : ffffffc080003690
[   58.943258] x29: ffffffc080003690 x28: 0000000000000000 x27: ffffff8101151800
[   58.950421] x26: ffffff8137fb6268 x25: 0000000000000080 x24: ffffff8137fb6200
[   58.957583] x23: ffffff8102d58000 x22: 00000000000000c0 x21: ffffff8104f7e100
[   58.964745] x20: ffffffd08de9c3c8 x19: ffffff8137f2d148 x18: 00000000ffffffff
[   58.971907] x17: ffffffb1714fe000 x16: ffffffd08d124020 x15: 00000000fffffffd
[   58.979069] x14: 0000000000000001 x13: 000000000002a000 x12: 0000000000008000
[   58.986231] x11: fffffffffffe0000 x10: ffffffd08e78f000 x9 : ffffffd08c5596f0
[   58.993393] x8 : ffffffffffffffff x7 : ffffffd08de07ef8 x6 : 0000000000000001
[   59.000555] x5 : ffffffd08de07000 x4 : 0000000000000001 x3 : 0000000000000001
[   59.007717] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffffffd08de0dd40
[   59.014879] Call trace:
[   59.017326]  netpoll_send_skb+0x46c/0x4b0 (P)
[   59.021695]  netpoll_send_udp+0x2ac/0x418
[   59.025715]  write_msg+0x124/0x1b0 [netconsole]
[   59.030262]  console_flush_all+0x2e4/0x4a8
[   59.034371]  console_unlock+0x84/0x188
[   59.038128]  vprintk_emit+0x24c/0x450
[   59.041798]  vprintk_default+0x40/0x58
[   59.045555]  vprintk+0x3c/0x80
[   59.048615]  _printk+0x64/0x98
[   59.051674]  __handle_sysrq+0x1ec/0x308
[   59.055519]  sysrq_filter+0xcc/0x518
[   59.059101]  input_handle_events_filter+0x58/0xc0
[   59.063818]  input_pass_values+0x1fc/0x2e8
[   59.067924]  input_handle_event+0x450/0x558
[   59.072118]  input_event+0x6c/0xb8
[   59.075525]  hidinput_report_event+0x4c/0x78
[   59.079806]  hid_report_raw_event+0xb4/0x418
[   59.084086]  hid_input_report+0x138/0x1a0
[   59.088104]  hid_irq_in+0x180/0x308
[   59.091600]  __usb_hcd_giveback_urb+0x98/0x160
[   59.096055]  usb_giveback_urb_bh+0xb0/0x150
[   59.100248]  process_one_work+0x20c/0x5e8
[   59.104269]  bh_worker+0x1b0/0x218
[   59.107677]  workqueue_softirq_action+0x80/0x98
[   59.112220]  tasklet_hi_action+0x20/0x60
[   59.116153]  handle_softirqs+0x144/0x528
[   59.120085]  __do_softirq+0x1c/0x28
[   59.123581]  ____do_softirq+0x18/0x30
[   59.127250]  call_on_irq_stack+0x30/0x70
[   59.131181]  do_softirq_own_stack+0x24/0x38
[   59.135374]  __irq_exit_rcu+0x100/0x1f8
[   59.139219]  irq_exit_rcu+0x18/0x58
[   59.142714]  el1_interrupt+0x38/0x68
[   59.146297]  el1h_64_irq_handler+0x18/0x28
[   59.150402]  el1h_64_irq+0x6c/0x70
[   59.153809]  default_idle_call+0x84/0x140 (P)
[   59.158177]  do_idle+0x22c/0x298
[   59.161412]  cpu_startup_entry+0x40/0x50
[   59.165344]  rest_init+0x108/0x1a0
[   59.168752]  start_kernel+0x760/0x8c8
[   59.172424]  __primary_switched+0x88/0x98
[   59.176444] irq event stamp: 279989
[   59.179938] hardirqs last  enabled at (279988): [<ffffffd08d350b64>] el1_interrupt+0x54/0x68
[   59.188408] hardirqs last disabled at (279989): [<ffffffd08d34fc94>] el1_brk64+0x1c/0x50
[   59.196530] softirqs last  enabled at (279934): [<ffffffd08c4c2900>] handle_softirqs+0x508/0x528
[   59.205349] softirqs last disabled at (279959): [<ffffffd08c4103ac>] __do_softirq+0x1c/0x28
[   59.213731] ---[ end trace 0000000000000000 ]---
[   59.218386] ------------[ cut here ]------------
[   59.218388] WARNING: CPU: 0 PID: 0 at mm/slub.c:735 get_freelist+0x160/0x1d8
[   59.230093] Modules linked in: netconsole quota_v2 quota_tree rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device algif_hash algif_skcipher af_alg bnep snd_soc_pcm512x_i2c snd_soc_pcm512x spidev regmap_i2c binfmt_misc hci_uart aes_ce_blk btbcm bluetooth ecdh_generic ecc aes_ce_cipher ghash_ce brcmfmac_cyw gf128mul snd_soc_hifiberry_dacplus sg raspberrypi_hwmon brcmfmac brcmutil i2c_brcmstb cfg80211 vc4 rfkill spi_bcm2835 rpi_hevc_dec snd_soc_hdmi_codec gpio_keys drm_exec drm_display_helper clk_hifiberry_dacpro cec pisp_be v4l2_mem2mem v3d videobuf2_dma_contig drm_dma_helper gpu_sched drm_shmem_helper drm_client_lib rp1_pci videobuf2_memops videobuf2_v4l2 videodev designware_i2s drm_kms_helper videobuf2_common mc snd_soc_core snd_compress i2c_designware_platform rp1_pio snd_pcm_dmaengine rp1_fw i2c_designware_core snd_pcm rp1_mailbox raspberrypi_gpiomem snd_timer rp1_adc snd nvmem_rmem uio_pdrv_genirq uio i2c_dev ledtrig_pattern drm fuse drm_panel_orientation_quirks backlight dm_mod nfsd auth_rpcgss ip_tables
[   59.230172]  x_tables ipv6
[   59.322954] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W           6.17.0-rc2-v8-lockdep #532 PREEMPTLAZY 
[   59.333694] Tainted: [W]=WARN
[   59.336664] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[   59.342514] pstate: a04000c9 (NzCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   59.349500] pc : get_freelist+0x160/0x1d8
[   59.353519] lr : get_freelist+0x1c0/0x1d8
[   59.357538] sp : ffffffc080003470
[   59.360857] x29: ffffffc080003470 x28: 0000000000000001 x27: ffffffd08de07000
[   59.368019] x26: ffffffd08d9ef508 x25: ffffff8100a3c240 x24: ffffffd08de0dd40
[   59.375181] x23: fffffffec413dfa0 x22: 0000000080100010 x21: fffffffec413df80
[   59.382343] x20: ffffff8104f7ef00 x19: 000000008010000e x18: 00000000ffffffff
[   59.389504] x17: ffffffb1714fe000 x16: ffffffd08d124020 x15: 0000000000000006
[   59.396666] x14: 0000000000000000 x13: 00000000000c2000 x12: 0000000000000000
[   59.403828] x11: 656820747563205b x10: ffffffd08e760810 x9 : ffffffd08e079000
[   59.410990] x8 : ffffffd08de0dd40 x7 : 00000000eb9a37bf x6 : 0000000000000190
[   59.418152] x5 : 00000000000000c8 x4 : 0000000000040000 x3 : 0000000000000001
[   59.425314] x2 : ffffffb1714fe000 x1 : ffffffd08de0dd40 x0 : 0000000000000107
[   59.432476] Call trace:
[   59.434923]  get_freelist+0x160/0x1d8 (P)
[   59.438942]  ___slab_alloc+0xf8/0x1178
[   59.442699]  __slab_alloc.constprop.0+0x6c/0xc8
[   59.447242]  kmem_cache_alloc_node_noprof+0x2c4/0x328
[   59.452309]  __alloc_skb+0x154/0x188
[   59.455893]  netpoll_send_udp+0xac/0x418
[   59.459826]  write_msg+0x124/0x1b0 [netconsole]
[   59.464370]  console_flush_all+0x2e4/0x4a8
[   59.468476]  console_unlock+0x84/0x188
[   59.472233]  vprintk_emit+0x24c/0x450
[   59.475903]  vprintk_default+0x40/0x58
[   59.479661]  vprintk+0x3c/0x80
[   59.482719]  _printk+0x64/0x98
[   59.485778]  __handle_sysrq+0x1ec/0x308
[   59.489622]  sysrq_filter+0xcc/0x518
[   59.493204]  input_handle_events_filter+0x58/0xc0
[   59.497921]  input_pass_values+0x1fc/0x2e8
[   59.502027]  input_handle_event+0x450/0x558
[   59.506220]  input_event+0x6c/0xb8
[   59.509627]  hidinput_report_event+0x4c/0x78
[   59.513907]  hid_report_raw_event+0xb4/0x418
[   59.518188]  hid_input_report+0x138/0x1a0
[   59.522206]  hid_irq_in+0x180/0x308
[   59.525700]  __usb_hcd_giveback_urb+0x98/0x160
[   59.530155]  usb_giveback_urb_bh+0xb0/0x150
[   59.534348]  process_one_work+0x20c/0x5e8
[   59.538368]  bh_worker+0x1b0/0x218
[   59.541776]  workqueue_softirq_action+0x80/0x98
[   59.546319]  tasklet_hi_action+0x20/0x60
[   59.550251]  handle_softirqs+0x144/0x528
[   59.554183]  __do_softirq+0x1c/0x28
[   59.557677]  ____do_softirq+0x18/0x30
[   59.561347]  call_on_irq_stack+0x30/0x70
[   59.565278]  do_softirq_own_stack+0x24/0x38
[   59.569471]  __irq_exit_rcu+0x100/0x1f8
[   59.573316]  irq_exit_rcu+0x18/0x58
[   59.576811]  el1_interrupt+0x38/0x68
[   59.580393]  el1h_64_irq_handler+0x18/0x28
[   59.584498]  el1h_64_irq+0x6c/0x70
[   59.587905]  default_idle_call+0x84/0x140 (P)
[   59.592273]  do_idle+0x22c/0x298
[   59.595507]  cpu_startup_entry+0x40/0x50
[   59.599438]  rest_init+0x108/0x1a0
[   59.602846]  start_kernel+0x760/0x8c8
[   59.606517]  __primary_switched+0x88/0x98
[   59.610536] irq event stamp: 279993
[   59.614030] hardirqs last  enabled at (279992): [<ffffffd08d350b64>] el1_interrupt+0x54/0x68
[   59.622499] hardirqs last disabled at (279993): [<ffffffd08d34fc94>] el1_brk64+0x1c/0x50
[   59.630620] softirqs last  enabled at (279934): [<ffffffd08c4c2900>] handle_softirqs+0x508/0x528
[   59.639440] softirqs last disabled at (279959): [<ffffffd08c4103ac>] __do_softirq+0x1c/0x28
[   59.647822] ---[ end trace 0000000000000000 ]---
[   59.652452] 
[   59.653938] ================================
[   59.658217] WARNING: inconsistent lock state
[   59.662496] 6.17.0-rc2-v8-lockdep #532 Tainted: G        W          
[   59.668869] --------------------------------
[   59.673148] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
[   59.679172] swapper/0/0 [HC0[0]:SC1[1]:HE0:SE0] takes:
[   59.684325] ffffff81fef08f80 (&c->lock){?.-.}-{3:3}, at: ___slab_alloc+0x7c/0x1178
[   59.691926] {IN-HARDIRQ-W} state was registered at:
[   59.696815]   lock_acquire+0x1d4/0x368
[   59.700573]   put_cpu_partial+0x88/0x258
[   59.704504]   __slab_free+0x250/0x420
[   59.708173]   kmem_cache_free+0x288/0x3e8
[   59.712192]   mempool_free_slab+0x24/0x38
[   59.716211]   mempool_free+0x4c/0x120
[   59.719881]   bio_free+0x70/0x90
[   59.723114]   bio_put+0x120/0x278
[   59.726433]   end_bio_bh_io_sync+0x44/0x88
[   59.730538]   bio_endio+0x19c/0x280
[   59.734032]   blk_mq_end_request_batch+0x250/0x4c0
[   59.738837]   nvme_pci_complete_batch+0xdc/0x138
[   59.743467]   nvme_irq+0x7c/0x90
[   59.746700]   __handle_irq_event_percpu+0x94/0x318
[   59.751503]   handle_irq_event+0x54/0xb8
[   59.755433]   handle_fasteoi_irq+0x12c/0x270
[   59.759714]   handle_irq_desc+0x48/0x68
[   59.763557]   generic_handle_domain_irq+0x24/0x38
[   59.768274]   gic_handle_irq+0x48/0xd8
[   59.772031]   call_on_irq_stack+0x30/0x70
[   59.776051]   do_interrupt_handler+0xdc/0xe8
[   59.780333]   el1_interrupt+0x34/0x68
[   59.784002]   el1h_64_irq_handler+0x18/0x28
[   59.788195]   el1h_64_irq+0x6c/0x70
[   59.791690]   default_idle_call+0x84/0x140
[   59.795796]   do_idle+0x22c/0x298
[   59.799119]   cpu_startup_entry+0x3c/0x50
[   59.803139]   secondary_start_kernel+0x12c/0x158
[   59.807772]   __secondary_switched+0xc0/0xc8
[   59.812054] irq event stamp: 279993
[   59.815548] hardirqs last  enabled at (279992): [<ffffffd08d350b64>] el1_interrupt+0x54/0x68
[   59.824018] hardirqs last disabled at (279993): [<ffffffd08d34fc94>] el1_brk64+0x1c/0x50
[   59.832141] softirqs last  enabled at (279934): [<ffffffd08c4c2900>] handle_softirqs+0x508/0x528
[   59.840963] softirqs last disabled at (279959): [<ffffffd08c4103ac>] __do_softirq+0x1c/0x28
[   59.849345] 
[   59.849345] other info that might help us debug this:
[   59.855894]  Possible unsafe locking scenario:
[   59.855894] 
[   59.861831]        CPU0
[   59.864278]        ----
[   59.866724]   lock(&c->lock);
[   59.869696]   <Interrupt>
[   59.872317]     lock(&c->lock);
[   59.875464] 
[   59.875464]  *** DEADLOCK ***
[   59.875464] 
[   59.881402] 11 locks held by swapper/0/0:
[   59.885420]  #0: ffffff8100049948 ((wq_completion)events_bh_highpri){+.-.}-{0:0}, at: process_one_work+0x190/0x5e8
[   59.895818]  #1: ffffffc080003e60 ((work_completion)(&bh->bh)){+.-.}-{0:0}, at: process_one_work+0x1b8/0x5e8
[   59.905691]  #2: ffffff81034d3a30 (&dev->event_lock){+.-.}-{3:3}, at: input_event+0x50/0xb8
[   59.914080]  #3: ffffffd08de9c3c8 (rcu_read_lock){....}-{1:3}, at: input_pass_values+0x38/0x2e8
[   59.922818]  #4: ffffffd08de9c3c8 (rcu_read_lock){....}-{1:3}, at: __handle_sysrq+0x8/0x308
[   59.931206]  #5: ffffffd08de2a8e8 (console_lock){+.+.}-{0:0}, at: vprintk_default+0x40/0x58
[   59.939596]  #6: ffffffd08de2a940 (console_srcu){....}-{0:0}, at: console_flush_all+0x88/0x4a8
[   59.948247]  #7: ffffffd08de2ab00 (console_owner){+.-.}-{0:0}, at: console_lock_spinning_enable+0x50/0x90
[   59.957858]  #8: ffffffd08de2ab28 (printk_legacy_map-wait-type-override){+...}-{4:4}, at: console_flush_all+0x2a0/0x4a8
[   59.968691]  #9: ffffffd02c28e298 (target_list_lock){+.-.}-{3:3}, at: write_msg+0x60/0x1b0 [netconsole]
[   59.978128]  #10: ffffff81fef08f80 (&c->lock){?.-.}-{3:3}, at: ___slab_alloc+0x7c/0x1178
[   59.986256] 
[   59.986256] stack backtrace:
[   59.990624] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W           6.17.0-rc2-v8-lockdep #532 PREEMPTLAZY 
[   60.001364] Tainted: [W]=WARN
[   60.004334] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[   60.010185] Call trace:
[   60.012631]  show_stack+0x20/0x38 (C)
[   60.016302]  dump_stack_lvl+0x90/0xd0
[   60.019974]  dump_stack+0x18/0x28
[   60.023297]  print_usage_bug.part.0+0x29c/0x368
[   60.027841]  mark_lock+0x724/0x928
[   60.031251]  mark_held_locks+0x54/0x90
[   60.035010]  lockdep_hardirqs_on_prepare+0x108/0x228
[   60.039992]  arm64_exit_el1_dbg.isra.0+0x30/0x58
[   60.044624]  el1_brk64+0x40/0x50
[   60.047859]  el1h_64_sync_handler+0x68/0xb0
[   60.052053]  el1h_64_sync+0x6c/0x70
[   60.055548]  get_freelist+0x164/0x1d8 (P)
[   60.059569]  ___slab_alloc+0xf8/0x1178
[   60.063328]  __slab_alloc.constprop.0+0x6c/0xc8
[   60.067873]  kmem_cache_alloc_node_noprof+0x2c4/0x328
[   60.072941]  __alloc_skb+0x154/0x188
[   60.076526]  netpoll_send_udp+0xac/0x418
[   60.080460]  write_msg+0x124/0x1b0 [netconsole]
[   60.085004]  console_flush_all+0x2e4/0x4a8
[   60.089112]  console_unlock+0x84/0x188
[   60.092871]  vprintk_emit+0x24c/0x450
[   60.096543]  vprintk_default+0x40/0x58
[   60.100301]  vprintk+0x3c/0x80
[   60.103362]  _printk+0x64/0x98
[   60.106422]  __handle_sysrq+0x1ec/0x308
[   60.110267]  sysrq_filter+0xcc/0x518
[   60.113850]  input_handle_events_filter+0x58/0xc0
[   60.118567]  input_pass_values+0x1fc/0x2e8
[   60.122674]  input_handle_event+0x450/0x558
[   60.126868]  input_event+0x6c/0xb8
[   60.130277]  hidinput_report_event+0x4c/0x78
[   60.134558]  hid_report_raw_event+0xb4/0x418
[   60.138838]  hid_input_report+0x138/0x1a0
[   60.142857]  hid_irq_in+0x180/0x308
[   60.146354]  __usb_hcd_giveback_urb+0x98/0x160
[   60.150810]  usb_giveback_urb_bh+0xb0/0x150
[   60.155004]  process_one_work+0x20c/0x5e8
[   60.159024]  bh_worker+0x1b0/0x218
[   60.162434]  workqueue_softirq_action+0x80/0x98
[   60.166979]  tasklet_hi_action+0x20/0x60
[   60.170913]  handle_softirqs+0x144/0x528
[   60.174846]  __do_softirq+0x1c/0x28
[   60.178342]  ____do_softirq+0x18/0x30
[   60.182012]  call_on_irq_stack+0x30/0x70
[   60.185944]  do_softirq_own_stack+0x24/0x38
[   60.190139]  __irq_exit_rcu+0x100/0x1f8
[   60.193985]  irq_exit_rcu+0x18/0x58
[   60.197482]  el1_interrupt+0x38/0x68
[   60.201064]  el1h_64_irq_handler+0x18/0x28
[   60.205171]  el1h_64_irq+0x6c/0x70
[   60.208579]  default_idle_call+0x84/0x140 (P)
[   60.212947]  do_idle+0x22c/0x298
[   60.216183]  cpu_startup_entry+0x40/0x50
[   60.220117]  rest_init+0x108/0x1a0
[   60.223526]  start_kernel+0x760/0x8c8
[   60.227198]  __primary_switched+0x88/0x98
[   68.638857] sysrq: Trigger a crash
[   68.638885] Kernel panic - not syncing: sysrq triggered crash
[   68.648062] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W           6.17.0-rc2-v8-lockdep #532 PREEMPTLAZY 
[   68.658803] Tainted: [W]=WARN
[   68.661774] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[   68.667626] Call trace:
[   68.670073]  show_stack+0x20/0x38 (C)
[   68.673749]  dump_stack_lvl+0x38/0xd0
[   68.677423]  dump_stack+0x18/0x28
[   68.680745]  vpanic+0x340/0x398
[   68.683893]  panic+0x64/0x70

[-- Attachment #4: netconsole-rpi5-6.17-eth0+patch-and+revert.log --]
[-- Type: text/x-log, Size: 3698 bytes --]


Note: applied "net: macb: Fix tx_ptr_lock locking"
[   40.676566] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) show-all-locks(d) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(v) show-blocked-tasks(w) dump-ftrace-buffer(z) replay-kernel-logs(R) 
[   47.612947] sysrq: Trigger a crash
[   47.612967] Kernel panic - not syncing: sysrq triggered crash
[   47.622140] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W           6.17.0-rc3-v8-lockdep #540 PREEMPTLAZY 
[   47.632879] Tainted: [W]=WARN
[   47.635849] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[   47.641700] Call trace:
[   47.644147]  show_stack+0x20/0x38 (C)

Note: add revert of "net: cadence: macb: Implement BQL"
[   47.108822] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) show-all-locks(d) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(v) show-blocked-tasks(w) dump-ftrace-buffer(z) replay-kernel-logs(R) 
[   50.132998] sysrq: Trigger a crash
[   50.142195] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G        W           6.17.0-rc3-v8-lockdep #541 PREEMPTLAZY 
[   50.152935] Tainted: [W]=WARN
[   50.155904] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[   50.161755] Call trace:
[   50.164201]  show_stack+0x20/0x38 (C)
[   50.167872]  dump_stack_lvl+0x38/0xd0
[   50.171544]  dump_stack+0x18/0x28
[   50.174865]  vpanic+0x340/0x398
[   50.178012]  panic+0x64/0x70
[   50.180895]  sysrq_handle_crash+0x50/0xa8
[   50.184915]  __handle_sysrq+0xe4/0x308
[   50.188672]  sysrq_filter+0xcc/0x518
[   50.192254]  input_handle_events_filter+0x58/0xc0
[   50.196971]  input_pass_values+0x1fc/0x2e8
[   50.201078]  input_handle_event+0x450/0x558
[   50.205271]  input_event+0x6c/0xb8
[   50.208678]  hidinput_report_event+0x4c/0x78
[   50.212959]  hid_report_raw_event+0xb4/0x418
[   50.217240]  hid_input_report+0x138/0x1a0
[   50.133022] Kernel panic - not syncing: sysrq triggered crash
[   50.221258]  hid_irq_in+0x180/0x308
[   50.224753]  __usb_hcd_giveback_urb+0x98/0x160
[   50.229210]  usb_giveback_urb_bh+0xb0/0x150
[   50.233403]  process_one_work+0x20c/0x5e8
[   50.237422]  bh_worker+0x1b0/0x218
[   50.240830]  workqueue_softirq_action+0x80/0x98
[   50.245374]  tasklet_hi_action+0x20/0x60
[   50.249307]  handle_softirqs+0x144/0x528
[   50.253239]  __do_softirq+0x1c/0x28
[   50.256734]  ____do_softirq+0x18/0x30
[   50.260404]  call_on_irq_stack+0x30/0x70
[   50.264335]  do_softirq_own_stack+0x24/0x38
[   50.268529]  __irq_exit_rcu+0x100/0x1f8
[   50.272374]  irq_exit_rcu+0x18/0x58
[   50.275869]  el1_interrupt+0x38/0x68
[   50.279452]  el1h_64_irq_handler+0x18/0x28
[   50.283557]  el1h_64_irq+0x6c/0x70
[   50.286964]  default_idle_call+0x84/0x140 (P)
[   50.291332]  do_idle+0x22c/0x298
[   50.294567]  cpu_startup_entry+0x40/0x50
[   50.298499]  rest_init+0x108/0x1a0
[   50.301907]  start_kernel+0x760/0x8c8
[   50.305577]  __primary_switched+0x88/0x98
[   50.309598] SMP: stopping secondary CPUs
[   51.358529] SMP: failed to stop secondary CPUs 2
[   51.363720] Kernel Offset: 0x100c400000 from 0xffffffc080000000
[   51.369669] PHYS_OFFSET: 0x0
[   51.372558] CPU features: 0x40000,0000b800,12023140,0400720b
[   51.378241] Memory Limit: none
[   51.381310] ---[ end Kernel panic - not syncing: sysrq triggered crash ]---

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: netpoll: raspberrypi [4 5] driver locking woes
  2025-08-28 17:26       ` Mike Galbraith
@ 2025-08-28 18:56         ` Sean Anderson
  2025-08-29  2:55           ` Mike Galbraith
  0 siblings, 1 reply; 4+ messages in thread
From: Sean Anderson @ 2025-08-28 18:56 UTC (permalink / raw)
  To: Mike Galbraith, Robert Hancock; +Cc: Breno Leitao, netdev@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 2058 bytes --]

Hi Mike,

On 8/28/25 13:26, Mike Galbraith wrote:
> On Thu, 2025-08-28 at 10:57 -0400, Sean Anderson wrote:
>> Hi Mike,
>> 
>> On 8/27/25 12:02, Mike Galbraith wrote:
>> > Unexpected addendum to done deal datapoint, so off list.
>> > 
>> > On Tue, 2025-08-26 at 11:49 +0200, Mike Galbraith wrote:
>> > > 
>> > > The pi5 gripe fix is equally trivial, but submitting that is pointless
>> > > given there's something else amiss in fingered commit.  This is all of
>> > > the crash info that escapes the box w/wo gripes silenced.
>> > > 
>> > > [   51.688868] sysrq: Trigger a crash
>> > > [   51.688892] Kernel panic - not syncing: sysrq triggered crash
>> > > [   51.698066] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.17.0-rc2-v8-lockdep #533 PREEMPTLAZY
>> > > [   51.707234] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
>> > > [   51.713085] Call trace:
>> > > [   51.715532]  show_stack+0x20/0x38 (C)
>> > > [   51.719206]  dump_stack_lvl+0x38/0xd0
>> > > [   51.722878]  dump_stack+0x18/0x28
>> > > 
>> > > That aspect is a punt and run atm (time.. and dash of laziness:).
>> > 
>> > Plan was to end datapoint thread, but after booting pi5's 6.12 kernel,
>> > for some reason I fired up netconsole.. and box promptly exhibited the
>> > netpoll locking bug warning, indicating presence of 138badbc21a0. 
>> > Instead of saying to self "nope, just walk away", I poked SysRq-C.. and
>> > the bloody damn monitoring box received a 100% complete death rattle. 
>> > Well bugger.
>> 
>> Did you get a backtrace for this?
> 
> Yes, logs for 6.12.41 and 6.17.0-rc2 attached.
> 
> Since a patch has meanwhile landed, also a log of patched 6.17.0-rc3
> now gripe free (yay) but with aforementioned broken output, followed by
> addition of the e6a532185daa revert to confirm it still cures that.
> 
>> And to be clear, the steps to reproduce this are to boot a kernel with
>> lockdep enabled with netconsole on macb and then hit sysrq?
> 
> Yup.

Looks like the tx completion path can also be called from netpoll. Can
you try the attached patch?

--Sean

[-- Attachment #2: 0001-net-macb-Fix-tx_ptr_lock-locking.patch --]
[-- Type: text/x-patch, Size: 4585 bytes --]

From 3fe439760955370b9f005ef2728b5fc9b14eeea5 Mon Sep 17 00:00:00 2001
From: Sean Anderson <sean.anderson@linux.dev>
Date: Thu, 28 Aug 2025 11:55:01 -0400
Subject: [PATCH net v2] net: macb: Fix tx_ptr_lock locking

macb_start_xmit can be called with bottom-halves disabled (e.g.
transmitting from softirqs) as well as with interrupts disabled (with
netpoll). Because of this, all other functions taking tx_ptr_lock must
disable IRQs, and macb_start_xmit must only re-enable IRQs if they
were already enabled.

Fixes: 138badbc21a0 ("net: macb: use NAPI for TX completion path")
Reported-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
---

Changes in v2:
- Use irqsave/restore for all accesses, since they can also also be
  called from netpoll.

 drivers/net/ethernet/cadence/macb_main.c | 28 ++++++++++++++----------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index 16d28a8b3b56..c769b7dbd3ba 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -1223,12 +1223,13 @@ static int macb_tx_complete(struct macb_queue *queue, int budget)
 {
 	struct macb *bp = queue->bp;
 	u16 queue_index = queue - bp->queues;
+	unsigned long flags;
 	unsigned int tail;
 	unsigned int head;
 	int packets = 0;
 	u32 bytes = 0;
 
-	spin_lock(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 	head = queue->tx_head;
 	for (tail = queue->tx_tail; tail != head && packets < budget; tail++) {
 		struct macb_tx_skb	*tx_skb;
@@ -1291,7 +1292,7 @@ static int macb_tx_complete(struct macb_queue *queue, int budget)
 	    CIRC_CNT(queue->tx_head, queue->tx_tail,
 		     bp->tx_ring_size) <= MACB_TX_WAKEUP_THRESH(bp))
 		netif_wake_subqueue(bp->dev, queue_index);
-	spin_unlock(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 
 	return packets;
 }
@@ -1707,8 +1708,9 @@ static void macb_tx_restart(struct macb_queue *queue)
 {
 	struct macb *bp = queue->bp;
 	unsigned int head_idx, tbqp;
+	unsigned long flags;
 
-	spin_lock(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 
 	if (queue->tx_head == queue->tx_tail)
 		goto out_tx_ptr_unlock;
@@ -1720,19 +1722,20 @@ static void macb_tx_restart(struct macb_queue *queue)
 	if (tbqp == head_idx)
 		goto out_tx_ptr_unlock;
 
-	spin_lock_irq(&bp->lock);
+	spin_lock(&bp->lock);
 	macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
-	spin_unlock_irq(&bp->lock);
+	spin_unlock(&bp->lock);
 
 out_tx_ptr_unlock:
-	spin_unlock(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 }
 
 static bool macb_tx_complete_pending(struct macb_queue *queue)
 {
 	bool retval = false;
+	unsigned long flags;
 
-	spin_lock(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 	if (queue->tx_head != queue->tx_tail) {
 		/* Make hw descriptor updates visible to CPU */
 		rmb();
@@ -1740,7 +1743,7 @@ static bool macb_tx_complete_pending(struct macb_queue *queue)
 		if (macb_tx_desc(queue, queue->tx_tail)->ctrl & MACB_BIT(TX_USED))
 			retval = true;
 	}
-	spin_unlock(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 	return retval;
 }
 
@@ -2308,6 +2311,7 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	struct macb_queue *queue = &bp->queues[queue_index];
 	unsigned int desc_cnt, nr_frags, frag_size, f;
 	unsigned int hdrlen;
+	unsigned long flags;
 	bool is_lso;
 	netdev_tx_t ret = NETDEV_TX_OK;
 
@@ -2368,7 +2372,7 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		desc_cnt += DIV_ROUND_UP(frag_size, bp->max_tx_length);
 	}
 
-	spin_lock_bh(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 
 	/* This is a hard error, log it. */
 	if (CIRC_SPACE(queue->tx_head, queue->tx_tail,
@@ -2392,15 +2396,15 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	netdev_tx_sent_queue(netdev_get_tx_queue(bp->dev, queue_index),
 			     skb->len);
 
-	spin_lock_irq(&bp->lock);
+	spin_lock(&bp->lock);
 	macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
-	spin_unlock_irq(&bp->lock);
+	spin_unlock(&bp->lock);
 
 	if (CIRC_SPACE(queue->tx_head, queue->tx_tail, bp->tx_ring_size) < 1)
 		netif_stop_subqueue(dev, queue_index);
 
 unlock:
-	spin_unlock_bh(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 
 	return ret;
 }
-- 
2.35.1.1320.gc452695387.dirty


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: netpoll: raspberrypi [4 5] driver locking woes
  2025-08-28 18:56         ` Sean Anderson
@ 2025-08-29  2:55           ` Mike Galbraith
  0 siblings, 0 replies; 4+ messages in thread
From: Mike Galbraith @ 2025-08-29  2:55 UTC (permalink / raw)
  To: Sean Anderson, Robert Hancock; +Cc: Breno Leitao, netdev@vger.kernel.org

On Thu, 2025-08-28 at 14:56 -0400, Sean Anderson wrote:
> 
> Looks like the tx completion path can also be called from netpoll. Can
> you try the attached patch?

Done, zero netpoll or lockdep complaints.

	-Mike

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-08-29  2:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <4698029bbe7d7a33edd905a027e3a183ac51ad8a.camel@gmx.de>
     [not found] ` <e32a52852025d522f44d9d6ccc88c716ff432f8f.camel@gmx.de>
     [not found]   ` <f4fa3fcc637ffb6531982a90dbd9c27114e93036.camel@gmx.de>
2025-08-28 14:57     ` netpoll: raspberrypi [4 5] driver locking woes Sean Anderson
2025-08-28 17:26       ` Mike Galbraith
2025-08-28 18:56         ` Sean Anderson
2025-08-29  2:55           ` Mike Galbraith

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).