From: Michael Jeanson Date: Tue, 14 Dec 2021 20:00:18 +0000 (-0500) Subject: fix: KVM: x86: Get exit_reason as part of kvm_x86_ops.get_exit_info (v5.16) X-Git-Tag: v2.13.1~4 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=036297af25a98f4c03b99b45493299b1c920e813;p=lttng-modules.git fix: KVM: x86: Get exit_reason as part of kvm_x86_ops.get_exit_info (v5.16) See upstream commit : commit 0a62a0319abb92c89a4f91c2dbfcaee4e47f37ca Author: David Edmondson 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 Signed-off-by: Mathieu Desnoyers --- diff --git a/include/instrumentation/events/arch/x86/kvm/trace.h b/include/instrumentation/events/arch/x86/kvm/trace.h index af6e5794..42e5b94d 100644 --- a/include/instrumentation/events/arch/x86/kvm/trace.h +++ b/include/instrumentation/events/arch/x86/kvm/trace.h @@ -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),