Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933012AbdDGL16 (ORCPT ); Fri, 7 Apr 2017 07:27:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33876 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932820AbdDGL1b (ORCPT ); Fri, 7 Apr 2017 07:27:31 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 57D7B64D80 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=vkuznets@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 57D7B64D80 From: Vitaly Kuznetsov To: devel@linuxdriverproject.org, x86@kernel.org Cc: linux-kernel@vger.kernel.org, "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Steven Rostedt , Jork Loeser Subject: [PATCH 7/7] tracing/hyper-v: trace hyperv_mmu_flush_tlb_others() Date: Fri, 7 Apr 2017 13:27:01 +0200 Message-Id: <20170407112701.17157-8-vkuznets@redhat.com> In-Reply-To: <20170407112701.17157-1-vkuznets@redhat.com> References: <20170407112701.17157-1-vkuznets@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Fri, 07 Apr 2017 11:27:25 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2576 Lines: 85 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 --- MAINTAINERS | 1 + arch/x86/hyperv/mmu.c | 6 ++++++ include/trace/events/hyperv.h | 30 ++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 include/trace/events/hyperv.h diff --git a/MAINTAINERS b/MAINTAINERS index 819d5e8..9785d98 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6057,6 +6057,7 @@ F: drivers/scsi/storvsc_drv.c F: drivers/uio/uio_hv_generic.c F: drivers/video/fbdev/hyperv_fb.c F: include/linux/hyperv.h +F: include/trace/events/hyperv.h F: tools/hv/ F: Documentation/ABI/stable/sysfs-bus-vmbus diff --git a/arch/x86/hyperv/mmu.c b/arch/x86/hyperv/mmu.c index fb487cb..61f2a5b 100644 --- a/arch/x86/hyperv/mmu.c +++ b/arch/x86/hyperv/mmu.c @@ -5,6 +5,10 @@ #include #include #include +#include + +#define CREATE_TRACE_POINTS +DEFINE_TRACE(hyperv_mmu_flush_tlb_others); /* * Arbitrary number; we need to pre-allocate per-cpu struct for doing TLB @@ -36,6 +40,8 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, u64 status = -1ULL; int cpu, vcpu, gva_n; + trace_hyperv_mmu_flush_tlb_others(cpus, mm, start, end); + if (!pcpu_flush || !hv_hypercall_pg) goto do_native; diff --git a/include/trace/events/hyperv.h b/include/trace/events/hyperv.h new file mode 100644 index 0000000..e37e72d --- /dev/null +++ b/include/trace/events/hyperv.h @@ -0,0 +1,30 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM hyperv + +#if !defined(_TRACE_HYPERV_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HYPERV_H + +#include + +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 /* _TRACE_HYPERV_H */ + +/* This part must be outside protection */ +#include -- 2.9.3