diff options
Diffstat (limited to 'src/VBox/VMM/HWACCMInternal.h')
-rw-r--r-- | src/VBox/VMM/HWACCMInternal.h | 26 |
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; |