summaryrefslogtreecommitdiff
path: root/src/VBox/VMM/HWACCMInternal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/VMM/HWACCMInternal.h')
-rw-r--r--src/VBox/VMM/HWACCMInternal.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/VBox/VMM/HWACCMInternal.h b/src/VBox/VMM/HWACCMInternal.h
index d48b0ce40..99f05863e 100644
--- a/src/VBox/VMM/HWACCMInternal.h
+++ b/src/VBox/VMM/HWACCMInternal.h
@@ -276,9 +276,8 @@ typedef struct HWACCM
/** Set when TPR patching is allowed. */
bool fTRPPatchingAllowed;
- /** Explicit alignment padding to make 32-bit gcc align u64RegisterMask
- * naturally. */
- bool padding[1];
+ /** Set when we initialize VT-x or AMD-V once for all CPUs. */
+ bool fGlobalInit;
/** And mask for copying register contents. */
uint64_t u64RegisterMask;
@@ -547,18 +546,26 @@ typedef struct HWACCMCPU
/** Set when we're using VT-x or AMD-V at that moment. */
bool fActive;
+ /** Set when the TLB has been checked until we return from the world switch. */
+ volatile uint8_t fCheckedTLBFlush;
+ uint8_t bAlignment[3];
+
/** HWACCM_CHANGED_* flags. */
RTUINT fContextUseFlags;
- /* Id of the last cpu we were executing code on (NIL_RTCPUID for the first time) */
+ /** Id of the last cpu we were executing code on (NIL_RTCPUID for the first time) */
RTCPUID idLastCpu;
- /* TLB flush count */
+ /** TLB flush count */
RTUINT cTLBFlushes;
- /* Current ASID in use by the VM */
+ /** Current ASID in use by the VM */
RTUINT uCurrentASID;
+ /** World switch exit counter. */
+ volatile uint32_t cWorldSwitchExit;
+ uint32_t u32Alignment;
+
struct
{
/** Physical address of the VM control structure (VMCS). */
@@ -571,6 +578,10 @@ typedef struct HWACCMCPU
/** Ring 0 handlers for VT-x. */
PFNHWACCMVMXSTARTVM pfnStartVM;
+#if HC_ARCH_BITS == 32
+ uint32_t u32Alignment;
+#endif
+
/** Current VMX_VMCS_CTRL_PROC_EXEC_CONTROLS. */
uint64_t proc_ctls;
@@ -757,6 +768,9 @@ typedef struct HWACCMCPU
#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
STAMPROFILEADV StatWorldSwitch3264;
#endif
+ STAMPROFILEADV StatPoke;
+ STAMPROFILEADV StatSpinPoke;
+ STAMPROFILEADV StatSpinPokeFailed;
STAMCOUNTER StatIntInject;