VirtualBox

source: vbox/trunk/src/VBox/VMM/include/SVMInternal.h@ 94617

Last change on this file since 94617 was 93965, checked in by vboxsync, 3 years ago

VMM: Nested VMX: bugref:10092 Add HM ring-0 API for querying transient VMX/SVM info. [missed file]

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.7 KB
Line 
1/* $Id: SVMInternal.h 93965 2022-02-28 08:43:16Z vboxsync $ */
2/** @file
3 * SVM - Internal header file for the SVM code.
4 */
5
6/*
7 * Copyright (C) 2022 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef VMM_INCLUDED_SRC_include_SVMInternal_h
19#define VMM_INCLUDED_SRC_include_SVMInternal_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24/** @name SVM transient.
25 *
26 * A state structure for holding miscellaneous information across AMD-V
27 * VMRUN/\#VMEXIT operation, restored after the transition.
28 *
29 * @{ */
30typedef struct SVMTRANSIENT
31{
32 /** The host's rflags/eflags. */
33 RTCCUINTREG fEFlags;
34 /** The \#VMEXIT exit code (the EXITCODE field in the VMCB). */
35 uint64_t u64ExitCode;
36
37 /** The guest's TPR value used for TPR shadowing. */
38 uint8_t u8GuestTpr;
39 /** Alignment. */
40 uint8_t abAlignment0[7];
41
42 /** Pointer to the currently executing VMCB. */
43 PSVMVMCB pVmcb;
44
45 /** Whether we are currently executing a nested-guest. */
46 bool fIsNestedGuest;
47 /** Whether the guest debug state was active at the time of \#VMEXIT. */
48 bool fWasGuestDebugStateActive;
49 /** Whether the hyper debug state was active at the time of \#VMEXIT. */
50 bool fWasHyperDebugStateActive;
51 /** Whether the TSC offset mode needs to be updated. */
52 bool fUpdateTscOffsetting;
53 /** Whether the TSC_AUX MSR needs restoring on \#VMEXIT. */
54 bool fRestoreTscAuxMsr;
55 /** Whether the \#VMEXIT was caused by a page-fault during delivery of a
56 * contributary exception or a page-fault. */
57 bool fVectoringDoublePF;
58 /** Whether the \#VMEXIT was caused by a page-fault during delivery of an
59 * external interrupt or NMI. */
60 bool fVectoringPF;
61 /** Padding. */
62 bool afPadding0;
63} SVMTRANSIENT;
64/** Pointer to SVM transient state. */
65typedef SVMTRANSIENT *PSVMTRANSIENT;
66/** Pointer to a const SVM transient state. */
67typedef const SVMTRANSIENT *PCSVMTRANSIENT;
68
69AssertCompileSizeAlignment(SVMTRANSIENT, sizeof(uint64_t));
70AssertCompileMemberAlignment(SVMTRANSIENT, u64ExitCode, sizeof(uint64_t));
71AssertCompileMemberAlignment(SVMTRANSIENT, pVmcb, sizeof(uint64_t));
72/** @} */
73
74RT_C_DECLS_BEGIN
75/* Nothing for now. */
76RT_C_DECLS_END
77
78#endif /* !VMM_INCLUDED_SRC_include_SVMInternal_h */
79
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette