Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751525AbdFYRIM (ORCPT ); Sun, 25 Jun 2017 13:08:12 -0400 Received: from a2nlsmtp01-02.prod.iad2.secureserver.net ([198.71.225.36]:51330 "EHLO a2nlsmtp01-02.prod.iad2.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751364AbdFYRHx (ORCPT ); Sun, 25 Jun 2017 13:07:53 -0400 x-originating-ip: 107.180.71.197 From: kys@exchange.microsoft.com To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com, marcelo.cerri@canonical.com, sthemmin@microsoft.com Cc: "K. Y. Srinivasan" Subject: [PATCH 10/10] tracing/hyper-v: trace hyperv_mmu_flush_tlb_others() Date: Sun, 25 Jun 2017 10:06:49 -0700 Message-Id: <1498410409-30997-10-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1498410380-30955-1-git-send-email-kys@exchange.microsoft.com> References: <1498410380-30955-1-git-send-email-kys@exchange.microsoft.com> Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfH3nnQd/yUF93DhL2H5IlUMJDfbrrMb+8z6RpiRgO1eJuByBslvEXozHdlypG0pIIc+SRzpfpEtaFrBonKa9iVWsrW5ZETbWKeLfqLWV8TwYmS596ul+ v6iSfYbE/plJmQcYmmF0pvUdhVZFJZ/BTIb1ap8PwCCMyCwhjD80+SxIvLkcpBUeDxqq4dYDVVqRfp49U5JZyHgZXj+BPQn7KTrntwGYAml/wxg4INbq5Bo8 slh0nbiscpFVriEv5fYpE+64JodOcmz8f+xn0ud1f5X2uwxh3/18U+KVvhkR986EY04RNR30Yzz7vMSO6UuVcuyl0FRH+ZtKcmOdDAFJ0lr4lO5U8F2P8BZZ Q533QuZW2xSV5vTqxQ6+ILPbtKMhd5/4IeDNjFgW3Z12uSprA9QeHIdEnrwprL2wQrrLiAblzofxX/qXg89JdJoQGHCdLTRNJR4RpjJxiwCBVRM5LEWMiWCe m4U7yj5rN3HNSQ1xM50ua+6GnIl8GHTOam+P35/9rRMuDeDgELsDIcmbg+38bEXX/npF5bZJ7YhCcivc Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3204 Lines: 104 From: Vitaly Kuznetsov 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 Signed-off-by: K. Y. Srinivasan --- MAINTAINERS | 1 + arch/x86/hyperv/mmu.c | 7 ++++++ arch/x86/include/asm/trace/hyperv.h | 38 +++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 0 deletions(-) create mode 100644 arch/x86/include/asm/trace/hyperv.h diff --git a/MAINTAINERS b/MAINTAINERS index 2e7c834..a0967d9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6169,6 +6169,7 @@ M: Stephen Hemminger 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 0712111..cb35453 100644 --- a/arch/x86/hyperv/mmu.c +++ b/arch/x86/hyperv/mmu.c @@ -8,6 +8,9 @@ #include #include +#define CREATE_TRACE_POINTS +#include + /* HvFlushVirtualAddressSpace, HvFlushVirtualAddressList hypercalls */ struct hv_flush_pcpu { u64 address_space; @@ -103,6 +106,8 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, u64 status = U64_MAX; unsigned long flags; + trace_hyperv_mmu_flush_tlb_others(cpus, mm, start, end); + if (!pcpu_flush || !hv_hypercall_pg) goto do_native; @@ -172,6 +177,8 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus, u64 status = U64_MAX; unsigned long flags; + 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..e44ece1 --- /dev/null +++ b/arch/x86/include/asm/trace/hyperv.h @@ -0,0 +1,38 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM hyperv + +#if !defined(_TRACE_HYPERV_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HYPERV_H + +#include + +#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 */ + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH asm/trace/ +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE hyperv +#endif /* _TRACE_HYPERV_H */ + +/* This part must be outside protection */ +#include -- 1.7.1