@@ -3607,8 +3607,10 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
trace_kvm_nested_vmexit(vcpu, KVM_ISA_SVM);
- if (vmcb_is_extended_rap(svm->vmcb01.ptr))
+ if (vmcb_is_extended_rap(svm->vmcb01.ptr)) {
vmcb_flush_guest_rap(svm->vmcb01.ptr);
+ trace_kvm_svm_eraps_flush_rap(svm->vmcb01.ptr);
+ }
vmexit = nested_svm_exit_special(svm);
@@ -346,6 +346,22 @@ TRACE_EVENT(name, \
*/
TRACE_EVENT_KVM_EXIT(kvm_exit);
+TRACE_EVENT(kvm_svm_eraps_flush_rap, \
+ TP_PROTO(struct vmcb *vmcb), \
+ TP_ARGS(vmcb), \
+ \
+ TP_STRUCT__entry( \
+ __field( struct vmcb *, vmcb ) \
+ ), \
+ \
+ TP_fast_assign( \
+ __entry->vmcb = vmcb; \
+ ), \
+ \
+ TP_printk("vmcb: 0x%p", \
+ __entry->vmcb) \
+)
+
/*
* Tracepoint for kvm interrupt injection:
*/
@@ -14024,6 +14024,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_exit);
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_enter);
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit);
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_rmp_fault);
+EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_svm_eraps_flush_rap);
static int __init kvm_x86_init(void)
{
From: Amit Shah <amit.shah@amd.com> --- arch/x86/kvm/svm/svm.c | 4 +++- arch/x86/kvm/trace.h | 16 ++++++++++++++++ arch/x86/kvm/x86.c | 1 + 3 files changed, 20 insertions(+), 1 deletion(-)