diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/amd64/amd64/vmm.c | 11 | ||||
-rw-r--r-- | sys/dev/dt/dt_prov_static.c | 11 |
2 files changed, 20 insertions, 2 deletions
diff --git a/sys/arch/amd64/amd64/vmm.c b/sys/arch/amd64/amd64/vmm.c index 8ef4a14f85f..a3c7e42510c 100644 --- a/sys/arch/amd64/amd64/vmm.c +++ b/sys/arch/amd64/amd64/vmm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vmm.c,v 1.284 2021/05/18 00:05:20 dv Exp $ */ +/* $OpenBSD: vmm.c,v 1.285 2021/06/07 13:55:54 dv Exp $ */ /* * Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org> * @@ -28,6 +28,7 @@ #include <sys/rwlock.h> #include <sys/pledge.h> #include <sys/memrange.h> +#include <sys/tracepoint.h> #include <uvm/uvm_extern.h> @@ -4704,6 +4705,8 @@ vcpu_run_vmx(struct vcpu *vcpu, struct vm_run_params *vrp) invvpid(IA32_VMX_INVVPID_SINGLE_CTX_GLB, &vid); } + TRACEPOINT(vmm, guest_enter, vcpu, vrp); + /* Start / resume the VCPU */ #ifdef VMM_DEBUG KERNEL_ASSERT_LOCKED(); @@ -4756,6 +4759,8 @@ vcpu_run_vmx(struct vcpu *vcpu, struct vm_run_params *vrp) } } + TRACEPOINT(vmm, guest_exit, vcpu, vrp, exit_reason); + if (ret || exitinfo != VMX_EXIT_INFO_COMPLETE || exit_reason != VMX_EXIT_EXTINT) { KERNEL_LOCK(); @@ -7059,6 +7064,8 @@ vcpu_run_svm(struct vcpu *vcpu, struct vm_run_params *vrp) vcpu->vc_event = 0; } + TRACEPOINT(vmm, guest_enter, vcpu, vrp); + /* Start / resume the VCPU */ #ifdef VMM_DEBUG KERNEL_ASSERT_LOCKED(); @@ -7103,6 +7110,8 @@ vcpu_run_svm(struct vcpu *vcpu, struct vm_run_params *vrp) vcpu->vc_gueststate.vg_exit_reason = exit_reason; } + TRACEPOINT(vmm, guest_exit, vcpu, vrp, exit_reason); + /* If we exited successfully ... */ if (ret == 0) { vcpu->vc_gueststate.vg_rflags = vmcb->v_rflags; diff --git a/sys/dev/dt/dt_prov_static.c b/sys/dev/dt/dt_prov_static.c index bfe92e5f09a..05828f036ff 100644 --- a/sys/dev/dt/dt_prov_static.c +++ b/sys/dev/dt/dt_prov_static.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dt_prov_static.c,v 1.7 2021/01/06 07:51:40 claudio Exp $ */ +/* $OpenBSD: dt_prov_static.c,v 1.8 2021/06/07 13:55:54 dv Exp $ */ /* * Copyright (c) 2019 Martin Pieuchot <mpi@openbsd.org> @@ -69,6 +69,12 @@ DT_STATIC_PROBE3(vfs, bufcache_take, "long", "int", "int64_t"); DT_STATIC_PROBE4(vfs, cleaner, "long", "int", "long", "long"); /* + * VMM + */ +DT_STATIC_PROBE2(vmm, guest_enter, "void *", "void *"); +DT_STATIC_PROBE3(vmm, guest_exit, "void *", "void *", "uint64_t"); + +/* * List of all static probes */ struct dt_probe *dtps_static[] = { @@ -95,6 +101,9 @@ struct dt_probe *dtps_static[] = { &_DT_STATIC_P(vfs, bufcache_rel), &_DT_STATIC_P(vfs, bufcache_take), &_DT_STATIC_P(vfs, cleaner), + /* VMM */ + &_DT_STATIC_P(vmm, guest_enter), + &_DT_STATIC_P(vmm, guest_exit), }; int |