Re: [PATCH] perf powerpc: Don't call perf_event_disable from atomic context
From: Jiri Olsa
Date: Wed Oct 05 2016 - 04:08:55 EST
On Tue, Oct 04, 2016 at 03:08:27PM +1100, Michael Ellerman wrote:
> Jiri Olsa <jolsa@xxxxxxxxxx> writes:
>
> > The trinity syscall fuzzer triggered following WARN on powerpc:
> > WARNING: CPU: 9 PID: 2998 at arch/powerpc/kernel/hw_breakpoint.c:278
> > ...
> > NIP [c00000000093aedc] .hw_breakpoint_handler+0x28c/0x2b0
> > LR [c00000000093aed8] .hw_breakpoint_handler+0x288/0x2b0
> > Call Trace:
> > [c0000002f7933580] [c00000000093aed8] .hw_breakpoint_handler+0x288/0x2b0 (unreliable)
> > [c0000002f7933630] [c0000000000f671c] .notifier_call_chain+0x7c/0xf0
> > [c0000002f79336d0] [c0000000000f6abc] .__atomic_notifier_call_chain+0xbc/0x1c0
> > [c0000002f7933780] [c0000000000f6c40] .notify_die+0x70/0xd0
> > [c0000002f7933820] [c00000000001a74c] .do_break+0x4c/0x100
> > [c0000002f7933920] [c0000000000089fc] handle_dabr_fault+0x14/0x48
>
> Is that the full stack trace? It doesn't look like it.
>
> And were you running trinity as root or regular user?
I cut it just to contain the backtrace.. attached full
one from another instance of this error.
Jan, could you please answer the trinity question?
thanks,
jirka
---
[ 4557.360587] ===============================
[ 4557.360590] [ INFO: suspicious RCU usage. ]
[ 4557.360593] 3.10.0-379.el7.ppc64le.debug #1 Tainted: G W ------------
[ 4557.360596] -------------------------------
[ 4557.360599] include/linux/rcupdate.h:488 Illegal context switch in RCU read-side critical section!
[ 4557.360602]
[ 4557.360602] other info that might help us debug this:
[ 4557.360602]
[ 4557.360606]
[ 4557.360606] rcu_scheduler_active = 1, debug_locks = 0
[ 4557.360610] 2 locks held by trinity-c0/138777:
[ 4557.360613] #0: (rcu_read_lock){.+.+..}, at: [<c000000000a65408>] notify_die+0x8/0x1c0
[ 4557.360622] #1: (rcu_read_lock){.+.+..}, at: [<c000000000a600a8>] hw_breakpoint_handler+0x8/0x310
[ 4557.360631]
[ 4557.360631] stack backtrace:
[ 4557.360635] CPU: 0 PID: 138777 Comm: trinity-c0 Tainted: G W ------------ 3.10.0-379.el7.ppc64le.debug #1
[ 4557.360639] Call Trace:
[ 4557.360641] [c00000042844b510] [c000000000019e18] show_stack+0x88/0x390 (unreliable)
[ 4557.360647] [c00000042844b5d0] [c000000000a7ab04] dump_stack+0x30/0x44
[ 4557.360653] [c00000042844b5f0] [c0000000001a0140] lockdep_rcu_suspicious+0x140/0x190
[ 4557.360659] [c00000042844b670] [c000000000140ee8] __might_sleep+0x278/0x2d0
[ 4557.360663] [c00000042844b6f0] [c000000000a55794] mutex_lock_nested+0x74/0x5b0
[ 4557.360669] [c00000042844b7f0] [c00000000026f67c] perf_event_ctx_lock_nested+0x15c/0x370
[ 4557.360674] [c00000042844b880] [c0000000002714b8] perf_event_disable+0x28/0xe0
[ 4557.360679] [c00000042844b8b0] [c000000000a602a4] hw_breakpoint_handler+0x204/0x310
[ 4557.360684] [c00000042844b950] [c000000000a65124] notifier_call_chain.constprop.6+0xa4/0x1d0
[ 4557.360689] [c00000042844b9e0] [c000000000a654b8] notify_die+0xb8/0x1c0
[ 4557.360693] [c00000042844ba40] [c0000000000181c4] do_break+0x54/0x100
[ 4557.360698] [c00000042844baf0] [c0000000000095a0] handle_dabr_fault+0x14/0x48
[ 4557.360704] --- Exception: 300 at SyS_getresgid+0xb0/0x170
[ 4557.360704] LR = SyS_getresgid+0x88/0x170
[ 4557.360709] [c00000042844be30] [c00000000000a188] system_call+0x38/0xb4
[ 4557.360713] BUG: sleeping function called from invalid context at kernel/mutex.c:576
[ 4557.360716] in_atomic(): 1, irqs_disabled(): 1, pid: 138777, name: trinity-c0
[ 4557.360720] INFO: lockdep is turned off.
[ 4557.360722] irq event stamp: 9356
[ 4557.360725] hardirqs last enabled at (9355): [<c000000000a583c0>] __mutex_unlock_slowpath+0x120/0x2a0
[ 4557.360730] hardirqs last disabled at (9356): [<c000000000005a1c>] data_access_common+0x11c/0x180
[ 4557.360735] softirqs last enabled at (8688): [<c0000000002ce61c>] bdi_wakeup_thread_delayed+0x8c/0xb0
[ 4557.360742] softirqs last disabled at (8684): [<c000000000a5daec>] _raw_spin_lock_bh+0x2c/0xd0
[ 4557.360748] CPU: 0 PID: 138777 Comm: trinity-c0 Tainted: G W ------------ 3.10.0-379.el7.ppc64le.debug #1
[ 4557.360751] Call Trace:
[ 4557.360754] [c00000042844b590] [c000000000019e18] show_stack+0x88/0x390 (unreliable)
[ 4557.360760] [c00000042844b650] [c000000000a7ab04] dump_stack+0x30/0x44
[ 4557.360764] [c00000042844b670] [c000000000140e34] __might_sleep+0x1c4/0x2d0
[ 4557.360769] [c00000042844b6f0] [c000000000a55794] mutex_lock_nested+0x74/0x5b0
[ 4557.360774] [c00000042844b7f0] [c00000000026f67c] perf_event_ctx_lock_nested+0x15c/0x370
[ 4557.360779] [c00000042844b880] [c0000000002714b8] perf_event_disable+0x28/0xe0
[ 4557.360784] [c00000042844b8b0] [c000000000a602a4] hw_breakpoint_handler+0x204/0x310
[ 4557.360789] [c00000042844b950] [c000000000a65124] notifier_call_chain.constprop.6+0xa4/0x1d0
[ 4557.360793] [c00000042844b9e0] [c000000000a654b8] notify_die+0xb8/0x1c0
[ 4557.360798] [c00000042844ba40] [c0000000000181c4] do_break+0x54/0x100
[ 4557.360803] [c00000042844baf0] [c0000000000095a0] handle_dabr_fault+0x14/0x48
[ 4557.360809] --- Exception: 300 at SyS_getresgid+0xb0/0x170
[ 4557.360809] LR = SyS_getresgid+0x88/0x170
[ 4557.360814] [c00000042844be30] [c00000000000a188] system_call+0x38/0xb4