netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
@ 2024-10-03 14:51 Breno Leitao
  2024-10-03 15:06 ` Breno Leitao
  2024-10-03 15:32 ` Peter Zijlstra
  0 siblings, 2 replies; 9+ messages in thread
From: Breno Leitao @ 2024-10-03 14:51 UTC (permalink / raw)
  To: peterz, gregkh, pmladek, mst, jasowang, xuanzhuo, kuba
  Cc: virtualization, netdev, linux-kernel, vschneid, axboe

Upstream kernel (6.12-rc1) has a new lockdep splat, that I am sharing to
get more visibility:

	WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected

This is happening because the HARDIRQ-irq-unsafe "_xmit_ETHER#2" lock is
acquired in virtnet_poll_tx() while holding the HARDIRQ-irq-safe, and
lockdep doesn't like it much.

I've bisected the problem, and weirdly enough, this problem started to
show up after a unrelated(?) change in the scheduler:

	52e11f6df293e816a ("sched/fair: Implement delayed dequeue")

At this time, I have the impression that the commit above exposed the
problem that was there already.

Here is the full log, based on commit 7ec462100ef91 ("Merge tag
'pull-work.unaligned' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs")

	=====================================================
	WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
	6.12.0-rc1-kbuilder-00046-g7ec462100ef9-dirty #19 Not tainted
	-----------------------------------------------------
	swapper/0/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
	ffff88810497c318 (_xmit_ETHER#2){+.-.}-{3:3}, at: virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 

	and this task is already holding:
	ffffffff82a83a88 (console_owner){-...}-{0:0}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	which would create a new lock dependency:
	 (console_owner){-...}-{0:0} -> (_xmit_ETHER#2){+.-.}-{3:3}

	but this new dependency connects a HARDIRQ-irq-safe lock:
	 (console_owner){-...}-{0:0}

	... which became HARDIRQ-irq-safe at:
	lock_acquire (kernel/locking/lockdep.c:5825) 
	console_flush_all (kernel/printk/printk.c:1905 kernel/printk/printk.c:3086 kernel/printk/printk.c:3180) 
	console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	wake_up_klogd_work_func (kernel/printk/printk.c:4466) 
	irq_work_run_list (kernel/irq_work.c:222 kernel/irq_work.c:252) 
	update_process_times (kernel/time/timer.c:2524) 
	tick_handle_periodic (kernel/time/tick-common.c:120) 
	__sysvec_apic_timer_interrupt (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1044) 
	sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1037 arch/x86/kernel/apic/apic.c:1037) 
	asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
	clear_page_erms (arch/x86/lib/clear_page_64.S:50) 
	alloc_pages_bulk_noprof (mm/page_alloc.c:? mm/page_alloc.c:4660) 
	__vmalloc_node_range_noprof (mm/vmalloc.c:? mm/vmalloc.c:3646 mm/vmalloc.c:3828) 
	dup_task_struct (kernel/fork.c:314 kernel/fork.c:1115) 
	copy_process (kernel/fork.c:2207) 
	kernel_clone (kernel/fork.c:2787) 
	kernel_thread (kernel/fork.c:2849) 
	kthreadd (kernel/kthread.c:414 kernel/kthread.c:765) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 

	to a HARDIRQ-irq-unsafe lock:
	 (_xmit_ETHER#2){+.-.}-{3:3}

	... which became HARDIRQ-irq-unsafe at:
	...
	lock_acquire (kernel/locking/lockdep.c:5825) 
	_raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
	virtnet_poll (./include/linux/spinlock.h:? ./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
	__napi_poll (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/napi.h:14 net/core/dev.c:6772) 
	net_rx_action (net/core/dev.c:6842 net/core/dev.c:6962) 
	handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	do_softirq (kernel/softirq.c:455) 
	__local_bh_enable_ip (kernel/softirq.c:?) 
	virtnet_open (drivers/net/virtio_net.c:2877 drivers/net/virtio_net.c:2925) 
	__dev_open (net/core/dev.c:1476) 
	dev_open (net/core/dev.c:1513) 
	netpoll_setup (net/core/netpoll.c:701) 
	init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	do_one_initcall (init/main.c:1269) 
	do_initcall_level (init/main.c:1330) 
	do_initcalls (init/main.c:1344) 
	kernel_init_freeable (init/main.c:1584) 
	kernel_init (init/main.c:1471) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 

	other info that might help us debug this:

	 Possible interrupt unsafe locking scenario:

	       CPU0                    CPU1
	       ----                    ----
	  lock(_xmit_ETHER#2);
				       local_irq_disable();
				       lock(console_owner);
				       lock(_xmit_ETHER#2);
	  <Interrupt>
	    lock(console_owner);

	 *** DEADLOCK ***

	5 locks held by swapper/0/1:
	#0: ffffffff82a836b8 (console_mutex){+.+.}-{4:4}, at: register_console (kernel/printk/printk.c:113 kernel/printk/printk.c:3933) 
	#1: ffffffff82a83ab0 (console_lock){+.+.}-{0:0}, at: _printk (kernel/printk/printk.c:2435) 
	#2: ffffffff82a836f0 (console_srcu){....}-{0:0}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	#3: ffffffff82a83a88 (console_owner){-...}-{0:0}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	#4: ffffffff83183f80 (printk_legacy_map-wait-type-override){....}-{4:4}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 

	the dependencies between HARDIRQ-irq-safe lock and the holding lock:
	-> (console_owner){-...}-{0:0} ops: 2187 {
	   IN-HARDIRQ-W at:
	lock_acquire (kernel/locking/lockdep.c:5825) 
	console_flush_all (kernel/printk/printk.c:1905 kernel/printk/printk.c:3086 kernel/printk/printk.c:3180) 
	console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	wake_up_klogd_work_func (kernel/printk/printk.c:4466) 
	irq_work_run_list (kernel/irq_work.c:222 kernel/irq_work.c:252) 
	update_process_times (kernel/time/timer.c:2524) 
	tick_handle_periodic (kernel/time/tick-common.c:120) 
	__sysvec_apic_timer_interrupt (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1044) 
	sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1037 arch/x86/kernel/apic/apic.c:1037) 
	asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
	clear_page_erms (arch/x86/lib/clear_page_64.S:50) 
	alloc_pages_bulk_noprof (mm/page_alloc.c:? mm/page_alloc.c:4660) 
	__vmalloc_node_range_noprof (mm/vmalloc.c:? mm/vmalloc.c:3646 mm/vmalloc.c:3828) 
	dup_task_struct (kernel/fork.c:314 kernel/fork.c:1115) 
	copy_process (kernel/fork.c:2207) 
	kernel_clone (kernel/fork.c:2787) 
	kernel_thread (kernel/fork.c:2849) 
	kthreadd (kernel/kthread.c:414 kernel/kthread.c:765) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	   INITIAL USE at:
	 }
	... key at: console_owner_dep_map+0x0/0x28 

	the dependencies between the lock to be acquired
	 and HARDIRQ-irq-unsafe lock:
	-> (_xmit_ETHER#2){+.-.}-{3:3} ops: 5 {
	   HARDIRQ-ON-W at:
	lock_acquire (kernel/locking/lockdep.c:5825) 
	_raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
	virtnet_poll (./include/linux/spinlock.h:? ./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
	__napi_poll (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/napi.h:14 net/core/dev.c:6772) 
	net_rx_action (net/core/dev.c:6842 net/core/dev.c:6962) 
	handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	do_softirq (kernel/softirq.c:455) 
	__local_bh_enable_ip (kernel/softirq.c:?) 
	virtnet_open (drivers/net/virtio_net.c:2877 drivers/net/virtio_net.c:2925) 
	__dev_open (net/core/dev.c:1476) 
	dev_open (net/core/dev.c:1513) 
	netpoll_setup (net/core/netpoll.c:701) 
	init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	do_one_initcall (init/main.c:1269) 
	do_initcall_level (init/main.c:1330) 
	do_initcalls (init/main.c:1344) 
	kernel_init_freeable (init/main.c:1584) 
	kernel_init (init/main.c:1471) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	   IN-SOFTIRQ-W at:
	lock_acquire (kernel/locking/lockdep.c:5825) 
	_raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
	virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	__napi_poll (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/napi.h:14 net/core/dev.c:6772) 
	net_rx_action (net/core/dev.c:6842 net/core/dev.c:6962) 
	handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	do_softirq (kernel/softirq.c:455) 
	__local_bh_enable_ip (kernel/softirq.c:?) 
	virtnet_open (drivers/net/virtio_net.c:2919) 
	__dev_open (net/core/dev.c:1476) 
	dev_open (net/core/dev.c:1513) 
	netpoll_setup (net/core/netpoll.c:701) 
	init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	do_one_initcall (init/main.c:1269) 
	do_initcall_level (init/main.c:1330) 
	do_initcalls (init/main.c:1344) 
	kernel_init_freeable (init/main.c:1584) 
	kernel_init (init/main.c:1471) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	   INITIAL USE at:
	lock_acquire (kernel/locking/lockdep.c:5825) 
	_raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
	virtnet_poll (./include/linux/spinlock.h:? ./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
	__napi_poll (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/napi.h:14 net/core/dev.c:6772) 
	net_rx_action (net/core/dev.c:6842 net/core/dev.c:6962) 
	handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	do_softirq (kernel/softirq.c:455) 
	__local_bh_enable_ip (kernel/softirq.c:?) 
	virtnet_open (drivers/net/virtio_net.c:2877 drivers/net/virtio_net.c:2925) 
	__dev_open (net/core/dev.c:1476) 
	dev_open (net/core/dev.c:1513) 
	netpoll_setup (net/core/netpoll.c:701) 
	init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	do_one_initcall (init/main.c:1269) 
	do_initcall_level (init/main.c:1330) 
	do_initcalls (init/main.c:1344) 
	kernel_init_freeable (init/main.c:1584) 
	kernel_init (init/main.c:1471) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	 }
	... key at: netdev_xmit_lock_key+0x10/0x390 
	 ... acquired at:
	_raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
	virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	netpoll_poll_dev (net/core/netpoll.c:167 net/core/netpoll.c:180 net/core/netpoll.c:210) 
	netpoll_send_skb (net/core/netpoll.c:360 net/core/netpoll.c:386) 
	netpoll_send_udp (net/core/netpoll.c:494) 
	write_ext_msg (drivers/net/netconsole.c:1187) 
	console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
	console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	vprintk_emit (kernel/printk/printk.c:?) 
	_printk (kernel/printk/printk.c:2435) 
	register_console (kernel/printk/printk.c:4070) 
	init_netconsole (drivers/net/netconsole.c:1344) 
	do_one_initcall (init/main.c:1269) 
	do_initcall_level (init/main.c:1330) 
	do_initcalls (init/main.c:1344) 
	kernel_init_freeable (init/main.c:1584) 
	kernel_init (init/main.c:1471) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 


	stack backtrace:
	Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
	Call Trace:
	 <TASK>
	dump_stack_lvl (lib/dump_stack.c:123) 
	__lock_acquire (kernel/locking/lockdep.c:? kernel/locking/lockdep.c:2888 kernel/locking/lockdep.c:3165 kernel/locking/lockdep.c:3280 kernel/locking/lockdep.c:3904 kernel/locking/lockdep.c:5202) 
	? virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	lock_acquire (kernel/locking/lockdep.c:5825) 
	? virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	? lock_acquire (kernel/locking/lockdep.c:5825) 
	? down_trylock (kernel/locking/semaphore.c:?) 
	_raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
	? virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	netpoll_poll_dev (net/core/netpoll.c:167 net/core/netpoll.c:180 net/core/netpoll.c:210) 
	netpoll_send_skb (net/core/netpoll.c:360 net/core/netpoll.c:386) 
	netpoll_send_udp (net/core/netpoll.c:494) 
	? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	write_ext_msg (drivers/net/netconsole.c:1187) 
	? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	? console_flush_all (kernel/printk/printk.c:1905 kernel/printk/printk.c:3086 kernel/printk/printk.c:3180) 
	? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
	? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	vprintk_emit (kernel/printk/printk.c:?) 
	_printk (kernel/printk/printk.c:2435) 
	register_console (kernel/printk/printk.c:4070) 
	init_netconsole (drivers/net/netconsole.c:1344) 
	? option_setup (drivers/net/netconsole.c:1301) 
	do_one_initcall (init/main.c:1269) 
	? __lock_acquire (kernel/locking/lockdep.c:?) 
	? __lock_acquire (kernel/locking/lockdep.c:?) 
	? stack_depot_save_flags (lib/stackdepot.c:664) 
	? stack_depot_save_flags (lib/stackdepot.c:664) 
	? __create_object (mm/kmemleak.c:763) 
	? lock_acquire (kernel/locking/lockdep.c:5825) 
	? __create_object (mm/kmemleak.c:763) 
	? __create_object (mm/kmemleak.c:766) 
	? parse_args (kernel/params.c:153 kernel/params.c:186) 
	do_initcall_level (init/main.c:1330) 
	? kernel_init (init/main.c:1471) 
	do_initcalls (init/main.c:1344) 
	kernel_init_freeable (init/main.c:1584) 
	? rest_init (init/main.c:1461) 
	kernel_init (init/main.c:1471) 
	ret_from_fork (arch/x86/kernel/process.c:153) 
	? rest_init (init/main.c:1461) 
	ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	 </TASK>
	printk: legacy console [netcon0] enabled
	netconsole: network logging started

PS: I've hacked around and removed the target_list_lock lock
completely, and I still see the problem, so, that lock doesn't seem to
be related to the problem.

Thanks,
--breno

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-03 14:51 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler) Breno Leitao
@ 2024-10-03 15:06 ` Breno Leitao
  2024-10-03 15:32 ` Peter Zijlstra
  1 sibling, 0 replies; 9+ messages in thread
From: Breno Leitao @ 2024-10-03 15:06 UTC (permalink / raw)
  To: peterz, gregkh, pmladek, mst, jasowang, xuanzhuo, kuba
  Cc: virtualization, netdev, linux-kernel, vschneid, axboe

On Thu, Oct 03, 2024 at 07:51:20AM -0700, Breno Leitao wrote:
> Upstream kernel (6.12-rc1) has a new lockdep splat, that I am sharing to
> get more visibility:
> 
> 	WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
> 
> This is happening because the HARDIRQ-irq-unsafe "_xmit_ETHER#2" lock is
> acquired in virtnet_poll_tx() while holding the HARDIRQ-irq-safe, and
> lockdep doesn't like it much.
> 
> I've bisected the problem, and weirdly enough, this problem started to
> show up after a unrelated(?) change in the scheduler:
> 
> 	52e11f6df293e816a ("sched/fair: Implement delayed dequeue")

Errata. The commit is missing the first number. The right one is:

	152e11f6df293e816a ("sched/fair: Implement delayed dequeue")

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-03 14:51 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler) Breno Leitao
  2024-10-03 15:06 ` Breno Leitao
@ 2024-10-03 15:32 ` Peter Zijlstra
  2024-10-03 15:41   ` Breno Leitao
  1 sibling, 1 reply; 9+ messages in thread
From: Peter Zijlstra @ 2024-10-03 15:32 UTC (permalink / raw)
  To: Breno Leitao
  Cc: gregkh, pmladek, mst, jasowang, xuanzhuo, kuba, virtualization,
	netdev, linux-kernel, vschneid, axboe

On Thu, Oct 03, 2024 at 07:51:20AM -0700, Breno Leitao wrote:
> Upstream kernel (6.12-rc1) has a new lockdep splat, that I am sharing to
> get more visibility:
> 
> 	WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
> 
> This is happening because the HARDIRQ-irq-unsafe "_xmit_ETHER#2" lock is
> acquired in virtnet_poll_tx() while holding the HARDIRQ-irq-safe, and
> lockdep doesn't like it much.
> 
> I've bisected the problem, and weirdly enough, this problem started to
> show up after a unrelated(?) change in the scheduler:
> 
> 	52e11f6df293e816a ("sched/fair: Implement delayed dequeue")
> 
> At this time, I have the impression that the commit above exposed the
> problem that was there already.
> 
> Here is the full log, based on commit 7ec462100ef91 ("Merge tag
> 'pull-work.unaligned' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs")

This looks like the normal lockdep splat you get when the scheduler does
printk. I suspect you tripped a WARN, but since you only provided the
lockdep output and not the whole log, I cannot tell.

There is a fix in:

  git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/urgent

that might, or might not help. I can't tell.

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-03 15:32 ` Peter Zijlstra
@ 2024-10-03 15:41   ` Breno Leitao
  2024-10-04  9:08     ` Breno Leitao
  0 siblings, 1 reply; 9+ messages in thread
From: Breno Leitao @ 2024-10-03 15:41 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: gregkh, pmladek, mst, jasowang, xuanzhuo, kuba, virtualization,
	netdev, linux-kernel, vschneid, axboe

Hello Peter,

On Thu, Oct 03, 2024 at 05:32:31PM +0200, Peter Zijlstra wrote:
> On Thu, Oct 03, 2024 at 07:51:20AM -0700, Breno Leitao wrote:
> > Upstream kernel (6.12-rc1) has a new lockdep splat, that I am sharing to
> > get more visibility:
> > 
> > 	WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
> > 
> > This is happening because the HARDIRQ-irq-unsafe "_xmit_ETHER#2" lock is
> > acquired in virtnet_poll_tx() while holding the HARDIRQ-irq-safe, and
> > lockdep doesn't like it much.
> > 
> > I've bisected the problem, and weirdly enough, this problem started to
> > show up after a unrelated(?) change in the scheduler:
> > 
> > 	52e11f6df293e816a ("sched/fair: Implement delayed dequeue")
> > 
> > At this time, I have the impression that the commit above exposed the
> > problem that was there already.
> > 
> > Here is the full log, based on commit 7ec462100ef91 ("Merge tag
> > 'pull-work.unaligned' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs")
> 
> This looks like the normal lockdep splat you get when the scheduler does
> printk. I suspect you tripped a WARN, but since you only provided the
> lockdep output and not the whole log, I cannot tell.

Thanks for the quick answer. I didn't see a warning before the lockdep
splat, at least in the usual way I am familiar with. Let me past the
full log below.

> There is a fix in:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/urgent
> 
> that might, or might not help. I can't tell.

Thanks. I will try it soon.

I just booted a clean VM, here is the full log:

	 Linux version 6.11.0-rc1-kbuilder-00044-g152e11f6df29 (leit@devvm32600.lla0.foobar.com) (clang version 20.0.0git (https://github.com/llvm/llvm-project.git d0f67773b213383b6e1c9331fb00f2d4c14bfcb2), LLD 18.0.0) #47 SMP Thu Oct  3 07:23:47 PDT 2024
	 Command line: virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 console=hvc0 earlyprintk=serial,ttyS0,115200 virtme_console=ttyS0 psmouse.proto=exps "virtme_stty_con=rows 45 cols 101 iutf8" TERM=xterm-256color virtme.dhcp net.ifnames=0 biosdevname=0 virtme_chdir=home/leit/Devel/upstream netconsole=+6666@2401:db00:3120:21a9:1111:0000:0270:0000/eth0,1514@2803:6080:a89c:a670::1/02:90:fb:66:aa:e5 init=/home/leit/venv/lib/python3.8/site-packages/virtme/guest/bin/virtme-ng-init
	 KERNEL supported cpus:
	   Intel GenuineIntel
	   AMD AuthenticAMD
	 BIOS-provided physical RAM map:
	 BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
	 BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
	 BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
	 BIOS-e820: [mem 0x0000000000100000-0x00000000bffdffff] usable
	 BIOS-e820: [mem 0x00000000bffe0000-0x00000000bfffffff] reserved
	 BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
	 BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
	 BIOS-e820: [mem 0x0000000100000000-0x00000002bfffffff] usable
	 BIOS-e820: [mem 0x000000fd00000000-0x000000ffffffffff] reserved
	 printk: legacy bootconsole [earlyser0] enabled
	 NX (Execute Disable) protection: active
	 APIC: Static calls initialized
	 SMBIOS 2.8 present.
	 DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
	 DMI: Memory slots populated: 1/1
	 Hypervisor detected: KVM
	 kvm-clock: Using msrs 4b564d01 and 4b564d00
	 kvm-clock: using sched offset of 932970338 cycles
	 clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
	 tsc: Detected 1199.999 MHz processor
	 e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
	 e820: remove [mem 0x000a0000-0x000fffff] usable
	 last_pfn = 0x2c0000 max_arch_pfn = 0x400000000
	 MTRR map: 4 entries (3 fixed + 1 variable; max 19), built from 8 variable MTRRs
	 x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT
	 last_pfn = 0xbffe0 max_arch_pfn = 0x400000000
	 Using GB pages for direct mapping
	 RAMDISK: [mem 0xbf996000-0xbffdffff]
	 ACPI: Early table checksum verification disabled
	 ACPI: RSDP 0x00000000000F5270 000014 (v00 BOCHS )
	 ACPI: RSDT 0x00000000BFFE2C55 000038 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: FACP 0x00000000BFFE2889 000074 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: DSDT 0x00000000BFFE0040 002849 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: FACS 0x00000000BFFE0000 000040
	 ACPI: APIC 0x00000000BFFE28FD 000110 (v03 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: HPET 0x00000000BFFE2A0D 000038 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: SRAT 0x00000000BFFE2A45 0001E8 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: WAET 0x00000000BFFE2C2D 000028 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: Reserving FACP table memory at [mem 0xbffe2889-0xbffe28fc]
	 ACPI: Reserving DSDT table memory at [mem 0xbffe0040-0xbffe2888]
	 ACPI: Reserving FACS table memory at [mem 0xbffe0000-0xbffe003f]
	 ACPI: Reserving APIC table memory at [mem 0xbffe28fd-0xbffe2a0c]
	 ACPI: Reserving HPET table memory at [mem 0xbffe2a0d-0xbffe2a44]
	 ACPI: Reserving SRAT table memory at [mem 0xbffe2a45-0xbffe2c2c]
	 ACPI: Reserving WAET table memory at [mem 0xbffe2c2d-0xbffe2c54]
	 SRAT: PXM 0 -> APIC 0x00 -> Node 0
	 SRAT: PXM 0 -> APIC 0x01 -> Node 0
	 SRAT: PXM 0 -> APIC 0x02 -> Node 0
	 SRAT: PXM 0 -> APIC 0x03 -> Node 0
	 SRAT: PXM 0 -> APIC 0x04 -> Node 0
	 SRAT: PXM 0 -> APIC 0x05 -> Node 0
	 SRAT: PXM 0 -> APIC 0x06 -> Node 0
	 SRAT: PXM 0 -> APIC 0x07 -> Node 0
	 SRAT: PXM 0 -> APIC 0x08 -> Node 0
	 SRAT: PXM 0 -> APIC 0x09 -> Node 0
	 SRAT: PXM 0 -> APIC 0x0a -> Node 0
	 SRAT: PXM 0 -> APIC 0x0b -> Node 0
	 SRAT: PXM 0 -> APIC 0x0c -> Node 0
	 SRAT: PXM 0 -> APIC 0x0d -> Node 0
	 SRAT: PXM 0 -> APIC 0x0e -> Node 0
	 SRAT: PXM 0 -> APIC 0x0f -> Node 0
	 SRAT: PXM 0 -> APIC 0x10 -> Node 0
	 SRAT: PXM 0 -> APIC 0x11 -> Node 0
	 SRAT: PXM 0 -> APIC 0x12 -> Node 0
	 SRAT: PXM 0 -> APIC 0x13 -> Node 0
	 ACPI: SRAT: Node 0 PXM 0 [mem 0x00000000-0x0009ffff]
	 ACPI: SRAT: Node 0 PXM 0 [mem 0x00100000-0xbfffffff]
	 ACPI: SRAT: Node 0 PXM 0 [mem 0x100000000-0x2bfffffff]
	 NUMA: Node 0 [mem 0x00000000-0x0009ffff] + [mem 0x00100000-0xbfffffff] -> [mem 0x00000000-0xbfffffff]
	 NUMA: Node 0 [mem 0x00000000-0xbfffffff] + [mem 0x100000000-0x2bfffffff] -> [mem 0x00000000-0x2bfffffff]
	 NODE_DATA(0) allocated [mem 0x2bfffa000-0x2bfffdfff]
	 Zone ranges:
	   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
	   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
	   Normal   [mem 0x0000000100000000-0x00000002bfffffff]
	   Device   empty
	 Movable zone start for each node
	 Early memory node ranges
	   node   0: [mem 0x0000000000001000-0x000000000009efff]
	   node   0: [mem 0x0000000000100000-0x00000000bffdffff]
	   node   0: [mem 0x0000000100000000-0x00000002bfffffff]
	 Initmem setup node 0 [mem 0x0000000000001000-0x00000002bfffffff]
	 On node 0, zone DMA: 1 pages in unavailable ranges
	 On node 0, zone DMA: 97 pages in unavailable ranges
	 On node 0, zone Normal: 32 pages in unavailable ranges
	 ACPI: PM-Timer IO Port: 0x608
	 ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
	 IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
	 ACPI: Using ACPI (MADT) for SMP configuration information
	 ACPI: HPET id: 0x8086a201 base: 0xfed00000
	 TSC deadline timer available
	 CPU topo: Max. logical packages:   1
	 CPU topo: Max. logical dies:       1
	 CPU topo: Max. dies per package:   1
	 CPU topo: Max. threads per core:   1
	 CPU topo: Num. cores per package:    20
	 CPU topo: Num. threads per package:  20
	 CPU topo: Allowing 20 present CPUs plus 0 hotplug CPUs
	 kvm-guest: APIC: eoi() replaced with kvm_guest_apic_eoi_write()
	 kvm-guest: KVM setup pv remote TLB flush
	 kvm-guest: setup PV sched yield
	 [mem 0xc0000000-0xfeffbfff] available for PCI devices
	 Booting paravirtualized kernel on KVM
	 clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
	 setup_percpu: NR_CPUS:512 nr_cpumask_bits:20 nr_cpu_ids:20 nr_node_ids:1
	 percpu: Embedded 82 pages/cpu s299008 r8192 d28672 u524288
	 pcpu-alloc: s299008 r8192 d28672 u524288 alloc=1*2097152
	 pcpu-alloc: [0] 00 01 02 03 [0] 04 05 06 07
	 pcpu-alloc: [0] 08 09 10 11 [0] 12 13 14 15
	 pcpu-alloc: [0] 16 17 18 19
	 Kernel command line: virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 console=hvc0 earlyprintk=serial,ttyS0,115200 virtme_console=ttyS0 psmouse.proto=exps "virtme_stty_con=rows 45 cols 101 iutf8" TERM=xterm-256color virtme.dhcp net.ifnames=0 biosdevname=0 virtme_chdir=home/leit/Devel/upstream netconsole=+6666@2401:db00:3120:21a9:face:0000:0270:0000/eth0,1514@2803:6080:a89c:a670::1/02:90:fb:66:aa:e5 init=/home/leit/venv/lib/python3.8/site-packages/virtme/guest/bin/virtme-ng-init
	 Unknown kernel command line parameters "virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 virtme_console=ttyS0 virtme_stty_con=rows 45 cols 101 iutf8 biosdevname=0 virtme_chdir=home/leit/Devel/upstream", will be passed to user space.
	 random: crng init done
	 Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
	 Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
	 Fallback order for Node 0: 0
	 Built 1 zonelists, mobility grouping on.  Total pages: 2621310
	 Policy zone: Normal
	 mem auto-init: stack:off, heap alloc:off, heap free:off
	 stackdepot: allocating hash table via alloc_large_system_hash
	 stackdepot hash table entries: 1048576 (order: 12, 16777216 bytes, linear)
	 software IO TLB: area num 32.
	 SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=20, Nodes=1
	 ftrace: allocating 46490 entries in 182 pages
	 ftrace: allocated 182 pages with 5 groups
	 Running RCU self tests
	 Running RCU synchronous self tests
	 rcu: Hierarchical RCU implementation.
	 rcu: 	RCU lockdep checking is enabled.
	 rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=20.
		Rude variant of Tasks RCU enabled.
		Tracing variant of Tasks RCU enabled.
	 rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
	 rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=20
	 Running RCU synchronous self tests
	 RCU Tasks Rude: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1.
	 RCU Tasks Trace: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1.
	 NR_IRQS: 33024, nr_irqs: 584, preallocated irqs: 16
	 rcu: srcu_init: Setting srcu_struct sizes based on contention.
	 kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
	 Console: colour *CGA 80x25
	 Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
	 ... MAX_LOCKDEP_SUBCLASSES:  8
	 ... MAX_LOCK_DEPTH:          48
	 ... MAX_LOCKDEP_KEYS:        8192
	 ... CLASSHASH_SIZE:          4096
	 ... MAX_LOCKDEP_ENTRIES:     32768
	 ... MAX_LOCKDEP_CHAINS:      65536
	 ... CHAINHASH_SIZE:          32768
	  memory used by lock dependency info: 6429 kB
	  memory used for stack traces: 4224 kB
	  per task-struct memory footprint: 1920 bytes
	 ACPI: Core revision 20240322
	 clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns
	 APIC: Switch to symmetric I/O mode setup
	 x2apic enabled
	 APIC: Switched APIC routing to: physical x2apic
	 kvm-guest: APIC: send_IPI_mask() replaced with kvm_send_ipi_mask()
	 kvm-guest: APIC: send_IPI_mask_allbutself() replaced with kvm_send_ipi_mask_allbutself()
	 kvm-guest: setup PV IPIs
	 ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
	 tsc: Marking TSC unstable due to TSCs unsynchronized
	 Calibrating delay loop (skipped) preset value.. 2399.99 BogoMIPS (lpj=1199999)
	 x86/cpu: User Mode Instruction Prevention (UMIP) activated
	 Last level iTLB entries: 4KB 512, 2MB 255, 4MB 127
	 Last level dTLB entries: 4KB 512, 2MB 255, 4MB 127, 1GB 0
	 Spectre V2 : User space: Vulnerable
	 Speculative Store Bypass: Vulnerable
	 x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
	 x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
	 x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
	 x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask'
	 x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256'
	 x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256'
	 x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers'
	 x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
	 x86/fpu: xstate_offset[5]:  832, xstate_sizes[5]:   64
	 x86/fpu: xstate_offset[6]:  896, xstate_sizes[6]:  512
	 x86/fpu: xstate_offset[7]: 1408, xstate_sizes[7]: 1024
	 x86/fpu: xstate_offset[9]: 2432, xstate_sizes[9]:    8
	 x86/fpu: Enabled xstate features 0x2e7, context size is 2440 bytes, using 'compacted' format.
	 Freeing SMP alternatives memory: 48K
	 pid_max: default: 32768 minimum: 301
	 LSM: initializing lsm=capability,ima
	 Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
	 Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
	 Running RCU synchronous self tests
	 Running RCU synchronous self tests
	 smpboot: CPU0: AMD EPYC-Milan Processor (family: 0x19, model: 0x1, stepping: 0x1)
	 psi: inconsistent task state! task=1:swapper/0 cpu=0 psi_flags=4 clear=0 set=4
	 Running RCU Tasks Rude wait API self tests
	 Running RCU Tasks Trace wait API self tests
	 Performance Events: Fam17h+ core perfctr, AMD PMU driver.
	 ... version:                0
	 ... bit width:              48
	 ... generic registers:      6
	 ... value mask:             0000ffffffffffff
	 ... max period:             00007fffffffffff
	 ... fixed-purpose events:   0
	 ... event mask:             000000000000003f
	 Callback from call_rcu_tasks_trace() invoked.
	 signal: max sigframe size: 3376
	 rcu: Hierarchical SRCU implementation.
	 rcu: 	Max phase no-delay instances is 400.
	 Timer migration: 2 hierarchy levels; 8 children per group; 2 crossnode level
	 smp: Bringing up secondary CPUs ...
	 smpboot: x86: Booting SMP configuration:
	 .... node  #0, CPUs:        #1  #2  #3  #4  #5  #6  #7  #8  #9 #10 #11 #12 #13 #14 #15 #16
	 Callback from call_rcu_tasks_rude() invoked.
	  #17 #18 #19
	 smp: Brought up 1 node, 20 CPUs
	 smpboot: Total of 20 processors activated (47999.96 BogoMIPS)
	 Memory: 10121020K/10485240K available (18432K kernel code, 9105K rwdata, 6216K rodata, 1884K init, 21012K bss, 350648K reserved, 0K cma-reserved)
	 devtmpfs: initialized
	 x86/mm: Memory block size: 128MB
	 Running RCU synchronous self tests
	 Running RCU synchronous self tests
	 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
	 futex hash table entries: 8192 (order: 8, 1048576 bytes, linear)
	 NET: Registered PF_NETLINK/PF_ROUTE protocol family
	 DMA: preallocated 2048 KiB GFP_KERNEL pool for atomic allocations
	 DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
	 DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
	 audit: initializing netlink subsys (disabled)
	 audit: type=2000 audit(1727965453.220:1): state=initialized audit_enabled=0 res=1
	 thermal_sys: Registered thermal governor 'step_wise'
	 thermal_sys: Registered thermal governor 'user_space'
	 cpuidle: using governor menu
	 dca service started, version 1.12.1
	 PCI: Using configuration type 1 for base access
	 PCI: Using configuration type 1 for extended access
	 kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
	 HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
	 HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
	 HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
	 HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
	 cryptd: max_cpu_qlen set to 1000
	 raid6: avx512x4 gen() 31451 MB/s
	 raid6: avx512x2 gen() 34478 MB/s
	 raid6: avx512x1 gen() 31905 MB/s
	 raid6: avx2x4   gen() 34476 MB/s
	 raid6: avx2x2   gen() 37438 MB/s
	 raid6: avx2x1   gen() 32283 MB/s
	 raid6: using algorithm avx2x2 gen() 37438 MB/s
	 raid6: .... xor() 29574 MB/s, rmw enabled
	 raid6: using avx512x2 recovery algorithm
	 ACPI: Added _OSI(Module Device)
	 ACPI: Added _OSI(Processor Device)
	 ACPI: Added _OSI(3.0 _SCP Extensions)
	 ACPI: Added _OSI(Processor Aggregator Device)
	 ACPI: 1 ACPI AML tables successfully acquired and loaded
	 ACPI: Interpreter enabled
	 ACPI: PM: (supports S0 S5)
	 ACPI: Using IOAPIC for interrupt routing
	 PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
	 PCI: Using E820 reservations for host bridge windows
	 ACPI: Enabled 2 GPEs in block 00 to 0F
	 ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
	 acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
	 PCI host bridge to bus 0000:00
	 pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
	 pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
	 pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
	 pci_bus 0000:00: root bus resource [mem 0xc0000000-0xfebfffff window]
	 pci_bus 0000:00: root bus resource [mem 0xc000000000-0xc07fffffff window]
	 pci_bus 0000:00: root bus resource [bus 00-ff]
	 pci 0000:00:00.0: [8086:1237] type 00 class 0x060000 conventional PCI endpoint
	 pci 0000:00:01.0: [8086:7000] type 00 class 0x060100 conventional PCI endpoint
	 pci 0000:00:01.1: [8086:7010] type 00 class 0x010180 conventional PCI endpoint
	 pci 0000:00:01.1: BAR 4 [io  0xc060-0xc06f]
	 pci 0000:00:01.1: BAR 0 [io  0x01f0-0x01f7]: legacy IDE quirk
	 pci 0000:00:01.1: BAR 1 [io  0x03f6]: legacy IDE quirk
	 pci 0000:00:01.1: BAR 2 [io  0x0170-0x0177]: legacy IDE quirk
	 pci 0000:00:01.1: BAR 3 [io  0x0376]: legacy IDE quirk
	 pci 0000:00:01.3: [8086:7113] type 00 class 0x068000 conventional PCI endpoint
	 pci 0000:00:01.3: quirk: [io  0x0600-0x063f] claimed by PIIX4 ACPI
	 pci 0000:00:01.3: quirk: [io  0x0700-0x070f] claimed by PIIX4 SMB
	 pci 0000:00:02.0: [1af4:105a] type 00 class 0x018000 conventional PCI endpoint
	 pci 0000:00:02.0: BAR 1 [mem 0xfebc0000-0xfebc0fff]
	 pci 0000:00:02.0: BAR 4 [mem 0xc000000000-0xc000003fff 64bit pref]
	 pci 0000:00:03.0: [8086:25ab] type 00 class 0x088000 conventional PCI endpoint
	 pci 0000:00:03.0: BAR 0 [mem 0xfebc1000-0xfebc100f]
	 pci 0000:00:04.0: [1af4:1003] type 00 class 0x078000 conventional PCI endpoint
	 pci 0000:00:04.0: BAR 0 [io  0xc000-0xc03f]
	 pci 0000:00:04.0: BAR 1 [mem 0xfebc2000-0xfebc2fff]
	 pci 0000:00:04.0: BAR 4 [mem 0xc000004000-0xc000007fff 64bit pref]
	 pci 0000:00:05.0: [1af4:1000] type 00 class 0x020000 conventional PCI endpoint
	 pci 0000:00:05.0: BAR 0 [io  0xc040-0xc05f]
	 pci 0000:00:05.0: BAR 1 [mem 0xfebc3000-0xfebc3fff]
	 pci 0000:00:05.0: BAR 4 [mem 0xc000008000-0xc00000bfff 64bit pref]
	 pci 0000:00:05.0: ROM [mem 0xfeb80000-0xfebbffff pref]
	 ACPI: PCI: Interrupt link LNKA configured for IRQ 10
	 ACPI: PCI: Interrupt link LNKB configured for IRQ 10
	 ACPI: PCI: Interrupt link LNKC configured for IRQ 11
	 ACPI: PCI: Interrupt link LNKD configured for IRQ 11
	 ACPI: PCI: Interrupt link LNKS configured for IRQ 9
	 iommu: Default domain type: Translated
	 iommu: DMA domain TLB invalidation policy: lazy mode
	 SCSI subsystem initialized
	 libata version 3.00 loaded.
	 ACPI: bus type USB registered
	 usbcore: registered new interface driver usbfs
	 usbcore: registered new interface driver hub
	 usbcore: registered new device driver usb
	 pps_core: LinuxPPS API ver. 1 registered
	 pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
	 PTP clock support registered
	 PCI: Using ACPI for IRQ routing
	 PCI: pci_cache_line_size set to 64 bytes
	 e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
	 e820: reserve RAM buffer [mem 0xbffe0000-0xbfffffff]
	 hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
	 hpet0: 3 comparators, 64-bit 100.000000 MHz counter
	 clocksource: Switched to clocksource kvm-clock
	 VFS: Disk quotas dquot_6.6.0
	 VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
	 pnp: PnP ACPI init
	 pnp 00:02: [dma 2]
	 pnp: PnP ACPI: found 5 devices
	 clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
	 NET: Registered PF_INET protocol family
	 IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
	 tcp_listen_portaddr_hash hash table entries: 8192 (order: 7, 589824 bytes, linear)
	 Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
	 TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
	 TCP bind hash table entries: 65536 (order: 11, 9437184 bytes, vmalloc hugepage)
	 TCP: Hash tables configured (established 131072 bind 65536)
	 UDP hash table entries: 8192 (order: 8, 1310720 bytes, linear)
	 UDP-Lite hash table entries: 8192 (order: 8, 1310720 bytes, linear)
	 NET: Registered PF_UNIX/PF_LOCAL protocol family
	 NET: Registered PF_XDP protocol family
	 pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
	 pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
	 pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
	 pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfebfffff window]
	 pci_bus 0000:00: resource 8 [mem 0xc000000000-0xc07fffffff window]
	 pci 0000:00:01.0: PIIX3: Enabling Passive Release
	 pci 0000:00:00.0: Limiting direct PCI/PCI transfers
	 PCI: CLS 0 bytes, default 64
	 PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
	 Trying to unpack rootfs image as initramfs...
	 software IO TLB: mapped [mem 0x00000000bb996000-0x00000000bf996000] (64MB)
	 kvm_intel: VMX not supported by CPU 1
	 kvm_amd: TSC scaling supported
	 kvm_amd: Nested Virtualization enabled
	 kvm_amd: Nested Paging enabled
	 kvm_amd: LBR virtualization supported
	 Freeing initrd memory: 6440K
	 Initialise system trusted keyrings
	 workingset: timestamp_bits=43 max_order=22 bucket_order=0
	 9p: Installing v9fs 9p2000 file system support
	 NET: Registered PF_ALG protocol family
	 xor: automatically using best checksumming function   avx
	 Key type asymmetric registered
	 Asymmetric key parser 'x509' registered
	 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
	 io scheduler mq-deadline registered
	 io scheduler kyber registered
	 ioatdma: Intel(R) QuickData Technology Driver 5.00
	 ACPI: \_SB_.LNKB: Enabled at IRQ 10
	 ACPI: \_SB_.LNKD: Enabled at IRQ 11
	 ACPI: \_SB_.LNKA: Enabled at IRQ 10
	 Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
	 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
	 printk: legacy console [hvc0] enabled
	 printk: legacy bootconsole [earlyser0] disabled
	 brd: module loaded
	 usbcore: registered new interface driver ark3116
	 usbserial: USB Serial support registered for ark3116
	 usbcore: registered new interface driver pl2303
	 usbserial: USB Serial support registered for pl2303
	 i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
	 serio: i8042 KBD port at 0x60,0x64 irq 1
	 serio: i8042 AUX port at 0x60,0x64 irq 12
	 rtc_cmos 00:04: RTC can wake from S4
	 rtc_cmos 00:04: registered as rtc0
	 rtc_cmos 00:04: setting system clock to 2024-10-03T14:24:13 UTC (1727965453)
	 rtc_cmos 00:04: alarms up to one day, y3k, 242 bytes nvram, hpet irqs
	 i6300ESB timer 0000:00:03.0: initialized. heartbeat=30 sec (nowayout=0)
	 input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
	 usbcore: registered new interface driver usbhid
	 usbhid: USB HID core driver
	 Initializing XFRM netlink socket
	 NET: Registered PF_INET6 protocol family
	 Segment Routing with IPv6
	 In-situ OAM (IOAM) with IPv6
	 NET: Registered PF_PACKET protocol family
	 9pnet: Installing 9P2000 support
	 Key type dns_resolver registered
	 IPI shorthand broadcast: enabled
	 AES CTR mode by8 optimization enabled
	 registered taskstats version 1
	 Loading compiled-in X.509 certificates
	 virtme initramfs: initramfs does not have module crypto-pkcs1pad(rsa,sha512)
	 virtme initramfs: initramfs does not have module crypto-pkcs1pad(rsa,sha512)-all
	 Loaded X.509 cert 'Build time autogenerated kernel key: 1a58da0881b870ef3decd7cf414d45e41b0e363a'
	 Demotion targets for Node 0: null
	 kmemleak: Kernel memory leak detector initialized (mem pool available: 15766)
	 kmemleak: Automatic memory scanning thread started
	 Btrfs loaded, zoned=no, fsverity=yes
	 ima: No TPM chip found, activating TPM-bypass!
	 ima: Allocated hash algorithm: sha256
	 ima: No architecture policies found
	 netpoll: netconsole: local port 6666
	 netpoll: netconsole: local IPv6 address 2401:db00:3120:21a9:face:0:270:0
	 netpoll: netconsole: interface 'eth0'
	 netpoll: netconsole: remote port 1514
	 netpoll: netconsole: remote IPv6 address 2803:6080:a89c:a670::1
	 netpoll: netconsole: remote ethernet address 02:90:fb:66:aa:e5
	 netpoll: netconsole: device eth0 not up yet, forcing it
	 printk: legacy console [netcon_ext0] enabled

	 =====================================================
	 WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
	 6.11.0-rc1-kbuilder-00044-g152e11f6df29 #47 Not tainted
	 -----------------------------------------------------
	 swapper/0/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
	 ffff8881027702d8 (_xmit_ETHER#2){+.-.}-{3:3}, at: virtnet_poll_tx+0x94/0x210

	 and this task is already holding:
	 ffffffff8325b808 (target_list_lock){....}-{3:3}, at: write_ext_msg+0x4e/0x3a0
	 which would create a new lock dependency:
	  (target_list_lock){....}-{3:3} -> (_xmit_ETHER#2){+.-.}-{3:3}

	 but this new dependency connects a HARDIRQ-irq-safe lock:
	  (console_owner){-...}-{0:0}

	 ... which became HARDIRQ-irq-safe at:
	   lock_acquire+0xe6/0x240
	   console_flush_all+0x31d/0x580
	   console_unlock+0x49/0x160
	   wake_up_klogd_work_func+0x68/0xa0
	   irq_work_run_list+0x9b/0xe0
	   update_process_times+0x88/0xa0
	   tick_handle_periodic+0x22/0x80
	   __sysvec_apic_timer_interrupt+0x74/0x1c0
	   sysvec_apic_timer_interrupt+0x6c/0x80
	   asm_sysvec_apic_timer_interrupt+0x1a/0x20
	   clear_page_erms+0xb/0x10
	   alloc_pages_bulk_noprof+0x48d/0x690
	   __vmalloc_node_range_noprof+0x3ad/0x7c0
	   dup_task_struct+0x12a/0x2a0
	   copy_process+0x17a/0x1380
	   kernel_clone+0x97/0x340
	   kernel_thread+0xb8/0xe0
	   kthreadd+0x201/0x240
	   ret_from_fork+0x34/0x40
	   ret_from_fork_asm+0x11/0x20

	 to a HARDIRQ-irq-unsafe lock:
	  (_xmit_ETHER#2){+.-.}-{3:3}

	 ... which became HARDIRQ-irq-unsafe at:
	 ...
	   lock_acquire+0xe6/0x240
	   _raw_spin_trylock+0x45/0x60
	   virtnet_poll+0xa2/0xe90
	   __napi_poll+0x28/0x210
	   net_rx_action+0x1de/0x3c0
	   handle_softirqs+0x187/0x460
	   do_softirq+0x68/0xc0
	   __local_bh_enable_ip+0xee/0x100
	   virtnet_open+0x1ad/0x320
	   __dev_open+0xdb/0x170
	   dev_open+0x30/0x90
	   netpoll_setup+0x188/0x420
	   init_netconsole+0x136/0x360
	   do_one_initcall+0xee/0x310
	   do_initcall_level+0xa1/0x110
	   do_initcalls+0x43/0x70
	   kernel_init_freeable+0x17e/0x200
	   kernel_init+0x1a/0x130
	   ret_from_fork+0x34/0x40
	   ret_from_fork_asm+0x11/0x20

	 other info that might help us debug this:

	 Chain exists of:
	   console_owner --> target_list_lock --> _xmit_ETHER#2

	  Possible interrupt unsafe locking scenario:

		CPU0                    CPU1
		----                    ----
	   lock(_xmit_ETHER#2);
					local_irq_disable();
					lock(console_owner);
					lock(target_list_lock);
	   <Interrupt>
	     lock(console_owner);

	  *** DEADLOCK ***

	 5 locks held by swapper/0/1:
	  #0: ffffffff82a835f8 (console_mutex){+.+.}-{4:4}, at: register_console+0x47/0x350
	  #1: ffffffff82a839e8 (console_lock){+.+.}-{0:0}, at: _printk+0x5d/0x80
	  #2: ffffffff82a83630 (console_srcu){....}-{0:0}, at: console_flush_all+0x6a/0x580
	  #3: ffffffff83183ea0 (console_owner){-...}-{0:0}, at: console_flush_all+0x6a/0x580
	  #4: ffffffff8325b808 (target_list_lock){....}-{3:3}, at: write_ext_msg+0x4e/0x3a0

	 the dependencies between HARDIRQ-irq-safe lock and the holding lock:
	  -> (console_owner){-...}-{0:0} ops: 2584 {
	     IN-HARDIRQ-W at:
			       lock_acquire+0xe6/0x240
			       console_flush_all+0x31d/0x580
			       console_unlock+0x49/0x160
			       wake_up_klogd_work_func+0x68/0xa0
			       irq_work_run_list+0x9b/0xe0
			       update_process_times+0x88/0xa0
			       tick_handle_periodic+0x22/0x80
			       __sysvec_apic_timer_interrupt+0x74/0x1c0
			       sysvec_apic_timer_interrupt+0x6c/0x80
			       asm_sysvec_apic_timer_interrupt+0x1a/0x20
			       clear_page_erms+0xb/0x10
			       alloc_pages_bulk_noprof+0x48d/0x690
			       __vmalloc_node_range_noprof+0x3ad/0x7c0
			       dup_task_struct+0x12a/0x2a0
			       copy_process+0x17a/0x1380
			       kernel_clone+0x97/0x340
			       kernel_thread+0xb8/0xe0
			       kthreadd+0x201/0x240
			       ret_from_fork+0x34/0x40
			       ret_from_fork_asm+0x11/0x20
	     INITIAL USE at:
	   }
	   ... key      at: [<ffffffff83183ea0>] console_owner_dep_map+0x0/0x28
	 -> (target_list_lock){....}-{3:3} ops: 3 {
	    INITIAL USE at:
			    lock_acquire+0xe6/0x240
			    _raw_spin_lock_irqsave+0x5a/0x90
			    init_netconsole+0x23b/0x360
			    do_one_initcall+0xee/0x310
			    do_initcall_level+0xa1/0x110
			    do_initcalls+0x43/0x70
			    kernel_init_freeable+0x17e/0x200
			    kernel_init+0x1a/0x130
			    ret_from_fork+0x34/0x40
			    ret_from_fork_asm+0x11/0x20
	  }
	  ... key      at: [<ffffffff8325b808>] target_list_lock+0x18/0x40
	  ... acquired at:
	    _raw_spin_lock_irqsave+0x5a/0x90
	    write_ext_msg+0x4e/0x3a0
	    console_flush_all+0x332/0x580
	    console_unlock+0x49/0x160
	    vprintk_emit+0x226/0x350
	    _printk+0x5d/0x80
	    register_console+0x2d0/0x350
	    init_netconsole+0x2a6/0x360
	    do_one_initcall+0xee/0x310
	    do_initcall_level+0xa1/0x110
	    do_initcalls+0x43/0x70
	    kernel_init_freeable+0x17e/0x200
	    kernel_init+0x1a/0x130
	    ret_from_fork+0x34/0x40
	    ret_from_fork_asm+0x11/0x20


	 the dependencies between the lock to be acquired
	  and HARDIRQ-irq-unsafe lock:
	 -> (_xmit_ETHER#2){+.-.}-{3:3} ops: 5 {
	    HARDIRQ-ON-W at:
			     lock_acquire+0xe6/0x240
			     _raw_spin_trylock+0x45/0x60
			     virtnet_poll+0xa2/0xe90
			     __napi_poll+0x28/0x210
			     net_rx_action+0x1de/0x3c0
			     handle_softirqs+0x187/0x460
			     do_softirq+0x68/0xc0
			     __local_bh_enable_ip+0xee/0x100
			     virtnet_open+0x1ad/0x320
			     __dev_open+0xdb/0x170
			     dev_open+0x30/0x90
			     netpoll_setup+0x188/0x420
			     init_netconsole+0x136/0x360
			     do_one_initcall+0xee/0x310
			     do_initcall_level+0xa1/0x110
			     do_initcalls+0x43/0x70
			     kernel_init_freeable+0x17e/0x200
			     kernel_init+0x1a/0x130
			     ret_from_fork+0x34/0x40
			     ret_from_fork_asm+0x11/0x20
	    IN-SOFTIRQ-W at:
			     lock_acquire+0xe6/0x240
			     _raw_spin_lock+0x30/0x40
			     virtnet_poll_tx+0x94/0x210
			     __napi_poll+0x28/0x210
			     net_rx_action+0x1de/0x3c0
			     handle_softirqs+0x187/0x460
			     do_softirq+0x68/0xc0
			     __local_bh_enable_ip+0xee/0x100
			     virtnet_open+0x89/0x320
			     __dev_open+0xdb/0x170
			     dev_open+0x30/0x90
			     netpoll_setup+0x188/0x420
			     init_netconsole+0x136/0x360
			     do_one_initcall+0xee/0x310
			     do_initcall_level+0xa1/0x110
			     do_initcalls+0x43/0x70
			     kernel_init_freeable+0x17e/0x200
			     kernel_init+0x1a/0x130
			     ret_from_fork+0x34/0x40
			     ret_from_fork_asm+0x11/0x20
	    INITIAL USE at:
			    lock_acquire+0xe6/0x240
			    _raw_spin_trylock+0x45/0x60
			    virtnet_poll+0xa2/0xe90
			    __napi_poll+0x28/0x210
			    net_rx_action+0x1de/0x3c0
			    handle_softirqs+0x187/0x460
			    do_softirq+0x68/0xc0
			    __local_bh_enable_ip+0xee/0x100
			    virtnet_open+0x1ad/0x320
			    __dev_open+0xdb/0x170
			    dev_open+0x30/0x90
			    netpoll_setup+0x188/0x420
			    init_netconsole+0x136/0x360
			    do_one_initcall+0xee/0x310
			    do_initcall_level+0xa1/0x110
			    do_initcalls+0x43/0x70
			    kernel_init_freeable+0x17e/0x200
			    kernel_init+0x1a/0x130
			    ret_from_fork+0x34/0x40
			    ret_from_fork_asm+0x11/0x20
	  }
	  ... key      at: [<ffffffff84a45430>] netdev_xmit_lock_key+0x10/0x390
	  ... acquired at:
	    _raw_spin_lock+0x30/0x40
	    virtnet_poll_tx+0x94/0x210
	    netpoll_poll_dev+0x15d/0x240
	    netpoll_send_skb+0x268/0x350
	    netpoll_send_udp+0x3f7/0x470
	    write_ext_msg+0xe2/0x3a0
	    console_flush_all+0x332/0x580
	    console_unlock+0x49/0x160
	    vprintk_emit+0x226/0x350
	    _printk+0x5d/0x80
	    register_console+0x2d0/0x350
	    init_netconsole+0x2a6/0x360
	    do_one_initcall+0xee/0x310
	    do_initcall_level+0xa1/0x110
	    do_initcalls+0x43/0x70
	    kernel_init_freeable+0x17e/0x200
	    kernel_init+0x1a/0x130
	    ret_from_fork+0x34/0x40
	    ret_from_fork_asm+0x11/0x20


	 stack backtrace:
	 CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.11.0-rc1-kbuilder-00044-g152e11f6df29 #47
	 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
	 Call Trace:
	  <TASK>
	  dump_stack_lvl+0x9f/0xf0
	  __lock_acquire+0x2cd0/0x2d10
	  ? virtnet_poll_tx+0x94/0x210
	  lock_acquire+0xe6/0x240
	  ? virtnet_poll_tx+0x94/0x210
	  ? lock_acquire+0xe6/0x240
	  ? down_trylock+0x12/0x30
	  _raw_spin_lock+0x30/0x40
	  ? virtnet_poll_tx+0x94/0x210
	  virtnet_poll_tx+0x94/0x210
	  netpoll_poll_dev+0x15d/0x240
	  netpoll_send_skb+0x268/0x350
	  netpoll_send_udp+0x3f7/0x470
	  write_ext_msg+0xe2/0x3a0
	  console_flush_all+0x332/0x580
	  ? console_flush_all+0x6a/0x580
	  console_unlock+0x49/0x160
	  ? __down_trylock_console_sem+0x9e/0xe0
	  vprintk_emit+0x226/0x350
	  _printk+0x5d/0x80
	  register_console+0x2d0/0x350
	  init_netconsole+0x2a6/0x360
	  ? option_setup+0x30/0x30
	  do_one_initcall+0xee/0x310
	  ? __lock_acquire+0xe4b/0x2d10
	  ? __lock_acquire+0xe4b/0x2d10
	  ? stack_depot_save_flags+0x60d/0x6c0
	  ? asm_sysvec_call_function+0x1a/0x20
	  ? parse_args+0x11d/0x420
	  ? parse_args+0x16b/0x420
	  do_initcall_level+0xa1/0x110
	  ? kernel_init+0x1a/0x130
	  do_initcalls+0x43/0x70
	  kernel_init_freeable+0x17e/0x200
	  ? rest_init+0x1f0/0x1f0
	  kernel_init+0x1a/0x130
	  ret_from_fork+0x34/0x40
	  ? rest_init+0x1f0/0x1f0
	  ret_from_fork_asm+0x11/0x20
	  </TASK>
	 printk: legacy console [netcon0] enabled
	 netconsole: network logging started
	 Unstable clock detected, switching default tracing clock to "global"
	 If you want to keep using the local clock, then add:
	   "trace_clock=local"
	 on the kernel command line
	 clk: Disabling unused clocks
	 Freeing unused decrypted memory: 2036K
	 Freeing unused kernel image (initmem) memory: 1884K
	 Write protecting the kernel read-only data: 26624k
	 Freeing unused kernel image (rodata/data gap) memory: 1976K
	 Run /init as init process
	   with arguments:
	     /init
	   with environment:
	     HOME=/
	     TERM=xterm-256color
	     virtme_hostname=virtme-ng
	     nr_open=2500000
	     virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0
	     virtme_console=ttyS0
	     virtme_stty_con=rows 45 cols 101 iutf8
	     biosdevname=0
	     virtme_chdir=home/leit/Devel/upstream
	 virtme initramfs: loading fuse.ko...
	 fuse: module verification failed: signature and/or required key missing - tainting kernel
	 fuse: init (API version 7.40)
	 virtme initramfs: loading virtiofs.ko...
	 virtme initramfs: mounting hostfs...
	 virtme initramfs: done; switching to real root
	 virtme-ng-init: /etc/tmpfiles.d/chef.conf:13: Line references path below legacy directory /var/run/, updating /var/run/ccache → /run/ccache; please update the tmpfiles.d/ drop-in file accordingly.
	 virtme-ng-init: setting up network device eth0
	 virtme-ng-init: WARNING: failed to run: "busybox" udhcpc -i eth0 -n -q -f -s /home/leit/venv/lib/python3.8/site-packages/virtme/guest/virtme-udhcpc-script
	 virtme-ng-init: Starting systemd-udevd version v255.5-1.4.hs+fb.el9
	 virtme-ng-init: triggering udev coldplug
	 input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
	 ACPI: button: Power Button [PWRF]
	 virtme-ng-init: waiting for udev to settle
	 Linux agpgart interface v0.103
	 virtme-ng-init: udev is done
	 virtme-ng-init: initialization done

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-03 15:41   ` Breno Leitao
@ 2024-10-04  9:08     ` Breno Leitao
  2024-10-04 10:49       ` Petr Mladek
  0 siblings, 1 reply; 9+ messages in thread
From: Breno Leitao @ 2024-10-04  9:08 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: gregkh, pmladek, mst, jasowang, xuanzhuo, kuba, virtualization,
	netdev, linux-kernel, vschneid, axboe

Hello Peter,

On Thu, Oct 03, 2024 at 08:41:53AM -0700, Breno Leitao wrote:
> > > Here is the full log, based on commit 7ec462100ef91 ("Merge tag
> > > 'pull-work.unaligned' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs")
> > 
> > This looks like the normal lockdep splat you get when the scheduler does
> > printk. I suspect you tripped a WARN, but since you only provided the
> > lockdep output and not the whole log, I cannot tell.
> 
> Thanks for the quick answer. I didn't see a warning before the lockdep
> splat, at least in the usual way I am familiar with. Let me past the
> full log below.
> 
> > There is a fix in:
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/urgent
> > 
> > that might, or might not help. I can't tell.
> 
> Thanks. I will try it soon.

I've just tested your branch "sched/urgent", and the problem is still
there. I've tested against:

	d4ac164bde7a ("sched/eevdf: Fix wakeup-preempt by checking cfs_rq->nr_running")

Here is the full log:

	 Linux version 6.12.0-rc1-kbuilder-virtme-00033-gd4ac164bde7a (leit@devvm32600.lla0.foo.com) (clang version 20.0.0git (https://github.com/llvm/llvm-project.git d0f67773b213383b6e1c9331fb00f2d4c14bfcb2), LLD 18.0.0) #50 SMP PREEMPT_DYNAMIC Fri Oct  4 01:54:44 PDT 2024
	 Command line: virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 console=hvc0 earlyprintk=serial,ttyS0,115200 virtme_console=ttyS0 psmouse.proto=exps "virtme_stty_con=rows 43 cols 235 iutf8" TERM=xterm-256color virtme.dhcp net.ifnames=0 biosdevname=0 virtme_chdir=home/leit/Devel/upstream netconsole=+6666@2401:db00:3120:21a9:face:0000:0270:0000/eth0,1514@2803:6080:a89c:a670::1/02:90:fb:66:aa:e5 init=/home/leit/venv/lib/python3.8/site-packages/virtme/guest/bin/virtme-ng-init
	 BIOS-provided physical RAM map:
	 BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
	 BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
	 BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
	 BIOS-e820: [mem 0x0000000000100000-0x00000000bffdffff] usable
	 BIOS-e820: [mem 0x00000000bffe0000-0x00000000bfffffff] reserved
	 BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
	 BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
	 BIOS-e820: [mem 0x0000000100000000-0x00000002bfffffff] usable
	 BIOS-e820: [mem 0x000000fd00000000-0x000000ffffffffff] reserved
	 printk: legacy bootconsole [earlyser0] enabled
	 NX (Execute Disable) protection: active
	 APIC: Static calls initialized
	 SMBIOS 2.8 present.
	 DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
	 DMI: Memory slots populated: 1/1
	 e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
	 e820: remove [mem 0x000a0000-0x000fffff] usable
	 last_pfn = 0x2c0000 max_arch_pfn = 0x10000000000
	 MTRR map: 4 entries (3 fixed + 1 variable; max 19), built from 8 variable MTRRs
	 x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT
	 last_pfn = 0xbffe0 max_arch_pfn = 0x10000000000
	 found SMP MP-table at [mem 0x000f5470-0x000f547f]
	 RAMDISK: [mem 0xbf218000-0xbffdffff]
	 ACPI: Early table checksum verification disabled
	 ACPI: RSDP 0x00000000000F5270 000014 (v00 BOCHS )
	 ACPI: RSDT 0x00000000BFFE2C55 000038 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: FACP 0x00000000BFFE2889 000074 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: DSDT 0x00000000BFFE0040 002849 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: FACS 0x00000000BFFE0000 000040
	 ACPI: APIC 0x00000000BFFE28FD 000110 (v03 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: HPET 0x00000000BFFE2A0D 000038 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: SRAT 0x00000000BFFE2A45 0001E8 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: WAET 0x00000000BFFE2C2D 000028 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
	 ACPI: Reserving FACP table memory at [mem 0xbffe2889-0xbffe28fc]
	 ACPI: Reserving DSDT table memory at [mem 0xbffe0040-0xbffe2888]
	 ACPI: Reserving FACS table memory at [mem 0xbffe0000-0xbffe003f]
	 ACPI: Reserving APIC table memory at [mem 0xbffe28fd-0xbffe2a0c]
	 ACPI: Reserving HPET table memory at [mem 0xbffe2a0d-0xbffe2a44]
	 ACPI: Reserving SRAT table memory at [mem 0xbffe2a45-0xbffe2c2c]
	 ACPI: Reserving WAET table memory at [mem 0xbffe2c2d-0xbffe2c54]
	 ACPI: SRAT: Node 0 PXM 0 [mem 0x00000000-0x0009ffff]
	 ACPI: SRAT: Node 0 PXM 0 [mem 0x00100000-0xbfffffff]
	 ACPI: SRAT: Node 0 PXM 0 [mem 0x100000000-0x2bfffffff]
	 NUMA: Node 0 [mem 0x00001000-0x0009ffff] + [mem 0x00100000-0xbfffffff] -> [mem 0x00001000-0xbfffffff]
	 NUMA: Node 0 [mem 0x00001000-0xbfffffff] + [mem 0x100000000-0x2bfffffff] -> [mem 0x00001000-0x2bfffffff]
	 NODE_DATA(0) allocated [mem 0x2bebf6ac0-0x2bebfbdff]
	 Zone ranges:
	   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
	   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
	   Normal   [mem 0x0000000100000000-0x00000002bfffffff]
	   Device   empty
	 Movable zone start for each node
	 Early memory node ranges
	   node   0: [mem 0x0000000000001000-0x000000000009efff]
	   node   0: [mem 0x0000000000100000-0x00000000bffdffff]
	   node   0: [mem 0x0000000100000000-0x00000002bfffffff]
	 Initmem setup node 0 [mem 0x0000000000001000-0x00000002bfffffff]
	 On node 0, zone DMA: 1 pages in unavailable ranges
	 On node 0, zone DMA: 97 pages in unavailable ranges
	 On node 0, zone Normal: 32 pages in unavailable ranges
	 kasan: KernelAddressSanitizer initialized
	 ACPI: PM-Timer IO Port: 0x608
	 ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
	 IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
	 ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
	 ACPI: Using ACPI (MADT) for SMP configuration information
	 ACPI: HPET id: 0x8086a201 base: 0xfed00000
	 TSC deadline timer available
	 CPU topo: Max. logical packages:   1
	 CPU topo: Max. logical dies:       1
	 CPU topo: Max. dies per package:   1
	 CPU topo: Max. threads per core:   1
	 CPU topo: Num. cores per package:    20
	 CPU topo: Num. threads per package:  20
	 CPU topo: Allowing 20 present CPUs plus 0 hotplug CPUs
	 [mem 0xc0000000-0xfeffbfff] available for PCI devices
	 clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
	 setup_percpu: NR_CPUS:512 nr_cpumask_bits:20 nr_cpu_ids:20 nr_node_ids:1
	 percpu: Embedded 89 pages/cpu s326416 r8192 d29936 u524288
	 pcpu-alloc: s326416 r8192 d29936 u524288 alloc=1*2097152
	 pcpu-alloc: [0] 00 01 02 03 [0] 04 05 06 07
	 pcpu-alloc: [0] 08 09 10 11 [0] 12 13 14 15
	 pcpu-alloc: [0] 16 17 18 19
	 Kernel command line: virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 console=hvc0 earlyprintk=serial,ttyS0,115200 virtme_console=ttyS0 psmouse.proto=exps "virtme_stty_con=rows 43 cols 235 iutf8" TERM=xterm-256color virtme.dhcp net.ifnames=0 biosdevname=0 virtme_chdir=home/leit/Devel/upstream netconsole=+6666@2401:db00:3120:21a9:face:0000:0270:0000/eth0,1514@2803:6080:a89c:a670::1/02:90:fb:66:aa:e5 init=/home/leit/venv/lib/python3.8/site-packages/virtme/guest/bin/virtme-ng-init
	 Unknown kernel command line parameters "virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 virtme_console=ttyS0 virtme_stty_con=rows 43 cols 235 iutf8 biosdevname=0 virtme_chdir=home/leit/Devel/upstream", will be passed to user space.
	 random: crng init done
	 Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
	 Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
	 Fallback order for Node 0: 0
	 Built 1 zonelists, mobility grouping on.  Total pages: 2621310
	 Policy zone: Normal
	 mem auto-init: stack:off, heap alloc:off, heap free:off
	 stackdepot: allocating hash table via alloc_large_system_hash
	 stackdepot hash table entries: 1048576 (order: 12, 16777216 bytes, linear)
	 software IO TLB: area num 32.
	 SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=20, Nodes=1
	 allocated 20971520 bytes of page_ext
	 ftrace: allocating 58899 entries in 231 pages
	 ftrace: allocated 231 pages with 6 groups
	 Dynamic Preempt: none
	 Running RCU self tests
	 Running RCU synchronous self tests
	 rcu: Preemptible hierarchical RCU implementation.
	 rcu: 	RCU event tracing is enabled.
	 rcu: 	RCU lockdep checking is enabled.
	 rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=20.
	 rcu: 	RCU callback double-/use-after-free debug is enabled.
	 rcu: 	RCU debug extended QS entry/exit.
		Trampoline variant of Tasks RCU enabled.
		Rude variant of Tasks RCU enabled.
		Tracing variant of Tasks RCU enabled.
	 rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
	 rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=20
	 Running RCU synchronous self tests
	 RCU Tasks: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
	 RCU Tasks Rude: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
	 RCU Tasks Trace: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
	 NR_IRQS: 33024, nr_irqs: 584, preallocated irqs: 16
	 rcu: srcu_init: Setting srcu_struct sizes based on contention.
	 kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
	 Console: colour *CGA 80x25
	 Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
	 ... MAX_LOCKDEP_SUBCLASSES:  8
	 ... MAX_LOCK_DEPTH:          48
	 ... MAX_LOCKDEP_KEYS:        8192
	 ... CLASSHASH_SIZE:          4096
	 ... MAX_LOCKDEP_ENTRIES:     1048576
	 ... MAX_LOCKDEP_CHAINS:      1048576
	 ... CHAINHASH_SIZE:          524288
	  memory used by lock dependency info: 106625 kB
	  memory used for stack traces: 4224 kB
	  per task-struct memory footprint: 1920 bytes
	 ACPI: Core revision 20240827
	 clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns
	 APIC: Switch to symmetric I/O mode setup
	 ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
	 tsc: Unable to calibrate against PIT
	 tsc: using HPET reference calibration
	 tsc: Detected 1199.814 MHz processor
	 clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x114b6c033ac, max_idle_ns: 440795260201 ns
	 Calibrating delay loop (skipped), value calculated using timer frequency.. 2399.62 BogoMIPS (lpj=1199814)
	 x86/cpu: User Mode Instruction Prevention (UMIP) activated
	 numa_add_cpu cpu 0 node 0: mask now 0
	 Last level iTLB entries: 4KB 512, 2MB 255, 4MB 127
	 Last level dTLB entries: 4KB 512, 2MB 255, 4MB 127, 1GB 0
	 Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
	 Spectre V2 : Mitigation: Retpolines
	 Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
	 Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
	 Spectre V2 : Enabling Restricted Speculation for firmware calls
	 Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
	 Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
	 Speculative Return Stack Overflow: IBPB-extending microcode not applied!
	 Speculative Return Stack Overflow: WARNING: See https://kernel.org/doc/html/latest/admin-guide/hw-vuln/srso.html for mitigation options.
	 Speculative Return Stack Overflow: Vulnerable: Safe RET, no microcode
	 x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
	 x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
	 x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
	 x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask'
	 x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256'
	 x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256'
	 x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers'
	 x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
	 x86/fpu: xstate_offset[5]:  832, xstate_sizes[5]:   64
	 x86/fpu: xstate_offset[6]:  896, xstate_sizes[6]:  512
	 x86/fpu: xstate_offset[7]: 1408, xstate_sizes[7]: 1024
	 x86/fpu: xstate_offset[9]: 2432, xstate_sizes[9]:    8
	 x86/fpu: Enabled xstate features 0x2e7, context size is 2440 bytes, using 'compacted' format.
	 debug: unmapping init [mem 0xffffffff883ea000-0xffffffff883f6fff]
	 pid_max: default: 32768 minimum: 301
	 LSM: initializing lsm=capability,bpf,ima
	 LSM support for eBPF active
	 Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
	 Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
	 Running RCU synchronous self tests
	 Running RCU synchronous self tests
	 smpboot: CPU0: AMD EPYC-Milan Processor (family: 0x19, model: 0x1, stepping: 0x1)
	 psi: inconsistent task state! task=1:swapper/0 cpu=0 psi_flags=4 clear=0 set=4
	 Running RCU Tasks wait API self tests
	 Running RCU Tasks Rude wait API self tests
	 Running RCU Tasks Trace wait API self tests
	 Performance Events: Fam17h+ core perfctr, AMD PMU driver.
	 ... version:                0
	 ... bit width:              48
	 ... generic registers:      6
	 ... value mask:             0000ffffffffffff
	 ... max period:             00007fffffffffff
	 ... fixed-purpose events:   0
	 ... event mask:             000000000000003f
	 Callback from call_rcu_tasks_trace() invoked.
	 signal: max sigframe size: 2976
	 rcu: Hierarchical SRCU implementation.
	 rcu: 	Max phase no-delay instances is 400.
	 Timer migration: 2 hierarchy levels; 8 children per group; 2 crossnode level
	 smp: Bringing up secondary CPUs ...
	 smpboot: x86: Booting SMP configuration:
	 .... node  #0, CPUs:        #1  #2  #3  #4  #5  #6  #7  #8  #9 #10 #11 #12 #13 #14 #15 #16
	 Callback from call_rcu_tasks() invoked.
	  #17 #18 #19
	 numa_add_cpu cpu 1 node 0: mask now 0-1
	 numa_add_cpu cpu 2 node 0: mask now 0-2
	 numa_add_cpu cpu 3 node 0: mask now 0-3
	 numa_add_cpu cpu 4 node 0: mask now 0-4
	 numa_add_cpu cpu 5 node 0: mask now 0-5
	 numa_add_cpu cpu 6 node 0: mask now 0-6
	 numa_add_cpu cpu 7 node 0: mask now 0-7
	 numa_add_cpu cpu 8 node 0: mask now 0-8
	 numa_add_cpu cpu 9 node 0: mask now 0-9
	 numa_add_cpu cpu 10 node 0: mask now 0-10
	 numa_add_cpu cpu 11 node 0: mask now 0-11
	 numa_add_cpu cpu 12 node 0: mask now 0-12
	 numa_add_cpu cpu 13 node 0: mask now 0-13
	 numa_add_cpu cpu 14 node 0: mask now 0-14
	 numa_add_cpu cpu 15 node 0: mask now 0-15
	 numa_add_cpu cpu 16 node 0: mask now 0-16
	 numa_add_cpu cpu 17 node 0: mask now 0-17
	 numa_add_cpu cpu 18 node 0: mask now 0-18
	 numa_add_cpu cpu 19 node 0: mask now 0-19
	 smp: Brought up 1 node, 20 CPUs
	 smpboot: Total of 20 processors activated (49565.36 BogoMIPS)
	 Memory: 8470476K/10485240K available (57344K kernel code, 19394K rwdata, 22616K rodata, 7488K init, 167972K bss, 1964852K reserved, 0K cma-reserved)
	 devtmpfs: initialized
	 x86/mm: Memory block size: 128MB
	 Running RCU synchronous self tests
	 Running RCU synchronous self tests
	 DMA-API: preallocated 65536 debug entries
	 DMA-API: debugging enabled by kernel config
	 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
	 futex hash table entries: 8192 (order: 8, 1048576 bytes, linear)
	 pinctrl core: initialized pinctrl subsystem
	 NET: Registered PF_NETLINK/PF_ROUTE protocol family
	 audit: initializing netlink subsys (disabled)
	 audit: type=2000 audit(1728032147.986:1): state=initialized audit_enabled=0 res=1
	 thermal_sys: Registered thermal governor 'step_wise'
	 thermal_sys: Registered thermal governor 'user_space'
	 cpuidle: using governor menu
	 PCI: Using configuration type 1 for base access
	 PCI: Using configuration type 1 for extended access
	 kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
	 HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
	 HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
	 HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
	 HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
	 cryptd: max_cpu_qlen set to 1000
	 raid6: avx512x4 gen() 33291 MB/s
	 raid6: avx512x2 gen() 32437 MB/s
	 raid6: avx512x1 gen() 25182 MB/s
	 raid6: avx2x4   gen() 22536 MB/s
	 raid6: avx2x2   gen() 19688 MB/s
	 raid6: avx2x1   gen() 15251 MB/s
	 raid6: using algorithm avx512x4 gen() 33291 MB/s
	 raid6: .... xor() 6618 MB/s, rmw enabled
	 raid6: using avx512x2 recovery algorithm
	 ACPI: Added _OSI(Module Device)
	 ACPI: Added _OSI(Processor Device)
	 ACPI: Added _OSI(3.0 _SCP Extensions)
	 ACPI: Added _OSI(Processor Aggregator Device)
	 ACPI: 1 ACPI AML tables successfully acquired and loaded
	 ACPI: Interpreter enabled
	 ACPI: PM: (supports S0 S3 S5)
	 ACPI: Using IOAPIC for interrupt routing
	 PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
	 PCI: Using E820 reservations for host bridge windows
	 ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
	 acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
	 PCI host bridge to bus 0000:00
	 pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
	 pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
	 pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
	 pci_bus 0000:00: root bus resource [mem 0xc0000000-0xfebfffff window]
	 pci_bus 0000:00: root bus resource [mem 0xc000000000-0xc07fffffff window]
	 pci_bus 0000:00: root bus resource [bus 00-ff]
	 pci 0000:00:00.0: [8086:1237] type 00 class 0x060000 conventional PCI endpoint
	 pci 0000:00:01.0: [8086:7000] type 00 class 0x060100 conventional PCI endpoint
	 pci 0000:00:01.1: [8086:7010] type 00 class 0x010180 conventional PCI endpoint
	 pci 0000:00:01.1: BAR 4 [io  0xc060-0xc06f]
	 pci 0000:00:01.1: BAR 0 [io  0x01f0-0x01f7]: legacy IDE quirk
	 pci 0000:00:01.1: BAR 1 [io  0x03f6]: legacy IDE quirk
	 pci 0000:00:01.1: BAR 2 [io  0x0170-0x0177]: legacy IDE quirk
	 pci 0000:00:01.1: BAR 3 [io  0x0376]: legacy IDE quirk
	 pci 0000:00:01.3: [8086:7113] type 00 class 0x068000 conventional PCI endpoint
	 pci 0000:00:01.3: quirk: [io  0x0600-0x063f] claimed by PIIX4 ACPI
	 pci 0000:00:01.3: quirk: [io  0x0700-0x070f] claimed by PIIX4 SMB
	 pci 0000:00:02.0: [1af4:105a] type 00 class 0x018000 conventional PCI endpoint
	 pci 0000:00:02.0: BAR 1 [mem 0xfebc0000-0xfebc0fff]
	 pci 0000:00:02.0: BAR 4 [mem 0xc000000000-0xc000003fff 64bit pref]
	 pci 0000:00:03.0: [8086:25ab] type 00 class 0x088000 conventional PCI endpoint
	 pci 0000:00:03.0: BAR 0 [mem 0xfebc1000-0xfebc100f]
	 pci 0000:00:04.0: [1af4:1003] type 00 class 0x078000 conventional PCI endpoint
	 pci 0000:00:04.0: BAR 0 [io  0xc000-0xc03f]
	 pci 0000:00:04.0: BAR 1 [mem 0xfebc2000-0xfebc2fff]
	 pci 0000:00:04.0: BAR 4 [mem 0xc000004000-0xc000007fff 64bit pref]
	 pci 0000:00:05.0: [1af4:1000] type 00 class 0x020000 conventional PCI endpoint
	 pci 0000:00:05.0: BAR 0 [io  0xc040-0xc05f]
	 pci 0000:00:05.0: BAR 1 [mem 0xfebc3000-0xfebc3fff]
	 pci 0000:00:05.0: BAR 4 [mem 0xc000008000-0xc00000bfff 64bit pref]
	 pci 0000:00:05.0: ROM [mem 0xfeb80000-0xfebbffff pref]
	 ACPI: PCI: Interrupt link LNKA configured for IRQ 10
	 ACPI: PCI: Interrupt link LNKB configured for IRQ 10
	 ACPI: PCI: Interrupt link LNKC configured for IRQ 11
	 ACPI: PCI: Interrupt link LNKD configured for IRQ 11
	 ACPI: PCI: Interrupt link LNKS configured for IRQ 9
	 iommu: Default domain type: Translated
	 iommu: DMA domain TLB invalidation policy: lazy mode
	 SCSI subsystem initialized
	 libata version 3.00 loaded.
	 ACPI: bus type USB registered
	 usbcore: registered new interface driver usbfs
	 usbcore: registered new interface driver hub
	 usbcore: registered new device driver usb
	 pps_core: LinuxPPS API ver. 1 registered
	 pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
	 PTP clock support registered
	 EDAC MC: Ver: 3.0.0
	 PCI: Using ACPI for IRQ routing
	 PCI: pci_cache_line_size set to 64 bytes
	 e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
	 e820: reserve RAM buffer [mem 0xbffe0000-0xbfffffff]
	 clocksource: Switched to clocksource tsc-early
	 VFS: Disk quotas dquot_6.6.0
	 VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
	 pnp: PnP ACPI init
	 pnp 00:02: [dma 2]
	 pnp: PnP ACPI: found 5 devices
	 clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
	 NET: Registered PF_INET protocol family
	 IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
	 tcp_listen_portaddr_hash hash table entries: 8192 (order: 7, 589824 bytes, linear)
	 Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
	 TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
	 TCP bind hash table entries: 65536 (order: 11, 9437184 bytes, vmalloc hugepage)
	 TCP: Hash tables configured (established 131072 bind 65536)
	 MPTCP token hash table entries: 16384 (order: 8, 1441792 bytes, linear)
	 UDP hash table entries: 8192 (order: 8, 1310720 bytes, linear)
	 UDP-Lite hash table entries: 8192 (order: 8, 1310720 bytes, linear)
	 NET: Registered PF_UNIX/PF_LOCAL protocol family
	 NET: Registered PF_XDP protocol family
	 pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
	 pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
	 pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
	 pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfebfffff window]
	 pci_bus 0000:00: resource 8 [mem 0xc000000000-0xc07fffffff window]
	 pci 0000:00:01.0: PIIX3: Enabling Passive Release
	 pci 0000:00:00.0: Limiting direct PCI/PCI transfers
	 PCI: CLS 0 bytes, default 64
	 PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
	 software IO TLB: mapped [mem 0x00000000bb218000-0x00000000bf218000] (64MB)
	 Trying to unpack rootfs image as initramfs...
	 Initialise system trusted keyrings
	 workingset: timestamp_bits=40 max_order=22 bucket_order=0
	 fuse: init (API version 7.41)
	 SGI XFS with ACLs, security attributes, realtime, verbose warnings, quota, no debug enabled
	 NET: Registered PF_ALG protocol family
	 xor: automatically using best checksumming function   avx
	 Key type asymmetric registered
	 Asymmetric key parser 'x509' registered
	 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
	 io scheduler mq-deadline registered
	 io scheduler kyber registered
	 debug: unmapping init [mem 0xff110000bf218000-0xff110000bffdffff]
	 ACPI: _SB_.LNKB: Enabled at IRQ 10
	 virtiofs virtio0: virtio_fs_setup_dax: No cache capability
	 ACPI: _SB_.LNKD: Enabled at IRQ 11
	 ACPI: _SB_.LNKA: Enabled at IRQ 10
	 Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
	 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
	 tsc: Refined TSC clocksource calibration: 1199.960 MHz
	 clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x114bf5f8779, max_idle_ns: 440795246166 ns
	 clocksource: Switched to clocksource tsc
	 printk: legacy console [hvc0] enabled
	 printk: legacy bootconsole [earlyser0] disabled
	 wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
	 wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
	 igb: Intel(R) Gigabit Ethernet Network Driver
	 igb: Copyright (c) 2007-2014 Intel Corporation.
	 ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver
	 ixgbe: Copyright (c) 1999-2016 Intel Corporation.
	 usbcore: registered new interface driver ark3116
	 usbserial: USB Serial support registered for ark3116
	 usbcore: registered new interface driver pl2303
	 usbserial: USB Serial support registered for pl2303
	 i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
	 serio: i8042 KBD port at 0x60,0x64 irq 1
	 serio: i8042 AUX port at 0x60,0x64 irq 12
	 rtc_cmos 00:04: RTC can wake from S4
	 rtc_cmos 00:04: registered as rtc0
	 rtc_cmos 00:04: setting system clock to 2024-10-04T08:55:52 UTC (1728032152)
	 rtc_cmos 00:04: alarms up to one day, y3k, 242 bytes nvram, hpet irqs
	 input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
	 i2c_dev: i2c /dev entries driver
	 device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
	 device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@lists.linux.dev
	 amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled
	 usbcore: registered new interface driver usbhid
	 usbhid: USB HID core driver
	 Initializing XFRM netlink socket
	 NET: Registered PF_INET6 protocol family
	 Segment Routing with IPv6
	 In-situ OAM (IOAM) with IPv6
	 NET: Registered PF_PACKET protocol family
	 Key type dns_resolver registered
	 NET: Registered PF_VSOCK protocol family
	 start plist test
	 end plist test
	 IPI shorthand broadcast: enabled
	 sched_clock: Marking stable (6385031761, -10224835)->(6687265139, -312458213)
	 registered taskstats version 1
	 Loading compiled-in X.509 certificates
	 virtme initramfs: initramfs does not have module crypto-pkcs1pad(rsa,sha512)
	 virtme initramfs: initramfs does not have module crypto-pkcs1pad(rsa,sha512)-all
	 Loaded X.509 cert 'Build time autogenerated kernel key: 1a58da0881b870ef3decd7cf414d45e41b0e363a'
	 Demotion targets for Node 0: null
	 kmemleak: Automatic memory scanning thread started
	 kmemleak: Kernel memory leak detector initialized (mem pool available: 197817)
	 page_owner is disabled
	 Btrfs loaded, assert=on, zoned=no, fsverity=yes
	 ima: No TPM chip found, activating TPM-bypass!
	 ima: Allocated hash algorithm: sha256
	 ima: No architecture policies found
	 netpoll: netconsole: local port 6666
	 netpoll: netconsole: local IPv6 address 2401:db00:3120:21a9:face:0:270:0
	 netpoll: netconsole: interface 'eth0'
	 netpoll: netconsole: remote port 1514
	 netpoll: netconsole: remote IPv6 address 2803:6080:a89c:a670::1
	 netpoll: netconsole: remote ethernet address 02:90:fb:66:aa:e5
	 netpoll: netconsole: device eth0 not up yet, forcing it
	 printk: legacy console [netcon_ext0] enabled

	 =====================================================
	 WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
	 6.12.0-rc1-kbuilder-virtme-00033-gd4ac164bde7a #50 Not tainted
	 -----------------------------------------------------
	 swapper/0/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
	 ff1100010a260518 (_xmit_ETHER#2){+.-.}-{2:2}, at: virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 

	and this task is already holding:
	 ffffffff86f2b5b8 (target_list_lock){....}-{2:2}, at: write_ext_msg (drivers/net/netconsole.c:?) 
	 which would create a new lock dependency:
	  (target_list_lock){....}-{2:2} -> (_xmit_ETHER#2){+.-.}-{2:2}

	but this new dependency connects a HARDIRQ-irq-safe lock:
	  (console_owner){-...}-{0:0}

	... which became HARDIRQ-irq-safe at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 console_flush_all (kernel/printk/printk.c:1905 kernel/printk/printk.c:3086 kernel/printk/printk.c:3180) 
	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	 wake_up_klogd_work_func (kernel/printk/printk.c:4466) 
	 irq_work_single (kernel/irq_work.c:222) 
	 irq_work_tick (kernel/irq_work.c:? kernel/irq_work.c:277) 
	 update_process_times (kernel/time/timer.c:2524) 
	 tick_handle_periodic (kernel/time/tick-common.c:120) 
	 __sysvec_apic_timer_interrupt (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1044) 
	 sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1037 arch/x86/kernel/apic/apic.c:1037) 
	 asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
	 memset (arch/x86/lib/memset_64.S:38) 
	 __unwind_start (arch/x86/kernel/unwind_orc.c:?) 
	 arch_stack_walk (./arch/x86/include/asm/unwind.h:50 arch/x86/kernel/stacktrace.c:24) 
	 stack_trace_save (kernel/stacktrace.c:123) 
	 kasan_save_stack (mm/kasan/common.c:48) 
	 __kasan_record_aux_stack (mm/kasan/generic.c:541) 
	 call_rcu (./arch/x86/include/asm/irqflags.h:26 ./arch/x86/include/asm/irqflags.h:87 ./arch/x86/include/asm/irqflags.h:123 kernel/rcu/tree.c:3087 kernel/rcu/tree.c:3190) 
	 kfree (mm/slub.c:2271 mm/slub.c:4580 mm/slub.c:4728) 
	 __kthread_create_on_node (kernel/kthread.c:479) 
	 __kthread_create_worker (kernel/kthread.c:882) 
	 kthread_create_worker (kernel/kthread.c:919) 
	 wq_cpu_intensive_thresh_init (kernel/workqueue.c:7817) 
	 workqueue_init (kernel/workqueue.c:?) 
	 kernel_init_freeable (init/main.c:1566) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 

	to a HARDIRQ-irq-unsafe lock:
	  (_xmit_ETHER#2){+.-.}-{2:2}

	... which became HARDIRQ-irq-unsafe at:
	 ...
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 _raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
	 virtnet_poll (./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
	 __napi_poll (net/core/dev.c:6771) 
	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962) 
	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	 do_softirq (kernel/softirq.c:455) 
	 __local_bh_enable_ip (kernel/softirq.c:?) 
	 virtnet_open (./include/linux/bottom_half.h:? drivers/net/virtio_net.c:2619 drivers/net/virtio_net.c:2876 drivers/net/virtio_net.c:2925) 
	 __dev_open (net/core/dev.c:1476) 
	 dev_open (net/core/dev.c:1513) 
	 netpoll_setup (net/core/netpoll.c:701) 
	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	 do_one_initcall (init/main.c:1269) 
	 do_initcall_level (init/main.c:1330) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 

	other info that might help us debug this:

	 Chain exists of:
	console_owner --> target_list_lock --> _xmit_ETHER#2

	  Possible interrupt unsafe locking scenario:

		CPU0                    CPU1
		----                    ----
	   lock(_xmit_ETHER#2);
					local_irq_disable();
					lock(console_owner);
					lock(target_list_lock);
	   <Interrupt>
	     lock(console_owner);

	*** DEADLOCK ***

	 6 locks held by swapper/0/1:
	 #0: ffffffff861afda8 (console_mutex){+.+.}-{3:3}, at: register_console (kernel/printk/printk.c:113 kernel/printk/printk.c:3933) 
	 #1: ffffffff861b0400 (console_lock){+.+.}-{0:0}, at: _printk (kernel/printk/printk.c:2435) 
	 #2: ffffffff861afe10 (console_srcu){....}-{0:0}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	 #3: ffffffff861b03a0 (console_owner){-...}-{0:0}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	 #4: ffffffff86930cc0 (printk_legacy_map-wait-type-override){....}-{3:3}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	 #5: ffffffff86f2b5b8 (target_list_lock){....}-{2:2}, at: write_ext_msg (drivers/net/netconsole.c:?) 

	the dependencies between HARDIRQ-irq-safe lock and the holding lock:
	  -> (console_owner){-...}-{0:0} ops: 1984 {
	     IN-HARDIRQ-W at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 console_flush_all (kernel/printk/printk.c:1905 kernel/printk/printk.c:3086 kernel/printk/printk.c:3180) 
	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	 wake_up_klogd_work_func (kernel/printk/printk.c:4466) 
	 irq_work_single (kernel/irq_work.c:222) 
	 irq_work_tick (kernel/irq_work.c:? kernel/irq_work.c:277) 
	 update_process_times (kernel/time/timer.c:2524) 
	 tick_handle_periodic (kernel/time/tick-common.c:120) 
	 __sysvec_apic_timer_interrupt (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1044) 
	 sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1037 arch/x86/kernel/apic/apic.c:1037) 
	 asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
	 memset (arch/x86/lib/memset_64.S:38) 
	 __unwind_start (arch/x86/kernel/unwind_orc.c:?) 
	 arch_stack_walk (./arch/x86/include/asm/unwind.h:50 arch/x86/kernel/stacktrace.c:24) 
	 stack_trace_save (kernel/stacktrace.c:123) 
	 kasan_save_stack (mm/kasan/common.c:48) 
	 __kasan_record_aux_stack (mm/kasan/generic.c:541) 
	 call_rcu (./arch/x86/include/asm/irqflags.h:26 ./arch/x86/include/asm/irqflags.h:87 ./arch/x86/include/asm/irqflags.h:123 kernel/rcu/tree.c:3087 kernel/rcu/tree.c:3190) 
	 kfree (mm/slub.c:2271 mm/slub.c:4580 mm/slub.c:4728) 
	 __kthread_create_on_node (kernel/kthread.c:479) 
	 __kthread_create_worker (kernel/kthread.c:882) 
	 kthread_create_worker (kernel/kthread.c:919) 
	 wq_cpu_intensive_thresh_init (kernel/workqueue.c:7817) 
	 workqueue_init (kernel/workqueue.c:?) 
	 kernel_init_freeable (init/main.c:1566) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	     INITIAL USE at:
	   }
	 ... key at: console_owner_dep_map+0x0/0x60 
	 -> (target_list_lock){....}-{2:2} ops: 3 {
	    INITIAL USE at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 _raw_spin_lock_irqsave (./include/linux/spinlock_api_smp.h:110 kernel/locking/spinlock.c:162) 
	 init_netconsole (drivers/net/netconsole.c:1327) 
	 do_one_initcall (init/main.c:1269) 
	 do_initcall_level (init/main.c:1330) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	  }
	 ... key at: target_list_lock+0x18/0x60 
	  ... acquired at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 _raw_spin_lock_irqsave (./include/linux/spinlock_api_smp.h:110 kernel/locking/spinlock.c:162) 
	 write_ext_msg (drivers/net/netconsole.c:?) 
	 console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	 vprintk_emit (kernel/printk/printk.c:?) 
	 _printk (kernel/printk/printk.c:2435) 
	 register_console (kernel/printk/printk.c:4070) 
	 init_netconsole (drivers/net/netconsole.c:1344) 
	 do_one_initcall (init/main.c:1269) 
	 do_initcall_level (init/main.c:1330) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 


	the dependencies between the lock to be acquired
	  and HARDIRQ-irq-unsafe lock:
	 -> (_xmit_ETHER#2){+.-.}-{2:2} ops: 7 {
	    HARDIRQ-ON-W at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 _raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
	 virtnet_poll (./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
	 __napi_poll (net/core/dev.c:6771) 
	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962) 
	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	 do_softirq (kernel/softirq.c:455) 
	 __local_bh_enable_ip (kernel/softirq.c:?) 
	 virtnet_open (./include/linux/bottom_half.h:? drivers/net/virtio_net.c:2619 drivers/net/virtio_net.c:2876 drivers/net/virtio_net.c:2925) 
	 __dev_open (net/core/dev.c:1476) 
	 dev_open (net/core/dev.c:1513) 
	 netpoll_setup (net/core/netpoll.c:701) 
	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	 do_one_initcall (init/main.c:1269) 
	 do_initcall_level (init/main.c:1330) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	    IN-SOFTIRQ-W at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 _raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
	 virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	 __napi_poll (net/core/dev.c:6771) 
	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962) 
	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	 do_softirq (kernel/softirq.c:455) 
	 __local_bh_enable_ip (kernel/softirq.c:?) 
	 virtnet_open (drivers/net/virtio_net.c:2637 drivers/net/virtio_net.c:2877 drivers/net/virtio_net.c:2925) 
	 __dev_open (net/core/dev.c:1476) 
	 dev_open (net/core/dev.c:1513) 
	 netpoll_setup (net/core/netpoll.c:701) 
	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	 do_one_initcall (init/main.c:1269) 
	 do_initcall_level (init/main.c:1330) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	    INITIAL USE at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 _raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
	 virtnet_poll (./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
	 __napi_poll (net/core/dev.c:6771) 
	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962) 
	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
	 do_softirq (kernel/softirq.c:455) 
	 __local_bh_enable_ip (kernel/softirq.c:?) 
	 virtnet_open (./include/linux/bottom_half.h:? drivers/net/virtio_net.c:2619 drivers/net/virtio_net.c:2876 drivers/net/virtio_net.c:2925) 
	 __dev_open (net/core/dev.c:1476) 
	 dev_open (net/core/dev.c:1513) 
	 netpoll_setup (net/core/netpoll.c:701) 
	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
	 do_one_initcall (init/main.c:1269) 
	 do_initcall_level (init/main.c:1330) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	  }
	 ... key at: netdev_xmit_lock_key+0x10/0x480 
	  ... acquired at:
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 _raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
	 virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	 netpoll_poll_dev (net/core/netpoll.c:167 net/core/netpoll.c:180 net/core/netpoll.c:210) 
	 netpoll_send_skb (net/core/netpoll.c:360 net/core/netpoll.c:386) 
	 netpoll_send_udp (net/core/netpoll.c:494) 
	 write_ext_msg (drivers/net/netconsole.c:?) 
	 console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	 vprintk_emit (kernel/printk/printk.c:?) 
	 _printk (kernel/printk/printk.c:2435) 
	 register_console (kernel/printk/printk.c:4070) 
	 init_netconsole (drivers/net/netconsole.c:1344) 
	 do_one_initcall (init/main.c:1269) 
	 do_initcall_level (init/main.c:1330) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 


	stack backtrace:
	 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
	 Call Trace:
	  <TASK>
	 dump_stack_lvl (lib/dump_stack.c:123) 
	 validate_chain (kernel/locking/lockdep.c:? kernel/locking/lockdep.c:2888 kernel/locking/lockdep.c:3165 kernel/locking/lockdep.c:3280 kernel/locking/lockdep.c:3904) 
	 __lock_acquire (kernel/locking/lockdep.c:?) 
	 lock_acquire (kernel/locking/lockdep.c:5825) 
	 ? virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	 _raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
	 ? virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	 virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 netpoll_poll_dev (net/core/netpoll.c:167 net/core/netpoll.c:180 net/core/netpoll.c:210) 
	 netpoll_send_skb (net/core/netpoll.c:360 net/core/netpoll.c:386) 
	 netpoll_send_udp (net/core/netpoll.c:494) 
	 write_ext_msg (drivers/net/netconsole.c:?) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 ? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	 ? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	 console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
	 ? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
	 vprintk_emit (kernel/printk/printk.c:?) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 _printk (kernel/printk/printk.c:2435) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 register_console (kernel/printk/printk.c:4070) 
	 ? configfs_register_subsystem (./include/linux/instrumented.h:96 ./include/linux/atomic/atomic-arch-fallback.h:2278 ./include/linux/atomic/atomic-instrumented.h:1384 fs/configfs/dir.c:174 fs/configfs/dir.c:1909) 
	 init_netconsole (drivers/net/netconsole.c:1344) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 do_one_initcall (init/main.c:1269) 
	 ? __pfx_init_netconsole (drivers/net/netconsole.c:1301) 
	 ? stack_depot_save_flags (lib/stackdepot.c:662) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 ? kasan_save_track (./arch/x86/include/asm/current.h:49 mm/kasan/common.c:60 mm/kasan/common.c:69) 
	 ? kasan_save_track (mm/kasan/common.c:48 mm/kasan/common.c:68) 
	 ? __kasan_kmalloc (mm/kasan/common.c:398) 
	 ? __kmalloc_noprof (./include/linux/kasan.h:257 mm/slub.c:4265 mm/slub.c:4277) 
	 ? do_initcalls (init/main.c:1341) 
	 ? kernel_init_freeable (init/main.c:1582) 
	 ? kernel_init (init/main.c:1471) 
	 ? ret_from_fork (arch/x86/kernel/process.c:153) 
	 ? ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	 ? asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4471) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 ? asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
	 ? __pfx_ignore_unknown_bootoption (init/main.c:1315) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 ? parse_args (kernel/params.c:153 kernel/params.c:186) 
	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
	 ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:737) 
	 do_initcall_level (init/main.c:1330) 
	 ? kernel_init (init/main.c:1471) 
	 do_initcalls (init/main.c:1344) 
	 kernel_init_freeable (init/main.c:1582) 
	 ? __pfx_kernel_init (init/main.c:1461) 
	 kernel_init (init/main.c:1471) 
	 ret_from_fork (arch/x86/kernel/process.c:153) 
	 ? __pfx_kernel_init (init/main.c:1461) 
	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
	  </TASK>
	 printk: legacy console [netcon0] enabled
	 netconsole: network logging started
	 clk: Disabling unused clocks

Thanks
--breno

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-04  9:08     ` Breno Leitao
@ 2024-10-04 10:49       ` Petr Mladek
  2024-10-08 15:18         ` John Ogness
  0 siblings, 1 reply; 9+ messages in thread
From: Petr Mladek @ 2024-10-04 10:49 UTC (permalink / raw)
  To: Breno Leitao
  Cc: Peter Zijlstra, gregkh, mst, jasowang, xuanzhuo, kuba,
	virtualization, netdev, linux-kernel, vschneid, axboe,
	Breno Leitao, Heng Qi

Hi,

I am adding into Cc some people who were involved in a netdev commits
which might be related, see below.

Also adding John Ogness into Cc who was author of the new changes on
the printk side. But it looks to me that the problem is not caused by
the recent printk changes.

Also I keep the entire context for these new people.

On Fri 2024-10-04 02:08:52, Breno Leitao wrote:
> Hello Peter,
> 
> On Thu, Oct 03, 2024 at 08:41:53AM -0700, Breno Leitao wrote:
> > > > Here is the full log, based on commit 7ec462100ef91 ("Merge tag
> > > > 'pull-work.unaligned' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs")
> > > 
> > > This looks like the normal lockdep splat you get when the scheduler does
> > > printk. I suspect you tripped a WARN, but since you only provided the
> > > lockdep output and not the whole log, I cannot tell.
> > 
> > Thanks for the quick answer. I didn't see a warning before the lockdep
> > splat, at least in the usual way I am familiar with. Let me past the
> > full log below.
> > 
> > > There is a fix in:
> > > 
> > >   git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git sched/urgent
> > > 
> > > that might, or might not help. I can't tell.
> > 
> > Thanks. I will try it soon.
> 
> I've just tested your branch "sched/urgent", and the problem is still
> there. I've tested against:
> 
> 	d4ac164bde7a ("sched/eevdf: Fix wakeup-preempt by checking cfs_rq->nr_running")
> 
> Here is the full log:
> 
> 	 Linux version 6.12.0-rc1-kbuilder-virtme-00033-gd4ac164bde7a (leit@devvm32600.lla0.foo.com) (clang version 20.0.0git (https://github.com/llvm/llvm-project.git d0f67773b213383b6e1c9331fb00f2d4c14bfcb2), LLD 18.0.0) #50 SMP PREEMPT_DYNAMIC Fri Oct  4 01:54:44 PDT 2024
> 	 Command line: virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 console=hvc0 earlyprintk=serial,ttyS0,115200 virtme_console=ttyS0 psmouse.proto=exps "virtme_stty_con=rows 43 cols 235 iutf8" TERM=xterm-256color virtme.dhcp net.ifnames=0 biosdevname=0 virtme_chdir=home/leit/Devel/upstream netconsole=+6666@2401:db00:3120:21a9:face:0000:0270:0000/eth0,1514@2803:6080:a89c:a670::1/02:90:fb:66:aa:e5 init=/home/leit/venv/lib/python3.8/site-packages/virtme/guest/bin/virtme-ng-init
> 	 BIOS-provided physical RAM map:
> 	 BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
> 	 BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
> 	 BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
> 	 BIOS-e820: [mem 0x0000000000100000-0x00000000bffdffff] usable
> 	 BIOS-e820: [mem 0x00000000bffe0000-0x00000000bfffffff] reserved
> 	 BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
> 	 BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
> 	 BIOS-e820: [mem 0x0000000100000000-0x00000002bfffffff] usable
> 	 BIOS-e820: [mem 0x000000fd00000000-0x000000ffffffffff] reserved
> 	 printk: legacy bootconsole [earlyser0] enabled
> 	 NX (Execute Disable) protection: active
> 	 APIC: Static calls initialized
> 	 SMBIOS 2.8 present.
> 	 DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
> 	 DMI: Memory slots populated: 1/1
> 	 e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
> 	 e820: remove [mem 0x000a0000-0x000fffff] usable
> 	 last_pfn = 0x2c0000 max_arch_pfn = 0x10000000000
> 	 MTRR map: 4 entries (3 fixed + 1 variable; max 19), built from 8 variable MTRRs
> 	 x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT
> 	 last_pfn = 0xbffe0 max_arch_pfn = 0x10000000000
> 	 found SMP MP-table at [mem 0x000f5470-0x000f547f]
> 	 RAMDISK: [mem 0xbf218000-0xbffdffff]
> 	 ACPI: Early table checksum verification disabled
> 	 ACPI: RSDP 0x00000000000F5270 000014 (v00 BOCHS )
> 	 ACPI: RSDT 0x00000000BFFE2C55 000038 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
> 	 ACPI: FACP 0x00000000BFFE2889 000074 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
> 	 ACPI: DSDT 0x00000000BFFE0040 002849 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
> 	 ACPI: FACS 0x00000000BFFE0000 000040
> 	 ACPI: APIC 0x00000000BFFE28FD 000110 (v03 BOCHS  BXPC     00000001 BXPC 00000001)
> 	 ACPI: HPET 0x00000000BFFE2A0D 000038 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
> 	 ACPI: SRAT 0x00000000BFFE2A45 0001E8 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
> 	 ACPI: WAET 0x00000000BFFE2C2D 000028 (v01 BOCHS  BXPC     00000001 BXPC 00000001)
> 	 ACPI: Reserving FACP table memory at [mem 0xbffe2889-0xbffe28fc]
> 	 ACPI: Reserving DSDT table memory at [mem 0xbffe0040-0xbffe2888]
> 	 ACPI: Reserving FACS table memory at [mem 0xbffe0000-0xbffe003f]
> 	 ACPI: Reserving APIC table memory at [mem 0xbffe28fd-0xbffe2a0c]
> 	 ACPI: Reserving HPET table memory at [mem 0xbffe2a0d-0xbffe2a44]
> 	 ACPI: Reserving SRAT table memory at [mem 0xbffe2a45-0xbffe2c2c]
> 	 ACPI: Reserving WAET table memory at [mem 0xbffe2c2d-0xbffe2c54]
> 	 ACPI: SRAT: Node 0 PXM 0 [mem 0x00000000-0x0009ffff]
> 	 ACPI: SRAT: Node 0 PXM 0 [mem 0x00100000-0xbfffffff]
> 	 ACPI: SRAT: Node 0 PXM 0 [mem 0x100000000-0x2bfffffff]
> 	 NUMA: Node 0 [mem 0x00001000-0x0009ffff] + [mem 0x00100000-0xbfffffff] -> [mem 0x00001000-0xbfffffff]
> 	 NUMA: Node 0 [mem 0x00001000-0xbfffffff] + [mem 0x100000000-0x2bfffffff] -> [mem 0x00001000-0x2bfffffff]
> 	 NODE_DATA(0) allocated [mem 0x2bebf6ac0-0x2bebfbdff]
> 	 Zone ranges:
> 	   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
> 	   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
> 	   Normal   [mem 0x0000000100000000-0x00000002bfffffff]
> 	   Device   empty
> 	 Movable zone start for each node
> 	 Early memory node ranges
> 	   node   0: [mem 0x0000000000001000-0x000000000009efff]
> 	   node   0: [mem 0x0000000000100000-0x00000000bffdffff]
> 	   node   0: [mem 0x0000000100000000-0x00000002bfffffff]
> 	 Initmem setup node 0 [mem 0x0000000000001000-0x00000002bfffffff]
> 	 On node 0, zone DMA: 1 pages in unavailable ranges
> 	 On node 0, zone DMA: 97 pages in unavailable ranges
> 	 On node 0, zone Normal: 32 pages in unavailable ranges
> 	 kasan: KernelAddressSanitizer initialized
> 	 ACPI: PM-Timer IO Port: 0x608
> 	 ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
> 	 IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23
> 	 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
> 	 ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
> 	 ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
> 	 ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
> 	 ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
> 	 ACPI: Using ACPI (MADT) for SMP configuration information
> 	 ACPI: HPET id: 0x8086a201 base: 0xfed00000
> 	 TSC deadline timer available
> 	 CPU topo: Max. logical packages:   1
> 	 CPU topo: Max. logical dies:       1
> 	 CPU topo: Max. dies per package:   1
> 	 CPU topo: Max. threads per core:   1
> 	 CPU topo: Num. cores per package:    20
> 	 CPU topo: Num. threads per package:  20
> 	 CPU topo: Allowing 20 present CPUs plus 0 hotplug CPUs
> 	 [mem 0xc0000000-0xfeffbfff] available for PCI devices
> 	 clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
> 	 setup_percpu: NR_CPUS:512 nr_cpumask_bits:20 nr_cpu_ids:20 nr_node_ids:1
> 	 percpu: Embedded 89 pages/cpu s326416 r8192 d29936 u524288
> 	 pcpu-alloc: s326416 r8192 d29936 u524288 alloc=1*2097152
> 	 pcpu-alloc: [0] 00 01 02 03 [0] 04 05 06 07
> 	 pcpu-alloc: [0] 08 09 10 11 [0] 12 13 14 15
> 	 pcpu-alloc: [0] 16 17 18 19
> 	 Kernel command line: virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 console=hvc0 earlyprintk=serial,ttyS0,115200 virtme_console=ttyS0 psmouse.proto=exps "virtme_stty_con=rows 43 cols 235 iutf8" TERM=xterm-256color virtme.dhcp net.ifnames=0 biosdevname=0 virtme_chdir=home/leit/Devel/upstream netconsole=+6666@2401:db00:3120:21a9:face:0000:0270:0000/eth0,1514@2803:6080:a89c:a670::1/02:90:fb:66:aa:e5 init=/home/leit/venv/lib/python3.8/site-packages/virtme/guest/bin/virtme-ng-init
> 	 Unknown kernel command line parameters "virtme_hostname=virtme-ng nr_open=2500000 virtme_link_mods=/home/leit/Devel/upstream/.virtme_mods/lib/modules/0.0.0 virtme_console=ttyS0 virtme_stty_con=rows 43 cols 235 iutf8 biosdevname=0 virtme_chdir=home/leit/Devel/upstream", will be passed to user space.
> 	 random: crng init done
> 	 Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
> 	 Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
> 	 Fallback order for Node 0: 0
> 	 Built 1 zonelists, mobility grouping on.  Total pages: 2621310
> 	 Policy zone: Normal
> 	 mem auto-init: stack:off, heap alloc:off, heap free:off
> 	 stackdepot: allocating hash table via alloc_large_system_hash
> 	 stackdepot hash table entries: 1048576 (order: 12, 16777216 bytes, linear)
> 	 software IO TLB: area num 32.
> 	 SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=20, Nodes=1
> 	 allocated 20971520 bytes of page_ext
> 	 ftrace: allocating 58899 entries in 231 pages
> 	 ftrace: allocated 231 pages with 6 groups
> 	 Dynamic Preempt: none
> 	 Running RCU self tests
> 	 Running RCU synchronous self tests
> 	 rcu: Preemptible hierarchical RCU implementation.
> 	 rcu: 	RCU event tracing is enabled.
> 	 rcu: 	RCU lockdep checking is enabled.
> 	 rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=20.
> 	 rcu: 	RCU callback double-/use-after-free debug is enabled.
> 	 rcu: 	RCU debug extended QS entry/exit.
> 		Trampoline variant of Tasks RCU enabled.
> 		Rude variant of Tasks RCU enabled.
> 		Tracing variant of Tasks RCU enabled.
> 	 rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
> 	 rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=20
> 	 Running RCU synchronous self tests
> 	 RCU Tasks: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
> 	 RCU Tasks Rude: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
> 	 RCU Tasks Trace: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
> 	 NR_IRQS: 33024, nr_irqs: 584, preallocated irqs: 16
> 	 rcu: srcu_init: Setting srcu_struct sizes based on contention.
> 	 kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
> 	 Console: colour *CGA 80x25
> 	 Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
> 	 ... MAX_LOCKDEP_SUBCLASSES:  8
> 	 ... MAX_LOCK_DEPTH:          48
> 	 ... MAX_LOCKDEP_KEYS:        8192
> 	 ... CLASSHASH_SIZE:          4096
> 	 ... MAX_LOCKDEP_ENTRIES:     1048576
> 	 ... MAX_LOCKDEP_CHAINS:      1048576
> 	 ... CHAINHASH_SIZE:          524288
> 	  memory used by lock dependency info: 106625 kB
> 	  memory used for stack traces: 4224 kB
> 	  per task-struct memory footprint: 1920 bytes
> 	 ACPI: Core revision 20240827
> 	 clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns
> 	 APIC: Switch to symmetric I/O mode setup
> 	 ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
> 	 tsc: Unable to calibrate against PIT
> 	 tsc: using HPET reference calibration
> 	 tsc: Detected 1199.814 MHz processor
> 	 clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x114b6c033ac, max_idle_ns: 440795260201 ns
> 	 Calibrating delay loop (skipped), value calculated using timer frequency.. 2399.62 BogoMIPS (lpj=1199814)
> 	 x86/cpu: User Mode Instruction Prevention (UMIP) activated
> 	 numa_add_cpu cpu 0 node 0: mask now 0
> 	 Last level iTLB entries: 4KB 512, 2MB 255, 4MB 127
> 	 Last level dTLB entries: 4KB 512, 2MB 255, 4MB 127, 1GB 0
> 	 Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
> 	 Spectre V2 : Mitigation: Retpolines
> 	 Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
> 	 Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
> 	 Spectre V2 : Enabling Restricted Speculation for firmware calls
> 	 Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
> 	 Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
> 	 Speculative Return Stack Overflow: IBPB-extending microcode not applied!
> 	 Speculative Return Stack Overflow: WARNING: See https://kernel.org/doc/html/latest/admin-guide/hw-vuln/srso.html for mitigation options.
> 	 Speculative Return Stack Overflow: Vulnerable: Safe RET, no microcode
> 	 x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
> 	 x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
> 	 x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
> 	 x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask'
> 	 x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256'
> 	 x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256'
> 	 x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers'
> 	 x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
> 	 x86/fpu: xstate_offset[5]:  832, xstate_sizes[5]:   64
> 	 x86/fpu: xstate_offset[6]:  896, xstate_sizes[6]:  512
> 	 x86/fpu: xstate_offset[7]: 1408, xstate_sizes[7]: 1024
> 	 x86/fpu: xstate_offset[9]: 2432, xstate_sizes[9]:    8
> 	 x86/fpu: Enabled xstate features 0x2e7, context size is 2440 bytes, using 'compacted' format.
> 	 debug: unmapping init [mem 0xffffffff883ea000-0xffffffff883f6fff]
> 	 pid_max: default: 32768 minimum: 301
> 	 LSM: initializing lsm=capability,bpf,ima
> 	 LSM support for eBPF active
> 	 Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
> 	 Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
> 	 Running RCU synchronous self tests
> 	 Running RCU synchronous self tests
> 	 smpboot: CPU0: AMD EPYC-Milan Processor (family: 0x19, model: 0x1, stepping: 0x1)
> 	 psi: inconsistent task state! task=1:swapper/0 cpu=0 psi_flags=4 clear=0 set=4
> 	 Running RCU Tasks wait API self tests
> 	 Running RCU Tasks Rude wait API self tests
> 	 Running RCU Tasks Trace wait API self tests
> 	 Performance Events: Fam17h+ core perfctr, AMD PMU driver.
> 	 ... version:                0
> 	 ... bit width:              48
> 	 ... generic registers:      6
> 	 ... value mask:             0000ffffffffffff
> 	 ... max period:             00007fffffffffff
> 	 ... fixed-purpose events:   0
> 	 ... event mask:             000000000000003f
> 	 Callback from call_rcu_tasks_trace() invoked.
> 	 signal: max sigframe size: 2976
> 	 rcu: Hierarchical SRCU implementation.
> 	 rcu: 	Max phase no-delay instances is 400.
> 	 Timer migration: 2 hierarchy levels; 8 children per group; 2 crossnode level
> 	 smp: Bringing up secondary CPUs ...
> 	 smpboot: x86: Booting SMP configuration:
> 	 .... node  #0, CPUs:        #1  #2  #3  #4  #5  #6  #7  #8  #9 #10 #11 #12 #13 #14 #15 #16
> 	 Callback from call_rcu_tasks() invoked.
> 	  #17 #18 #19
> 	 numa_add_cpu cpu 1 node 0: mask now 0-1
> 	 numa_add_cpu cpu 2 node 0: mask now 0-2
> 	 numa_add_cpu cpu 3 node 0: mask now 0-3
> 	 numa_add_cpu cpu 4 node 0: mask now 0-4
> 	 numa_add_cpu cpu 5 node 0: mask now 0-5
> 	 numa_add_cpu cpu 6 node 0: mask now 0-6
> 	 numa_add_cpu cpu 7 node 0: mask now 0-7
> 	 numa_add_cpu cpu 8 node 0: mask now 0-8
> 	 numa_add_cpu cpu 9 node 0: mask now 0-9
> 	 numa_add_cpu cpu 10 node 0: mask now 0-10
> 	 numa_add_cpu cpu 11 node 0: mask now 0-11
> 	 numa_add_cpu cpu 12 node 0: mask now 0-12
> 	 numa_add_cpu cpu 13 node 0: mask now 0-13
> 	 numa_add_cpu cpu 14 node 0: mask now 0-14
> 	 numa_add_cpu cpu 15 node 0: mask now 0-15
> 	 numa_add_cpu cpu 16 node 0: mask now 0-16
> 	 numa_add_cpu cpu 17 node 0: mask now 0-17
> 	 numa_add_cpu cpu 18 node 0: mask now 0-18
> 	 numa_add_cpu cpu 19 node 0: mask now 0-19
> 	 smp: Brought up 1 node, 20 CPUs
> 	 smpboot: Total of 20 processors activated (49565.36 BogoMIPS)
> 	 Memory: 8470476K/10485240K available (57344K kernel code, 19394K rwdata, 22616K rodata, 7488K init, 167972K bss, 1964852K reserved, 0K cma-reserved)
> 	 devtmpfs: initialized
> 	 x86/mm: Memory block size: 128MB
> 	 Running RCU synchronous self tests
> 	 Running RCU synchronous self tests
> 	 DMA-API: preallocated 65536 debug entries
> 	 DMA-API: debugging enabled by kernel config
> 	 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
> 	 futex hash table entries: 8192 (order: 8, 1048576 bytes, linear)
> 	 pinctrl core: initialized pinctrl subsystem
> 	 NET: Registered PF_NETLINK/PF_ROUTE protocol family
> 	 audit: initializing netlink subsys (disabled)
> 	 audit: type=2000 audit(1728032147.986:1): state=initialized audit_enabled=0 res=1
> 	 thermal_sys: Registered thermal governor 'step_wise'
> 	 thermal_sys: Registered thermal governor 'user_space'
> 	 cpuidle: using governor menu
> 	 PCI: Using configuration type 1 for base access
> 	 PCI: Using configuration type 1 for extended access
> 	 kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
> 	 HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
> 	 HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
> 	 HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
> 	 HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
> 	 cryptd: max_cpu_qlen set to 1000
> 	 raid6: avx512x4 gen() 33291 MB/s
> 	 raid6: avx512x2 gen() 32437 MB/s
> 	 raid6: avx512x1 gen() 25182 MB/s
> 	 raid6: avx2x4   gen() 22536 MB/s
> 	 raid6: avx2x2   gen() 19688 MB/s
> 	 raid6: avx2x1   gen() 15251 MB/s
> 	 raid6: using algorithm avx512x4 gen() 33291 MB/s
> 	 raid6: .... xor() 6618 MB/s, rmw enabled
> 	 raid6: using avx512x2 recovery algorithm
> 	 ACPI: Added _OSI(Module Device)
> 	 ACPI: Added _OSI(Processor Device)
> 	 ACPI: Added _OSI(3.0 _SCP Extensions)
> 	 ACPI: Added _OSI(Processor Aggregator Device)
> 	 ACPI: 1 ACPI AML tables successfully acquired and loaded
> 	 ACPI: Interpreter enabled
> 	 ACPI: PM: (supports S0 S3 S5)
> 	 ACPI: Using IOAPIC for interrupt routing
> 	 PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
> 	 PCI: Using E820 reservations for host bridge windows
> 	 ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
> 	 acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
> 	 PCI host bridge to bus 0000:00
> 	 pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
> 	 pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
> 	 pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
> 	 pci_bus 0000:00: root bus resource [mem 0xc0000000-0xfebfffff window]
> 	 pci_bus 0000:00: root bus resource [mem 0xc000000000-0xc07fffffff window]
> 	 pci_bus 0000:00: root bus resource [bus 00-ff]
> 	 pci 0000:00:00.0: [8086:1237] type 00 class 0x060000 conventional PCI endpoint
> 	 pci 0000:00:01.0: [8086:7000] type 00 class 0x060100 conventional PCI endpoint
> 	 pci 0000:00:01.1: [8086:7010] type 00 class 0x010180 conventional PCI endpoint
> 	 pci 0000:00:01.1: BAR 4 [io  0xc060-0xc06f]
> 	 pci 0000:00:01.1: BAR 0 [io  0x01f0-0x01f7]: legacy IDE quirk
> 	 pci 0000:00:01.1: BAR 1 [io  0x03f6]: legacy IDE quirk
> 	 pci 0000:00:01.1: BAR 2 [io  0x0170-0x0177]: legacy IDE quirk
> 	 pci 0000:00:01.1: BAR 3 [io  0x0376]: legacy IDE quirk
> 	 pci 0000:00:01.3: [8086:7113] type 00 class 0x068000 conventional PCI endpoint
> 	 pci 0000:00:01.3: quirk: [io  0x0600-0x063f] claimed by PIIX4 ACPI
> 	 pci 0000:00:01.3: quirk: [io  0x0700-0x070f] claimed by PIIX4 SMB
> 	 pci 0000:00:02.0: [1af4:105a] type 00 class 0x018000 conventional PCI endpoint
> 	 pci 0000:00:02.0: BAR 1 [mem 0xfebc0000-0xfebc0fff]
> 	 pci 0000:00:02.0: BAR 4 [mem 0xc000000000-0xc000003fff 64bit pref]
> 	 pci 0000:00:03.0: [8086:25ab] type 00 class 0x088000 conventional PCI endpoint
> 	 pci 0000:00:03.0: BAR 0 [mem 0xfebc1000-0xfebc100f]
> 	 pci 0000:00:04.0: [1af4:1003] type 00 class 0x078000 conventional PCI endpoint
> 	 pci 0000:00:04.0: BAR 0 [io  0xc000-0xc03f]
> 	 pci 0000:00:04.0: BAR 1 [mem 0xfebc2000-0xfebc2fff]
> 	 pci 0000:00:04.0: BAR 4 [mem 0xc000004000-0xc000007fff 64bit pref]
> 	 pci 0000:00:05.0: [1af4:1000] type 00 class 0x020000 conventional PCI endpoint
> 	 pci 0000:00:05.0: BAR 0 [io  0xc040-0xc05f]
> 	 pci 0000:00:05.0: BAR 1 [mem 0xfebc3000-0xfebc3fff]
> 	 pci 0000:00:05.0: BAR 4 [mem 0xc000008000-0xc00000bfff 64bit pref]
> 	 pci 0000:00:05.0: ROM [mem 0xfeb80000-0xfebbffff pref]
> 	 ACPI: PCI: Interrupt link LNKA configured for IRQ 10
> 	 ACPI: PCI: Interrupt link LNKB configured for IRQ 10
> 	 ACPI: PCI: Interrupt link LNKC configured for IRQ 11
> 	 ACPI: PCI: Interrupt link LNKD configured for IRQ 11
> 	 ACPI: PCI: Interrupt link LNKS configured for IRQ 9
> 	 iommu: Default domain type: Translated
> 	 iommu: DMA domain TLB invalidation policy: lazy mode
> 	 SCSI subsystem initialized
> 	 libata version 3.00 loaded.
> 	 ACPI: bus type USB registered
> 	 usbcore: registered new interface driver usbfs
> 	 usbcore: registered new interface driver hub
> 	 usbcore: registered new device driver usb
> 	 pps_core: LinuxPPS API ver. 1 registered
> 	 pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
> 	 PTP clock support registered
> 	 EDAC MC: Ver: 3.0.0
> 	 PCI: Using ACPI for IRQ routing
> 	 PCI: pci_cache_line_size set to 64 bytes
> 	 e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
> 	 e820: reserve RAM buffer [mem 0xbffe0000-0xbfffffff]
> 	 clocksource: Switched to clocksource tsc-early
> 	 VFS: Disk quotas dquot_6.6.0
> 	 VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
> 	 pnp: PnP ACPI init
> 	 pnp 00:02: [dma 2]
> 	 pnp: PnP ACPI: found 5 devices
> 	 clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
> 	 NET: Registered PF_INET protocol family
> 	 IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
> 	 tcp_listen_portaddr_hash hash table entries: 8192 (order: 7, 589824 bytes, linear)
> 	 Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
> 	 TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> 	 TCP bind hash table entries: 65536 (order: 11, 9437184 bytes, vmalloc hugepage)
> 	 TCP: Hash tables configured (established 131072 bind 65536)
> 	 MPTCP token hash table entries: 16384 (order: 8, 1441792 bytes, linear)
> 	 UDP hash table entries: 8192 (order: 8, 1310720 bytes, linear)
> 	 UDP-Lite hash table entries: 8192 (order: 8, 1310720 bytes, linear)
> 	 NET: Registered PF_UNIX/PF_LOCAL protocol family
> 	 NET: Registered PF_XDP protocol family
> 	 pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
> 	 pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
> 	 pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
> 	 pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfebfffff window]
> 	 pci_bus 0000:00: resource 8 [mem 0xc000000000-0xc07fffffff window]
> 	 pci 0000:00:01.0: PIIX3: Enabling Passive Release
> 	 pci 0000:00:00.0: Limiting direct PCI/PCI transfers
> 	 PCI: CLS 0 bytes, default 64
> 	 PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
> 	 software IO TLB: mapped [mem 0x00000000bb218000-0x00000000bf218000] (64MB)
> 	 Trying to unpack rootfs image as initramfs...
> 	 Initialise system trusted keyrings
> 	 workingset: timestamp_bits=40 max_order=22 bucket_order=0
> 	 fuse: init (API version 7.41)
> 	 SGI XFS with ACLs, security attributes, realtime, verbose warnings, quota, no debug enabled
> 	 NET: Registered PF_ALG protocol family
> 	 xor: automatically using best checksumming function   avx
> 	 Key type asymmetric registered
> 	 Asymmetric key parser 'x509' registered
> 	 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
> 	 io scheduler mq-deadline registered
> 	 io scheduler kyber registered
> 	 debug: unmapping init [mem 0xff110000bf218000-0xff110000bffdffff]
> 	 ACPI: _SB_.LNKB: Enabled at IRQ 10
> 	 virtiofs virtio0: virtio_fs_setup_dax: No cache capability
> 	 ACPI: _SB_.LNKD: Enabled at IRQ 11
> 	 ACPI: _SB_.LNKA: Enabled at IRQ 10
> 	 Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
> 	 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
> 	 tsc: Refined TSC clocksource calibration: 1199.960 MHz
> 	 clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x114bf5f8779, max_idle_ns: 440795246166 ns
> 	 clocksource: Switched to clocksource tsc
> 	 printk: legacy console [hvc0] enabled
> 	 printk: legacy bootconsole [earlyser0] disabled
> 	 wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
> 	 wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
> 	 igb: Intel(R) Gigabit Ethernet Network Driver
> 	 igb: Copyright (c) 2007-2014 Intel Corporation.
> 	 ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver
> 	 ixgbe: Copyright (c) 1999-2016 Intel Corporation.
> 	 usbcore: registered new interface driver ark3116
> 	 usbserial: USB Serial support registered for ark3116
> 	 usbcore: registered new interface driver pl2303
> 	 usbserial: USB Serial support registered for pl2303
> 	 i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
> 	 serio: i8042 KBD port at 0x60,0x64 irq 1
> 	 serio: i8042 AUX port at 0x60,0x64 irq 12
> 	 rtc_cmos 00:04: RTC can wake from S4
> 	 rtc_cmos 00:04: registered as rtc0
> 	 rtc_cmos 00:04: setting system clock to 2024-10-04T08:55:52 UTC (1728032152)
> 	 rtc_cmos 00:04: alarms up to one day, y3k, 242 bytes nvram, hpet irqs
> 	 input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
> 	 i2c_dev: i2c /dev entries driver
> 	 device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
> 	 device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@lists.linux.dev
> 	 amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled
> 	 usbcore: registered new interface driver usbhid
> 	 usbhid: USB HID core driver
> 	 Initializing XFRM netlink socket
> 	 NET: Registered PF_INET6 protocol family
> 	 Segment Routing with IPv6
> 	 In-situ OAM (IOAM) with IPv6
> 	 NET: Registered PF_PACKET protocol family
> 	 Key type dns_resolver registered
> 	 NET: Registered PF_VSOCK protocol family
> 	 start plist test
> 	 end plist test
> 	 IPI shorthand broadcast: enabled
> 	 sched_clock: Marking stable (6385031761, -10224835)->(6687265139, -312458213)
> 	 registered taskstats version 1
> 	 Loading compiled-in X.509 certificates
> 	 virtme initramfs: initramfs does not have module crypto-pkcs1pad(rsa,sha512)
> 	 virtme initramfs: initramfs does not have module crypto-pkcs1pad(rsa,sha512)-all
> 	 Loaded X.509 cert 'Build time autogenerated kernel key: 1a58da0881b870ef3decd7cf414d45e41b0e363a'
> 	 Demotion targets for Node 0: null
> 	 kmemleak: Automatic memory scanning thread started
> 	 kmemleak: Kernel memory leak detector initialized (mem pool available: 197817)
> 	 page_owner is disabled
> 	 Btrfs loaded, assert=on, zoned=no, fsverity=yes
> 	 ima: No TPM chip found, activating TPM-bypass!
> 	 ima: Allocated hash algorithm: sha256
> 	 ima: No architecture policies found
> 	 netpoll: netconsole: local port 6666
> 	 netpoll: netconsole: local IPv6 address 2401:db00:3120:21a9:face:0:270:0
> 	 netpoll: netconsole: interface 'eth0'
> 	 netpoll: netconsole: remote port 1514
> 	 netpoll: netconsole: remote IPv6 address 2803:6080:a89c:a670::1
> 	 netpoll: netconsole: remote ethernet address 02:90:fb:66:aa:e5
> 	 netpoll: netconsole: device eth0 not up yet, forcing it
> 	 printk: legacy console [netcon_ext0] enabled

This is printed when the "netcon_ext0" console already is registered.

But the lockdep splat is printed later when another "netcon0" has been
registered. I guess that the problem is with this "netcon0".

> 	 =====================================================
> 	 WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
> 	 6.12.0-rc1-kbuilder-virtme-00033-gd4ac164bde7a #50 Not tainted
> 	 -----------------------------------------------------
> 	 swapper/0/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
> 	 ff1100010a260518 (_xmit_ETHER#2){+.-.}-{2:2}, at: virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
> 
> 	and this task is already holding:
> 	 ffffffff86f2b5b8 (target_list_lock){....}-{2:2}, at: write_ext_msg (drivers/net/netconsole.c:?) 
> 	 which would create a new lock dependency:
> 	  (target_list_lock){....}-{2:2} -> (_xmit_ETHER#2){+.-.}-{2:2}
> 
> 	but this new dependency connects a HARDIRQ-irq-safe lock:
> 	  (console_owner){-...}-{0:0}
> 
> 	... which became HARDIRQ-irq-safe at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 console_flush_all (kernel/printk/printk.c:1905 kernel/printk/printk.c:3086 kernel/printk/printk.c:3180) 
> 	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
> 	 wake_up_klogd_work_func (kernel/printk/printk.c:4466) 
> 	 irq_work_single (kernel/irq_work.c:222) 
> 	 irq_work_tick (kernel/irq_work.c:? kernel/irq_work.c:277) 
> 	 update_process_times (kernel/time/timer.c:2524) 
> 	 tick_handle_periodic (kernel/time/tick-common.c:120) 
> 	 __sysvec_apic_timer_interrupt (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1044) 
> 	 sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1037 arch/x86/kernel/apic/apic.c:1037) 
> 	 asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
> 	 memset (arch/x86/lib/memset_64.S:38) 
> 	 __unwind_start (arch/x86/kernel/unwind_orc.c:?) 
> 	 arch_stack_walk (./arch/x86/include/asm/unwind.h:50 arch/x86/kernel/stacktrace.c:24) 
> 	 stack_trace_save (kernel/stacktrace.c:123) 
> 	 kasan_save_stack (mm/kasan/common.c:48) 
> 	 __kasan_record_aux_stack (mm/kasan/generic.c:541) 
> 	 call_rcu (./arch/x86/include/asm/irqflags.h:26 ./arch/x86/include/asm/irqflags.h:87 ./arch/x86/include/asm/irqflags.h:123 kernel/rcu/tree.c:3087 kernel/rcu/tree.c:3190) 
> 	 kfree (mm/slub.c:2271 mm/slub.c:4580 mm/slub.c:4728) 
> 	 __kthread_create_on_node (kernel/kthread.c:479) 
> 	 __kthread_create_worker (kernel/kthread.c:882) 
> 	 kthread_create_worker (kernel/kthread.c:919) 
> 	 wq_cpu_intensive_thresh_init (kernel/workqueue.c:7817) 
> 	 workqueue_init (kernel/workqueue.c:?) 
> 	 kernel_init_freeable (init/main.c:1566) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 
> 	to a HARDIRQ-irq-unsafe lock:
> 	  (_xmit_ETHER#2){+.-.}-{2:2}
> 
> 	... which became HARDIRQ-irq-unsafe at:
> 	 ...
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 _raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
> 	 virtnet_poll (./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
> 	 __napi_poll (net/core/dev.c:6771) 

Note that this napi stuff is handled in softirq context, see below.

> 	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962)
> 	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
> 	 do_softirq (kernel/softirq.c:455) 
> 	 __local_bh_enable_ip (kernel/softirq.c:?) 
> 	 virtnet_open (./include/linux/bottom_half.h:? drivers/net/virtio_net.c:2619 drivers/net/virtio_net.c:2876 drivers/net/virtio_net.c:2925) 
> 	 __dev_open (net/core/dev.c:1476) 
> 	 dev_open (net/core/dev.c:1513) 
> 	 netpoll_setup (net/core/netpoll.c:701) 
> 	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 
> 	other info that might help us debug this:
> 
> 	 Chain exists of:
> 	console_owner --> target_list_lock --> _xmit_ETHER#2
> 
> 	  Possible interrupt unsafe locking scenario:
> 
> 		CPU0                    CPU1
> 		----                    ----
> 	   lock(_xmit_ETHER#2);

My understanding is that the fix is to always take "_xmit_ETHER#2"
lock with interrupts disabled.

> 					local_irq_disable();
> 					lock(console_owner);
> 					lock(target_list_lock);
> 	   <Interrupt>
> 	     lock(console_owner);

Just a wild guess. I have looked at changes in
drivers/net/virtio_net.c and noticed a regression caused by the commit
bdacf3e34945 ("net: Use nested-BH locking for napi_alloc_cache.").

There was a followup fix by the commit f8321fa75102246d ("virtio_net:
Fix napi_skb_cache_put warning").

I wonder these changes might be related, see the "napi" call in the softirq
context above.

> 
> 	*** DEADLOCK ***
> 
> 	 6 locks held by swapper/0/1:
> 	 #0: ffffffff861afda8 (console_mutex){+.+.}-{3:3}, at: register_console (kernel/printk/printk.c:113 kernel/printk/printk.c:3933) 
> 	 #1: ffffffff861b0400 (console_lock){+.+.}-{0:0}, at: _printk (kernel/printk/printk.c:2435) 
> 	 #2: ffffffff861afe10 (console_srcu){....}-{0:0}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
> 	 #3: ffffffff861b03a0 (console_owner){-...}-{0:0}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
> 	 #4: ffffffff86930cc0 (printk_legacy_map-wait-type-override){....}-{3:3}, at: console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
> 	 #5: ffffffff86f2b5b8 (target_list_lock){....}-{2:2}, at: write_ext_msg (drivers/net/netconsole.c:?) 
> 
> 	the dependencies between HARDIRQ-irq-safe lock and the holding lock:
> 	  -> (console_owner){-...}-{0:0} ops: 1984 {
> 	     IN-HARDIRQ-W at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 console_flush_all (kernel/printk/printk.c:1905 kernel/printk/printk.c:3086 kernel/printk/printk.c:3180) 
> 	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
> 	 wake_up_klogd_work_func (kernel/printk/printk.c:4466) 
> 	 irq_work_single (kernel/irq_work.c:222) 
> 	 irq_work_tick (kernel/irq_work.c:? kernel/irq_work.c:277) 
> 	 update_process_times (kernel/time/timer.c:2524) 
> 	 tick_handle_periodic (kernel/time/tick-common.c:120) 
> 	 __sysvec_apic_timer_interrupt (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./arch/x86/include/asm/trace/irq_vectors.h:41 arch/x86/kernel/apic/apic.c:1044) 
> 	 sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1037 arch/x86/kernel/apic/apic.c:1037) 
> 	 asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
> 	 memset (arch/x86/lib/memset_64.S:38) 
> 	 __unwind_start (arch/x86/kernel/unwind_orc.c:?) 
> 	 arch_stack_walk (./arch/x86/include/asm/unwind.h:50 arch/x86/kernel/stacktrace.c:24) 
> 	 stack_trace_save (kernel/stacktrace.c:123) 
> 	 kasan_save_stack (mm/kasan/common.c:48) 
> 	 __kasan_record_aux_stack (mm/kasan/generic.c:541) 
> 	 call_rcu (./arch/x86/include/asm/irqflags.h:26 ./arch/x86/include/asm/irqflags.h:87 ./arch/x86/include/asm/irqflags.h:123 kernel/rcu/tree.c:3087 kernel/rcu/tree.c:3190) 
> 	 kfree (mm/slub.c:2271 mm/slub.c:4580 mm/slub.c:4728) 
> 	 __kthread_create_on_node (kernel/kthread.c:479) 
> 	 __kthread_create_worker (kernel/kthread.c:882) 
> 	 kthread_create_worker (kernel/kthread.c:919) 
> 	 wq_cpu_intensive_thresh_init (kernel/workqueue.c:7817) 
> 	 workqueue_init (kernel/workqueue.c:?) 
> 	 kernel_init_freeable (init/main.c:1566) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 	     INITIAL USE at:
> 	   }
> 	 ... key at: console_owner_dep_map+0x0/0x60 
> 	 -> (target_list_lock){....}-{2:2} ops: 3 {
> 	    INITIAL USE at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 _raw_spin_lock_irqsave (./include/linux/spinlock_api_smp.h:110 kernel/locking/spinlock.c:162) 
> 	 init_netconsole (drivers/net/netconsole.c:1327) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 	  }
> 	 ... key at: target_list_lock+0x18/0x60 
> 	  ... acquired at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 _raw_spin_lock_irqsave (./include/linux/spinlock_api_smp.h:110 kernel/locking/spinlock.c:162) 
> 	 write_ext_msg (drivers/net/netconsole.c:?) 
> 	 console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
> 	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
> 	 vprintk_emit (kernel/printk/printk.c:?) 
> 	 _printk (kernel/printk/printk.c:2435) 
> 	 register_console (kernel/printk/printk.c:4070) 
> 	 init_netconsole (drivers/net/netconsole.c:1344) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 
> 
> 	the dependencies between the lock to be acquired
> 	  and HARDIRQ-irq-unsafe lock:
> 	 -> (_xmit_ETHER#2){+.-.}-{2:2} ops: 7 {
> 	    HARDIRQ-ON-W at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 _raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
> 	 virtnet_poll (./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
> 	 __napi_poll (net/core/dev.c:6771) 
> 	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962) 
> 	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
> 	 do_softirq (kernel/softirq.c:455) 
> 	 __local_bh_enable_ip (kernel/softirq.c:?) 
> 	 virtnet_open (./include/linux/bottom_half.h:? drivers/net/virtio_net.c:2619 drivers/net/virtio_net.c:2876 drivers/net/virtio_net.c:2925) 
> 	 __dev_open (net/core/dev.c:1476) 
> 	 dev_open (net/core/dev.c:1513) 
> 	 netpoll_setup (net/core/netpoll.c:701) 
> 	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 	    IN-SOFTIRQ-W at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 _raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
> 	 virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
> 	 __napi_poll (net/core/dev.c:6771) 
> 	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962) 
> 	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
> 	 do_softirq (kernel/softirq.c:455) 
> 	 __local_bh_enable_ip (kernel/softirq.c:?) 
> 	 virtnet_open (drivers/net/virtio_net.c:2637 drivers/net/virtio_net.c:2877 drivers/net/virtio_net.c:2925) 
> 	 __dev_open (net/core/dev.c:1476) 
> 	 dev_open (net/core/dev.c:1513) 
> 	 netpoll_setup (net/core/netpoll.c:701) 
> 	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 	    INITIAL USE at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 _raw_spin_trylock (./include/linux/spinlock_api_smp.h:90 kernel/locking/spinlock.c:138) 
> 	 virtnet_poll (./include/linux/netdevice.h:4384 drivers/net/virtio_net.c:2768 drivers/net/virtio_net.c:2821) 
> 	 __napi_poll (net/core/dev.c:6771) 
> 	 net_rx_action (net/core/dev.c:6840 net/core/dev.c:6962) 
> 	 handle_softirqs (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/irq.h:142 kernel/softirq.c:555) 
> 	 do_softirq (kernel/softirq.c:455) 
> 	 __local_bh_enable_ip (kernel/softirq.c:?) 
> 	 virtnet_open (./include/linux/bottom_half.h:? drivers/net/virtio_net.c:2619 drivers/net/virtio_net.c:2876 drivers/net/virtio_net.c:2925) 
> 	 __dev_open (net/core/dev.c:1476) 
> 	 dev_open (net/core/dev.c:1513) 
> 	 netpoll_setup (net/core/netpoll.c:701) 
> 	 init_netconsole (drivers/net/netconsole.c:1261 drivers/net/netconsole.c:1312) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 	  }
> 	 ... key at: netdev_xmit_lock_key+0x10/0x480 
> 	  ... acquired at:
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 _raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
> 	 virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
> 	 netpoll_poll_dev (net/core/netpoll.c:167 net/core/netpoll.c:180 net/core/netpoll.c:210) 
> 	 netpoll_send_skb (net/core/netpoll.c:360 net/core/netpoll.c:386) 
> 	 netpoll_send_udp (net/core/netpoll.c:494) 
> 	 write_ext_msg (drivers/net/netconsole.c:?) 
> 	 console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
> 	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
> 	 vprintk_emit (kernel/printk/printk.c:?) 
> 	 _printk (kernel/printk/printk.c:2435) 
> 	 register_console (kernel/printk/printk.c:4070) 
> 	 init_netconsole (drivers/net/netconsole.c:1344) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 
> 
> 	stack backtrace:
> 	 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
> 	 Call Trace:
> 	  <TASK>
> 	 dump_stack_lvl (lib/dump_stack.c:123) 
> 	 validate_chain (kernel/locking/lockdep.c:? kernel/locking/lockdep.c:2888 kernel/locking/lockdep.c:3165 kernel/locking/lockdep.c:3280 kernel/locking/lockdep.c:3904) 
> 	 __lock_acquire (kernel/locking/lockdep.c:?) 
> 	 lock_acquire (kernel/locking/lockdep.c:5825) 
> 	 ? virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
> 	 _raw_spin_lock (./include/linux/spinlock_api_smp.h:133 kernel/locking/spinlock.c:154) 
> 	 ? virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
> 	 virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 

This is where lockdep started yelling. It got the last piece to the
puzzle (deadlock circle).

> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 netpoll_poll_dev (net/core/netpoll.c:167 net/core/netpoll.c:180 net/core/netpoll.c:210) 
> 	 netpoll_send_skb (net/core/netpoll.c:360 net/core/netpoll.c:386) 
> 	 netpoll_send_udp (net/core/netpoll.c:494) 
> 	 write_ext_msg (drivers/net/netconsole.c:?) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 ? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
> 	 ? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
> 	 console_flush_all (kernel/printk/printk.c:3009 kernel/printk/printk.c:3093 kernel/printk/printk.c:3180) 
> 	 ? console_flush_all (./include/linux/rcupdate.h:? ./include/linux/srcu.h:267 kernel/printk/printk.c:288 kernel/printk/printk.c:3157) 
> 	 console_unlock (kernel/printk/printk.c:3239 kernel/printk/printk.c:3279) 
> 	 vprintk_emit (kernel/printk/printk.c:?) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 _printk (kernel/printk/printk.c:2435) 

Here the printk() is called from normal context with interrupts
enabled. I am not sure if it is important.

> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 register_console (kernel/printk/printk.c:4070) 
> 	 ? configfs_register_subsystem (./include/linux/instrumented.h:96 ./include/linux/atomic/atomic-arch-fallback.h:2278 ./include/linux/atomic/atomic-instrumented.h:1384 fs/configfs/dir.c:174 fs/configfs/dir.c:1909) 
> 	 init_netconsole (drivers/net/netconsole.c:1344) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 do_one_initcall (init/main.c:1269) 
> 	 ? __pfx_init_netconsole (drivers/net/netconsole.c:1301) 
> 	 ? stack_depot_save_flags (lib/stackdepot.c:662) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 ? kasan_save_track (./arch/x86/include/asm/current.h:49 mm/kasan/common.c:60 mm/kasan/common.c:69) 
> 	 ? kasan_save_track (mm/kasan/common.c:48 mm/kasan/common.c:68) 
> 	 ? __kasan_kmalloc (mm/kasan/common.c:398) 
> 	 ? __kmalloc_noprof (./include/linux/kasan.h:257 mm/slub.c:4265 mm/slub.c:4277) 
> 	 ? do_initcalls (init/main.c:1341) 
> 	 ? kernel_init_freeable (init/main.c:1582) 
> 	 ? kernel_init (init/main.c:1471) 
> 	 ? ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ? ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 	 ? asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4471) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 ? asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) 
> 	 ? __pfx_ignore_unknown_bootoption (init/main.c:1315) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 ? parse_args (kernel/params.c:153 kernel/params.c:186) 
> 	 ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:182) 
> 	 ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:737) 
> 	 do_initcall_level (init/main.c:1330) 
> 	 ? kernel_init (init/main.c:1471) 
> 	 do_initcalls (init/main.c:1344) 
> 	 kernel_init_freeable (init/main.c:1582) 
> 	 ? __pfx_kernel_init (init/main.c:1461) 
> 	 kernel_init (init/main.c:1471) 
> 	 ret_from_fork (arch/x86/kernel/process.c:153) 
> 	 ? __pfx_kernel_init (init/main.c:1461) 
> 	 ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
> 	  </TASK>
> 	 printk: legacy console [netcon0] enabled

I guess that the lockdep splat has been printed when [netcon0]
tried to process this message.

> 	 netconsole: network logging started
> 	 clk: Disabling unused clocks

Best Regards,
Petr

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-04 10:49       ` Petr Mladek
@ 2024-10-08 15:18         ` John Ogness
  2024-10-09 15:44           ` Pavel Begunkov
  0 siblings, 1 reply; 9+ messages in thread
From: John Ogness @ 2024-10-08 15:18 UTC (permalink / raw)
  To: Petr Mladek, Breno Leitao
  Cc: Peter Zijlstra, gregkh, mst, jasowang, xuanzhuo, kuba,
	virtualization, netdev, linux-kernel, vschneid, axboe,
	Breno Leitao, Heng Qi

On 2024-10-04, Petr Mladek <pmladek@suse.com> wrote:
> On Fri 2024-10-04 02:08:52, Breno Leitao wrote:
>> 	 =====================================================
>> 	 WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
>> 	 6.12.0-rc1-kbuilder-virtme-00033-gd4ac164bde7a #50 Not tainted
>> 	 -----------------------------------------------------
>> 	 swapper/0/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
>> 	 ff1100010a260518 (_xmit_ETHER#2){+.-.}-{2:2}, at: virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969) 
>> 
>> 	and this task is already holding:
>> 	 ffffffff86f2b5b8 (target_list_lock){....}-{2:2}, at: write_ext_msg (drivers/net/netconsole.c:?) 
>> 	 which would create a new lock dependency:
>> 	  (target_list_lock){....}-{2:2} -> (_xmit_ETHER#2){+.-.}-{2:2}
>> 
>> 	but this new dependency connects a HARDIRQ-irq-safe lock:
>> 	  (console_owner){-...}-{0:0}

...

>> 	to a HARDIRQ-irq-unsafe lock:
>> 	  (_xmit_ETHER#2){+.-.}-{2:2}

...

>> 	other info that might help us debug this:
>> 
>> 	 Chain exists of:
>> 	console_owner --> target_list_lock --> _xmit_ETHER#2
>> 
>> 	  Possible interrupt unsafe locking scenario:
>> 
>> 		CPU0                    CPU1
>> 		----                    ----
>> 	   lock(_xmit_ETHER#2);
>> 					local_irq_disable();
>> 					lock(console_owner);
>> 					lock(target_list_lock);
>> 	   <Interrupt>
>> 	     lock(console_owner);

I can trigger this lockdep splat on v6.11 as well.

It only requires a printk() call within any interrupt handler, sometime
after the netconsole is initialized and has had at least one run from
softirq context.

> My understanding is that the fix is to always take "_xmit_ETHER#2"
> lock with interrupts disabled.

That seems to be one possible solution. But maybe there is reasoning why
that should not be done. (??) Right now it is clearly a spinlock that is
being taken from both interrupt and softirq contexts and does not
disable interrupts.

I will check if there is some previous kernel release where this problem
does not exist.

John Ogness

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-08 15:18         ` John Ogness
@ 2024-10-09 15:44           ` Pavel Begunkov
  2024-10-09 17:29             ` Breno Leitao
  0 siblings, 1 reply; 9+ messages in thread
From: Pavel Begunkov @ 2024-10-09 15:44 UTC (permalink / raw)
  To: John Ogness, Petr Mladek, Breno Leitao
  Cc: Peter Zijlstra, gregkh, mst, jasowang, xuanzhuo, kuba,
	virtualization, netdev, linux-kernel, vschneid, axboe, Heng Qi

On 10/8/24 16:18, John Ogness wrote:
> On 2024-10-04, Petr Mladek <pmladek@suse.com> wrote:
>> On Fri 2024-10-04 02:08:52, Breno Leitao wrote:
>>> 	 =====================================================
>>> 	 WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
>>> 	 6.12.0-rc1-kbuilder-virtme-00033-gd4ac164bde7a #50 Not tainted
>>> 	 -----------------------------------------------------
>>> 	 swapper/0/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
>>> 	 ff1100010a260518 (_xmit_ETHER#2){+.-.}-{2:2}, at: virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969)
>>>
>>> 	and this task is already holding:
>>> 	 ffffffff86f2b5b8 (target_list_lock){....}-{2:2}, at: write_ext_msg (drivers/net/netconsole.c:?)
>>> 	 which would create a new lock dependency:
>>> 	  (target_list_lock){....}-{2:2} -> (_xmit_ETHER#2){+.-.}-{2:2}
>>>
>>> 	but this new dependency connects a HARDIRQ-irq-safe lock:
>>> 	  (console_owner){-...}-{0:0}
> 
> ...
> 
>>> 	to a HARDIRQ-irq-unsafe lock:
>>> 	  (_xmit_ETHER#2){+.-.}-{2:2}
> 
> ...
> 
>>> 	other info that might help us debug this:
>>>
>>> 	 Chain exists of:
>>> 	console_owner --> target_list_lock --> _xmit_ETHER#2
>>>
>>> 	  Possible interrupt unsafe locking scenario:
>>>
>>> 		CPU0                    CPU1
>>> 		----                    ----
>>> 	   lock(_xmit_ETHER#2);
>>> 					local_irq_disable();
>>> 					lock(console_owner);
>>> 					lock(target_list_lock);
>>> 	   <Interrupt>
>>> 	     lock(console_owner);
> 
> I can trigger this lockdep splat on v6.11 as well.
> 
> It only requires a printk() call within any interrupt handler, sometime
> after the netconsole is initialized and has had at least one run from
> softirq context.
> 
>> My understanding is that the fix is to always take "_xmit_ETHER#2"
>> lock with interrupts disabled.
> 
> That seems to be one possible solution. But maybe there is reasoning why
> that should not be done. (??) Right now it is clearly a spinlock that is

It's expensive, and it's a hot path if I understand correctly which
lock that is. And, IIRC the driver might spend there some time, it's
always nicer to keep irqs enabled if possible.

> being taken from both interrupt and softirq contexts and does not
> disable interrupts.

It rather seems the xmit lock is bh protected, but printk is a one
off case taking it with irqs disabled. I wonder if the printk side
could help with that, e.g. offloading sending from hardirq to softirq?

> I will check if there is some previous kernel release where this problem
> does not exist.

-- 
Pavel Begunkov

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

* Re: 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler)
  2024-10-09 15:44           ` Pavel Begunkov
@ 2024-10-09 17:29             ` Breno Leitao
  0 siblings, 0 replies; 9+ messages in thread
From: Breno Leitao @ 2024-10-09 17:29 UTC (permalink / raw)
  To: Pavel Begunkov, kuba
  Cc: John Ogness, Petr Mladek, Peter Zijlstra, gregkh, mst, jasowang,
	xuanzhuo, kuba, virtualization, netdev, linux-kernel, vschneid,
	axboe, Heng Qi

On Wed, Oct 09, 2024 at 04:44:24PM +0100, Pavel Begunkov wrote:
> On 10/8/24 16:18, John Ogness wrote:
> > On 2024-10-04, Petr Mladek <pmladek@suse.com> wrote:
> > > On Fri 2024-10-04 02:08:52, Breno Leitao wrote:
> > > > 	 =====================================================
> > > > 	 WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
> > > > 	 6.12.0-rc1-kbuilder-virtme-00033-gd4ac164bde7a #50 Not tainted
> > > > 	 -----------------------------------------------------
> > > > 	 swapper/0/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
> > > > 	 ff1100010a260518 (_xmit_ETHER#2){+.-.}-{2:2}, at: virtnet_poll_tx (./include/linux/netdevice.h:4361 drivers/net/virtio_net.c:2969)
> > > > 
> > > > 	and this task is already holding:
> > > > 	 ffffffff86f2b5b8 (target_list_lock){....}-{2:2}, at: write_ext_msg (drivers/net/netconsole.c:?)
> > > > 	 which would create a new lock dependency:
> > > > 	  (target_list_lock){....}-{2:2} -> (_xmit_ETHER#2){+.-.}-{2:2}
> > > > 
> > > > 	but this new dependency connects a HARDIRQ-irq-safe lock:
> > > > 	  (console_owner){-...}-{0:0}
> > 
> > ...
> > 
> > > > 	to a HARDIRQ-irq-unsafe lock:
> > > > 	  (_xmit_ETHER#2){+.-.}-{2:2}
> > 
> > ...
> > 
> > > > 	other info that might help us debug this:
> > > > 
> > > > 	 Chain exists of:
> > > > 	console_owner --> target_list_lock --> _xmit_ETHER#2
> > > > 
> > > > 	  Possible interrupt unsafe locking scenario:
> > > > 
> > > > 		CPU0                    CPU1
> > > > 		----                    ----
> > > > 	   lock(_xmit_ETHER#2);
> > > > 					local_irq_disable();
> > > > 					lock(console_owner);
> > > > 					lock(target_list_lock);
> > > > 	   <Interrupt>
> > > > 	     lock(console_owner);
> > 
> > I can trigger this lockdep splat on v6.11 as well.
> > 
> > It only requires a printk() call within any interrupt handler, sometime
> > after the netconsole is initialized and has had at least one run from
> > softirq context.
> > 
> > > My understanding is that the fix is to always take "_xmit_ETHER#2"
> > > lock with interrupts disabled.
> > 
> > That seems to be one possible solution. But maybe there is reasoning why
> > that should not be done. (??) Right now it is clearly a spinlock that is
> 
> It's expensive, and it's a hot path if I understand correctly which
> lock that is. And, IIRC the driver might spend there some time, it's
> always nicer to keep irqs enabled if possible.

This also seems a broad network lock, which might have so many other
impacts beyond performance.

That said, I am running out of ideas on how to get this fixed,
unfortunately.

--breno

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

end of thread, other threads:[~2024-10-09 17:29 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-03 14:51 6.12-rc1: Lockdep regression bissected (virtio-net/console/scheduler) Breno Leitao
2024-10-03 15:06 ` Breno Leitao
2024-10-03 15:32 ` Peter Zijlstra
2024-10-03 15:41   ` Breno Leitao
2024-10-04  9:08     ` Breno Leitao
2024-10-04 10:49       ` Petr Mladek
2024-10-08 15:18         ` John Ogness
2024-10-09 15:44           ` Pavel Begunkov
2024-10-09 17:29             ` Breno Leitao

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).