All of lore.kernel.org
 help / color / mirror / Atom feed
From: bugzilla-daemon@kernel.org
To: linuxppc-dev@lists.ozlabs.org
Subject: [Bug 215622] New: WARNING: possible irq lock inversion dependency detected
Date: Sat, 19 Feb 2022 01:11:35 +0000	[thread overview]
Message-ID: <bug-215622-206035@https.bugzilla.kernel.org/> (raw)

https://bugzilla.kernel.org/show_bug.cgi?id=215622

            Bug ID: 215622
           Summary: WARNING: possible irq lock inversion dependency
                    detected
           Product: Platform Specific/Hardware
           Version: 2.5
    Kernel Version: 5.17-rc4
          Hardware: PPC-64
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: PPC-64
          Assignee: platform_ppc-64@kernel-bugs.osdl.org
          Reporter: erhard_f@mailbox.org
        Regression: No

Created attachment 300484
  --> https://bugzilla.kernel.org/attachment.cgi?id=300484&action=edit
dmesg (5.17-rc4, PowerMac G5 11,2)

Don't know whether this has something to do or in common with a netconsole
issue I unearthed on other hardware (bug #212509)...

But as the trace looks different I'll post this as a seperate bug:

[...]
========================================================
WARNING: possible irq lock inversion dependency detected
5.17.0-rc4-PowerMacG5+ #2 Not tainted
--------------------------------------------------------
swapper/0/1 just changed the state of lock:
c0000000013e4490 (native_tlbie_lock){+.-.}-{2:2}, at: .tlbie+0x70/0x10c
but this lock was taken by another, HARDIRQ-safe lock in the past:
 (console_owner){-...}-{0:0}


and interrupts could create inverse lock ordering between them.


other info that might help us debug this:
Chain exists of:
  console_owner --> target_list_lock --> native_tlbie_lock

 Possible interrupt unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(native_tlbie_lock);
                               local_irq_disable();
                               lock(console_owner);
                               lock(target_list_lock);
  <Interrupt>
    lock(console_owner);

 *** DEADLOCK ***

no locks held by swapper/0/1.

the shortest dependencies between 2nd lock and 1st lock:
  -> (console_owner){-...}-{0:0} ops: 994 {
     IN-HARDIRQ-W at:
                        .lock_acquire+0x290/0x2e8
                        .console_unlock+0x2fc/0x628
                        .vprintk_emit+0x270/0x280
                        .vprintk+0x8c/0x94
                        ._printk+0x30/0x44
                        .crng_fast_load+0x128/0x17c
                        .add_interrupt_randomness+0x330/0x488
                        .handle_irq_event_percpu+0x28/0x54
                        .handle_irq_event+0x44/0x70
                        .handle_fasteoi_irq+0xac/0x158
                        .handle_irq_desc+0x34/0x54
                        .__do_irq+0x174/0x250
                        .__do_IRQ+0xac/0xb4
                        init_stack+0x3820/0x4000
                        .do_IRQ+0xd0/0x124
                        hardware_interrupt_common_virt+0x208/0x210
                        .power4_idle+0x3c/0x70
                        .arch_cpu_idle+0x8c/0x114
                        .default_idle_call+0x7c/0xd4
                        .do_idle+0x118/0x12c
                        .cpu_startup_entry+0x28/0x2c
                        .rest_init+0x1bc/0x1c8
                        .start_kernel+0xba8/0xca0
                        start_here_common+0x1c/0x44
     INITIAL USE at:
                       .lock_acquire+0x290/0x2e8
                       .console_unlock+0x2fc/0x628
                       .vprintk_emit+0x270/0x280
                       .vprintk+0x8c/0x94
                       ._printk+0x30/0x44
                       .start_kernel+0xc4/0xca0
                       start_here_common+0x1c/0x44
   }
   ... key      at: [<c000000001430c30>] console_owner_dep_map+0x0/0x28
   ... acquired at:
   ._raw_spin_lock_irqsave+0x6c/0x98
   .write_msg+0x64/0x10c
   .console_unlock+0x53c/0x628
   .register_console+0x250/0x330
   .init_netconsole+0x538/0x610
   .do_one_initcall+0x100/0x2dc
   .kernel_init_freeable+0x644/0x748
   .kernel_init+0x20/0x178
   .ret_from_kernel_thread+0x58/0x60

 -> (target_list_lock){....}-{2:2} ops: 461 {
    INITIAL USE at:
                     .lock_acquire+0x290/0x2e8
                     ._raw_spin_lock_irqsave+0x6c/0x98
                     .init_netconsole+0x40c/0x610
                     .do_one_initcall+0x100/0x2dc
                     .kernel_init_freeable+0x644/0x748
                     .kernel_init+0x20/0x178
                     .ret_from_kernel_thread+0x58/0x60
  }
  ... key      at: [<c0000000014e8918>] target_list_lock+0x18/0x40
  ... acquired at:
   ._raw_spin_lock+0x44/0x68
   .tlbie+0x70/0x10c
   .native_hpte_invalidate+0xcc/0x114
   .hash__kernel_map_pages+0x270/0x280
   .debug_pagealloc_unmap_pages+0x34/0x40
   .free_unref_page_prepare+0x2c8/0x314
   .free_unref_page+0x38/0xdc
   .__free_slab+0xc4/0x158
   .kfree_skbmem+0x5c/0x7c
   .zap_completion_queue+0x128/0x130
   .netpoll_send_skb+0x2e0/0x348
   .write_msg+0xfc/0x10c
   .console_unlock+0x53c/0x628
   .vprintk_emit+0x270/0x280
   .vprintk+0x8c/0x94
   ._printk+0x30/0x44
   .register_console+0x288/0x330
   .init_netconsole+0x538/0x610
   .do_one_initcall+0x100/0x2dc
   .kernel_init_freeable+0x644/0x748
   .kernel_init+0x20/0x178
   .ret_from_kernel_thread+0x58/0x60

-> (native_tlbie_lock){+.-.}-{2:2} ops: 4044007 {
   HARDIRQ-ON-W at:
                    .lock_acquire+0x290/0x2e8
                    ._raw_spin_lock+0x44/0x68
                    .tlbie+0x70/0x10c
                    .hash__change_memory_range+0xa8/0xc0
                    .hash__mark_initmem_nx+0x3c/0x58
                    .mark_initmem_nx+0x10/0x24
                    .free_initmem+0x24/0x5c
                    .kernel_init+0x38/0x178
                    .ret_from_kernel_thread+0x58/0x60
   IN-SOFTIRQ-W at:
                    .lock_acquire+0x290/0x2e8
                    ._raw_spin_lock+0x44/0x68
                    .tlbie+0x70/0x10c
                    .native_hpte_invalidate+0xcc/0x114
                    .hash__kernel_map_pages+0x270/0x280
                    .debug_pagealloc_unmap_pages+0x34/0x40
                    .free_unref_page_prepare+0x2c8/0x314
                    .free_unref_page+0x38/0xdc
                    .__free_slab+0xc4/0x158
                    .free_object_rcu+0xac/0x138
                    .rcu_core+0x858/0x10b8
                    .__do_softirq+0x31c/0x484
                    .run_ksoftirqd+0x44/0x80
                    .smpboot_thread_fn+0x230/0x238
                    .kthread+0x110/0x118
                    .ret_from_kernel_thread+0x58/0x60
   INITIAL USE at:
                   .lock_acquire+0x290/0x2e8
                   ._raw_spin_lock+0x44/0x68
                   .tlbie+0x70/0x10c
                   .native_hpte_invalidate+0xcc/0x114
                   .hash__kernel_map_pages+0x270/0x280
                   .debug_pagealloc_unmap_pages+0x34/0x40
                   .__free_pages_ok+0x174/0x2a0
                   .deferred_free_range+0x150/0x230
                   .deferred_init_maxorder+0x428/0x4e0
                   .deferred_grow_zone+0x238/0x2dc
                   .get_page_from_freelist+0x204/0x7e4
                   .__alloc_pages+0xc4/0x23c
                   .alloc_slab_page.constprop.0+0x70/0x78
                   .new_slab+0xcc/0x360
                   .__kmem_cache_create+0x210/0x3dc
                   .create_boot_cache+0xa8/0x15c
                   .kmem_cache_init+0x140/0x34c
                   .start_kernel+0x708/0xca0
                   start_here_common+0x1c/0x44
 }
 ... key      at: [<c0000000013e4490>] native_tlbie_lock+0x18/0x40
 ... acquired at:
   .__lock_acquire+0x64c/0x14d0
   .lock_acquire+0x290/0x2e8
   ._raw_spin_lock+0x44/0x68
   .tlbie+0x70/0x10c
   .hash__change_memory_range+0xa8/0xc0
   .hash__mark_initmem_nx+0x3c/0x58
   .mark_initmem_nx+0x10/0x24
   .free_initmem+0x24/0x5c
   .kernel_init+0x38/0x178
   .ret_from_kernel_thread+0x58/0x60


stack backtrace:
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.17.0-rc4-PowerMacG5+ #2
Call Trace:
[c000000002973610] [c000000000552e8c] .dump_stack_lvl+0x98/0xe0 (unreliable)
[c0000000029736a0] [c0000000000c7534] .print_irq_inversion_bug+0x1a8/0x220
[c000000002973750] [c0000000000c81a4] .mark_lock+0x2c8/0x3d8
[c000000002973860] [c0000000000c9818] .__lock_acquire+0x64c/0x14d0
[c000000002973980] [c0000000000cb0c8] .lock_acquire+0x290/0x2e8
[c000000002973a90] [c00000000082ca64] ._raw_spin_lock+0x44/0x68
[c000000002973b10] [c00000000003abfc] .tlbie+0x70/0x10c
[c000000002973bb0] [c000000000036874] .hash__change_memory_range+0xa8/0xc0
[c000000002973c50] [c000000000037124] .hash__mark_initmem_nx+0x3c/0x58
[c000000002973cc0] [c000000000033cb8] .mark_initmem_nx+0x10/0x24
[c000000002973d30] [c000000000033040] .free_initmem+0x24/0x5c
[c000000002973da0] [c00000000001084c] .kernel_init+0x38/0x178
[c000000002973e10] [c00000000000bb70] .ret_from_kernel_thread+0x58/0x60
[...]

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.

             reply	other threads:[~2022-02-19  1:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-19  1:11 bugzilla-daemon [this message]
2022-02-19  1:12 ` [Bug 215622] WARNING: possible irq lock inversion dependency detected bugzilla-daemon
2022-08-28 22:29 ` bugzilla-daemon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-215622-206035@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.