* Lock inversion in ata_piix
@ 2021-02-03 12:22 Thomas Zimmermann
2021-02-05 14:57 ` Thomas Zimmermann
0 siblings, 1 reply; 2+ messages in thread
From: Thomas Zimmermann @ 2021-02-03 12:22 UTC (permalink / raw)
To: axboe; +Cc: linux-ide
[-- Attachment #1.1: Type: text/plain, Size: 17717 bytes --]
Hi,
there's a possible lock inversion reported during boot-up. The rsp
driver is ata_piix. The full error is below.
Best regards
Thomas
[ 15.782834] ========================================================
[ 15.789912] WARNING: possible irq lock inversion dependency detected
[ 15.789915] 5.11.0-rc5-1-default+ #752 Tainted: G E
[ 15.789918] --------------------------------------------------------
[ 15.789919] loadkeys/347 just changed the state of lock:
[ 15.789922] ffff88810c289c18 (&host->lock){-...}-{2:2}, at:
ata_bmdma_interrupt+0x22/0x2f0
[ 15.789938] but this lock took another, HARDIRQ-READ-unsafe lock in
the past:
[ 15.789940] (&trig->leddev_list_lock){.+.?}-{2:2}
[ 15.834024]
[ 15.834024]
[ 15.834024] and interrupts could create inverse lock ordering between
them.
[ 15.834024]
[ 15.834028]
[ 15.834028] other info that might help us debug this:
[ 15.834029] Possible interrupt unsafe locking scenario:
[ 15.834029]
[ 15.834031] CPU0 CPU1
[ 15.834032] ---- ----
[ 15.834033] lock(&trig->leddev_list_lock);
[ 15.834037] local_irq_disable();
[ 15.834038] lock(&host->lock);
[ 15.834041] lock(&trig->leddev_list_lock);
[ 15.834044] <Interrupt>
[ 15.834045] lock(&host->lock);
[ 15.834048]
[ 15.834048] *** DEADLOCK ***
[ 15.834048]
[ 15.834049] no locks held by loadkeys/347.
[ 15.834051]
[ 15.834051] the shortest dependencies between 2nd lock and 1st lock:
[ 15.834064] -> (&trig->leddev_list_lock){.+.?}-{2:2} {
[ 15.834071] HARDIRQ-ON-R at:
[ 15.834074] __lock_acquire+0x2d7/0x930
[ 15.834081] lock_acquire.part.0+0xf7/0x1e0
[ 15.834085] _raw_read_lock+0x3d/0xa0
[ 15.834090] led_trigger_event+0x25/0x80
[ 15.834095] kbd_bh+0xd1/0x100
[ 15.834100]
tasklet_action_common.constprop.0+0x1b1/0x1d0
[ 15.834105] __do_softirq+0x108/0x554
[ 15.834109] run_ksoftirqd+0x3a/0x60
[ 15.834112] smpboot_thread_fn+0x1b7/0x300
[ 15.834115] kthread+0x1e4/0x210
[ 15.834119] ret_from_fork+0x22/0x30
[ 15.834124] IN-SOFTIRQ-R at:
[ 15.834126] __lock_acquire+0x2d7/0x930
[ 15.834130] lock_acquire.part.0+0xf7/0x1e0
[ 15.834133] _raw_read_lock+0x3d/0xa0
[ 15.834137] led_trigger_event+0x25/0x80
[ 15.834141] kbd_bh+0xd1/0x100
[ 15.834144]
tasklet_action_common.constprop.0+0x1b1/0x1d0
[ 15.834148] __do_softirq+0x108/0x554
[ 15.834151] run_ksoftirqd+0x3a/0x60
[ 15.834154] smpboot_thread_fn+0x1b7/0x300
[ 15.834157] kthread+0x1e4/0x210
[ 15.834160] ret_from_fork+0x22/0x30
[ 15.834164] SOFTIRQ-ON-R at:
[ 15.834166] __lock_acquire+0x2d7/0x930
[ 15.834169] lock_acquire.part.0+0xf7/0x1e0
[ 15.834173] _raw_read_lock+0x3d/0xa0
[ 15.834177] led_trigger_event+0x25/0x80
[ 15.834181] ledtrig_cpu+0xb1/0x110
[ 15.834184] ledtrig_online_cpu+0xf/0x20
[ 15.834188] cpuhp_invoke_callback+0xf9/0x5b0
[ 15.834193] cpuhp_thread_fun+0x237/0x330
[ 15.834197] smpboot_thread_fn+0x1b7/0x300
[ 15.834200] kthread+0x1e4/0x210
[ 15.834203] ret_from_fork+0x22/0x30
[ 15.834207] INITIAL USE at:
[ 15.834209] __lock_acquire+0x2d7/0x930
[ 15.834213] lock_acquire.part.0+0xf7/0x1e0
[ 15.834216] _raw_write_lock_irqsave+0x4d/0x90
[ 15.834221] led_trigger_set+0x224/0x470
[ 15.834225] led_trigger_set_default.part.0+0xd1/0xf0
[ 15.834229] led_classdev_register_ext+0x37a/0x440
[ 15.834233] input_leds_connect+0x1e6/0x380
[ 15.834236] input_attach_handler+0xb1/0xd0
[ 15.834241] input_register_device.cold+0xd0/0x192
[ 15.834245] atkbd_connect+0x3bb/0x460
[ 15.834248] serio_driver_probe+0x56/0x70
[ 15.834252] really_probe+0x185/0x6c0
[ 15.834255] driver_probe_device+0x13f/0x1d0
[ 15.834259] device_driver_attach+0x114/0x120
[ 15.834262] __driver_attach+0xb0/0x1a0
[ 15.834265] bus_for_each_dev+0xdd/0x120
[ 15.834269] serio_handle_event+0x18f/0x3f0
[ 15.834273] process_one_work+0x571/0xa40
[ 15.834277] worker_thread+0x8b/0x620
[ 15.834280] kthread+0x1e4/0x210
[ 15.834283] ret_from_fork+0x22/0x30
[ 15.834287] INITIAL READ USE at:
[ 15.834289] __lock_acquire+0x2d7/0x930
[ 15.834292] lock_acquire.part.0+0xf7/0x1e0
[ 15.834296] _raw_read_lock+0x3d/0xa0
[ 15.834300] led_trigger_event+0x25/0x80
[ 15.834304] kbd_bh+0xd1/0x100
[ 15.834307]
tasklet_action_common.constprop.0+0x1b1/0x1d0
[ 15.834311] __do_softirq+0x108/0x554
[ 15.834314] run_ksoftirqd+0x3a/0x60
[ 15.834318] smpboot_thread_fn+0x1b7/0x300
[ 15.834321] kthread+0x1e4/0x210
[ 15.834323] ret_from_fork+0x22/0x30
[ 15.834327] }
[ 15.834328] ... key at: [<ffffffff962167c0>] __key.0+0x0/0x40
[ 15.834334] ... acquired at:
[ 15.834335] __lock_acquire+0x54f/0x930
[ 15.834339] lock_acquire.part.0+0xf7/0x1e0
[ 15.834342] _raw_read_lock+0x3d/0xa0
[ 15.834346] led_trigger_blink_oneshot+0x34/0x90
[ 15.834350] ledtrig_disk_activity+0x67/0xc0
[ 15.834354] ata_qc_complete+0x3b/0x6d0
[ 15.834357] ata_sff_hsm_move+0x226/0x690
[ 15.834361] ata_sff_pio_task+0x265/0x290
[ 15.834365] process_one_work+0x571/0xa40
[ 15.834368] worker_thread+0x8b/0x620
[ 15.834372] kthread+0x1e4/0x210
[ 15.834374] ret_from_fork+0x22/0x30
[ 15.834378]
[ 15.834379] -> (&host->lock){-...}-{2:2} {
[ 15.834385] IN-HARDIRQ-W at:
[ 15.834387] __lock_acquire+0x2d7/0x930
[ 15.834391] lock_acquire.part.0+0xf7/0x1e0
[ 15.834394] _raw_spin_lock_irqsave+0x4d/0x90
[ 15.834398] ata_bmdma_interrupt+0x22/0x2f0
[ 15.834402] __handle_irq_event_percpu+0x176/0x410
[ 15.834406] handle_irq_event+0xb1/0x140
[ 15.834409] handle_fasteoi_irq+0x100/0x390
[ 15.834413] asm_call_irq_on_stack+0x12/0x20
[ 15.834416] common_interrupt+0xee/0x190
[ 15.834421] asm_common_interrupt+0x1e/0x40
[ 15.834424] __orc_find+0x39/0xc0
[ 15.834428] unwind_next_frame+0x107/0xa20
[ 15.834431] arch_stack_walk+0x6c/0xb0
[ 15.834435] stack_trace_save+0x81/0xa0
[ 15.834439] kasan_save_stack+0x1b/0x40
[ 15.834443] ____kasan_kmalloc.constprop.0+0x81/0xa0
[ 15.834446] kmem_cache_alloc_trace+0x136/0x310
[ 15.834451] vt_kdskbent+0x78/0x300
[ 15.834455] vt_do_kdsk_ioctl+0xe5/0x1e0
[ 15.834459] vt_k_ioctl+0x4dd/0x6f0
[ 15.834462] vt_ioctl+0xc5/0x850
[ 15.834465] tty_ioctl+0x472/0xab0
[ 15.834471] __x64_sys_ioctl+0xb9/0xf0
[ 15.834475] do_syscall_64+0x33/0x80
[ 15.834478] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 15.834483] INITIAL USE at:
[ 15.834485] __lock_acquire+0x2d7/0x930
[ 15.834489] lock_acquire.part.0+0xf7/0x1e0
[ 15.834492] _raw_spin_lock_irqsave+0x4d/0x90
[ 15.834496] ata_dev_init+0xb3/0x170
[ 15.834500] ata_link_init+0xc7/0x140
[ 15.834503] ata_port_alloc+0x2e7/0x300
[ 15.834506] ata_host_alloc+0x136/0x180
[ 15.834510] ata_host_alloc_pinfo+0x1e/0x190
[ 15.834513] ata_pci_sff_prepare_host+0x3c/0xa0
[ 15.834517] ata_pci_bmdma_prepare_host+0x10/0x30
[ 15.834520] piix_init_one+0x47b/0x681 [ata_piix]
[ 15.834532] local_pci_probe+0x74/0xc0
[ 15.834535] pci_call_probe+0xb7/0x1d0
[ 15.834538] pci_device_probe+0x102/0x140
[ 15.834541] really_probe+0x185/0x6c0
[ 15.834544] driver_probe_device+0x13f/0x1d0
[ 15.834547] device_driver_attach+0x114/0x120
[ 15.834550] __driver_attach+0xb0/0x1a0
[ 15.834553] bus_for_each_dev+0xdd/0x120
[ 15.834557] bus_add_driver+0x1fb/0x2e0
[ 15.834560] driver_register+0x103/0x180
[ 15.834563] piix_init+0x1f/0x1000 [ata_piix]
[ 15.834572] do_one_initcall+0xbb/0x3a0
[ 15.834576] do_init_module+0xfd/0x3c0
[ 15.834580] load_module+0xbef/0xc70
[ 15.834584] __do_sys_finit_module+0xff/0x180
[ 15.834588] do_syscall_64+0x33/0x80
[ 15.834591] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 15.834595] }
[ 15.834597] ... key at: [<ffffffff9620bec0>] __key.5+0x0/0x40
[ 15.834601] ... acquired at:
[ 15.834603] mark_lock_irq+0x151/0x360
[ 15.834606] mark_lock+0x309/0x4f0
[ 15.834609] mark_usage+0x185/0x1a0
[ 15.834612] __lock_acquire+0x2d7/0x930
[ 15.834615] lock_acquire.part.0+0xf7/0x1e0
[ 15.834618] _raw_spin_lock_irqsave+0x4d/0x90
[ 15.834622] ata_bmdma_interrupt+0x22/0x2f0
[ 15.834626] __handle_irq_event_percpu+0x176/0x410
[ 15.834629] handle_irq_event+0xb1/0x140
[ 15.834632] handle_fasteoi_irq+0x100/0x390
[ 15.834635] asm_call_irq_on_stack+0x12/0x20
[ 15.834639] common_interrupt+0xee/0x190
[ 15.834642] asm_common_interrupt+0x1e/0x40
[ 15.834645] __orc_find+0x39/0xc0
[ 15.834648] unwind_next_frame+0x107/0xa20
[ 15.834651] arch_stack_walk+0x6c/0xb0
[ 15.834654] stack_trace_save+0x81/0xa0
[ 15.834657] kasan_save_stack+0x1b/0x40
[ 15.834660] ____kasan_kmalloc.constprop.0+0x81/0xa0
[ 15.834663] kmem_cache_alloc_trace+0x136/0x310
[ 15.834667] vt_kdskbent+0x78/0x300
[ 15.834670] vt_do_kdsk_ioctl+0xe5/0x1e0
[ 15.834674] vt_k_ioctl+0x4dd/0x6f0
[ 15.834677] vt_ioctl+0xc5/0x850
[ 15.834680] tty_ioctl+0x472/0xab0
[ 15.834684] __x64_sys_ioctl+0xb9/0xf0
[ 15.834687] do_syscall_64+0x33/0x80
[ 15.834690] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 15.834695]
[ 15.834695]
[ 15.834695] stack backtrace:
[ 15.834697] CPU: 1 PID: 347 Comm: loadkeys Tainted: G E
5.11.0-rc5-1-default+ #752
[ 15.834702] Hardware name: HP ProLiant DL120 G7, BIOS J01 04/21/2011
[ 15.834705] Call Trace:
[ 15.834707] <IRQ>
[ 15.834709] dump_stack+0xae/0xe5
[ 15.834715] check_usage_forwards.cold+0x1f/0x4e
[ 15.834722] ? check_usage_backwards+0x2b0/0x2b0
[ 15.834727] ? stack_trace_save+0x81/0xa0
[ 15.834731] ? jhash.constprop.0+0x1e3/0x260
[ 15.834737] mark_lock_irq+0x151/0x360
[ 15.834742] mark_lock+0x309/0x4f0
[ 15.834746] mark_usage+0x185/0x1a0
[ 15.834751] __lock_acquire+0x2d7/0x930
[ 15.834756] ? check_prev_add+0x11e0/0x11e0
[ 15.834760] lock_acquire.part.0+0xf7/0x1e0
[ 15.834764] ? ata_bmdma_interrupt+0x22/0x2f0
[ 15.834769] ? rcu_read_unlock+0x40/0x40
[ 15.834773] ? lock_is_held_type+0xdc/0x110
[ 15.834792] ? rcu_read_lock_sched_held+0x3f/0x80
[ 15.834797] ? lock_acquire+0x74/0x190
[ 15.834801] ? ata_bmdma_interrupt+0x22/0x2f0
[ 15.834806] _raw_spin_lock_irqsave+0x4d/0x90
[ 15.834811] ? ata_bmdma_interrupt+0x22/0x2f0
[ 15.834815] ata_bmdma_interrupt+0x22/0x2f0
[ 15.834819] ? lock_is_held_type+0xdc/0x110
[ 15.834824] ? ata_bmdma_port_intr+0x180/0x180
[ 15.834829] __handle_irq_event_percpu+0x176/0x410
[ 15.834834] handle_irq_event+0xb1/0x140
[ 15.834838] ? handle_irq_event_percpu+0xd0/0xd0
[ 15.834842] ? handle_fasteoi_irq+0x4d/0x390
[ 15.834847] handle_fasteoi_irq+0x100/0x390
[ 15.834853] asm_call_irq_on_stack+0x12/0x20
[ 15.834857] </IRQ>
[ 15.834858] common_interrupt+0xee/0x190
[ 15.834863] asm_common_interrupt+0x1e/0x40
[ 15.834867] RIP: 0010:__orc_find+0x39/0xc0
[ 15.834871] Code: 6c 97 fc 41 54 55 53 48 83 ec 08 48 89 34 24 85 d2
74 7d 49 89 fc 4c 39 ef 0f 87 82 00 00 00 48 89 cb 48 89 fd 49 89 ff eb
0c <4d> 8d 7e 04 4c 89 f5 4d 39 fd 72 37 4c 89 e8 4c 29 f8 48 89 c1 48
[ 15.834875] RSP: 0018:ffffc9000304f720 EFLAGS: 00000202
[ 15.834879] RAX: ffffffff91494573 RBX: ffffffff9149457a RCX:
dffffc0000000000
[ 15.834882] RDX: 0000000000000007 RSI: ffffffff93e7301a RDI:
ffffffff93b820dc
[ 15.834885] RBP: ffffffff93b820d8 R08: ffffffff910bbe28 R09:
ffffffff93debf3b
[ 15.834888] R10: fffffbfff27bd7e7 R11: 0000000000000001 R12:
ffffffff93b82090
[ 15.834890] R13: ffffffff93b820dc R14: ffffffff93b820dc R15:
ffffffff93b820dc
[ 15.834894] ? kasan_save_stack+0x1a/0x40
[ 15.834898] ? __orc_find+0x68/0xc0
[ 15.834901] ? kasan_save_stack+0x13/0x40
[ 15.834908] unwind_next_frame+0x107/0xa20
[ 15.834912] ? kasan_save_stack+0x1b/0x40
[ 15.834915] ? kasan_save_stack+0x1b/0x40
[ 15.834919] ? kasan_save_stack+0x1b/0x40
[ 15.834922] ? deref_stack_reg+0xb0/0xb0
[ 15.834946] ? __unwind_start.part.0+0x2c5/0x330
[ 15.834949] ? create_prof_cpu_mask+0x20/0x20
[ 15.834954] arch_stack_walk+0x6c/0xb0
[ 15.834959] ? kasan_save_stack+0x1b/0x40
[ 15.834963] stack_trace_save+0x81/0xa0
[ 15.834967] ? stack_trace_consume_entry+0x80/0x80
[ 15.834971] ? stack_trace_consume_entry+0x80/0x80
[ 15.834975] ? check_prev_add+0x11e0/0x11e0
[ 15.834979] kasan_save_stack+0x1b/0x40
[ 15.834982] ? kasan_save_stack+0x1b/0x40
[ 15.834986] ? __lock_acquire+0x572/0x930
[ 15.834992] ? lock_acquire.part.0+0xf7/0x1e0
[ 15.834996] ? sched_clock+0x5/0x10
[ 15.835001] ? sched_clock_cpu+0x18/0x110
[ 15.835006] ? __lock_release+0x12f/0x4f0
[ 15.835011] ? lock_downgrade+0xa0/0xa0
[ 15.835014] ? __lock_contended+0x490/0x490
[ 15.835019] ? cache_alloc_refill+0x2c8/0x310
[ 15.835024] ? do_raw_spin_unlock+0x86/0xf0
[ 15.835029] ? mark_held_locks+0x23/0x90
[ 15.835033] ? unpoison_range+0x3a/0x60
[ 15.835037] ____kasan_kmalloc.constprop.0+0x81/0xa0
[ 15.835042] kmem_cache_alloc_trace+0x136/0x310
[ 15.835048] vt_kdskbent+0x78/0x300
[ 15.835053] vt_do_kdsk_ioctl+0xe5/0x1e0
[ 15.835058] ? vt_do_kbkeycode_ioctl+0x230/0x230
[ 15.835063] ? check_prev_add+0x11e0/0x11e0
[ 15.835067] vt_k_ioctl+0x4dd/0x6f0
[ 15.835071] ? get_pid.part.0+0x50/0x50
[ 15.835076] ? apparmor_capable+0x9d/0x190
[ 15.835081] ? security_capable+0x4d/0x60
[ 15.835086] vt_ioctl+0xc5/0x850
[ 15.835090] ? complete_change_console+0x160/0x160
[ 15.835096] tty_ioctl+0x472/0xab0
[ 15.835101] ? tty_poll+0xd0/0xd0
[ 15.835105] ? lock_is_held_type+0xdc/0x110
[ 15.835111] ? do_vfs_ioctl+0x662/0x680
[ 15.835115] ? asm_sysvec_apic_timer_interrupt+0x12/0x20
[ 15.835119] ? ioctl_fiemap.isra.0+0x1a0/0x1a0
[ 15.835123] ? asm_sysvec_apic_timer_interrupt+0x12/0x20
[ 15.835129] __x64_sys_ioctl+0xb9/0xf0
[ 15.835134] do_syscall_64+0x33/0x80
[ 15.835138] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 15.835143] RIP: 0033:0x7f79989113cb
[ 15.835146] Code: 89 d8 49 8d 3c 1c 48 f7 d8 49 39 c4 72 b5 e8 1c ff
ff ff 85 c0 78 ba 4c 89 e0 5b 5d 41 5c c3 f3 0f 1e fa b8 10 00 00 00 0f
05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 75 ba 0c 00 f7 d8 64 89 01 48
[ 15.835149] RSP: 002b:00007ffec2615b58 EFLAGS: 00000246 ORIG_RAX:
0000000000000010
[ 15.835153] RAX: ffffffffffffffda RBX: 000000000000004d RCX:
00007f79989113cb
[ 15.835156] RDX: 00007ffec2615bac RSI: 0000000000004b47 RDI:
0000000000000003
[ 15.835158] RBP: 000000000000004d R08: 0000000000000000 R09:
0000558170402830
[ 15.835161] R10: 00005581703dfc30 R11: 0000000000000246 R12:
0000000000000208
[ 15.835163] R13: 0000000000000041 R14: 0000000000000041 R15:
00005581707dc2f0
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Lock inversion in ata_piix
2021-02-03 12:22 Lock inversion in ata_piix Thomas Zimmermann
@ 2021-02-05 14:57 ` Thomas Zimmermann
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Zimmermann @ 2021-02-05 14:57 UTC (permalink / raw)
To: axboe; +Cc: linux-ide
[-- Attachment #1.1: Type: text/plain, Size: 22229 bytes --]
Hi
Am 03.02.21 um 13:22 schrieb Thomas Zimmermann:
> Hi,
>
> there's a possible lock inversion reported during boot-up. The rsp
> driver is ata_piix. The full error is below.
The fix [1] given in [2] solves the issue.
Tested-by: Thomas Zimmermann <tzimmermann@suse.de>
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git/commit/?id=9a5ad5c5b2d25508996f10ee6b428d5df91d9160
[2]
https://lore.kernel.org/linux-ide/46bcf09c-c4ac-e96b-1813-1798d36cd93d@redhat.com/T/#mbbccef9fd695a695eae14beda56b0bbb4e622c87
>
> Best regards
> Thomas
>
>
> [ 15.782834] ========================================================
> [ 15.789912] WARNING: possible irq lock inversion dependency detected
> [ 15.789915] 5.11.0-rc5-1-default+ #752 Tainted: G E
> [ 15.789918] --------------------------------------------------------
> [ 15.789919] loadkeys/347 just changed the state of lock:
> [ 15.789922] ffff88810c289c18 (&host->lock){-...}-{2:2}, at:
> ata_bmdma_interrupt+0x22/0x2f0
> [ 15.789938] but this lock took another, HARDIRQ-READ-unsafe lock in
> the past:
> [ 15.789940] (&trig->leddev_list_lock){.+.?}-{2:2}
> [ 15.834024]
> [ 15.834024]
> [ 15.834024] and interrupts could create inverse lock ordering between
> them.
> [ 15.834024]
> [ 15.834028]
> [ 15.834028] other info that might help us debug this:
> [ 15.834029] Possible interrupt unsafe locking scenario:
> [ 15.834029]
> [ 15.834031] CPU0 CPU1
> [ 15.834032] ---- ----
> [ 15.834033] lock(&trig->leddev_list_lock);
> [ 15.834037] local_irq_disable();
> [ 15.834038] lock(&host->lock);
> [ 15.834041]
> lock(&trig->leddev_list_lock);
> [ 15.834044] <Interrupt>
> [ 15.834045] lock(&host->lock);
> [ 15.834048]
> [ 15.834048] *** DEADLOCK ***
> [ 15.834048]
> [ 15.834049] no locks held by loadkeys/347.
> [ 15.834051]
> [ 15.834051] the shortest dependencies between 2nd lock and 1st lock:
> [ 15.834064] -> (&trig->leddev_list_lock){.+.?}-{2:2} {
> [ 15.834071] HARDIRQ-ON-R at:
> [ 15.834074] __lock_acquire+0x2d7/0x930
> [ 15.834081] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834085] _raw_read_lock+0x3d/0xa0
> [ 15.834090] led_trigger_event+0x25/0x80
> [ 15.834095] kbd_bh+0xd1/0x100
> [ 15.834100] tasklet_action_common.constprop.0+0x1b1/0x1d0
> [ 15.834105] __do_softirq+0x108/0x554
> [ 15.834109] run_ksoftirqd+0x3a/0x60
> [ 15.834112] smpboot_thread_fn+0x1b7/0x300
> [ 15.834115] kthread+0x1e4/0x210
> [ 15.834119] ret_from_fork+0x22/0x30
> [ 15.834124] IN-SOFTIRQ-R at:
> [ 15.834126] __lock_acquire+0x2d7/0x930
> [ 15.834130] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834133] _raw_read_lock+0x3d/0xa0
> [ 15.834137] led_trigger_event+0x25/0x80
> [ 15.834141] kbd_bh+0xd1/0x100
> [ 15.834144] tasklet_action_common.constprop.0+0x1b1/0x1d0
> [ 15.834148] __do_softirq+0x108/0x554
> [ 15.834151] run_ksoftirqd+0x3a/0x60
> [ 15.834154] smpboot_thread_fn+0x1b7/0x300
> [ 15.834157] kthread+0x1e4/0x210
> [ 15.834160] ret_from_fork+0x22/0x30
> [ 15.834164] SOFTIRQ-ON-R at:
> [ 15.834166] __lock_acquire+0x2d7/0x930
> [ 15.834169] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834173] _raw_read_lock+0x3d/0xa0
> [ 15.834177] led_trigger_event+0x25/0x80
> [ 15.834181] ledtrig_cpu+0xb1/0x110
> [ 15.834184] ledtrig_online_cpu+0xf/0x20
> [ 15.834188] cpuhp_invoke_callback+0xf9/0x5b0
> [ 15.834193] cpuhp_thread_fun+0x237/0x330
> [ 15.834197] smpboot_thread_fn+0x1b7/0x300
> [ 15.834200] kthread+0x1e4/0x210
> [ 15.834203] ret_from_fork+0x22/0x30
> [ 15.834207] INITIAL USE at:
> [ 15.834209] __lock_acquire+0x2d7/0x930
> [ 15.834213] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834216] _raw_write_lock_irqsave+0x4d/0x90
> [ 15.834221] led_trigger_set+0x224/0x470
> [ 15.834225]
> led_trigger_set_default.part.0+0xd1/0xf0
> [ 15.834229] led_classdev_register_ext+0x37a/0x440
> [ 15.834233] input_leds_connect+0x1e6/0x380
> [ 15.834236] input_attach_handler+0xb1/0xd0
> [ 15.834241] input_register_device.cold+0xd0/0x192
> [ 15.834245] atkbd_connect+0x3bb/0x460
> [ 15.834248] serio_driver_probe+0x56/0x70
> [ 15.834252] really_probe+0x185/0x6c0
> [ 15.834255] driver_probe_device+0x13f/0x1d0
> [ 15.834259] device_driver_attach+0x114/0x120
> [ 15.834262] __driver_attach+0xb0/0x1a0
> [ 15.834265] bus_for_each_dev+0xdd/0x120
> [ 15.834269] serio_handle_event+0x18f/0x3f0
> [ 15.834273] process_one_work+0x571/0xa40
> [ 15.834277] worker_thread+0x8b/0x620
> [ 15.834280] kthread+0x1e4/0x210
> [ 15.834283] ret_from_fork+0x22/0x30
> [ 15.834287] INITIAL READ USE at:
> [ 15.834289] __lock_acquire+0x2d7/0x930
> [ 15.834292] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834296] _raw_read_lock+0x3d/0xa0
> [ 15.834300] led_trigger_event+0x25/0x80
> [ 15.834304] kbd_bh+0xd1/0x100
> [ 15.834307] tasklet_action_common.constprop.0+0x1b1/0x1d0
> [ 15.834311] __do_softirq+0x108/0x554
> [ 15.834314] run_ksoftirqd+0x3a/0x60
> [ 15.834318] smpboot_thread_fn+0x1b7/0x300
> [ 15.834321] kthread+0x1e4/0x210
> [ 15.834323] ret_from_fork+0x22/0x30
> [ 15.834327] }
> [ 15.834328] ... key at: [<ffffffff962167c0>] __key.0+0x0/0x40
> [ 15.834334] ... acquired at:
> [ 15.834335] __lock_acquire+0x54f/0x930
> [ 15.834339] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834342] _raw_read_lock+0x3d/0xa0
> [ 15.834346] led_trigger_blink_oneshot+0x34/0x90
> [ 15.834350] ledtrig_disk_activity+0x67/0xc0
> [ 15.834354] ata_qc_complete+0x3b/0x6d0
> [ 15.834357] ata_sff_hsm_move+0x226/0x690
> [ 15.834361] ata_sff_pio_task+0x265/0x290
> [ 15.834365] process_one_work+0x571/0xa40
> [ 15.834368] worker_thread+0x8b/0x620
> [ 15.834372] kthread+0x1e4/0x210
> [ 15.834374] ret_from_fork+0x22/0x30
> [ 15.834378]
> [ 15.834379] -> (&host->lock){-...}-{2:2} {
> [ 15.834385] IN-HARDIRQ-W at:
> [ 15.834387] __lock_acquire+0x2d7/0x930
> [ 15.834391] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834394] _raw_spin_lock_irqsave+0x4d/0x90
> [ 15.834398] ata_bmdma_interrupt+0x22/0x2f0
> [ 15.834402] __handle_irq_event_percpu+0x176/0x410
> [ 15.834406] handle_irq_event+0xb1/0x140
> [ 15.834409] handle_fasteoi_irq+0x100/0x390
> [ 15.834413] asm_call_irq_on_stack+0x12/0x20
> [ 15.834416] common_interrupt+0xee/0x190
> [ 15.834421] asm_common_interrupt+0x1e/0x40
> [ 15.834424] __orc_find+0x39/0xc0
> [ 15.834428] unwind_next_frame+0x107/0xa20
> [ 15.834431] arch_stack_walk+0x6c/0xb0
> [ 15.834435] stack_trace_save+0x81/0xa0
> [ 15.834439] kasan_save_stack+0x1b/0x40
> [ 15.834443] ____kasan_kmalloc.constprop.0+0x81/0xa0
> [ 15.834446] kmem_cache_alloc_trace+0x136/0x310
> [ 15.834451] vt_kdskbent+0x78/0x300
> [ 15.834455] vt_do_kdsk_ioctl+0xe5/0x1e0
> [ 15.834459] vt_k_ioctl+0x4dd/0x6f0
> [ 15.834462] vt_ioctl+0xc5/0x850
> [ 15.834465] tty_ioctl+0x472/0xab0
> [ 15.834471] __x64_sys_ioctl+0xb9/0xf0
> [ 15.834475] do_syscall_64+0x33/0x80
> [ 15.834478] entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [ 15.834483] INITIAL USE at:
> [ 15.834485] __lock_acquire+0x2d7/0x930
> [ 15.834489] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834492] _raw_spin_lock_irqsave+0x4d/0x90
> [ 15.834496] ata_dev_init+0xb3/0x170
> [ 15.834500] ata_link_init+0xc7/0x140
> [ 15.834503] ata_port_alloc+0x2e7/0x300
> [ 15.834506] ata_host_alloc+0x136/0x180
> [ 15.834510] ata_host_alloc_pinfo+0x1e/0x190
> [ 15.834513] ata_pci_sff_prepare_host+0x3c/0xa0
> [ 15.834517] ata_pci_bmdma_prepare_host+0x10/0x30
> [ 15.834520] piix_init_one+0x47b/0x681 [ata_piix]
> [ 15.834532] local_pci_probe+0x74/0xc0
> [ 15.834535] pci_call_probe+0xb7/0x1d0
> [ 15.834538] pci_device_probe+0x102/0x140
> [ 15.834541] really_probe+0x185/0x6c0
> [ 15.834544] driver_probe_device+0x13f/0x1d0
> [ 15.834547] device_driver_attach+0x114/0x120
> [ 15.834550] __driver_attach+0xb0/0x1a0
> [ 15.834553] bus_for_each_dev+0xdd/0x120
> [ 15.834557] bus_add_driver+0x1fb/0x2e0
> [ 15.834560] driver_register+0x103/0x180
> [ 15.834563] piix_init+0x1f/0x1000 [ata_piix]
> [ 15.834572] do_one_initcall+0xbb/0x3a0
> [ 15.834576] do_init_module+0xfd/0x3c0
> [ 15.834580] load_module+0xbef/0xc70
> [ 15.834584] __do_sys_finit_module+0xff/0x180
> [ 15.834588] do_syscall_64+0x33/0x80
> [ 15.834591] entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [ 15.834595] }
> [ 15.834597] ... key at: [<ffffffff9620bec0>] __key.5+0x0/0x40
> [ 15.834601] ... acquired at:
> [ 15.834603] mark_lock_irq+0x151/0x360
> [ 15.834606] mark_lock+0x309/0x4f0
> [ 15.834609] mark_usage+0x185/0x1a0
> [ 15.834612] __lock_acquire+0x2d7/0x930
> [ 15.834615] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834618] _raw_spin_lock_irqsave+0x4d/0x90
> [ 15.834622] ata_bmdma_interrupt+0x22/0x2f0
> [ 15.834626] __handle_irq_event_percpu+0x176/0x410
> [ 15.834629] handle_irq_event+0xb1/0x140
> [ 15.834632] handle_fasteoi_irq+0x100/0x390
> [ 15.834635] asm_call_irq_on_stack+0x12/0x20
> [ 15.834639] common_interrupt+0xee/0x190
> [ 15.834642] asm_common_interrupt+0x1e/0x40
> [ 15.834645] __orc_find+0x39/0xc0
> [ 15.834648] unwind_next_frame+0x107/0xa20
> [ 15.834651] arch_stack_walk+0x6c/0xb0
> [ 15.834654] stack_trace_save+0x81/0xa0
> [ 15.834657] kasan_save_stack+0x1b/0x40
> [ 15.834660] ____kasan_kmalloc.constprop.0+0x81/0xa0
> [ 15.834663] kmem_cache_alloc_trace+0x136/0x310
> [ 15.834667] vt_kdskbent+0x78/0x300
> [ 15.834670] vt_do_kdsk_ioctl+0xe5/0x1e0
> [ 15.834674] vt_k_ioctl+0x4dd/0x6f0
> [ 15.834677] vt_ioctl+0xc5/0x850
> [ 15.834680] tty_ioctl+0x472/0xab0
> [ 15.834684] __x64_sys_ioctl+0xb9/0xf0
> [ 15.834687] do_syscall_64+0x33/0x80
> [ 15.834690] entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [ 15.834695]
> [ 15.834695]
> [ 15.834695] stack backtrace:
> [ 15.834697] CPU: 1 PID: 347 Comm: loadkeys Tainted: G E
> 5.11.0-rc5-1-default+ #752
> [ 15.834702] Hardware name: HP ProLiant DL120 G7, BIOS J01 04/21/2011
> [ 15.834705] Call Trace:
> [ 15.834707] <IRQ>
> [ 15.834709] dump_stack+0xae/0xe5
> [ 15.834715] check_usage_forwards.cold+0x1f/0x4e
> [ 15.834722] ? check_usage_backwards+0x2b0/0x2b0
> [ 15.834727] ? stack_trace_save+0x81/0xa0
> [ 15.834731] ? jhash.constprop.0+0x1e3/0x260
> [ 15.834737] mark_lock_irq+0x151/0x360
> [ 15.834742] mark_lock+0x309/0x4f0
> [ 15.834746] mark_usage+0x185/0x1a0
> [ 15.834751] __lock_acquire+0x2d7/0x930
> [ 15.834756] ? check_prev_add+0x11e0/0x11e0
> [ 15.834760] lock_acquire.part.0+0xf7/0x1e0
> [ 15.834764] ? ata_bmdma_interrupt+0x22/0x2f0
> [ 15.834769] ? rcu_read_unlock+0x40/0x40
> [ 15.834773] ? lock_is_held_type+0xdc/0x110
> [ 15.834792] ? rcu_read_lock_sched_held+0x3f/0x80
> [ 15.834797] ? lock_acquire+0x74/0x190
> [ 15.834801] ? ata_bmdma_interrupt+0x22/0x2f0
> [ 15.834806] _raw_spin_lock_irqsave+0x4d/0x90
> [ 15.834811] ? ata_bmdma_interrupt+0x22/0x2f0
> [ 15.834815] ata_bmdma_interrupt+0x22/0x2f0
> [ 15.834819] ? lock_is_held_type+0xdc/0x110
> [ 15.834824] ? ata_bmdma_port_intr+0x180/0x180
> [ 15.834829] __handle_irq_event_percpu+0x176/0x410
> [ 15.834834] handle_irq_event+0xb1/0x140
> [ 15.834838] ? handle_irq_event_percpu+0xd0/0xd0
> [ 15.834842] ? handle_fasteoi_irq+0x4d/0x390
> [ 15.834847] handle_fasteoi_irq+0x100/0x390
> [ 15.834853] asm_call_irq_on_stack+0x12/0x20
> [ 15.834857] </IRQ>
> [ 15.834858] common_interrupt+0xee/0x190
> [ 15.834863] asm_common_interrupt+0x1e/0x40
> [ 15.834867] RIP: 0010:__orc_find+0x39/0xc0
> [ 15.834871] Code: 6c 97 fc 41 54 55 53 48 83 ec 08 48 89 34 24 85 d2
> 74 7d 49 89 fc 4c 39 ef 0f 87 82 00 00 00 48 89 cb 48 89 fd 49 89 ff eb
> 0c <4d> 8d 7e 04 4c 89 f5 4d 39 fd 72 37 4c 89 e8 4c 29 f8 48 89 c1 48
> [ 15.834875] RSP: 0018:ffffc9000304f720 EFLAGS: 00000202
> [ 15.834879] RAX: ffffffff91494573 RBX: ffffffff9149457a RCX:
> dffffc0000000000
> [ 15.834882] RDX: 0000000000000007 RSI: ffffffff93e7301a RDI:
> ffffffff93b820dc
> [ 15.834885] RBP: ffffffff93b820d8 R08: ffffffff910bbe28 R09:
> ffffffff93debf3b
> [ 15.834888] R10: fffffbfff27bd7e7 R11: 0000000000000001 R12:
> ffffffff93b82090
> [ 15.834890] R13: ffffffff93b820dc R14: ffffffff93b820dc R15:
> ffffffff93b820dc
> [ 15.834894] ? kasan_save_stack+0x1a/0x40
> [ 15.834898] ? __orc_find+0x68/0xc0
> [ 15.834901] ? kasan_save_stack+0x13/0x40
> [ 15.834908] unwind_next_frame+0x107/0xa20
> [ 15.834912] ? kasan_save_stack+0x1b/0x40
> [ 15.834915] ? kasan_save_stack+0x1b/0x40
> [ 15.834919] ? kasan_save_stack+0x1b/0x40
> [ 15.834922] ? deref_stack_reg+0xb0/0xb0
> [ 15.834946] ? __unwind_start.part.0+0x2c5/0x330
> [ 15.834949] ? create_prof_cpu_mask+0x20/0x20
> [ 15.834954] arch_stack_walk+0x6c/0xb0
> [ 15.834959] ? kasan_save_stack+0x1b/0x40
> [ 15.834963] stack_trace_save+0x81/0xa0
> [ 15.834967] ? stack_trace_consume_entry+0x80/0x80
> [ 15.834971] ? stack_trace_consume_entry+0x80/0x80
> [ 15.834975] ? check_prev_add+0x11e0/0x11e0
> [ 15.834979] kasan_save_stack+0x1b/0x40
> [ 15.834982] ? kasan_save_stack+0x1b/0x40
> [ 15.834986] ? __lock_acquire+0x572/0x930
> [ 15.834992] ? lock_acquire.part.0+0xf7/0x1e0
> [ 15.834996] ? sched_clock+0x5/0x10
> [ 15.835001] ? sched_clock_cpu+0x18/0x110
> [ 15.835006] ? __lock_release+0x12f/0x4f0
> [ 15.835011] ? lock_downgrade+0xa0/0xa0
> [ 15.835014] ? __lock_contended+0x490/0x490
> [ 15.835019] ? cache_alloc_refill+0x2c8/0x310
> [ 15.835024] ? do_raw_spin_unlock+0x86/0xf0
> [ 15.835029] ? mark_held_locks+0x23/0x90
> [ 15.835033] ? unpoison_range+0x3a/0x60
> [ 15.835037] ____kasan_kmalloc.constprop.0+0x81/0xa0
> [ 15.835042] kmem_cache_alloc_trace+0x136/0x310
> [ 15.835048] vt_kdskbent+0x78/0x300
> [ 15.835053] vt_do_kdsk_ioctl+0xe5/0x1e0
> [ 15.835058] ? vt_do_kbkeycode_ioctl+0x230/0x230
> [ 15.835063] ? check_prev_add+0x11e0/0x11e0
> [ 15.835067] vt_k_ioctl+0x4dd/0x6f0
> [ 15.835071] ? get_pid.part.0+0x50/0x50
> [ 15.835076] ? apparmor_capable+0x9d/0x190
> [ 15.835081] ? security_capable+0x4d/0x60
> [ 15.835086] vt_ioctl+0xc5/0x850
> [ 15.835090] ? complete_change_console+0x160/0x160
> [ 15.835096] tty_ioctl+0x472/0xab0
> [ 15.835101] ? tty_poll+0xd0/0xd0
> [ 15.835105] ? lock_is_held_type+0xdc/0x110
> [ 15.835111] ? do_vfs_ioctl+0x662/0x680
> [ 15.835115] ? asm_sysvec_apic_timer_interrupt+0x12/0x20
> [ 15.835119] ? ioctl_fiemap.isra.0+0x1a0/0x1a0
> [ 15.835123] ? asm_sysvec_apic_timer_interrupt+0x12/0x20
> [ 15.835129] __x64_sys_ioctl+0xb9/0xf0
> [ 15.835134] do_syscall_64+0x33/0x80
> [ 15.835138] entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [ 15.835143] RIP: 0033:0x7f79989113cb
> [ 15.835146] Code: 89 d8 49 8d 3c 1c 48 f7 d8 49 39 c4 72 b5 e8 1c ff
> ff ff 85 c0 78 ba 4c 89 e0 5b 5d 41 5c c3 f3 0f 1e fa b8 10 00 00 00 0f
> 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 75 ba 0c 00 f7 d8 64 89 01 48
> [ 15.835149] RSP: 002b:00007ffec2615b58 EFLAGS: 00000246 ORIG_RAX:
> 0000000000000010
> [ 15.835153] RAX: ffffffffffffffda RBX: 000000000000004d RCX:
> 00007f79989113cb
> [ 15.835156] RDX: 00007ffec2615bac RSI: 0000000000004b47 RDI:
> 0000000000000003
> [ 15.835158] RBP: 000000000000004d R08: 0000000000000000 R09:
> 0000558170402830
> [ 15.835161] R10: 00005581703dfc30 R11: 0000000000000246 R12:
> 0000000000000208
> [ 15.835163] R13: 0000000000000041 R14: 0000000000000041 R15:
> 00005581707dc2f0
>
>
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-02-05 22:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-03 12:22 Lock inversion in ata_piix Thomas Zimmermann
2021-02-05 14:57 ` Thomas Zimmermann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.