[PATCH v2 2/2] ./drmgr -c cpu -a -r gives the following warning:

2015-12-14 Thread Denis Kirjanov
[ 2327.035563]
RCU used illegally from offline CPU!
rcu_scheduler_active = 1, debug_locks = 1
[ 2327.035564] no locks held by swapper/12/0.
[ 2327.035565]
stack backtrace:
[ 2327.035567] CPU: 12 PID: 0 Comm: swapper/12 Tainted: G S
4.3.0-rc3-00060-g353169a #5
[ 2327.035568] Call Trace:
[ 2327.035573] [c001d62578e0] [c08977fc] .dump_stack+0x98/0xd4 
(unreliable)
[ 2327.035577] [c001d6257960] [c0109bd8] 
.lockdep_rcu_suspicious+0x108/0x170
[ 2327.035580] [c001d62579f0] [c006a1d0] 
.__trace_hcall_exit+0x2b0/0x2c0
[ 2327.035584] [c001d6257ab0] [c006a2e8] 
plpar_hcall_norets_trace+0x70/0x8c
[ 2327.035588] [c001d6257b20] [c0067a14] 
.icp_hv_set_cpu_priority+0x54/0xc0
[ 2327.035592] [c001d6257ba0] [c0066c5c] 
.xics_teardown_cpu+0x5c/0xa0
[ 2327.035595] [c001d6257c20] [c00747ac] 
.pseries_mach_cpu_die+0x6c/0x320
[ 2327.035598] [c001d6257cd0] [c00439cc] .cpu_die+0x3c/0x60
[ 2327.035602] [c001d6257d40] [c00183d8] 
.arch_cpu_idle_dead+0x28/0x40
[ 2327.035606] [c001d6257db0] [c00ff1dc] 
.cpu_startup_entry+0x4fc/0x560
[ 2327.035610] [c001d6257ed0] [c0043728] 
.start_secondary+0x328/0x360
[ 2327.035614] [c001d6257f90] [c0008a6c] 
start_secondary_prolog+0x10/0x14
[ 2327.035620] cpu 12 (hwid 12) Ready to die...
[ 2327.144463] cpu 13 (hwid 13) Ready to die...
[ 2327.294180] cpu 14 (hwid 14) Ready to die...
[ 2327.403599] cpu 15 (hwid 15) Ready to die...

Make the hypervisor tracepoints conditional
by using TRACE_EVENT_FN_COND

Signed-off-by: Denis Kirjanov 

v2 changes:
 - Use raw_smp_processor_id as suggested by BenH
 since since hcalls can be called from preemptable sections
---
 arch/powerpc/include/asm/trace.h | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/trace.h b/arch/powerpc/include/asm/trace.h
index 8e86b48..32e36b1 100644
--- a/arch/powerpc/include/asm/trace.h
+++ b/arch/powerpc/include/asm/trace.h
@@ -57,12 +57,14 @@ DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit,
 extern void hcall_tracepoint_regfunc(void);
 extern void hcall_tracepoint_unregfunc(void);
 
-TRACE_EVENT_FN(hcall_entry,
+TRACE_EVENT_FN_COND(hcall_entry,
 
TP_PROTO(unsigned long opcode, unsigned long *args),
 
TP_ARGS(opcode, args),
 
+   TP_CONDITION(cpu_online(raw_smp_processor_id())),
+
TP_STRUCT__entry(
__field(unsigned long, opcode)
),
@@ -76,13 +78,15 @@ TRACE_EVENT_FN(hcall_entry,
hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
 );
 
-TRACE_EVENT_FN(hcall_exit,
+TRACE_EVENT_FN_COND(hcall_exit,
 
TP_PROTO(unsigned long opcode, unsigned long retval,
unsigned long *retbuf),
 
TP_ARGS(opcode, retval, retbuf),
 
+   TP_CONDITION(cpu_online(raw_smp_processor_id())),
+
TP_STRUCT__entry(
__field(unsigned long, opcode)
__field(unsigned long, retval)
-- 
2.4.0

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH v2 2/2] ./drmgr -c cpu -a -r gives the following warning:

2015-12-14 Thread Denis Kirjanov
On 12/14/15, Denis Kirjanov  wrote:
> [ 2327.035563]
> RCU used illegally from offline CPU!
> rcu_scheduler_active = 1, debug_locks = 1
> [ 2327.035564] no locks held by swapper/12/0.
> [ 2327.035565]
> stack backtrace:
> [ 2327.035567] CPU: 12 PID: 0 Comm: swapper/12 Tainted: G S
> 4.3.0-rc3-00060-g353169a #5
> [ 2327.035568] Call Trace:
> [ 2327.035573] [c001d62578e0] [c08977fc] .dump_stack+0x98/0xd4
> (unreliable)
> [ 2327.035577] [c001d6257960] [c0109bd8]
> .lockdep_rcu_suspicious+0x108/0x170
> [ 2327.035580] [c001d62579f0] [c006a1d0]
> .__trace_hcall_exit+0x2b0/0x2c0
> [ 2327.035584] [c001d6257ab0] [c006a2e8]
> plpar_hcall_norets_trace+0x70/0x8c
> [ 2327.035588] [c001d6257b20] [c0067a14]
> .icp_hv_set_cpu_priority+0x54/0xc0
> [ 2327.035592] [c001d6257ba0] [c0066c5c]
> .xics_teardown_cpu+0x5c/0xa0
> [ 2327.035595] [c001d6257c20] [c00747ac]
> .pseries_mach_cpu_die+0x6c/0x320
> [ 2327.035598] [c001d6257cd0] [c00439cc] .cpu_die+0x3c/0x60
> [ 2327.035602] [c001d6257d40] [c00183d8]
> .arch_cpu_idle_dead+0x28/0x40
> [ 2327.035606] [c001d6257db0] [c00ff1dc]
> .cpu_startup_entry+0x4fc/0x560
> [ 2327.035610] [c001d6257ed0] [c0043728]
> .start_secondary+0x328/0x360
> [ 2327.035614] [c001d6257f90] [c0008a6c]
> start_secondary_prolog+0x10/0x14
> [ 2327.035620] cpu 12 (hwid 12) Ready to die...
> [ 2327.144463] cpu 13 (hwid 13) Ready to die...
> [ 2327.294180] cpu 14 (hwid 14) Ready to die...
> [ 2327.403599] cpu 15 (hwid 15) Ready to die...
>
> Make the hypervisor tracepoints conditional
> by using TRACE_EVENT_FN_COND
>
> Signed-off-by: Denis Kirjanov 
Please ignore this patch with the broken subject
>
> v2 changes:
>  - Use raw_smp_processor_id as suggested by BenH
>  since since hcalls can be called from preemptable sections
> ---
>  arch/powerpc/include/asm/trace.h | 8 ++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/trace.h
> b/arch/powerpc/include/asm/trace.h
> index 8e86b48..32e36b1 100644
> --- a/arch/powerpc/include/asm/trace.h
> +++ b/arch/powerpc/include/asm/trace.h
> @@ -57,12 +57,14 @@ DEFINE_EVENT(ppc64_interrupt_class,
> timer_interrupt_exit,
>  extern void hcall_tracepoint_regfunc(void);
>  extern void hcall_tracepoint_unregfunc(void);
>
> -TRACE_EVENT_FN(hcall_entry,
> +TRACE_EVENT_FN_COND(hcall_entry,
>
>   TP_PROTO(unsigned long opcode, unsigned long *args),
>
>   TP_ARGS(opcode, args),
>
> + TP_CONDITION(cpu_online(raw_smp_processor_id())),
> +
>   TP_STRUCT__entry(
>   __field(unsigned long, opcode)
>   ),
> @@ -76,13 +78,15 @@ TRACE_EVENT_FN(hcall_entry,
>   hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
>  );
>
> -TRACE_EVENT_FN(hcall_exit,
> +TRACE_EVENT_FN_COND(hcall_exit,
>
>   TP_PROTO(unsigned long opcode, unsigned long retval,
>   unsigned long *retbuf),
>
>   TP_ARGS(opcode, retval, retbuf),
>
> + TP_CONDITION(cpu_online(raw_smp_processor_id())),
> +
>   TP_STRUCT__entry(
>   __field(unsigned long, opcode)
>   __field(unsigned long, retval)
> --
> 2.4.0
>
>
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev