ARM: fix lockdep unannotated irqs-off warning
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: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>