Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1276703 > unrolled thread

[PATCH 1/2] tracing: introduce TRACE_EVENT_FN_COND macro

Started byDenis Kirjanov <kda@linux-powerpc.org>
First post2015-11-24 19:30 +0100
Last post2015-11-26 10:30 +0100
Articles 5 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 1/2] tracing: introduce TRACE_EVENT_FN_COND macro Denis Kirjanov <kda@linux-powerpc.org> - 2015-11-24 19:30 +0100
    [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs Denis Kirjanov <kda@linux-powerpc.org> - 2015-11-24 19:30 +0100
      Re: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs Michael Ellerman <mpe@ellerman.id.au> - 2015-11-26 07:40 +0100
        Re: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs Denis Kirjanov <kda@linux-powerpc.org> - 2015-11-26 09:20 +0100
          Re: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs Michael Ellerman <mpe@ellerman.id.au> - 2015-11-26 10:30 +0100

#1276703 — [PATCH 1/2] tracing: introduce TRACE_EVENT_FN_COND macro

FromDenis Kirjanov <kda@linux-powerpc.org>
Date2015-11-24 19:30 +0100
Subject[PATCH 1/2] tracing: introduce TRACE_EVENT_FN_COND macro
Message-ID<qyqvL-3iT-5@gated-at.bofh.it>
TRACE_EVENT_FN can't be used in some circumstances
like invoking trace functions from offlined CPU due
to RCU usage.

This patch adds the TRACE_EVENT_FN_COND macro
to make such trace points conditional.

Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>
---
 include/linux/tracepoint.h   | 4 ++++
 include/trace/define_trace.h | 6 ++++++
 include/trace/trace_events.h | 6 ++++++
 3 files changed, 16 insertions(+)

diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index 696a339c..45b3fcf 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -493,6 +493,10 @@ extern void syscall_unregfunc(void);
 #define TRACE_EVENT_FN(name, proto, args, struct,		\
 		assign, print, reg, unreg)			\
 	DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
+#define TRACE_EVENT_FN_COND(name, proto, args, cond, struct,		\
+		assign, print, reg, unreg)			\
+	DECLARE_TRACE_CONDITION(name, PARAMS(proto),	\
+			PARAMS(args), PARAMS(cond))
 #define TRACE_EVENT_CONDITION(name, proto, args, cond,		\
 			      struct, assign, print)		\
 	DECLARE_TRACE_CONDITION(name, PARAMS(proto),		\
diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h
index 2d8639e..6e3945f 100644
--- a/include/trace/define_trace.h
+++ b/include/trace/define_trace.h
@@ -40,6 +40,11 @@
 		assign, print, reg, unreg)			\
 	DEFINE_TRACE_FN(name, reg, unreg)
 
+#undef TRACE_EVENT_FN_COND
+#define TRACE_EVENT_FN_COND(name, proto, args, cond, tstruct,		\
+		assign, print, reg, unreg)			\
+	DEFINE_TRACE_FN(name, reg, unreg)
+
 #undef DEFINE_EVENT
 #define DEFINE_EVENT(template, name, proto, args) \
 	DEFINE_TRACE(name)
@@ -93,6 +98,7 @@
 
 #undef TRACE_EVENT
 #undef TRACE_EVENT_FN
+#undef TRACE_EVENT_FN_COND
 #undef TRACE_EVENT_CONDITION
 #undef DECLARE_EVENT_CLASS
 #undef DEFINE_EVENT
diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h
index de996cf..170c93b 100644
--- a/include/trace/trace_events.h
+++ b/include/trace/trace_events.h
@@ -123,6 +123,12 @@ TRACE_MAKE_SYSTEM_STR();
 	TRACE_EVENT(name, PARAMS(proto), PARAMS(args),			\
 		PARAMS(tstruct), PARAMS(assign), PARAMS(print))		\
 
+#undef TRACE_EVENT_FN_COND
+#define TRACE_EVENT_FN_COND(name, proto, args, cond, tstruct,	\
+		assign, print, reg, unreg)				\
+	TRACE_EVENT_CONDITION(name, PARAMS(proto), PARAMS(args), PARAMS(cond),		\
+		PARAMS(tstruct), PARAMS(assign), PARAMS(print))		\
+
 #undef TRACE_EVENT_FLAGS
 #define TRACE_EVENT_FLAGS(name, value)					\
 	__TRACE_EVENT_FLAGS(name, value)
-- 
2.4.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1276705 — [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs

FromDenis Kirjanov <kda@linux-powerpc.org>
Date2015-11-24 19:30 +0100
Subject[PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs
Message-ID<qyqvM-3iT-23@gated-at.bofh.it>
In reply to#1276703
./drmgr -c cpu -a -r gives the following warning:

[ 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] [c0000001d62578e0] [c0000000008977fc]
  .dump_stack+0x98/0xd4 (unreliable)
  [ 2327.035577] [c0000001d6257960] [c000000000109bd8]
  .lockdep_rcu_suspicious+0x108/0x170
  [ 2327.035580] [c0000001d62579f0] [c00000000006a1d0]
  .__trace_hcall_exit+0x2b0/0x2c0
  [ 2327.035584] [c0000001d6257ab0] [c00000000006a2e8]
  plpar_hcall_norets_trace+0x70/0x8c
  [ 2327.035588] [c0000001d6257b20] [c000000000067a14]
  .icp_hv_set_cpu_priority+0x54/0xc0
  [ 2327.035592] [c0000001d6257ba0] [c000000000066c5c]
  .xics_teardown_cpu+0x5c/0xa0
  [ 2327.035595] [c0000001d6257c20] [c0000000000747ac]
  .pseries_mach_cpu_die+0x6c/0x320
  [ 2327.035598] [c0000001d6257cd0] [c0000000000439cc]
  .cpu_die+0x3c/0x60
  [ 2327.035602] [c0000001d6257d40] [c0000000000183d8]
  .arch_cpu_idle_dead+0x28/0x40
  [ 2327.035606] [c0000001d6257db0] [c0000000000ff1dc]
  .cpu_startup_entry+0x4fc/0x560
  [ 2327.035610] [c0000001d6257ed0] [c000000000043728]
  .start_secondary+0x328/0x360
  [ 2327.035614] [c0000001d6257f90] [c000000000008a6c]
  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 <kda@linux-powerpc.org>
---
 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..3dc5803 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(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(smp_processor_id())),
+
 	TP_STRUCT__entry(
 		__field(unsigned long, opcode)
 		__field(unsigned long, retval)
-- 
2.4.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1277992 — Re: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs

FromMichael Ellerman <mpe@ellerman.id.au>
Date2015-11-26 07:40 +0100
SubjectRe: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs
Message-ID<qyYnL-14m-5@gated-at.bofh.it>
In reply to#1276705
On Tue, 2015-11-24 at 21:23 +0300, Denis Kirjanov wrote:

> ./drmgr -c cpu -a -r gives the following warning:
> 
> [ 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] [c0000001d62578e0] [c0000000008977fc] .dump_stack+0x98/0xd4 (unreliable)
> [ 2327.035577] [c0000001d6257960] [c000000000109bd8] .lockdep_rcu_suspicious+0x108/0x170
> [ 2327.035580] [c0000001d62579f0] [c00000000006a1d0] .__trace_hcall_exit+0x2b0/0x2c0
> [ 2327.035584] [c0000001d6257ab0] [c00000000006a2e8] plpar_hcall_norets_trace+0x70/0x8c
> [ 2327.035588] [c0000001d6257b20] [c000000000067a14] .icp_hv_set_cpu_priority+0x54/0xc0
> [ 2327.035592] [c0000001d6257ba0] [c000000000066c5c] .xics_teardown_cpu+0x5c/0xa0
> [ 2327.035595] [c0000001d6257c20] [c0000000000747ac] .pseries_mach_cpu_die+0x6c/0x320
> [ 2327.035598] [c0000001d6257cd0] [c0000000000439cc] .cpu_die+0x3c/0x60
> [ 2327.035602] [c0000001d6257d40] [c0000000000183d8] .arch_cpu_idle_dead+0x28/0x40
> [ 2327.035606] [c0000001d6257db0] [c0000000000ff1dc] .cpu_startup_entry+0x4fc/0x560
> [ 2327.035610] [c0000001d6257ed0] [c000000000043728] .start_secondary+0x328/0x360
> [ 2327.035614] [c0000001d6257f90] [c000000000008a6c] 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...


I can't get this to hit.

I've got LOCKDEP=y, I've enabled the hcall tracepoints, and then I offline a
cpu via sysfs.

What am I missing? Or does it only hit when you use drmgr?

cheers

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1278057 — Re: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs

FromDenis Kirjanov <kda@linux-powerpc.org>
Date2015-11-26 09:20 +0100
SubjectRe: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs
Message-ID<qyZWx-2oi-9@gated-at.bofh.it>
In reply to#1277992
On 11/26/15, Michael Ellerman <mpe@ellerman.id.au> wrote:
> On Tue, 2015-11-24 at 21:23 +0300, Denis Kirjanov wrote:
>
>> ./drmgr -c cpu -a -r gives the following warning:
>>
>> [ 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] [c0000001d62578e0] [c0000000008977fc] .dump_stack+0x98/0xd4
>> (unreliable)
>> [ 2327.035577] [c0000001d6257960] [c000000000109bd8]
>> .lockdep_rcu_suspicious+0x108/0x170
>> [ 2327.035580] [c0000001d62579f0] [c00000000006a1d0]
>> .__trace_hcall_exit+0x2b0/0x2c0
>> [ 2327.035584] [c0000001d6257ab0] [c00000000006a2e8]
>> plpar_hcall_norets_trace+0x70/0x8c
>> [ 2327.035588] [c0000001d6257b20] [c000000000067a14]
>> .icp_hv_set_cpu_priority+0x54/0xc0
>> [ 2327.035592] [c0000001d6257ba0] [c000000000066c5c]
>> .xics_teardown_cpu+0x5c/0xa0
>> [ 2327.035595] [c0000001d6257c20] [c0000000000747ac]
>> .pseries_mach_cpu_die+0x6c/0x320
>> [ 2327.035598] [c0000001d6257cd0] [c0000000000439cc] .cpu_die+0x3c/0x60
>> [ 2327.035602] [c0000001d6257d40] [c0000000000183d8]
>> .arch_cpu_idle_dead+0x28/0x40
>> [ 2327.035606] [c0000001d6257db0] [c0000000000ff1dc]
>> .cpu_startup_entry+0x4fc/0x560
>> [ 2327.035610] [c0000001d6257ed0] [c000000000043728]
>> .start_secondary+0x328/0x360
>> [ 2327.035614] [c0000001d6257f90] [c000000000008a6c]
>> 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...
>
>
> I can't get this to hit.
>
> I've got LOCKDEP=y, I've enabled the hcall tracepoints, and then I offline
> a
> cpu via sysfs.
I haven't tried it via sysfs. Could you share the command
so I give a try to reproduce.
>
> What am I missing? Or does it only hit when you use drmgr?
Right, I hit it with drmgr...

>
> cheers
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1278114 — Re: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs

FromMichael Ellerman <mpe@ellerman.id.au>
Date2015-11-26 10:30 +0100
SubjectRe: [PATCH 2/2] powerpc: tracing: don't trace hcalls on offline CPUs
Message-ID<qz12j-3e6-27@gated-at.bofh.it>
In reply to#1278057
On Thu, 2015-11-26 at 11:15 +0300, Denis Kirjanov wrote:
> On 11/26/15, Michael Ellerman <mpe@ellerman.id.au> wrote:
> > On Tue, 2015-11-24 at 21:23 +0300, Denis Kirjanov wrote:
> > I can't get this to hit.
> > 
> > I've got LOCKDEP=y, I've enabled the hcall tracepoints, and then I offline
> > a cpu via sysfs.

> I haven't tried it via sysfs. Could you share the command
> so I give a try to reproduce.

Either manually:

$ echo 0 > /sys/devices/system/cpuN/online

Or using:

$ ppc64_cpu --cores-on=1
and/or
$ ppc64_cpu --smt=1

Which uses sysfs.

cheers

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web