diff options
author | Radim Krčmář <rkrcmar@redhat.com> | 2014-08-21 12:08:09 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2014-08-21 12:45:23 -0400 |
commit | 7b46268d29543e313e731606d845e65c17f232e4 (patch) | |
tree | 86571a9b8ed4dd0972a15cec127945b1a2138807 | |
parent | b4a2d31da812ce03efaf5d30c6b9d39c1cbd18d8 (diff) |
KVM: trace kvm_ple_window grow/shrink
Tracepoint for dynamic PLE window, fired on every potential change.
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | arch/x86/kvm/trace.h | 30 | ||||
-rw-r--r-- | arch/x86/kvm/vmx.c | 4 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 1 |
3 files changed, 35 insertions, 0 deletions
diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h index e850a7d332be..1742dfbd26b3 100644 --- a/arch/x86/kvm/trace.h +++ b/arch/x86/kvm/trace.h | |||
@@ -848,6 +848,36 @@ TRACE_EVENT(kvm_track_tsc, | |||
848 | __print_symbolic(__entry->host_clock, host_clocks)) | 848 | __print_symbolic(__entry->host_clock, host_clocks)) |
849 | ); | 849 | ); |
850 | 850 | ||
851 | TRACE_EVENT(kvm_ple_window, | ||
852 | TP_PROTO(bool grow, unsigned int vcpu_id, int new, int old), | ||
853 | TP_ARGS(grow, vcpu_id, new, old), | ||
854 | |||
855 | TP_STRUCT__entry( | ||
856 | __field( bool, grow ) | ||
857 | __field( unsigned int, vcpu_id ) | ||
858 | __field( int, new ) | ||
859 | __field( int, old ) | ||
860 | ), | ||
861 | |||
862 | TP_fast_assign( | ||
863 | __entry->grow = grow; | ||
864 | __entry->vcpu_id = vcpu_id; | ||
865 | __entry->new = new; | ||
866 | __entry->old = old; | ||
867 | ), | ||
868 | |||
869 | TP_printk("vcpu %u: ple_window %d (%s %d)", | ||
870 | __entry->vcpu_id, | ||
871 | __entry->new, | ||
872 | __entry->grow ? "grow" : "shrink", | ||
873 | __entry->old) | ||
874 | ); | ||
875 | |||
876 | #define trace_kvm_ple_window_grow(vcpu_id, new, old) \ | ||
877 | trace_kvm_ple_window(true, vcpu_id, new, old) | ||
878 | #define trace_kvm_ple_window_shrink(vcpu_id, new, old) \ | ||
879 | trace_kvm_ple_window(false, vcpu_id, new, old) | ||
880 | |||
851 | #endif /* CONFIG_X86_64 */ | 881 | #endif /* CONFIG_X86_64 */ |
852 | 882 | ||
853 | #endif /* _TRACE_KVM_H */ | 883 | #endif /* _TRACE_KVM_H */ |
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index baeac7f580a7..661abc2f7049 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c | |||
@@ -5738,6 +5738,8 @@ static void grow_ple_window(struct kvm_vcpu *vcpu) | |||
5738 | 5738 | ||
5739 | if (vmx->ple_window != old) | 5739 | if (vmx->ple_window != old) |
5740 | vmx->ple_window_dirty = true; | 5740 | vmx->ple_window_dirty = true; |
5741 | |||
5742 | trace_kvm_ple_window_grow(vcpu->vcpu_id, vmx->ple_window, old); | ||
5741 | } | 5743 | } |
5742 | 5744 | ||
5743 | static void shrink_ple_window(struct kvm_vcpu *vcpu) | 5745 | static void shrink_ple_window(struct kvm_vcpu *vcpu) |
@@ -5750,6 +5752,8 @@ static void shrink_ple_window(struct kvm_vcpu *vcpu) | |||
5750 | 5752 | ||
5751 | if (vmx->ple_window != old) | 5753 | if (vmx->ple_window != old) |
5752 | vmx->ple_window_dirty = true; | 5754 | vmx->ple_window_dirty = true; |
5755 | |||
5756 | trace_kvm_ple_window_shrink(vcpu->vcpu_id, vmx->ple_window, old); | ||
5753 | } | 5757 | } |
5754 | 5758 | ||
5755 | /* | 5759 | /* |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 575d3fc67e7e..c10408ef9ab1 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -7673,3 +7673,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_invlpga); | |||
7673 | EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_skinit); | 7673 | EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_skinit); |
7674 | EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_intercepts); | 7674 | EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_intercepts); |
7675 | EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_write_tsc_offset); | 7675 | EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_write_tsc_offset); |
7676 | EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_ple_window); | ||