All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Steven Rostedt <rostedt@goodmis.org>
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: Mon, 05 Jun 2017 18:19:08 +0200	[thread overview]
Message-ID: <87tw3u76gz.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <20170605115048.472b5cfa@gandalf.local.home> (Steven Rostedt's message of "Mon, 5 Jun 2017 11:50:48 -0400")

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:

"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.


> -- 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>

-- 
  Vitaly

  reply	other threads:[~2017-06-05 16:19 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 [this message]
2017-06-07 13:52       ` Steven Rostedt
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=87tw3u76gz.fsf@vitty.brq.redhat.com \
    --to=vkuznets@redhat.com \
    --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=rostedt@goodmis.org \
    --cc=sixiao@microsoft.com \
    --cc=sthemmin@microsoft.com \
    --cc=tglx@linutronix.de \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.