• Russell King's avatar
    ARM: fix lockdep unannotated irqs-off warning · 11b8b25c
    Russell King authored
    Wolfram Sang reported an unannotated irqs-off warning from lockdep:
    
    WARNING: CPU: 0 PID: 282 at kernel/locking/lockdep.c:3557 check_flags+0x84/0x1f4()
    DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)
    CPU: 0 PID: 282 Comm: rcS Tainted: G        W 4.1.0-00002-g5b076054611833 #179
    Hardware name: Generic Emma Mobile EV2 (Flattened Device Tree)
    Backtrace:
    [<c0012c94>] (dump_backtrace) from [<c0012e3c>] (show_stack+0x18/0x1c)
     r6:c02dcc67 r5:00000009 r4:00000000 r3:00400000
    [<c0012e24>] (show_stack) from [<c02510c8>] (dump_stack+0x20/0x28)
    [<c02510a8>] (dump_stack) from [<c0022c44>] (warn_slowpath_common+0x8c/0xb4)
    [<c0022bb8>] (warn_slowpath_common) from [<c0022cd8>] (warn_slowpath_fmt+0x38/0x40)
     r8:c780f470 r7:00000000 r6:00000000 r5:c03b0570 r4:c0b7ec04
    [<c0022ca4>] (warn_slowpath_fmt) from [<c004cd38>] (check_flags+0x84/0x1f4)
     r3:c02e13d8 r2:c02dceaa
    [<c004ccb4>] (check_flags) from [<c0050e50>] (lock_acquire+0x4c/0xbc)
     r5:00000000 r4:60000193
    [<c0050e04>] (lock_acquire) from [<c0256000>] (_raw_spin_lock+0x34/0x44)
     r9:000a8d5c r8:00000001 r7:c7806000 r6:c780f460 r5:c03b06a0 r4:c780f460
    [<c0255fcc>] (_raw_spin_lock) from [<c005a8cc>] (handle_fasteoi_irq+0x20/0x11c)
     r4:c780f400
    [<c005a8ac>] (handle_fasteoi_irq) from [<c0057a4c>] (generic_handle_irq+0x28/0x38)
     r6:00000000 r5:c03b038c r4:00000012 r3:c005a8ac
    [<c0057a24>] (generic_handle_irq) from [<c0057ae4>] (__handle_domain_irq+0x88/0xa8)
     r4:00000000 r3:00000026
    [<c0057a5c>] (__handle_domain_irq) from [<c000a3cc>] (gic_handle_irq+0x40/0x58)
     r8:10c5347d r7:10c5347d r6:c35b1fb0 r5:c03a6304 r4:c8802000 r3:c35b1fb0
    [<c000a38c>] (gic_handle_irq) from [<c0013bc8>] (__irq_usr+0x48/0x60)
    Exception stack(0xc35b1fb0 to 0xc35b1ff8)
    1fa0:                                     00000061 00000000 000ab736 00000066
    1fc0: 00000061 000aa1f0 000a8d54 000a8d54 000a8d88 000a8d5c 000a8cc8 000a8d68
    1fe0: 72727272 bef8a528 000398c0 00031334 20000010 ffffffff
     r6:ffffffff r5:20000010 r4:00031334 r3:00000061
    ---[ end trace cb88537fdc8fa202 ]---
    possible reason: unannotated irqs-off.
    irq event stamp: 769
    hardirqs last  enabled at (769): [<c000f82c>] ret_fast_syscall+0x2c/0x54
    hardirqs last disabled at (768): [<c000f80c>] ret_fast_syscall+0xc/0x54
    softirqs last  enabled at (0): [<c0020ec4>] copy_process.part.65+0x2e8/0x11dc
    softirqs last disabled at (0): [<  (null)>]   (null)
    
    His kernel configuration had:
    CONFIG_PROVE_LOCKING=y
    CONFIG_TRACE_IRQFLAGS=y
    but no IRQSOFF_TRACER, which means entry from userspace can result in the
    kernel seeing IRQs off without being notified of that change of state.
    Change the IRQSOFF ifdef in the usr_entry macro to TRACE_IRQFLAGS instead.
    Tested-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    11b8b25c
entry-armv.S 29.8 KB