VirtualBox

source: vbox/trunk/src/VBox/VMM/VBoxVMM.d

Last change on this file was 98103, checked in by vboxsync, 16 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 22.4 KB
Line 
1/* $Id: VBoxVMM.d 98103 2023-01-17 14:15:46Z vboxsync $ */
2/** @file
3 * VBoxVMM - Static dtrace probes.
4 */
5
6/*
7 * Copyright (C) 2009-2023 Oracle and/or its affiliates.
8 *
9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * SPDX-License-Identifier: GPL-3.0-only
26 */
27
28provider vboxvmm
29{
30 probe em__state__changed(struct VMCPU *a_pVCpu, int a_enmOldState, int a_enmNewState, int a_rc);
31 /*^^VMM-ALT-TP: "%d -> %d (rc=%d)", a_enmOldState, a_enmNewState, a_rc */
32
33 probe em__state__unchanged(struct VMCPU *a_pVCpu, int a_enmState, int a_rc);
34 /*^^VMM-ALT-TP: "%d (rc=%d)", a_enmState, a_rc */
35
36 probe em__raw__run__pre(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
37 /*^^VMM-ALT-TP: "%04x:%08llx", (a_pCtx)->cs, (a_pCtx)->rip */
38
39 probe em__raw__run__ret(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, int a_rc);
40 /*^^VMM-ALT-TP: "%04x:%08llx rc=%d", (a_pCtx)->cs, (a_pCtx)->rip, (a_rc) */
41
42 probe em__ff__high(struct VMCPU *a_pVCpu, uint32_t a_fGlobal, uint64_t a_fLocal, int a_rc);
43 /*^^VMM-ALT-TP: "vm=%#x cpu=%#x rc=%d", (a_fGlobal), (a_fLocal), (a_rc) */
44
45 probe em__ff__all(struct VMCPU *a_pVCpu, uint32_t a_fGlobal, uint64_t a_fLocal, int a_rc);
46 /*^^VMM-ALT-TP: "vm=%#x cpu=%#x rc=%d", (a_fGlobal), (a_fLocal), (a_rc) */
47
48 probe em__ff__all__ret(struct VMCPU *a_pVCpu, int a_rc);
49 /*^^VMM-ALT-TP: "%d", (a_rc) */
50
51 probe em__ff__raw(struct VMCPU *a_pVCpu, uint32_t a_fGlobal, uint64_t a_fLocal);
52 /*^^VMM-ALT-TP: "vm=%#x cpu=%#x", (a_fGlobal), (a_fLocal) */
53
54 probe em__ff__raw_ret(struct VMCPU *a_pVCpu, int a_rc);
55 /*^^VMM-ALT-TP: "%d", (a_rc) */
56
57 probe pdm__irq__get( struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource, uint32_t a_iIrq);
58 probe pdm__irq__high(struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource);
59 probe pdm__irq__low( struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource);
60 probe pdm__irq__hilo(struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource);
61
62
63 probe r0__gvmm__vm__created(void *a_pGVM, void *a_pVM, uint32_t a_Pid, void *a_hEMT0, uint32_t a_cCpus);
64 probe r0__hmsvm__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitCode, struct SVMVMCB *a_pVmcb);
65 probe r0__hmvmx__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitReason, uint64_t a_ExitQualification);
66 probe r0__hmvmx__vmexit__noctx(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pIncompleteCtx, uint64_t a_ExitReason);
67
68 probe r0__vmm__return__to__ring3__rc(struct VMCPU *a_pVCpu, struct CPUMCTX *p_Ctx, int a_rc);
69 probe r0__vmm__return__to__ring3__hm(struct VMCPU *a_pVCpu, struct CPUMCTX *p_Ctx, int a_rc);
70 probe r0__vmm__return__to__ring3__nem(struct VMCPU *a_pVCpu, struct CPUMCTX *p_Ctx, int a_rc);
71
72
73 /** @name CPU Exception probes
74 * These probes will intercept guest CPU exceptions as best we
75 * can. In some execution modes some of these probes may also
76 * see non-guest exceptions as we don't try distiguish between
77 * virtualization and guest exceptions before firing the probes.
78 *
79 * Using these probes may have a performance impact on guest
80 * activities involving lots of exceptions.
81 * @{
82 */
83 /** \#DE - integer divide error. */
84 probe xcpt__de(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
85 /** \#DB - debug fault / trap. */
86 probe xcpt__db(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_dr6);
87 /** \#BP - breakpoint (INT3). */
88 probe xcpt__bp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
89 /** \#OF - overflow (INTO). */
90 probe xcpt__of(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
91 /** \#BR - bound range exceeded (BOUND). */
92 probe xcpt__br(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
93 /** \#UD - undefined opcode. */
94 probe xcpt__ud(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
95 /** \#NM - FPU not avaible and more. */
96 probe xcpt__nm(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
97 /** \#DF - double fault. */
98 probe xcpt__df(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
99 /** \#TS - TSS related fault. */
100 probe xcpt__ts(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
101 /** \#NP - segment not present. */
102 probe xcpt__np(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
103 /** \#SS - stack segment fault. */
104 probe xcpt__ss(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
105 /** \#GP - general protection fault. */
106 probe xcpt__gp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
107 /** \#PF - page fault. */
108 probe xcpt__pf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr, uint64_t a_cr2);
109 /** \#MF - math fault (FPU). */
110 probe xcpt__mf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
111 /** \#AC - alignment check. */
112 probe xcpt__ac(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
113 /** \#XF - SIMD floating point exception. */
114 probe xcpt__xf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
115 /** \#VE - virtualization exception. */
116 probe xcpt__ve(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
117 /** \#SX - security exception. */
118 probe xcpt__sx(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
119 /** @} */
120
121
122 /** Software interrupt (INT XXh).
123 * It may be very difficult to implement this probe when using hardware
124 * virtualization, so maybe we have to drop it... */
125 probe int__software(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iInterrupt);
126 /** Hardware interrupt being dispatched.
127 *
128 * Relates to pdm__irq__get ...
129 */
130 probe int__hardware(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iInterrupt, uint32_t a_uTag, uint32_t a_idSource);
131
132 /** @name Instruction probes
133 * These are instructions normally related to VM exits. These
134 * probes differs from the exit probes in that we will try make
135 * these instructions cause exits and fire the probe whenever
136 * they are executed by the guest. This means some of these
137 * probes will have a noticable performance impact (like
138 * instr__pause).
139 * @{ */
140 /** Instruction: HALT */
141 probe instr__halt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
142 /** Instruction: MWAIT */
143 probe instr__mwait(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
144 /** Instruction: MONITOR */
145 probe instr__monitor(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
146 /** Instruction: CPUID instruction (missing stuff in raw-mode). */
147 probe instr__cpuid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t uLeaf, uint32_t uSubLeaf);
148 /** Instruction: INVD */
149 probe instr__invd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
150 /** Instruction: WBINVD */
151 probe instr__wbinvd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
152 /** Instruction: INVLPG */
153 probe instr__invlpg(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
154 /** Instruction: RDTSC */
155 probe instr__rdtsc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
156 /** Instruction: RDTSCP */
157 probe instr__rdtscp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
158 /** Instruction: RDPMC */
159 probe instr__rdpmc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
160 /** Instruction: RDMSR */
161 probe instr__rdmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr);
162 /** Instruction: WRMSR */
163 probe instr__wrmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr, uint64_t a_uValue);
164 /** Instruction: CRx read instruction (missing smsw in raw-mode,
165 * and reads in general in VT-x). */
166 probe instr__crx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
167 /** Instruction: CRx write instruction. */
168 probe instr__crx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
169 /** Instruction: DRx read instruction. */
170 probe instr__drx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
171 /** Instruction: DRx write instruction. */
172 probe instr__drx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
173 /** Instruction: PAUSE instruction (not in raw-mode). */
174 probe instr__pause(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
175 /** Instruction: XSETBV */
176 probe instr__xsetbv(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
177 /** Instruction: SIDT */
178 probe instr__sidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
179 /** Instruction: LIDT */
180 probe instr__lidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
181 /** Instruction: SGDT */
182 probe instr__sgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
183 /** Instruction: LGDT */
184 probe instr__lgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
185 /** Instruction: SLDT */
186 probe instr__sldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
187 /** Instruction: LLDT */
188 probe instr__lldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
189 /** Instruction: STR */
190 probe instr__str(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
191 /** Instruction: LTR */
192 probe instr__ltr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
193 /** Instruction: GETSEC */
194 probe instr__getsec(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
195 /** Instruction: RSM */
196 probe instr__rsm(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
197 /** Instruction: RDRAND */
198 probe instr__rdrand(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
199 /** Instruction: RDSEED */
200 probe instr__rdseed(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
201 /** Instruction: XSAVES */
202 probe instr__xsaves(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
203 /** Instruction: XRSTORS */
204 probe instr__xrstors(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
205 /** Instruction: VMCALL (intel) or VMMCALL (AMD) instruction. */
206 probe instr__vmm__call(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
207
208 /** Instruction: VT-x VMCLEAR instruction. */
209 probe instr__vmx__vmclear(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
210 /** Instruction: VT-x VMLAUNCH */
211 probe instr__vmx__vmlaunch(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
212 /** Instruction: VT-x VMPTRLD */
213 probe instr__vmx__vmptrld(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
214 /** Instruction: VT-x VMPTRST */
215 probe instr__vmx__vmptrst(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
216 /** Instruction: VT-x VMREAD */
217 probe instr__vmx__vmread(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
218 /** Instruction: VT-x VMRESUME */
219 probe instr__vmx__vmresume(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
220 /** Instruction: VT-x VMWRITE */
221 probe instr__vmx__vmwrite(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
222 /** Instruction: VT-x VMXOFF */
223 probe instr__vmx__vmxoff(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
224 /** Instruction: VT-x VMXON */
225 probe instr__vmx__vmxon(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
226 /** Instruction: VT-x VMFUNC */
227 probe instr__vmx__vmfunc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
228 /** Instruction: VT-x INVEPT */
229 probe instr__vmx__invept(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
230 /** Instruction: VT-x INVVPID */
231 probe instr__vmx__invvpid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
232 /** Instruction: VT-x INVPCID */
233 probe instr__vmx__invpcid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
234
235 /** Instruction: AMD-V VMRUN */
236 probe instr__svm__vmrun(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
237 /** Instruction: AMD-V VMLOAD */
238 probe instr__svm__vmload(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
239 /** Instruction: AMD-V VMSAVE */
240 probe instr__svm__vmsave(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
241 /** Instruction: AMD-V STGI */
242 probe instr__svm__stgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
243 /** Instruction: AMD-V CLGI */
244 probe instr__svm__clgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
245 /** @} */
246
247
248 /** @name VM exit probes
249 * These are named exits with (in some cases at least) useful
250 * information as arguments. Unlike the instruction probes,
251 * these will not change the number of VM exits and have much
252 * less of an impact on VM performance.
253 * @{ */
254 /** VM Exit: Task switch. */
255 probe exit__task__switch(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
256 /** VM Exit: HALT instruction.
257 * @todo not yet implemented. */
258 probe exit__halt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
259 /** VM Exit: MWAIT instruction. */
260 probe exit__mwait(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
261 /** VM Exit: MONITOR instruction. */
262 probe exit__monitor(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
263 /** VM Exit: CPUID instruction (missing stuff in raw-mode). */
264 probe exit__cpuid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t uLeaf, uint32_t uSubLeaf);
265 /** VM Exit: INVD instruction. */
266 probe exit__invd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
267 /** VM Exit: WBINVD instruction. */
268 probe exit__wbinvd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
269 /** VM Exit: INVLPG instruction. */
270 probe exit__invlpg(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
271 /** VM Exit: RDTSC instruction. */
272 probe exit__rdtsc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
273 /** VM Exit: RDTSCP instruction. */
274 probe exit__rdtscp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
275 /** VM Exit: RDPMC instruction. */
276 probe exit__rdpmc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
277 /** VM Exit: RDMSR instruction. */
278 probe exit__rdmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr);
279 /** VM Exit: WRMSR instruction. */
280 probe exit__wrmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr, uint64_t a_uValue);
281 /** VM Exit: CRx read instruction (missing smsw in raw-mode,
282 * and reads in general in VT-x). */
283 probe exit__crx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
284 /** VM Exit: CRx write instruction. */
285 probe exit__crx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
286 /** VM Exit: DRx read instruction. */
287 probe exit__drx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
288 /** VM Exit: DRx write instruction. */
289 probe exit__drx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
290 /** VM Exit: PAUSE instruction (not in raw-mode). */
291 probe exit__pause(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
292 /** VM Exit: XSETBV instruction. */
293 probe exit__xsetbv(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
294 /** VM Exit: SIDT instruction. */
295 probe exit__sidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
296 /** VM Exit: LIDT instruction. */
297 probe exit__lidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
298 /** VM Exit: SGDT instruction. */
299 probe exit__sgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
300 /** VM Exit: LGDT instruction. */
301 probe exit__lgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
302 /** VM Exit: SLDT instruction. */
303 probe exit__sldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
304 /** VM Exit: LLDT instruction. */
305 probe exit__lldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
306 /** VM Exit: STR instruction. */
307 probe exit__str(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
308 /** VM Exit: LTR instruction. */
309 probe exit__ltr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
310 /** VM Exit: GETSEC instruction. */
311 probe exit__getsec(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
312 /** VM Exit: RSM instruction. */
313 probe exit__rsm(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
314 /** VM Exit: RDRAND instruction. */
315 probe exit__rdrand(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
316 /** VM Exit: RDSEED instruction. */
317 probe exit__rdseed(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
318 /** VM Exit: XSAVES instruction. */
319 probe exit__xsaves(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
320 /** VM Exit: XRSTORS instruction. */
321 probe exit__xrstors(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
322 /** VM Exit: VMCALL (intel) or VMMCALL (AMD) instruction. */
323 probe exit__vmm__call(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
324
325 /** VM Exit: VT-x VMCLEAR instruction. */
326 probe exit__vmx__vmclear(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
327 /** VM Exit: VT-x VMLAUNCH instruction. */
328 probe exit__vmx__vmlaunch(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
329 /** VM Exit: VT-x VMPTRLD instruction. */
330 probe exit__vmx__vmptrld(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
331 /** VM Exit: VT-x VMPTRST instruction. */
332 probe exit__vmx__vmptrst(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
333 /** VM Exit: VT-x VMREAD instruction. */
334 probe exit__vmx__vmread(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
335 /** VM Exit: VT-x VMRESUME instruction. */
336 probe exit__vmx__vmresume(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
337 /** VM Exit: VT-x VMWRITE instruction. */
338 probe exit__vmx__vmwrite(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
339 /** VM Exit: VT-x VMXOFF instruction. */
340 probe exit__vmx__vmxoff(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
341 /** VM Exit: VT-x VMXON instruction. */
342 probe exit__vmx__vmxon(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
343 /** VM Exit: VT-x VMFUNC instruction. */
344 probe exit__vmx__vmfunc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
345 /** VM Exit: VT-x INVEPT instruction. */
346 probe exit__vmx__invept(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
347 /** VM Exit: VT-x INVVPID instruction. */
348 probe exit__vmx__invvpid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
349 /** VM Exit: VT-x INVPCID instruction. */
350 probe exit__vmx__invpcid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
351 /** VM Exit: VT-x EPT violation. */
352 probe exit__vmx__ept__violation(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
353 /** VM Exit: VT-x EPT misconfiguration. */
354 probe exit__vmx__ept__misconfig(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
355 /** VM Exit: VT-x Virtual APIC page access. */
356 probe exit__vmx__vapic__access(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
357 /** VM Exit: VT-x Virtual APIC page write needing virtualizing. */
358 probe exit__vmx__vapic__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
359
360 /** VM Exit: AMD-V VMRUN instruction. */
361 probe exit__svm__vmrun(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
362 /** VM Exit: AMD-V VMLOAD instruction. */
363 probe exit__svm__vmload(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
364 /** VM Exit: AMD-V VMSAVE instruction. */
365 probe exit__svm__vmsave(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
366 /** VM Exit: AMD-V STGI instruction. */
367 probe exit__svm__stgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
368 /** VM Exit: AMD-V CLGI instruction. */
369 probe exit__svm__clgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
370 /** @} */
371
372
373 /** @name Misc VT-x and AMD-V execution events.
374 * @{ */
375 /** VT-x: Split-lock \#AC triggered by host having detection enabled. */
376 probe vmx__split__lock(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
377 /** @} */
378
379
380 /** @name IPRT tracepoints we link in.
381 * @{ */
382 probe iprt__critsect__entered(void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, uint32_t a_cNestings);
383 probe iprt__critsect__leaving(void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, uint32_t a_cNestings);
384 probe iprt__critsect__waiting(void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, void *a_pvNativeThreadOwner);
385 probe iprt__critsect__busy( void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, void *a_pvNativeThreadOwner);
386
387 probe iprt__critsectrw__excl_entered(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
388 uint32_t a_cWaitingReaders, uint32_t cWriters);
389 probe iprt__critsectrw__excl_leaving(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
390 uint32_t a_cWaitingReaders, uint32_t cWriters);
391 probe iprt__critsectrw__excl_waiting(void *a_pvCritSect, const char *a_pszLaterNm, uint8_t a_fWriteMode, uint32_t a_cWaitingReaders,
392 uint32_t a_cReaders, uint32_t a_cWriters, void *a_pvNativeOwnerThread);
393 probe iprt__critsectrw__excl_busy( void *a_pvCritSect, const char *a_pszLaterNm, uint8_t a_fWriteMode, uint32_t a_cWaitingReaders,
394 uint32_t a_cReaders, uint32_t a_cWriters, void *a_pvNativeOwnerThread);
395 probe iprt__critsectrw__excl_entered_shared(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
396 uint32_t a_cWaitingReaders, uint32_t a_cWriters);
397 probe iprt__critsectrw__excl_leaving_shared(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
398 uint32_t a_cWaitingReaders, uint32_t a_cWriters);
399 probe iprt__critsectrw__shared_entered(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cReaders, uint32_t a_cNestings);
400 probe iprt__critsectrw__shared_leaving(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cReaders, uint32_t a_cNestings);
401 probe iprt__critsectrw__shared_waiting(void *a_pvCritSect, const char *a_pszLaterNm, void *a_pvNativeThreadOwner,
402 uint32_t cWaitingReaders, uint32_t cWriters);
403 probe iprt__critsectrw__shared_busy( void *a_pvCritSect, const char *a_pszLaterNm, void *a_pvNativeThreadOwner,
404 uint32_t a_cWaitingReaders, uint32_t a_cWriters);
405
406 /** @} */
407};
408
409#pragma D attributes Evolving/Evolving/Common provider vboxvmm provider
410#pragma D attributes Private/Private/Unknown provider vboxvmm module
411#pragma D attributes Private/Private/Unknown provider vboxvmm function
412#pragma D attributes Evolving/Evolving/Common provider vboxvmm name
413#pragma D attributes Evolving/Evolving/Common provider vboxvmm args
414
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use