fix: KVM: x86: Get exit_reason as part of kvm_x86_ops.get_exit_info (v5.16)
authorMichael Jeanson <mjeanson@efficios.com>
Tue, 14 Dec 2021 20:00:18 +0000 (15:00 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 4 Jan 2022 19:15:05 +0000 (14:15 -0500)
See upstream commit :

  commit 0a62a0319abb92c89a4f91c2dbfcaee4e47f37ca
  Author: David Edmondson <david.edmondson@oracle.com>
  Date:   Mon Sep 20 11:37:35 2021 +0100

    KVM: x86: Get exit_reason as part of kvm_x86_ops.get_exit_info

    Extend the get_exit_info static call to provide the reason for the VM
    exit. Modify relevant trace points to use this rather than extracting
    the reason in the caller.

Change-Id: I28903e658eb7cbfc6666e35ba4cffba5e49d1445
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
instrumentation/events/lttng-module/arch/x86/kvm/trace.h

index 4f131aa77b0160aeec4557447032100bd47985eb..9a2f466ad34ea9e97d3a26a076d52280a074d33d 100644 (file)
@@ -115,7 +115,39 @@ LTTNG_TRACEPOINT_EVENT_MAP(kvm_apic, kvm_x86_apic,
 /*
  * Tracepoint for kvm guest exit:
  */
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,10,0))
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,16,0))
+LTTNG_TRACEPOINT_EVENT_CODE_MAP(kvm_exit, kvm_x86_exit,
+       TP_PROTO(struct kvm_vcpu *vcpu, u32 isa),
+       TP_ARGS(vcpu, isa),
+
+       TP_locvar(
+               u32 reason;
+               u64 info1, info2;
+               u32 intr_info, error_code;
+       ),
+
+       TP_code_pre(
+               kvm_x86_ops.get_exit_info(vcpu, &tp_locvar->reason,
+                               &tp_locvar->info1,
+                               &tp_locvar->info2,
+                               &tp_locvar->intr_info,
+                               &tp_locvar->error_code);
+       ),
+
+       TP_FIELDS(
+               ctf_integer(u32, exit_reason, tp_locvar->reason)
+               ctf_integer(unsigned long, guest_rip, kvm_rip_read(vcpu))
+               ctf_integer(u32, isa, isa)
+               ctf_integer(u64, info1, tp_locvar->info1)
+               ctf_integer(u64, info2, tp_locvar->info2)
+               ctf_integer(u32, intr_info, tp_locvar->intr_info)
+               ctf_integer(u32, error_code, tp_locvar->error_code)
+               ctf_integer(unsigned int, vcpu_id, vcpu->vcpu_id)
+       ),
+
+       TP_code_post()
+)
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,10,0))
 LTTNG_TRACEPOINT_EVENT_CODE_MAP(kvm_exit, kvm_x86_exit,
        TP_PROTO(unsigned int exit_reason, struct kvm_vcpu *vcpu, u32 isa),
        TP_ARGS(exit_reason, vcpu, isa),
This page took 0.027128 seconds and 4 git commands to generate.