Andrew Geissler | c723b72 | 2021-01-08 16:14:09 -0600 | [diff] [blame] | 1 | From e30866f96b3ab02639f429e4bd34e59b3a336579 Mon Sep 17 00:00:00 2001 |
| 2 | From: Michael Jeanson <mjeanson@efficios.com> |
| 3 | Date: Mon, 26 Oct 2020 14:28:35 -0400 |
| 4 | Subject: [PATCH 12/19] fix: kvm: x86/mmu: Add TDP MMU PF handler (v5.10) |
| 5 | |
| 6 | See upstream commit : |
| 7 | |
| 8 | commit bb18842e21111a979e2e0e1c5d85c09646f18d51 |
| 9 | Author: Ben Gardon <bgardon@google.com> |
| 10 | Date: Wed Oct 14 11:26:50 2020 -0700 |
| 11 | |
| 12 | kvm: x86/mmu: Add TDP MMU PF handler |
| 13 | |
| 14 | Add functions to handle page faults in the TDP MMU. These page faults |
| 15 | are currently handled in much the same way as the x86 shadow paging |
| 16 | based MMU, however the ordering of some operations is slightly |
| 17 | different. Future patches will add eager NX splitting, a fast page fault |
| 18 | handler, and parallel page faults. |
| 19 | |
| 20 | Tested by running kvm-unit-tests and KVM selftests on an Intel Haswell |
| 21 | machine. This series introduced no new failures. |
| 22 | |
| 23 | Upstream-Status: Backport |
| 24 | |
| 25 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> |
| 26 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
| 27 | Change-Id: Ie56959cb6c77913d2f1188b0ca15da9114623a4e |
| 28 | --- |
| 29 | .../lttng-module/arch/x86/kvm/mmutrace.h | 20 ++++++++++++++++++- |
| 30 | probes/lttng-probe-kvm-x86-mmu.c | 5 +++++ |
| 31 | 2 files changed, 24 insertions(+), 1 deletion(-) |
| 32 | |
| 33 | diff --git a/instrumentation/events/lttng-module/arch/x86/kvm/mmutrace.h b/instrumentation/events/lttng-module/arch/x86/kvm/mmutrace.h |
| 34 | index e5470400..86717835 100644 |
| 35 | --- a/instrumentation/events/lttng-module/arch/x86/kvm/mmutrace.h |
| 36 | +++ b/instrumentation/events/lttng-module/arch/x86/kvm/mmutrace.h |
| 37 | @@ -163,7 +163,25 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kvm_mmu_page_class, kvm_mmu_prepare_zap_page, |
| 38 | TP_ARGS(sp) |
| 39 | ) |
| 40 | |
| 41 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) |
| 42 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)) |
| 43 | + |
| 44 | +LTTNG_TRACEPOINT_EVENT_MAP( |
| 45 | + mark_mmio_spte, |
| 46 | + |
| 47 | + kvm_mmu_mark_mmio_spte, |
| 48 | + |
| 49 | + TP_PROTO(u64 *sptep, gfn_t gfn, u64 spte), |
| 50 | + TP_ARGS(sptep, gfn, spte), |
| 51 | + |
| 52 | + TP_FIELDS( |
| 53 | + ctf_integer_hex(void *, sptep, sptep) |
| 54 | + ctf_integer(gfn_t, gfn, gfn) |
| 55 | + ctf_integer(unsigned, access, spte & ACC_ALL) |
| 56 | + ctf_integer(unsigned int, gen, get_mmio_spte_generation(spte)) |
| 57 | + ) |
| 58 | +) |
| 59 | + |
| 60 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) |
| 61 | |
| 62 | LTTNG_TRACEPOINT_EVENT_MAP( |
| 63 | mark_mmio_spte, |
| 64 | diff --git a/probes/lttng-probe-kvm-x86-mmu.c b/probes/lttng-probe-kvm-x86-mmu.c |
| 65 | index 8f981865..5043c776 100644 |
| 66 | --- a/probes/lttng-probe-kvm-x86-mmu.c |
| 67 | +++ b/probes/lttng-probe-kvm-x86-mmu.c |
| 68 | @@ -31,6 +31,11 @@ |
| 69 | #include <../../arch/x86/kvm/mmutrace.h> |
| 70 | #endif |
| 71 | |
| 72 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)) |
| 73 | +#include <../arch/x86/kvm/mmu.h> |
| 74 | +#include <../arch/x86/kvm/mmu/spte.h> |
| 75 | +#endif |
| 76 | + |
| 77 | #undef TRACE_INCLUDE_PATH |
| 78 | #undef TRACE_INCLUDE_FILE |
| 79 | |
| 80 | -- |
| 81 | 2.19.1 |
| 82 | |