Bug 216410

Summary: WARNING: inconsistent lock state, "inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage" at boot
Product: Platform Specific/Hardware Reporter: Erhard F. (erhard_f)
Component: PPC-64Assignee: platform_ppc-64
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: PPC-64   
OS: Linux   
Kernel Version: 6.0-rc2 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg (6.0-rc2, PowerMac G5 11,2)
kernel .config (6.0-rc2, PowerMac G5 11,2)
dmesg (6.0-rc2, PowerMac G5 11,2)
kernel .config (6.0-rc2, PowerMac G5 11,2)

Description Erhard F. 2022-08-24 22:06:02 UTC
Created attachment 301649 [details]
dmesg (6.0-rc2, PowerMac G5 11,2)

With some lock debugging options turned on I get this at every boot:

[...]
================================
WARNING: inconsistent lock state
6.0.0-rc2-PMacG5 #2 Tainted: G                T 
--------------------------------
inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
swapper/0/1 [HC0[0]:SC0[0]:HE1:SE1] takes:
c0000000024227f0 (native_tlbie_lock){+.?.}-{2:2}, at: .tlbie+0x138/0x4c0
{IN-SOFTIRQ-W} state was registered at:
  .lock_acquire+0x12c/0x4a0
  ._raw_spin_lock+0x44/0x90
  .tlbie+0x138/0x4c0
  .native_hpte_invalidate+0xd4/0x320
  .hash__kernel_map_pages+0x424/0x5a0
  .free_pcp_prepare+0x744/0x890
  .free_unref_page+0x30/0x2f0
  .thread_stack_free_rcu+0x2c/0x50
  .rcu_core+0x8b0/0x1c20
  .__do_softirq+0x188/0x674
  .do_softirq_own_stack+0x30/0x70
  .__irq_exit_rcu+0x150/0x1d0
  .irq_exit+0x10/0x50
  .timer_interrupt+0x260/0x700
  decrementer_common_virt+0x208/0x210
  .power4_idle+0x5c/0x150
  .arch_cpu_idle+0x60/0x200
  .default_idle_call+0xd8/0x3bc
  .do_idle+0x148/0x210
  .cpu_startup_entry+0x30/0x40
  .start_secondary+0x650/0xc40
  start_secondary_prolog+0x10/0x14
irq event stamp: 594659
hardirqs last  enabled at (594659): [<c000000000ddb034>] ._raw_spin_unlock_irqrestore+0xa4/0x110
hardirqs last disabled at (594658): [<c000000000ddbfe8>] ._raw_spin_lock_irqsave+0xb8/0xd0
softirqs last  enabled at (594548): [<c000000000ddc67c>] .__do_softirq+0x47c/0x674
softirqs last disabled at (594527): [<c0000000000143d0>] .do_softirq_own_stack+0x30/0x70

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(native_tlbie_lock);
  <Interrupt>
    lock(native_tlbie_lock);

 *** DEADLOCK ***

no locks held by swapper/0/1.

stack backtrace:
CPU: 1 PID: 1 Comm: swapper/0 Tainted: G                T  6.0.0-rc2-PMacG5 #2
Call Trace:
[c0000000039d75b0] [c00000000090c714] .dump_stack_lvl+0xb0/0x124 (unreliable)
[c0000000039d7640] [c000000000154fb0] .print_usage_bug.part.0+0x250/0x2a0
[c0000000039d76f0] [c00000000014e06c] .mark_lock+0xd9c/0xe40
[c0000000039d7830] [c00000000014eaa0] .__lock_acquire+0x5c0/0x2880
[c0000000039d7960] [c0000000001519cc] .lock_acquire+0x12c/0x4a0
[c0000000039d7a60] [c000000000ddaa14] ._raw_spin_lock+0x44/0x90
[c0000000039d7ae0] [c00000000005c678] .tlbie+0x138/0x4c0
[c0000000039d7b90] [c000000000053568] .hash__change_memory_range+0x108/0x160
[c0000000039d7c40] [c0000000000543fc] .hash__mark_initmem_nx+0x4c/0x90
[c0000000039d7cc0] [c00000000004f014] .mark_initmem_nx+0x24/0x60
[c0000000039d7d30] [c00000000004da54] .free_initmem+0x24/0x90
[c0000000039d7da0] [c0000000000111d8] .kernel_init+0x38/0x1a0
[c0000000039d7e10] [c00000000000bbf0] .ret_from_kernel_thread+0x58/0x60
Freeing unused kernel image (initmem) memory: 4216K
Warning: Unable to mark rodata read only on this CPU.
Comment 1 Erhard F. 2022-08-24 22:06:30 UTC
Created attachment 301650 [details]
kernel .config (6.0-rc2, PowerMac G5 11,2)
Comment 2 Erhard F. 2022-08-24 22:50:41 UTC
Created attachment 301651 [details]
dmesg (6.0-rc2, PowerMac G5 11,2)
Comment 3 Erhard F. 2022-08-24 22:51:07 UTC
Created attachment 301652 [details]
kernel .config (6.0-rc2, PowerMac G5 11,2)