linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: devel@linuxdriverproject.org, x86@kernel.org,
	linux-kernel@vger.kernel.org,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Jork Loeser <Jork.Loeser@microsoft.com>,
	Simon Xiao <sixiao@microsoft.com>,
	Andy Lutomirski <luto@kernel.org>
Subject: Re: [PATCH v4 10/10] tracing/hyper-v: trace hyperv_mmu_flush_tlb_others()
Date: Wed, 7 Jun 2017 09:52:06 -0400	[thread overview]
Message-ID: <20170607095206.6e411c51@gandalf.local.home> (raw)
In-Reply-To: <87tw3u76gz.fsf@vitty.brq.redhat.com>

On Mon, 05 Jun 2017 18:19:08 +0200
Vitaly Kuznetsov <vkuznets@redhat.com> wrote:

> Steven Rostedt <rostedt@goodmis.org> writes:
> 
> > On Wed, 24 May 2017 14:04:05 +0200
> > Vitaly Kuznetsov <vkuznets@redhat.com> wrote:
> >  
> >> Add Hyper-V tracing subsystem and trace hyperv_mmu_flush_tlb_others().
> >> Tracing is done the same way we do xen_mmu_flush_tlb_others().
> >> 
> >> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> >> Acked-by: K. Y. Srinivasan <kys@microsoft.com>
> >> Tested-by: Simon Xiao <sixiao@microsoft.com>
> >> Tested-by: Srikanth Myakam <v-srm@microsoft.com>
> >> ---
> >>  MAINTAINERS                         |  1 +
> >>  arch/x86/hyperv/mmu.c               |  8 ++++++++
> >>  arch/x86/include/asm/trace/hyperv.h | 34 ++++++++++++++++++++++++++++++++++
> >>  3 files changed, 43 insertions(+)
> >>  create mode 100644 arch/x86/include/asm/trace/hyperv.h
> >> 
> >> diff --git a/MAINTAINERS b/MAINTAINERS
> >> index 9e98464..045e10a 100644
> >> --- a/MAINTAINERS
> >> +++ b/MAINTAINERS
> >> @@ -6168,6 +6168,7 @@ M:	Stephen Hemminger <sthemmin@microsoft.com>
> >>  L:	devel@linuxdriverproject.org
> >>  S:	Maintained
> >>  F:	arch/x86/include/asm/mshyperv.h
> >> +F:	arch/x86/include/asm/trace/hyperv.h
> >>  F:	arch/x86/include/uapi/asm/hyperv.h
> >>  F:	arch/x86/kernel/cpu/mshyperv.c
> >>  F:	arch/x86/hyperv
> >> diff --git a/arch/x86/hyperv/mmu.c b/arch/x86/hyperv/mmu.c
> >> index c9cecb3..f6b5211 100644
> >> --- a/arch/x86/hyperv/mmu.c
> >> +++ b/arch/x86/hyperv/mmu.c
> >> @@ -6,6 +6,10 @@
> >>  #include <asm/tlbflush.h>
> >>  #include <asm/msr.h>
> >>  #include <asm/fpu/api.h>
> >> +#include <asm/trace/hyperv.h>
> >> +
> >> +#define CREATE_TRACE_POINTS
> >> +DEFINE_TRACE(hyperv_mmu_flush_tlb_others);  
> >
> > The above looks very wrong. Why are you using "DEFINE_TRACE()" here?
> >
> > The typical case is:
> >
> > #define CREATE_TRACE_POINTS
> > #include <asm/trace/hyperv.h>
> >  
> 
> I probably got the idea wrong from Documentation/trace/tracepoints.txt:

Bah! I never was Cc'd on that file. It's totally wrong. Thanks for
pointing that out.

Ah, it was written when we had hard coded tracepoints, that use to do
that. It's very out of date, and still incorrect. 

I'll send a patch to fix it.

> 
> "In subsys/file.c (where the tracing statement must be added) :
> 
> #include <trace/events/subsys.h>
> 
> #define CREATE_TRACE_POINTS
> DEFINE_TRACE(subsys_eventname);
> 
> void somefct(void)
> {
>         ...
>         trace_subsys_eventname(arg, task);
>         ...
> }
> "
> 
> > Does your patch even work?
> >  
> 
> I'm pretty sure I tested tracing this even before sending v2 of this
> series, I'll retest before sending v7.

Even if it does work, it's still fragile as it uses an
no-longer-supported framework.

-- Steve

> >  
> >>  
> >>  /* HvFlushVirtualAddressSpace, HvFlushVirtualAddressList hypercalls */
> >>  struct hv_flush_pcpu {
> >> @@ -75,6 +79,8 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,
> >>  	u64 status = -1ULL;
> >>  	int cpu, vcpu, gva_n, max_gvas;
> >>  
> >> +	trace_hyperv_mmu_flush_tlb_others(cpus, mm, start, end);
> >> +
> >>  	if (!pcpu_flush || !hv_hypercall_pg)
> >>  		goto do_native;
> >>  
> >> @@ -161,6 +167,8 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus,
> >>  	u64 status = -1ULL;
> >>  	int nr_bank = 0, max_gvas, gva_n;
> >>  
> >> +	trace_hyperv_mmu_flush_tlb_others(cpus, mm, start, end);
> >> +
> >>  	if (!pcpu_flush_ex || !hv_hypercall_pg)
> >>  		goto do_native;
> >>  
> >> diff --git a/arch/x86/include/asm/trace/hyperv.h b/arch/x86/include/asm/trace/hyperv.h
> >> new file mode 100644
> >> index 0000000..e46a351
> >> --- /dev/null
> >> +++ b/arch/x86/include/asm/trace/hyperv.h
> >> @@ -0,0 +1,34 @@
> >> +#undef TRACE_SYSTEM
> >> +#define TRACE_SYSTEM hyperv
> >> +
> >> +#if !defined(_TRACE_HYPERV_H) || defined(TRACE_HEADER_MULTI_READ)
> >> +#define _TRACE_HYPERV_H
> >> +
> >> +#include <linux/tracepoint.h>
> >> +
> >> +#if IS_ENABLED(CONFIG_HYPERV)
> >> +
> >> +TRACE_EVENT(hyperv_mmu_flush_tlb_others,
> >> +	    TP_PROTO(const struct cpumask *cpus, struct mm_struct *mm,
> >> +		     unsigned long addr, unsigned long end),
> >> +	    TP_ARGS(cpus, mm, addr, end),
> >> +	    TP_STRUCT__entry(
> >> +		    __field(unsigned int, ncpus)
> >> +		    __field(struct mm_struct *, mm)
> >> +		    __field(unsigned long, addr)
> >> +		    __field(unsigned long, end)
> >> +		    ),
> >> +	    TP_fast_assign(__entry->ncpus = cpumask_weight(cpus);
> >> +			   __entry->mm = mm;
> >> +			   __entry->addr = addr,
> >> +			   __entry->end = end),
> >> +	    TP_printk("ncpus %d mm %p addr %lx, end %lx",
> >> +		      __entry->ncpus, __entry->mm, __entry->addr, __entry->end)
> >> +	);
> >> +
> >> +#endif /* CONFIG_HYPERV */
> >> +
> >> +#endif /* _TRACE_HYPERV_H */
> >> +
> >> +/* This part must be outside protection */
> >> +#include <trace/define_trace.h>  
> 

  reply	other threads:[~2017-06-07 13:52 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-24 12:03 [PATCH v4 00/10] Hyper-V: praravirtualized remote TLB flushing and hypercall improvements Vitaly Kuznetsov
2017-05-24 12:03 ` [PATCH v4 01/10] x86/hyper-v: include hyperv/ only when CONFIG_HYPERV is set Vitaly Kuznetsov
2017-05-24 12:03 ` [PATCH v4 02/10] x86/hyper-v: stash the max number of virtual/logical processor Vitaly Kuznetsov
2017-05-27 17:43   ` Andy Shevchenko
2017-06-05 15:24     ` Steven Rostedt
2017-06-05 15:30       ` Stephen Hemminger
2017-05-24 12:03 ` [PATCH v4 03/10] x86/hyper-v: make hv_do_hypercall() inline Vitaly Kuznetsov
2017-05-27 17:46   ` Andy Shevchenko
2017-05-24 12:03 ` [PATCH v4 04/10] x86/hyper-v: fast hypercall implementation Vitaly Kuznetsov
2017-05-27 17:49   ` Andy Shevchenko
2017-05-24 12:04 ` [PATCH v4 05/10] hyper-v: use fast hypercall for HVCALL_SIGNAL_EVENT Vitaly Kuznetsov
2017-05-27 17:50   ` Andy Shevchenko
2017-05-24 12:04 ` [PATCH v4 06/10] x86/hyper-v: implement rep hypercalls Vitaly Kuznetsov
2017-05-24 12:04 ` [PATCH v4 07/10] hyper-v: globalize vp_index Vitaly Kuznetsov
2017-05-24 12:04 ` [PATCH v4 08/10] x86/hyper-v: use hypercall for remote TLB flush Vitaly Kuznetsov
2017-05-24 12:04 ` [PATCH v4 09/10] x86/hyper-v: support extended CPU ranges for TLB flush hypercalls Vitaly Kuznetsov
2017-05-27 18:13   ` Andy Shevchenko
2017-05-24 12:04 ` [PATCH v4 10/10] tracing/hyper-v: trace hyperv_mmu_flush_tlb_others() Vitaly Kuznetsov
2017-06-05 15:50   ` Steven Rostedt
2017-06-05 16:19     ` Vitaly Kuznetsov
2017-06-07 13:52       ` Steven Rostedt [this message]
2017-06-07 14:03         ` Vitaly Kuznetsov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170607095206.6e411c51@gandalf.local.home \
    --to=rostedt@goodmis.org \
    --cc=Jork.Loeser@microsoft.com \
    --cc=devel@linuxdriverproject.org \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=kys@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=sixiao@microsoft.com \
    --cc=sthemmin@microsoft.com \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).