diff options
author | Vitaly Kuznetsov <[email protected]> | 2018-06-22 19:06:25 +0200 |
---|---|---|
committer | Thomas Gleixner <[email protected]> | 2018-07-03 09:00:34 +0200 |
commit | 58ec5e9c9044bd7e1c0bcc6ad822b2e909f49732 (patch) | |
tree | eb69a33e221a987a50f3484326b40d8319dd1db9 | |
parent | 4bd06060762bc7e4834ecf9daeb78834f7a29582 (diff) |
x86/hyper-v: Trace PV IPI send
Trace Hyper-V PV IPIs the same way we do PV TLB flush.
Signed-off-by: Vitaly Kuznetsov <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: [email protected]
Cc: "K. Y. Srinivasan" <[email protected]>
Cc: Haiyang Zhang <[email protected]>
Cc: Stephen Hemminger <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Tianyu Lan <[email protected]>
Cc: "Michael Kelley (EOSG)" <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
-rw-r--r-- | arch/x86/hyperv/hv_apic.c | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/trace/hyperv.h | 15 |
2 files changed, 19 insertions, 0 deletions
diff --git a/arch/x86/hyperv/hv_apic.c b/arch/x86/hyperv/hv_apic.c index ee962784d25b..657a2b8c738a 100644 --- a/arch/x86/hyperv/hv_apic.c +++ b/arch/x86/hyperv/hv_apic.c @@ -31,6 +31,8 @@ #include <asm/mshyperv.h> #include <asm/apic.h> +#include <asm/trace/hyperv.h> + static struct apic orig_apic; static u64 hv_apic_icr_read(void) @@ -134,6 +136,8 @@ static bool __send_ipi_mask(const struct cpumask *mask, int vector) struct ipi_arg_non_ex ipi_arg; int ret = 1; + trace_hyperv_send_ipi_mask(mask, vector); + if (cpumask_empty(mask)) return true; diff --git a/arch/x86/include/asm/trace/hyperv.h b/arch/x86/include/asm/trace/hyperv.h index 4253bca99989..9c0d4b588e3f 100644 --- a/arch/x86/include/asm/trace/hyperv.h +++ b/arch/x86/include/asm/trace/hyperv.h @@ -28,6 +28,21 @@ TRACE_EVENT(hyperv_mmu_flush_tlb_others, __entry->addr, __entry->end) ); +TRACE_EVENT(hyperv_send_ipi_mask, + TP_PROTO(const struct cpumask *cpus, + int vector), + TP_ARGS(cpus, vector), + TP_STRUCT__entry( + __field(unsigned int, ncpus) + __field(int, vector) + ), + TP_fast_assign(__entry->ncpus = cpumask_weight(cpus); + __entry->vector = vector; + ), + TP_printk("ncpus %d vector %x", + __entry->ncpus, __entry->vector) + ); + #endif /* CONFIG_HYPERV */ #undef TRACE_INCLUDE_PATH |