summaryrefslogtreecommitdiff
path: root/poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-KVM-x86-Add-intr-vectoring-info-and-error-code-t.patch
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-KVM-x86-Add-intr-vectoring-info-and-error-code-t.patch')
-rw-r--r--poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-KVM-x86-Add-intr-vectoring-info-and-error-code-t.patch124
1 files changed, 124 insertions, 0 deletions
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-KVM-x86-Add-intr-vectoring-info-and-error-code-t.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-KVM-x86-Add-intr-vectoring-info-and-error-code-t.patch
new file mode 100644
index 0000000000..56c563cea3
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0006-fix-KVM-x86-Add-intr-vectoring-info-and-error-code-t.patch
@@ -0,0 +1,124 @@
+From a6334775b763c187d84914e89a0b835a793ae0fd Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjeanson@efficios.com>
+Date: Mon, 26 Oct 2020 14:11:17 -0400
+Subject: [PATCH 06/16] fix: KVM: x86: Add intr/vectoring info and error code
+ to kvm_exit tracepoint (v5.10)
+
+See upstream commit :
+
+ commit 235ba74f008d2e0936b29f77f68d4e2f73ffd24a
+ Author: Sean Christopherson <sean.j.christopherson@intel.com>
+ Date: Wed Sep 23 13:13:46 2020 -0700
+
+ KVM: x86: Add intr/vectoring info and error code to kvm_exit tracepoint
+
+ Extend the kvm_exit tracepoint to align it with kvm_nested_vmexit in
+ terms of what information is captured. On SVM, add interrupt info and
+ error code, while on VMX it add IDT vectoring and error code. This
+ sets the stage for macrofying the kvm_exit tracepoint definition so that
+ it can be reused for kvm_nested_vmexit without loss of information.
+
+ Opportunistically stuff a zero for VM_EXIT_INTR_INFO if the VM-Enter
+ failed, as the field is guaranteed to be invalid. Note, it'd be
+ possible to further filter the interrupt/exception fields based on the
+ VM-Exit reason, but the helper is intended only for tracepoints, i.e.
+ an extra VMREAD or two is a non-issue, the failed VM-Enter case is just
+ low hanging fruit.
+
+Upstream-Status: Backport
+
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Change-Id: I638fa29ef7d8bb432de42a33f9ae4db43259b915
+---
+ .../events/lttng-module/arch/x86/kvm/trace.h | 55 ++++++++++++++++++-
+ 1 file changed, 53 insertions(+), 2 deletions(-)
+
+diff --git a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
+index 4416ae02..0917b51f 100644
+--- a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
++++ b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
+@@ -115,6 +115,37 @@ LTTNG_TRACEPOINT_EVENT_MAP(kvm_apic, kvm_x86_apic,
+ /*
+ * Tracepoint for kvm guest exit:
+ */
++#if (LINUX_VERSION_CODE >= 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),
++
++ TP_locvar(
++ u64 info1, info2;
++ u32 intr_info, error_code;
++ ),
++
++ TP_code_pre(
++ kvm_x86_ops.get_exit_info(vcpu, &tp_locvar->info1,
++ &tp_locvar->info2,
++ &tp_locvar->intr_info,
++ &tp_locvar->error_code);
++ ),
++
++ TP_FIELDS(
++ ctf_integer(unsigned int, exit_reason, exit_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 (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,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),
+@@ -124,13 +155,32 @@ 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);
++ ),
++
++ TP_FIELDS(
++ ctf_integer(unsigned int, exit_reason, exit_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)
++ ),
++
++ TP_code_post()
++)
+ #else
++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),
++
++ TP_locvar(
++ u64 info1, info2;
++ ),
++
++ TP_code_pre(
+ kvm_x86_ops->get_exit_info(vcpu, &tp_locvar->info1,
+ &tp_locvar->info2);
+-#endif
+ ),
+
+ TP_FIELDS(
+@@ -143,6 +193,7 @@ LTTNG_TRACEPOINT_EVENT_CODE_MAP(kvm_exit, kvm_x86_exit,
+
+ TP_code_post()
+ )
++#endif
+
+ /*
+ * Tracepoint for kvm interrupt injection:
+--
+2.25.1
+