if (is_nested(svm)) {
                int vmexit;
 
+               trace_kvm_nested_vmexit(svm->vmcb->save.rip, exit_code,
+                                       svm->vmcb->control.exit_info_1,
+                                       svm->vmcb->control.exit_info_2,
+                                       svm->vmcb->control.exit_int_info,
+                                       svm->vmcb->control.exit_int_info_err);
+
                nsvm_printk("nested handle_exit: 0x%x | 0x%lx | 0x%lx | 0x%lx\n",
                            exit_code, svm->vmcb->control.exit_info_1,
                            svm->vmcb->control.exit_info_2, svm->vmcb->save.rip);
 
                __entry->npt ? "on" : "off")
 );
 
+/*
+ * Tracepoint for #VMEXIT while nested
+ */
+TRACE_EVENT(kvm_nested_vmexit,
+           TP_PROTO(__u64 rip, __u32 exit_code,
+                    __u64 exit_info1, __u64 exit_info2,
+                    __u32 exit_int_info, __u32 exit_int_info_err),
+           TP_ARGS(rip, exit_code, exit_info1, exit_info2,
+                   exit_int_info, exit_int_info_err),
+
+       TP_STRUCT__entry(
+               __field(        __u64,          rip                     )
+               __field(        __u32,          exit_code               )
+               __field(        __u64,          exit_info1              )
+               __field(        __u64,          exit_info2              )
+               __field(        __u32,          exit_int_info           )
+               __field(        __u32,          exit_int_info_err       )
+       ),
+
+       TP_fast_assign(
+               __entry->rip                    = rip;
+               __entry->exit_code              = exit_code;
+               __entry->exit_info1             = exit_info1;
+               __entry->exit_info2             = exit_info2;
+               __entry->exit_int_info          = exit_int_info;
+               __entry->exit_int_info_err      = exit_int_info_err;
+       ),
+       TP_printk("rip: 0x%016llx reason: %s ext_inf1: 0x%016llx "
+                 "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x\n",
+                 __entry->rip,
+                 ftrace_print_symbols_seq(p, __entry->exit_code,
+                                          kvm_x86_ops->exit_reasons_str),
+                 __entry->exit_info1, __entry->exit_info2,
+                 __entry->exit_int_info, __entry->exit_int_info_err)
+);
+
 #endif /* _TRACE_KVM_H */
 
 /* This part must be outside protection */