From: Mathieu Desnoyers Date: Mon, 13 Apr 2020 16:06:05 +0000 (-0400) Subject: Update x86 kvm instrumentation for kernel >= 5.7.0 X-Git-Tag: for-upstreaming-review-1~108 X-Git-Url: http://git.liburcu.org/?a=commitdiff_plain;h=a51d5d47b13d35ecf493ea338fdd1e50e202219e;p=lttng-modules.git Update x86 kvm instrumentation for kernel >= 5.7.0 Signed-off-by: Mathieu Desnoyers --- diff --git a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h index 6b744585..0969d32a 100644 --- a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h +++ b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h @@ -124,8 +124,13 @@ LTTNG_TRACEPOINT_EVENT_CODE_MAP(kvm_exit, kvm_x86_exit, ), TP_code_pre( +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) + kvm_x86_ops.get_exit_info(vcpu, &tp_locvar->info1, + &tp_locvar->info2); +#else kvm_x86_ops->get_exit_info(vcpu, &tp_locvar->info1, &tp_locvar->info2); +#endif ), TP_FIELDS( @@ -430,12 +435,14 @@ LTTNG_TRACEPOINT_EVENT_MAP(kvm_emulate_insn, kvm_x86_emulate_insn, ctf_integer(__u8, len, vcpu->arch.emulate_ctxt.decode.eip - vcpu->arch.emulate_ctxt.decode.fetch.start) ctf_array(__u8, insn, vcpu->arch.emulate_ctxt.decode.fetch.data, 15) + ctf_integer(__u8, flags, kei_decode_mode(vcpu->arch.emulate_ctxt.mode)) #elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)) ctf_integer(__u64, rip, vcpu->arch.emulate_ctxt.fetch.start) ctf_integer(__u32, csbase, kvm_x86_ops->get_segment_base(vcpu, VCPU_SREG_CS)) ctf_integer(__u8, len, vcpu->arch.emulate_ctxt._eip - vcpu->arch.emulate_ctxt.fetch.start) ctf_array(__u8, insn, vcpu->arch.emulate_ctxt.fetch.data, 15) + ctf_integer(__u8, flags, kei_decode_mode(vcpu->arch.emulate_ctxt.mode)) #elif (LINUX_VERSION_CODE < KERNEL_VERSION(5,7,0)) ctf_integer(__u64, rip, vcpu->arch.emulate_ctxt._eip - (vcpu->arch.emulate_ctxt.fetch.ptr - @@ -444,16 +451,17 @@ LTTNG_TRACEPOINT_EVENT_MAP(kvm_emulate_insn, kvm_x86_emulate_insn, ctf_integer(__u8, len, vcpu->arch.emulate_ctxt.fetch.ptr - vcpu->arch.emulate_ctxt.fetch.data) ctf_array(__u8, insn, vcpu->arch.emulate_ctxt.fetch.data, 15) + ctf_integer(__u8, flags, kei_decode_mode(vcpu->arch.emulate_ctxt.mode)) #else ctf_integer(__u64, rip, vcpu->arch.emulate_ctxt->_eip - (vcpu->arch.emulate_ctxt->fetch.ptr - vcpu->arch.emulate_ctxt->fetch.data)) - ctf_integer(__u32, csbase, kvm_x86_ops->get_segment_base(vcpu, VCPU_SREG_CS)) + ctf_integer(__u32, csbase, kvm_x86_ops.get_segment_base(vcpu, VCPU_SREG_CS)) ctf_integer(__u8, len, vcpu->arch.emulate_ctxt->fetch.ptr - vcpu->arch.emulate_ctxt->fetch.data) ctf_array(__u8, insn, vcpu->arch.emulate_ctxt->fetch.data, 15) + ctf_integer(__u8, flags, kei_decode_mode(vcpu->arch.emulate_ctxt->mode)) #endif - ctf_integer(__u8, flags, kei_decode_mode(vcpu->arch.emulate_ctxt.mode)) ctf_integer(__u8, failed, failed) ) ) diff --git a/probes/lttng-probe-kvm-x86.c b/probes/lttng-probe-kvm-x86.c index 94280cca..a2f3ec69 100644 --- a/probes/lttng-probe-kvm-x86.c +++ b/probes/lttng-probe-kvm-x86.c @@ -12,6 +12,11 @@ #include #include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) +/* TODO: check for header availability in Makefile */ +#include <../../arch/x86/kvm/kvm_emulate.h> +#endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)) #include #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)) */