| From e7b7f3126a95cc97cf9b1de9e14ac22d5a985352 Mon Sep 17 00:00:00 2001 |
| From: Wanpeng Li <wanpengli@tencent.com> |
| Date: Mon, 5 Aug 2019 10:03:24 +0800 |
| Subject: [PATCH] KVM: X86: Add pv tlb shootdown tracepoint |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit b382f44e98506bcb00acada0e30151a73e782a93 upstream. |
| |
| Add pv tlb shootdown tracepoint. |
| |
| Cc: Paolo Bonzini <pbonzini@redhat.com> |
| Cc: Radim Krčmář <rkrcmar@redhat.com> |
| Signed-off-by: Wanpeng Li <wanpengli@tencent.com> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h |
| index 4d47a2631d1f..e11689b876d7 100644 |
| --- a/arch/x86/kvm/trace.h |
| +++ b/arch/x86/kvm/trace.h |
| @@ -1462,6 +1462,25 @@ TRACE_EVENT(kvm_hv_send_ipi_ex, |
| __entry->vector, __entry->format, |
| __entry->valid_bank_mask) |
| ); |
| + |
| +TRACE_EVENT(kvm_pv_tlb_flush, |
| + TP_PROTO(unsigned int vcpu_id, bool need_flush_tlb), |
| + TP_ARGS(vcpu_id, need_flush_tlb), |
| + |
| + TP_STRUCT__entry( |
| + __field( unsigned int, vcpu_id ) |
| + __field( bool, need_flush_tlb ) |
| + ), |
| + |
| + TP_fast_assign( |
| + __entry->vcpu_id = vcpu_id; |
| + __entry->need_flush_tlb = need_flush_tlb; |
| + ), |
| + |
| + TP_printk("vcpu %u need_flush_tlb %s", __entry->vcpu_id, |
| + __entry->need_flush_tlb ? "true" : "false") |
| +); |
| + |
| #endif /* _TRACE_KVM_H */ |
| |
| #undef TRACE_INCLUDE_PATH |
| diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c |
| index 1241b67137b1..1b935e9e3f7d 100644 |
| --- a/arch/x86/kvm/x86.c |
| +++ b/arch/x86/kvm/x86.c |
| @@ -2483,6 +2483,8 @@ static void record_steal_time(struct kvm_vcpu *vcpu) |
| * Doing a TLB flush here, on the guest's behalf, can avoid |
| * expensive IPIs. |
| */ |
| + trace_kvm_pv_tlb_flush(vcpu->vcpu_id, |
| + vcpu->arch.st.steal.preempted & KVM_VCPU_FLUSH_TLB); |
| if (xchg(&vcpu->arch.st.steal.preempted, 0) & KVM_VCPU_FLUSH_TLB) |
| kvm_vcpu_flush_tlb(vcpu, false); |
| |
| -- |
| 2.7.4 |
| |