VirtualBox

Changeset 45637 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 19, 2013 10:21:54 AM (12 years ago)
Author:
vboxsync
Message:

VMM/VMMR0: HM macro prefix cleanup a bit.

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r45623 r45637  
    3636#endif
    3737#ifdef DEBUG_ramshankar
    38 #define VBOX_ALWAYS_SAVE_FULL_VTX_STATE
    39 #define VBOX_ALWAYS_SYNC_FULL_VTX_STATE
    40 #define VBOX_ALWAYS_TRAP_ALL_EXCEPTIONS
     38#define HMVMX_SAVE_FULL_GUEST_STATE
     39#define HMVMX_SYNC_FULL_GUEST_STATE
     40#define HMVMX_TRAP_ALL_EXCEPTIONS
    4141#endif
    4242
     
    4646*******************************************************************************/
    4747#if defined(RT_ARCH_AMD64)
    48 # define VMX_IS_64BIT_HOST_MODE()   (true)
     48# define HMVMX_IS_64BIT_HOST_MODE()   (true)
    4949#elif defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    50 # define VMX_IS_64BIT_HOST_MODE()   (g_fVMXIs64bitHost != 0)
     50# define HMVMX_IS_64BIT_HOST_MODE()   (g_fVMXIs64bitHost != 0)
    5151#else
    52 # define VMX_IS_64BIT_HOST_MODE()   (false)
     52# define HMVMX_IS_64BIT_HOST_MODE()   (false)
    5353#endif
    5454
     
    5656#define HMVMX_USE_FUNCTION_TABLE
    5757
    58 
    59 #define VMX_SEL_UNUSABLE                       RT_BIT(16)
    60 #define VMX_FLUSH_TAGGED_TLB_EPT_VPID          0
    61 #define VMX_FLUSH_TAGGED_TLB_EPT               1
    62 #define VMX_FLUSH_TAGGED_TLB_VPID              2
    63 #define VMX_FLUSH_TAGGED_TLB_NONE              3
     58/** This bit indicates the segment selector is unusable in VT-x. */
     59#define HMVMX_SEL_UNUSABLE                       RT_BIT(16)
     60
     61/** Determine which tagged-TLB flush handler to use. */
     62#define HMVMX_FLUSH_TAGGED_TLB_EPT_VPID          0
     63#define HMVMX_FLUSH_TAGGED_TLB_EPT               1
     64#define HMVMX_FLUSH_TAGGED_TLB_VPID              2
     65#define HMVMX_FLUSH_TAGGED_TLB_NONE              3
    6466
    6567/**
    6668 * Updated-guest-state flags.
    6769 */
    68 #define VMX_UPDATED_GUEST_FPU                   RT_BIT(0)
    69 #define VMX_UPDATED_GUEST_RIP                   RT_BIT(1)
    70 #define VMX_UPDATED_GUEST_RSP                   RT_BIT(2)
    71 #define VMX_UPDATED_GUEST_RFLAGS                RT_BIT(3)
    72 #define VMX_UPDATED_GUEST_CR0                   RT_BIT(4)
    73 #define VMX_UPDATED_GUEST_CR3                   RT_BIT(5)
    74 #define VMX_UPDATED_GUEST_CR4                   RT_BIT(6)
    75 #define VMX_UPDATED_GUEST_GDTR                  RT_BIT(7)
    76 #define VMX_UPDATED_GUEST_IDTR                  RT_BIT(8)
    77 #define VMX_UPDATED_GUEST_LDTR                  RT_BIT(9)
    78 #define VMX_UPDATED_GUEST_TR                    RT_BIT(10)
    79 #define VMX_UPDATED_GUEST_SEGMENT_REGS          RT_BIT(11)
    80 #define VMX_UPDATED_GUEST_DEBUG                 RT_BIT(12)
    81 #define VMX_UPDATED_GUEST_FS_BASE_MSR           RT_BIT(13)
    82 #define VMX_UPDATED_GUEST_GS_BASE_MSR           RT_BIT(14)
    83 #define VMX_UPDATED_GUEST_SYSENTER_CS_MSR       RT_BIT(15)
    84 #define VMX_UPDATED_GUEST_SYSENTER_EIP_MSR      RT_BIT(16)
    85 #define VMX_UPDATED_GUEST_SYSENTER_ESP_MSR      RT_BIT(17)
    86 #define VMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS  RT_BIT(18)
    87 #define VMX_UPDATED_GUEST_ACTIVITY_STATE        RT_BIT(19)
    88 #define VMX_UPDATED_GUEST_APIC_STATE            RT_BIT(20)
    89 #define VMX_UPDATED_GUEST_ALL                   (  VMX_UPDATED_GUEST_FPU                   \
    90                                                  | VMX_UPDATED_GUEST_RIP                   \
    91                                                  | VMX_UPDATED_GUEST_RSP                   \
    92                                                  | VMX_UPDATED_GUEST_RFLAGS                \
    93                                                  | VMX_UPDATED_GUEST_CR0                   \
    94                                                  | VMX_UPDATED_GUEST_CR3                   \
    95                                                  | VMX_UPDATED_GUEST_CR4                   \
    96                                                  | VMX_UPDATED_GUEST_GDTR                  \
    97                                                  | VMX_UPDATED_GUEST_IDTR                  \
    98                                                  | VMX_UPDATED_GUEST_LDTR                  \
    99                                                  | VMX_UPDATED_GUEST_TR                    \
    100                                                  | VMX_UPDATED_GUEST_SEGMENT_REGS          \
    101                                                  | VMX_UPDATED_GUEST_DEBUG                 \
    102                                                  | VMX_UPDATED_GUEST_FS_BASE_MSR           \
    103                                                  | VMX_UPDATED_GUEST_GS_BASE_MSR           \
    104                                                  | VMX_UPDATED_GUEST_SYSENTER_CS_MSR       \
    105                                                  | VMX_UPDATED_GUEST_SYSENTER_EIP_MSR      \
    106                                                  | VMX_UPDATED_GUEST_SYSENTER_ESP_MSR      \
    107                                                  | VMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS  \
    108                                                  | VMX_UPDATED_GUEST_ACTIVITY_STATE        \
    109                                                  | VMX_UPDATED_GUEST_APIC_STATE)
    110 
    111 /**
    112  * Flags to skip redundant reads of some common VMCS fields.
    113  */
    114 #define VMX_TRANSIENT_IDT_VECTORING_INFO            RT_BIT(0)
    115 #define VMX_TRANSIENT_IDT_VECTORING_ERROR_CODE      RT_BIT(1)
    116 #define VMX_TRANSIENT_EXIT_QUALIFICATION            RT_BIT(2)
    117 #define VMX_TRANSIENT_EXIT_INSTR_LEN                RT_BIT(3)
    118 #define VMX_TRANSIENT_EXIT_INTERRUPTION_INFO        RT_BIT(4)
    119 #define VMX_TRANSIENT_EXIT_INTERRUPTION_ERROR_CODE  RT_BIT(5)
     70#define HMVMX_UPDATED_GUEST_FPU                   RT_BIT(0)
     71#define HMVMX_UPDATED_GUEST_RIP                   RT_BIT(1)
     72#define HMVMX_UPDATED_GUEST_RSP                   RT_BIT(2)
     73#define HMVMX_UPDATED_GUEST_RFLAGS                RT_BIT(3)
     74#define HMVMX_UPDATED_GUEST_CR0                   RT_BIT(4)
     75#define HMVMX_UPDATED_GUEST_CR3                   RT_BIT(5)
     76#define HMVMX_UPDATED_GUEST_CR4                   RT_BIT(6)
     77#define HMVMX_UPDATED_GUEST_GDTR                  RT_BIT(7)
     78#define HMVMX_UPDATED_GUEST_IDTR                  RT_BIT(8)
     79#define HMVMX_UPDATED_GUEST_LDTR                  RT_BIT(9)
     80#define HMVMX_UPDATED_GUEST_TR                    RT_BIT(10)
     81#define HMVMX_UPDATED_GUEST_SEGMENT_REGS          RT_BIT(11)
     82#define HMVMX_UPDATED_GUEST_DEBUG                 RT_BIT(12)
     83#define HMVMX_UPDATED_GUEST_FS_BASE_MSR           RT_BIT(13)
     84#define HMVMX_UPDATED_GUEST_GS_BASE_MSR           RT_BIT(14)
     85#define HMVMX_UPDATED_GUEST_SYSENTER_CS_MSR       RT_BIT(15)
     86#define HMVMX_UPDATED_GUEST_SYSENTER_EIP_MSR      RT_BIT(16)
     87#define HMVMX_UPDATED_GUEST_SYSENTER_ESP_MSR      RT_BIT(17)
     88#define HMVMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS  RT_BIT(18)
     89#define HMVMX_UPDATED_GUEST_ACTIVITY_STATE        RT_BIT(19)
     90#define HMVMX_UPDATED_GUEST_APIC_STATE            RT_BIT(20)
     91#define HMVMX_UPDATED_GUEST_ALL                   (  HMVMX_UPDATED_GUEST_FPU                   \
     92                                                   | HMVMX_UPDATED_GUEST_RIP                   \
     93                                                   | HMVMX_UPDATED_GUEST_RSP                   \
     94                                                   | HMVMX_UPDATED_GUEST_RFLAGS                \
     95                                                   | HMVMX_UPDATED_GUEST_CR0                   \
     96                                                   | HMVMX_UPDATED_GUEST_CR3                   \
     97                                                   | HMVMX_UPDATED_GUEST_CR4                   \
     98                                                   | HMVMX_UPDATED_GUEST_GDTR                  \
     99                                                   | HMVMX_UPDATED_GUEST_IDTR                  \
     100                                                   | HMVMX_UPDATED_GUEST_LDTR                  \
     101                                                   | HMVMX_UPDATED_GUEST_TR                    \
     102                                                   | HMVMX_UPDATED_GUEST_SEGMENT_REGS          \
     103                                                   | HMVMX_UPDATED_GUEST_DEBUG                 \
     104                                                   | HMVMX_UPDATED_GUEST_FS_BASE_MSR           \
     105                                                   | HMVMX_UPDATED_GUEST_GS_BASE_MSR           \
     106                                                   | HMVMX_UPDATED_GUEST_SYSENTER_CS_MSR       \
     107                                                   | HMVMX_UPDATED_GUEST_SYSENTER_EIP_MSR      \
     108                                                   | HMVMX_UPDATED_GUEST_SYSENTER_ESP_MSR      \
     109                                                   | HMVMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS  \
     110                                                   | HMVMX_UPDATED_GUEST_ACTIVITY_STATE        \
     111                                                   | HMVMX_UPDATED_GUEST_APIC_STATE)
     112
     113/**
     114 * Flags to skip redundant reads of some common VMCS fields that are not part of
     115 * the guest-CPU state but are in the transient structure.
     116 */
     117#define HMVMX_UPDATED_TRANSIENT_IDT_VECTORING_INFO            RT_BIT(0)
     118#define HMVMX_UPDATED_TRANSIENT_IDT_VECTORING_ERROR_CODE      RT_BIT(1)
     119#define HMVMX_UPDATED_TRANSIENT_EXIT_QUALIFICATION            RT_BIT(2)
     120#define HMVMX_UPDATED_TRANSIENT_EXIT_INSTR_LEN                RT_BIT(3)
     121#define HMVMX_UPDATED_TRANSIENT_EXIT_INTERRUPTION_INFO        RT_BIT(4)
     122#define HMVMX_UPDATED_TRANSIENT_EXIT_INTERRUPTION_ERROR_CODE  RT_BIT(5)
    120123
    121124/**
     
    124127 * we have Nested Paging support.
    125128 */
    126 #define VMX_REAL_MODE_XCPT_BITMAP  ( RT_BIT(X86_XCPT_DE)             | RT_BIT(X86_XCPT_DB)    | RT_BIT(X86_XCPT_NMI)   \
    127                                    | RT_BIT(X86_XCPT_BP)             | RT_BIT(X86_XCPT_OF)    | RT_BIT(X86_XCPT_BR)    \
    128                                    | RT_BIT(X86_XCPT_UD)            /* RT_BIT(X86_XCPT_NM) */ | RT_BIT(X86_XCPT_DF)    \
    129                                    | RT_BIT(X86_XCPT_CO_SEG_OVERRUN) | RT_BIT(X86_XCPT_TS)    | RT_BIT(X86_XCPT_NP)    \
    130                                    | RT_BIT(X86_XCPT_SS)             | RT_BIT(X86_XCPT_GP)   /* RT_BIT(X86_XCPT_PF) */ \
    131                                    | RT_BIT(X86_XCPT_MF)             | RT_BIT(X86_XCPT_AC)    | RT_BIT(X86_XCPT_MC)    \
    132                                    | RT_BIT(X86_XCPT_XF))
     129#define HMVMX_REAL_MODE_XCPT_MASK    ( RT_BIT(X86_XCPT_DE)             | RT_BIT(X86_XCPT_DB)    | RT_BIT(X86_XCPT_NMI)   \
     130                                      | RT_BIT(X86_XCPT_BP)             | RT_BIT(X86_XCPT_OF)    | RT_BIT(X86_XCPT_BR)    \
     131                                      | RT_BIT(X86_XCPT_UD)            /* RT_BIT(X86_XCPT_NM) */ | RT_BIT(X86_XCPT_DF)    \
     132                                      | RT_BIT(X86_XCPT_CO_SEG_OVERRUN) | RT_BIT(X86_XCPT_TS)    | RT_BIT(X86_XCPT_NP)    \
     133                                      | RT_BIT(X86_XCPT_SS)             | RT_BIT(X86_XCPT_GP)   /* RT_BIT(X86_XCPT_PF) */ \
     134                                      | RT_BIT(X86_XCPT_MF)             | RT_BIT(X86_XCPT_AC)    | RT_BIT(X86_XCPT_MC)    \
     135                                      | RT_BIT(X86_XCPT_XF))
    133136
    134137/**
    135138 * Exception bitmap mask for all contributory exceptions.
    136139 */
    137 #define VMX_CONTRIBUTORY_XCPT_BITMAP  ( RT_BIT(X86_XCPT_GP) | RT_BIT(X86_XCPT_NP) | RT_BIT(X86_XCPT_SS) | RT_BIT(X86_XCPT_TS) \
    138                                       | RT_BIT(X86_XCPT_DE))
     140#define HMVMX_CONTRIBUTORY_XCPT_MASK  ( RT_BIT(X86_XCPT_GP) | RT_BIT(X86_XCPT_NP) | RT_BIT(X86_XCPT_SS) | RT_BIT(X86_XCPT_TS) \
     141                                       | RT_BIT(X86_XCPT_DE))
    139142
    140143/** Maximum VM-instruction error number. */
    141 #define VMX_INSTR_ERROR_MAX     28
     144#define HMVMX_INSTR_ERROR_MAX     28
    142145
    143146
     
    184187    uint32_t        uIdtVectoringErrorCode;
    185188
    186     /** Mask of currently read VMCS fields; VMX_TRANSIENT_*. */
     189    /** Mask of currently read VMCS fields; HMVMX_UPDATED_TRANSIENT_*. */
    187190    uint32_t        fVmcsFieldsRead;
    188191    /** Whether TSC-offsetting should be setup before VM-entry. */
     
    371374
    372375#ifdef VBOX_STRICT
    373 static const char * const g_apszVmxInstrErrors[VMX_INSTR_ERROR_MAX + 1] =
     376static const char * const g_apszVmxInstrErrors[HMVMX_INSTR_ERROR_MAX + 1] =
    374377{
    375378    /*  0 */ "(Not Used)",
     
    493496DECLINLINE(int) hmR0VmxReadExitIntrInfoVmcs(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    494497{
    495     if (!(pVmxTransient->fVmcsFieldsRead & VMX_TRANSIENT_EXIT_INTERRUPTION_INFO))
     498    if (!(pVmxTransient->fVmcsFieldsRead & HMVMX_UPDATED_TRANSIENT_EXIT_INTERRUPTION_INFO))
    496499    {
    497500        int rc = VMXReadVmcs32(VMX_VMCS32_RO_EXIT_INTERRUPTION_INFO, &pVmxTransient->uExitIntrInfo);
    498501        AssertRCReturn(rc, rc);
    499         pVmxTransient->fVmcsFieldsRead |= VMX_TRANSIENT_EXIT_INTERRUPTION_INFO;
     502        pVmxTransient->fVmcsFieldsRead |= HMVMX_UPDATED_TRANSIENT_EXIT_INTERRUPTION_INFO;
    500503    }
    501504    return VINF_SUCCESS;
     
    513516DECLINLINE(int) hmR0VmxReadExitIntrErrorCodeVmcs(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    514517{
    515     if (!(pVmxTransient->fVmcsFieldsRead & VMX_TRANSIENT_EXIT_INTERRUPTION_ERROR_CODE))
     518    if (!(pVmxTransient->fVmcsFieldsRead & HMVMX_UPDATED_TRANSIENT_EXIT_INTERRUPTION_ERROR_CODE))
    516519    {
    517520        int rc = VMXReadVmcs32(VMX_VMCS32_RO_EXIT_INTERRUPTION_ERROR_CODE, &pVmxTransient->uExitIntrErrorCode);
    518521        AssertRCReturn(rc, rc);
    519         pVmxTransient->fVmcsFieldsRead |= VMX_TRANSIENT_EXIT_INTERRUPTION_ERROR_CODE;
     522        pVmxTransient->fVmcsFieldsRead |= HMVMX_UPDATED_TRANSIENT_EXIT_INTERRUPTION_ERROR_CODE;
    520523    }
    521524    return VINF_SUCCESS;
     
    533536DECLINLINE(int) hmR0VmxReadExitInstrLenVmcs(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    534537{
    535     if (!(pVmxTransient->fVmcsFieldsRead & VMX_TRANSIENT_EXIT_INSTR_LEN))
     538    if (!(pVmxTransient->fVmcsFieldsRead & HMVMX_UPDATED_TRANSIENT_EXIT_INSTR_LEN))
    536539    {
    537540        int rc = VMXReadVmcs32(VMX_VMCS32_RO_EXIT_INSTR_LENGTH, &pVmxTransient->cbInstr);
    538541        AssertRCReturn(rc, rc);
    539         pVmxTransient->fVmcsFieldsRead |= VMX_TRANSIENT_EXIT_INSTR_LEN;
     542        pVmxTransient->fVmcsFieldsRead |= HMVMX_UPDATED_TRANSIENT_EXIT_INSTR_LEN;
    540543    }
    541544    return VINF_SUCCESS;
     
    552555DECLINLINE(int) hmR0VmxReadExitQualificationVmcs(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    553556{
    554     if (!(pVmxTransient->fVmcsFieldsRead & VMX_TRANSIENT_EXIT_QUALIFICATION))
     557    if (!(pVmxTransient->fVmcsFieldsRead & HMVMX_UPDATED_TRANSIENT_EXIT_QUALIFICATION))
    555558    {
    556559        int rc = VMXReadVmcsGstN(VMX_VMCS_RO_EXIT_QUALIFICATION, &pVmxTransient->uExitQualification);
    557560        AssertRCReturn(rc, rc);
    558         pVmxTransient->fVmcsFieldsRead |= VMX_TRANSIENT_EXIT_QUALIFICATION;
     561        pVmxTransient->fVmcsFieldsRead |= HMVMX_UPDATED_TRANSIENT_EXIT_QUALIFICATION;
    559562    }
    560563    return VINF_SUCCESS;
     
    573576DECLINLINE(int) hmR0VmxReadIdtVectoringInfoVmcs(PVMXTRANSIENT pVmxTransient)
    574577{
    575     if (!(pVmxTransient->fVmcsFieldsRead & VMX_TRANSIENT_IDT_VECTORING_INFO))
     578    if (!(pVmxTransient->fVmcsFieldsRead & HMVMX_UPDATED_TRANSIENT_IDT_VECTORING_INFO))
    576579    {
    577580        int rc = VMXReadVmcs32(VMX_VMCS32_RO_IDT_INFO, &pVmxTransient->uIdtVectoringInfo);
    578581        AssertRCReturn(rc, rc);
    579         pVmxTransient->fVmcsFieldsRead |= VMX_TRANSIENT_IDT_VECTORING_INFO;
     582        pVmxTransient->fVmcsFieldsRead |= HMVMX_UPDATED_TRANSIENT_IDT_VECTORING_INFO;
    580583    }
    581584    return VINF_SUCCESS;
     
    592595DECLINLINE(int) hmR0VmxReadIdtVectoringErrorCodeVmcs(PVMXTRANSIENT pVmxTransient)
    593596{
    594     if (!(pVmxTransient->fVmcsFieldsRead & VMX_TRANSIENT_IDT_VECTORING_ERROR_CODE))
     597    if (!(pVmxTransient->fVmcsFieldsRead & HMVMX_UPDATED_TRANSIENT_IDT_VECTORING_ERROR_CODE))
    595598    {
    596599        int rc = VMXReadVmcs32(VMX_VMCS32_RO_IDT_ERROR_CODE, &pVmxTransient->uIdtVectoringErrorCode);
    597600        AssertRCReturn(rc, rc);
    598         pVmxTransient->fVmcsFieldsRead |= VMX_TRANSIENT_IDT_VECTORING_ERROR_CODE;
     601        pVmxTransient->fVmcsFieldsRead |= HMVMX_UPDATED_TRANSIENT_IDT_VECTORING_ERROR_CODE;
    599602    }
    600603    return VINF_SUCCESS;
     
    14641467    switch (pVM->hm.s.vmx.uFlushTaggedTlb)
    14651468    {
    1466         case VMX_FLUSH_TAGGED_TLB_EPT_VPID: hmR0VmxFlushTaggedTlbBoth(pVM, pVCpu); break;
    1467         case VMX_FLUSH_TAGGED_TLB_EPT:      hmR0VmxFlushTaggedTlbEpt(pVM, pVCpu);  break;
    1468         case VMX_FLUSH_TAGGED_TLB_VPID:     hmR0VmxFlushTaggedTlbVpid(pVM, pVCpu); break;
    1469         case VMX_FLUSH_TAGGED_TLB_NONE:     hmR0VmxFlushTaggedTlbNone(pVM, pVCpu); break;
     1469        case HMVMX_FLUSH_TAGGED_TLB_EPT_VPID: hmR0VmxFlushTaggedTlbBoth(pVM, pVCpu); break;
     1470        case HMVMX_FLUSH_TAGGED_TLB_EPT:      hmR0VmxFlushTaggedTlbEpt(pVM, pVCpu);  break;
     1471        case HMVMX_FLUSH_TAGGED_TLB_VPID:     hmR0VmxFlushTaggedTlbVpid(pVM, pVCpu); break;
     1472        case HMVMX_FLUSH_TAGGED_TLB_NONE:     hmR0VmxFlushTaggedTlbNone(pVM, pVCpu); break;
    14701473        default:
    14711474            AssertMsgFailed(("Invalid flush-tag function identifier\n"));
     
    15551558     */
    15561559    if (pVM->hm.s.fNestedPaging && pVM->hm.s.vmx.fVpid)
    1557         pVM->hm.s.vmx.uFlushTaggedTlb = VMX_FLUSH_TAGGED_TLB_EPT_VPID;
     1560        pVM->hm.s.vmx.uFlushTaggedTlb = HMVMX_FLUSH_TAGGED_TLB_EPT_VPID;
    15581561    else if (pVM->hm.s.fNestedPaging)
    1559         pVM->hm.s.vmx.uFlushTaggedTlb = VMX_FLUSH_TAGGED_TLB_EPT;
     1562        pVM->hm.s.vmx.uFlushTaggedTlb = HMVMX_FLUSH_TAGGED_TLB_EPT;
    15601563    else if (pVM->hm.s.vmx.fVpid)
    1561         pVM->hm.s.vmx.uFlushTaggedTlb = VMX_FLUSH_TAGGED_TLB_VPID;
     1564        pVM->hm.s.vmx.uFlushTaggedTlb = HMVMX_FLUSH_TAGGED_TLB_VPID;
    15621565    else
    1563         pVM->hm.s.vmx.uFlushTaggedTlb = VMX_FLUSH_TAGGED_TLB_NONE;
     1566        pVM->hm.s.vmx.uFlushTaggedTlb = HMVMX_FLUSH_TAGGED_TLB_NONE;
    15641567    return VINF_SUCCESS;
    15651568}
     
    18731876{
    18741877    /* Initially the guest-state is up-to-date as there is nothing in the VMCS. */
    1875     pVCpu->hm.s.vmx.fUpdatedGuestState = VMX_UPDATED_GUEST_ALL;
     1878    pVCpu->hm.s.vmx.fUpdatedGuestState = HMVMX_UPDATED_GUEST_ALL;
    18761879    return VINF_SUCCESS;
    18771880}
     
    20442047#ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    20452048    /* For the darwin 32-bit hybrid kernel, we need the 64-bit CR3 as it uses 64-bit paging. */
    2046     if (VMX_IS_64BIT_HOST_MODE())
     2049    if (HMVMX_IS_64BIT_HOST_MODE())
    20472050    {
    20482051        uint64_t uReg = hmR0Get64bitCR3();
     
    20862089     */
    20872090#ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    2088     if (VMX_IS_64BIT_HOST_MODE())
     2091    if (HMVMX_IS_64BIT_HOST_MODE())
    20892092    {
    20902093        uSelCS = (RTSEL)(uintptr_t)&SUPR0Abs64bitKernelCS;
     
    21502153    RT_ZERO(Gdtr);
    21512154#ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    2152     if (VMX_IS_64BIT_HOST_MODE())
     2155    if (HMVMX_IS_64BIT_HOST_MODE())
    21532156    {
    21542157        X86XDTR64 Gtr64;
     
    21832186    PCX86DESCHC pDesc = (PCX86DESCHC)(Gdtr.pGdt + (uSelTR & X86_SEL_MASK));
    21842187#ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    2185     if (VMX_IS_64BIT_HOST_MODE())
     2188    if (HMVMX_IS_64BIT_HOST_MODE())
    21862189    {
    21872190        /* We need the 64-bit TR base for hybrid darwin. */
     
    22082211     */
    22092212#if HC_ARCH_BITS == 64 || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    2210     if (VMX_IS_64BIT_HOST_MODE())
     2213    if (HMVMX_IS_64BIT_HOST_MODE())
    22112214    {
    22122215        uint64_t u64FSBase = ASMRdMsr(MSR_K8_FS_BASE);
     
    22562259
    22572260#if HC_ARCH_BITS == 64 || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    2258     if (VMX_IS_64BIT_HOST_MODE())
     2261    if (HMVMX_IS_64BIT_HOST_MODE())
    22592262    {
    22602263        pHostMsr->u32IndexMSR  = MSR_K6_STAR;
     
    22942297    rc |= VMXWriteVmcs32(VMX_VMCS32_HOST_SYSENTER_CS,    ASMRdMsr_Low(MSR_IA32_SYSENTER_CS));
    22952298#ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    2296     if (VMX_IS_64BIT_HOST_MODE())
     2299    if (HMVMX_IS_64BIT_HOST_MODE())
    22972300    {
    22982301        rc |= VMXWriteVmcsHstN(VMX_VMCS_HOST_SYSENTER_ESP,   ASMRdMsr(MSR_IA32_SYSENTER_ESP));
     
    24012404        /* Set the host long mode active (EFER.LMA) bit (which Intel calls "Host address-space size") if necessary. */
    24022405#if HC_ARCH_BITS == 64 || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    2403         if (VMX_IS_64BIT_HOST_MODE())
     2406        if (HMVMX_IS_64BIT_HOST_MODE())
    24042407            val |= VMX_VMCS_CTRL_EXIT_CONTROLS_HOST_ADDR_SPACE_SIZE;
    24052408        else
     
    25232526    {
    25242527        /* If inhibition is active, RIP & RFLAGS should've been accessed (i.e. read previously from the VMCS or from ring-3). */
    2525         AssertMsg((pVCpu->hm.s.vmx.fUpdatedGuestState & (VMX_UPDATED_GUEST_RIP | VMX_UPDATED_GUEST_RFLAGS))
    2526                    == (VMX_UPDATED_GUEST_RIP | VMX_UPDATED_GUEST_RFLAGS), ("%#x\n", pVCpu->hm.s.vmx.fUpdatedGuestState));
     2528        AssertMsg((pVCpu->hm.s.vmx.fUpdatedGuestState & (HMVMX_UPDATED_GUEST_RIP | HMVMX_UPDATED_GUEST_RFLAGS))
     2529                   == (HMVMX_UPDATED_GUEST_RIP | HMVMX_UPDATED_GUEST_RFLAGS), ("%#x\n", pVCpu->hm.s.vmx.fUpdatedGuestState));
    25272530        if (pMixedCtx->rip != EMGetInhibitInterruptsPC(pVCpu))
    25282531        {
     
    27572760            Assert(PDMVmmDevHeapIsEnabled(pVM));
    27582761            Assert(pVM->hm.s.vmx.pRealModeTSS);
    2759             pVCpu->hm.s.vmx.u32XcptBitmap |= VMX_REAL_MODE_XCPT_BITMAP;
     2762            pVCpu->hm.s.vmx.u32XcptBitmap |= HMVMX_REAL_MODE_XCPT_MASK;
    27602763            fInterceptNM = true;
    27612764            fInterceptMF = true;
    27622765        }
    27632766        else
    2764             pVCpu->hm.s.vmx.u32XcptBitmap &= ~VMX_REAL_MODE_XCPT_BITMAP;
     2767            pVCpu->hm.s.vmx.u32XcptBitmap &= ~HMVMX_REAL_MODE_XCPT_MASK;
    27652768
    27662769        if (fInterceptNM)
     
    31553158        Assert(   !(pCtx->cs.u32Limit & 0xfff00000)
    31563159               || (pCtx->cs.Attr.n.u1Granularity));
    3157         Assert(pCtx->cs.Attr.u && pCtx->cs.Attr.u != VMX_SEL_UNUSABLE);  /* CS cannot be loaded with NULL in protected mode. */
     3160        Assert(pCtx->cs.Attr.u && pCtx->cs.Attr.u != HMVMX_SEL_UNUSABLE);  /* CS cannot be loaded with NULL in protected mode. */
    31583161        if (pCtx->cs.Attr.n.u4Type == 9 || pCtx->cs.Attr.n.u4Type == 11)
    31593162            Assert(pCtx->cs.Attr.n.u2Dpl == pCtx->ss.Attr.n.u2Dpl);
     
    31633166            AssertMsgFailed(("Invalid CS Type %#x\n", pCtx->cs.Attr.n.u2Dpl));
    31643167        /* SS */
    3165         if (pCtx->ss.Attr.u && pCtx->ss.Attr.u != VMX_SEL_UNUSABLE)
     3168        if (pCtx->ss.Attr.u && pCtx->ss.Attr.u != HMVMX_SEL_UNUSABLE)
    31663169        {
    31673170            Assert((pCtx->ss.Sel & X86_SEL_RPL) == (pCtx->cs.Sel & X86_SEL_RPL));
     
    31823185#endif
    31833186        /* DS, ES, FS, GS - only check for usable selectors, see hmR0VmxWriteSegmentReg(). */
    3184         if (pCtx->ds.Attr.u && pCtx->ds.Attr.u != VMX_SEL_UNUSABLE)
     3187        if (pCtx->ds.Attr.u && pCtx->ds.Attr.u != HMVMX_SEL_UNUSABLE)
    31853188        {
    31863189            Assert(pCtx->ds.Attr.n.u4Type & X86_SEL_TYPE_ACCESSED);
     
    31963199                   || (pCtx->ds.Attr.n.u4Type & X86_SEL_TYPE_READ));
    31973200        }
    3198         if (pCtx->es.Attr.u && pCtx->es.Attr.u != VMX_SEL_UNUSABLE)
     3201        if (pCtx->es.Attr.u && pCtx->es.Attr.u != HMVMX_SEL_UNUSABLE)
    31993202        {
    32003203            Assert(pCtx->es.Attr.n.u4Type & X86_SEL_TYPE_ACCESSED);
     
    32103213                   || (pCtx->es.Attr.n.u4Type & X86_SEL_TYPE_READ));
    32113214        }
    3212         if (pCtx->fs.Attr.u && pCtx->fs.Attr.u != VMX_SEL_UNUSABLE)
     3215        if (pCtx->fs.Attr.u && pCtx->fs.Attr.u != HMVMX_SEL_UNUSABLE)
    32133216        {
    32143217            Assert(pCtx->fs.Attr.n.u4Type & X86_SEL_TYPE_ACCESSED);
     
    32243227                   || (pCtx->fs.Attr.n.u4Type & X86_SEL_TYPE_READ));
    32253228        }
    3226         if (pCtx->gs.Attr.u && pCtx->gs.Attr.u != VMX_SEL_UNUSABLE)
     3229        if (pCtx->gs.Attr.u && pCtx->gs.Attr.u != HMVMX_SEL_UNUSABLE)
    32273230        {
    32283231            Assert(pCtx->gs.Attr.n.u4Type & X86_SEL_TYPE_ACCESSED);
     
    33403343         */
    33413344        if (!u32Access)
    3342             u32Access = VMX_SEL_UNUSABLE;
     3345            u32Access = HMVMX_SEL_UNUSABLE;
    33433346    }
    33443347
    33453348    /* Validate segment access rights. Refer to Intel spec. "26.3.1.2 Checks on Guest Segment Registers". */
    3346     AssertMsg((u32Access == VMX_SEL_UNUSABLE) || (u32Access & X86_SEL_TYPE_ACCESSED),
     3349    AssertMsg((u32Access == HMVMX_SEL_UNUSABLE) || (u32Access & X86_SEL_TYPE_ACCESSED),
    33473350              ("Access bit not set for usable segment. idx=%#x sel=%#x attr %#x\n", idxBase, pSelReg, pSelReg->Attr.u));
    33483351
     
    34713474        AssertMsg(   (u32AccessRights & 0xf) == X86_SEL_TYPE_SYS_386_TSS_BUSY
    34723475                  || (u32AccessRights & 0xf) == X86_SEL_TYPE_SYS_286_TSS_BUSY, ("TSS is not busy!? %#x\n", u32AccessRights));
    3473         AssertMsg(!(u32AccessRights & VMX_SEL_UNUSABLE), ("TR unusable bit is not clear!? %#x\n", u32AccessRights));
     3476        AssertMsg(!(u32AccessRights & HMVMX_SEL_UNUSABLE), ("TR unusable bit is not clear!? %#x\n", u32AccessRights));
    34743477        Assert(!(u32AccessRights & RT_BIT(4)));           /* System MBZ.*/
    34753478        Assert(u32AccessRights & RT_BIT(7));              /* Present MB1.*/
     
    35133516        uint32_t u32Access = 0;
    35143517        if (!pCtx->ldtr.Attr.u)
    3515             u32Access = VMX_SEL_UNUSABLE;
     3518            u32Access = HMVMX_SEL_UNUSABLE;
    35163519        else
    35173520            u32Access = pCtx->ldtr.Attr.u;
     
    35243527
    35253528        /* Validate. */
    3526         if (!(u32Access & VMX_SEL_UNUSABLE))
     3529        if (!(u32Access & HMVMX_SEL_UNUSABLE))
    35273530        {
    35283531            Assert(!(pCtx->ldtr.Sel & RT_BIT(2)));              /* TI MBZ. */
     
    38053808                Log(("Exit Qualification %#x\n", pVmxTransient->uExitQualification));
    38063809                Log(("InstrError         %#x\n", pVCpu->hm.s.vmx.lasterror.u32InstrError));
    3807                 if (pVCpu->hm.s.vmx.lasterror.u32InstrError <= VMX_INSTR_ERROR_MAX)
     3810                if (pVCpu->hm.s.vmx.lasterror.u32InstrError <= HMVMX_INSTR_ERROR_MAX)
    38083811                    Log(("InstrError Desc.  \"%s\"\n", g_apszVmxInstrErrors[pVCpu->hm.s.vmx.lasterror.u32InstrError]));
    38093812                else
    3810                     Log(("InstrError Desc.    Range exceeded %u\n", VMX_INSTR_ERROR_MAX));
     3813                    Log(("InstrError Desc.    Range exceeded %u\n", HMVMX_INSTR_ERROR_MAX));
    38113814
    38123815                /* VMX control bits. */
     
    39523955                Log(("Host RIP %#RHv\n", uHCReg));
    39533956# if HC_ARCH_BITS == 64 || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    3954                 if (VMX_IS_64BIT_HOST_MODE())
     3957                if (HMVMX_IS_64BIT_HOST_MODE())
    39553958                {
    39563959                    Log(("MSR_K6_EFER            = %#RX64\n", ASMRdMsr(MSR_K6_EFER)));
     
    47494752                Log(("IDT: Vectoring #PF uCR2=%#RGv\n", pMixedCtx->cr2));
    47504753            }
    4751             else if (   (pVCpu->hm.s.vmx.u32XcptBitmap & VMX_CONTRIBUTORY_XCPT_BITMAP)
     4754            else if (   (pVCpu->hm.s.vmx.u32XcptBitmap & HMVMX_CONTRIBUTORY_XCPT_MASK)
    47524755                     && hmR0VmxIsContributoryXcpt(uExitVector)
    47534756                     && (   hmR0VmxIsContributoryXcpt(uIdtVector)
     
    48284831{
    48294832    int rc = VINF_SUCCESS;
    4830     if (   !(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_CR0)
    4831         || !(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_FPU))
     4833    if (   !(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_CR0)
     4834        || !(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_FPU))
    48324835    {
    48334836        RTGCUINTREG uVal    = 0;
     
    48384841        uVal = (uShadow & pVCpu->hm.s.vmx.cr0_mask) | (uVal & ~pVCpu->hm.s.vmx.cr0_mask);
    48394842        CPUMSetGuestCR0(pVCpu, uVal);
    4840         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_CR0 | VMX_UPDATED_GUEST_FPU;
     4843        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_CR0 | HMVMX_UPDATED_GUEST_FPU;
    48414844    }
    48424845    return rc;
     
    48584861{
    48594862    int rc = VINF_SUCCESS;
    4860     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_CR4))
     4863    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_CR4))
    48614864    {
    48624865        RTGCUINTREG uVal    = 0;
     
    48674870        uVal = (uShadow & pVCpu->hm.s.vmx.cr4_mask) | (uVal & ~pVCpu->hm.s.vmx.cr4_mask);
    48684871        CPUMSetGuestCR4(pVCpu, uVal);
    4869         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_CR4;
     4872        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_CR4;
    48704873    }
    48714874    return rc;
     
    48864889DECLINLINE(int) hmR0VmxSaveGuestRip(PVMCPU pVCpu, PCPUMCTX pMixedCtx)
    48874890{
    4888     if (pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_RIP)
     4891    if (pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_RIP)
    48894892        return VINF_SUCCESS;
    48904893
     
    48934896    AssertRCReturn(rc, rc);
    48944897    pMixedCtx->rip = uVal;
    4895     pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_RIP;
     4898    pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_RIP;
    48964899    return rc;
    48974900}
     
    49114914DECLINLINE(int) hmR0VmxSaveGuestRsp(PVMCPU pVCpu, PCPUMCTX pMixedCtx)
    49124915{
    4913     if (pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_RSP)
     4916    if (pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_RSP)
    49144917        return VINF_SUCCESS;
    49154918
     
    49184921    AssertRCReturn(rc, rc);
    49194922    pMixedCtx->rsp = uVal;
    4920     pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_RSP;
     4923    pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_RSP;
    49214924    return rc;
    49224925}
     
    49364939DECLINLINE(int) hmR0VmxSaveGuestRflags(PVMCPU pVCpu, PCPUMCTX pMixedCtx)
    49374940{
    4938     if (pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_RFLAGS)
     4941    if (pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_RFLAGS)
    49394942        return VINF_SUCCESS;
    49404943
     
    49544957    }
    49554958
    4956     pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_RFLAGS;
     4959    pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_RFLAGS;
    49574960    return rc;
    49584961}
     
    50185021{
    50195022    /* Nothing to do for now until we make use of different guest-CPU activity state. Just update the flag. */
    5020     pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_ACTIVITY_STATE;
     5023    pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_ACTIVITY_STATE;
    50215024    return VINF_SUCCESS;
    50225025}
     
    50385041{
    50395042    int rc = VINF_SUCCESS;
    5040     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_SYSENTER_CS_MSR))
     5043    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_SYSENTER_CS_MSR))
    50415044    {
    50425045        uint32_t u32Val = 0;
    50435046        rc = VMXReadVmcs32(VMX_VMCS32_GUEST_SYSENTER_CS, &u32Val);     AssertRCReturn(rc, rc);
    50445047        pMixedCtx->SysEnter.cs = u32Val;
    5045         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_SYSENTER_CS_MSR;
     5048        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_SYSENTER_CS_MSR;
    50465049    }
    50475050
    50485051    RTGCUINTREG uGCVal = 0;
    5049     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_SYSENTER_EIP_MSR))
     5052    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_SYSENTER_EIP_MSR))
    50505053    {
    50515054        rc = VMXReadVmcsGstN(VMX_VMCS_GUEST_SYSENTER_EIP, &uGCVal);    AssertRCReturn(rc, rc);
    50525055        pMixedCtx->SysEnter.eip = uGCVal;
    5053         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_SYSENTER_EIP_MSR;
    5054     }
    5055     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_SYSENTER_ESP_MSR))
     5056        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_SYSENTER_EIP_MSR;
     5057    }
     5058    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_SYSENTER_ESP_MSR))
    50565059    {
    50575060        rc = VMXReadVmcsGstN(VMX_VMCS_GUEST_SYSENTER_ESP, &uGCVal);    AssertRCReturn(rc, rc);
    50585061        pMixedCtx->SysEnter.esp = uGCVal;
    5059         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_SYSENTER_ESP_MSR;
     5062        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_SYSENTER_ESP_MSR;
    50605063    }
    50615064    return rc;
     
    50795082    RTGCUINTREG uVal = 0;
    50805083    int rc = VINF_SUCCESS;
    5081     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_FS_BASE_MSR))
     5084    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_FS_BASE_MSR))
    50825085    {
    50835086        rc = VMXReadVmcsGstN(VMX_VMCS_GUEST_FS_BASE, &uVal);   AssertRCReturn(rc, rc);
    50845087        pMixedCtx->fs.u64Base = uVal;
    5085         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_FS_BASE_MSR;
     5088        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_FS_BASE_MSR;
    50865089    }
    50875090    return rc;
     
    51055108    RTGCUINTREG uVal = 0;
    51065109    int rc = VINF_SUCCESS;
    5107     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_GS_BASE_MSR))
     5110    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_GS_BASE_MSR))
    51085111    {
    51095112        rc = VMXReadVmcsGstN(VMX_VMCS_GUEST_GS_BASE, &uVal);   AssertRCReturn(rc, rc);
    51105113        pMixedCtx->gs.u64Base = uVal;
    5111         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_GS_BASE_MSR;
     5114        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_GS_BASE_MSR;
    51125115    }
    51135116    return rc;
     
    51295132static int hmR0VmxSaveGuestAutoLoadStoreMsrs(PVMCPU pVCpu, PCPUMCTX pMixedCtx)
    51305133{
    5131     if (pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS)
     5134    if (pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS)
    51325135        return VINF_SUCCESS;
    51335136
     
    51545157        }
    51555158    }
    5156     pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS;
     5159    pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_AUTO_LOAD_STORE_MSRS;
    51575160    return VINF_SUCCESS;
    51585161}
     
    51855188
    51865189    /* Guest CR3. Only changes with Nested Paging. This must be done -after- saving CR0 and CR4 from the guest! */
    5187     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_CR3))
     5190    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_CR3))
    51885191    {
    51895192        PVM pVM = pVCpu->CTX_SUFF(pVM);
     
    52155218        }
    52165219
    5217         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_CR3;
     5220        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_CR3;
    52185221    }
    52195222    return rc;
     
    52615264     * See Intel spec. 27.3.2 "Saving Segment Registers and Descriptor-Table Registers.
    52625265     */
    5263     if (pSelReg->Attr.u & VMX_SEL_UNUSABLE)
     5266    if (pSelReg->Attr.u & HMVMX_SEL_UNUSABLE)
    52645267    {
    52655268        Assert(idxSel != VMX_VMCS16_GUEST_FIELD_TR);
    5266         pSelReg->Attr.u = VMX_SEL_UNUSABLE;
     5269        pSelReg->Attr.u = HMVMX_SEL_UNUSABLE;
    52675270    }
    52685271    return rc;
     
    52975300
    52985301    /* Guest segment registers. */
    5299     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_SEGMENT_REGS))
     5302    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_SEGMENT_REGS))
    53005303    {
    53015304        rc = hmR0VmxSaveGuestCR0(pVCpu, pMixedCtx);
     
    53185321            pMixedCtx->gs.Attr.u = pVCpu->hm.s.vmx.RealMode.uAttrGS.u;
    53195322        }
    5320         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_SEGMENT_REGS;
     5323        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_SEGMENT_REGS;
    53215324    }
    53225325
    53235326    /* Guest LDTR. */
    5324     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_LDTR))
     5327    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_LDTR))
    53255328    {
    53265329        rc = VMXLOCAL_READ_SEG(LDTR, ldtr);
    53275330        AssertRCReturn(rc, rc);
    5328         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_LDTR;
     5331        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_LDTR;
    53295332    }
    53305333
     
    53325335    RTGCUINTREG uGCVal = 0;
    53335336    uint32_t    u32Val = 0;
    5334     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_GDTR))
     5337    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_GDTR))
    53355338    {
    53365339        rc  = VMXReadVmcsGstN(VMX_VMCS_GUEST_GDTR_BASE, &uGCVal);
     
    53385341        pMixedCtx->gdtr.pGdt  = uGCVal;
    53395342        pMixedCtx->gdtr.cbGdt = u32Val;
    5340         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_GDTR;
     5343        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_GDTR;
    53415344    }
    53425345
    53435346    /* Guest IDTR. */
    5344     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_IDTR))
     5347    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_IDTR))
    53455348    {
    53465349        rc  = VMXReadVmcsGstN(VMX_VMCS_GUEST_IDTR_BASE, &uGCVal);
     
    53485351        pMixedCtx->idtr.pIdt  = uGCVal;
    53495352        pMixedCtx->idtr.cbIdt = u32Val;
    5350         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_IDTR;
     5353        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_IDTR;
    53515354    }
    53525355
    53535356    /* Guest TR. */
    5354     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_TR))
     5357    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_TR))
    53555358    {
    53565359        rc = hmR0VmxSaveGuestCR0(pVCpu, pMixedCtx);
     
    53605363            rc |= VMXLOCAL_READ_SEG(TR, tr);
    53615364        AssertRCReturn(rc, rc);
    5362         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_TR;
     5365        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_TR;
    53635366    }
    53645367    return rc;
     
    53815384{
    53825385    int rc = VINF_SUCCESS;
    5383     if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_DEBUG))
     5386    if (!(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_DEBUG))
    53845387    {
    53855388        RTGCUINTREG uVal;
     
    53875390        pMixedCtx->dr[7] = uVal;
    53885391
    5389         pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_DEBUG;
     5392        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_DEBUG;
    53905393    }
    53915394    return rc;
     
    54075410{
    54085411    /* Updating TPR is already done in hmR0VmxPostRunGuest(). Just update the flag. */
    5409     pVCpu->hm.s.vmx.fUpdatedGuestState |= VMX_UPDATED_GUEST_APIC_STATE;
     5412    pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_APIC_STATE;
    54105413    return VINF_SUCCESS;
    54115414}
     
    54275430    Assert(pMixedCtx);
    54285431
    5429     if (pVCpu->hm.s.vmx.fUpdatedGuestState == VMX_UPDATED_GUEST_ALL)
     5432    if (pVCpu->hm.s.vmx.fUpdatedGuestState == HMVMX_UPDATED_GUEST_ALL)
    54305433        return VINF_SUCCESS;
    54315434
     
    54645467    AssertLogRelMsgRCReturn(rc, ("hmR0VmxSaveGuestDebugRegs failed! rc=%Rrc (pVCpu=%p)\n", rc, pVCpu), rc);
    54655468
    5466     AssertMsg(pVCpu->hm.s.vmx.fUpdatedGuestState == VMX_UPDATED_GUEST_ALL,
     5469    AssertMsg(pVCpu->hm.s.vmx.fUpdatedGuestState == HMVMX_UPDATED_GUEST_ALL,
    54675470              ("Missed guest state bits while saving state; residue %RX32\n", pVCpu->hm.s.vmx.fUpdatedGuestState));
    54685471
     
    57335736
    57345737    int rc = hmR0VmxSaveGuestState(pVCpu, pMixedCtx);
    5735     Assert(pVCpu->hm.s.vmx.fUpdatedGuestState == VMX_UPDATED_GUEST_ALL);
     5738    Assert(pVCpu->hm.s.vmx.fUpdatedGuestState == HMVMX_UPDATED_GUEST_ALL);
    57365739    AssertRC(rc);
    57375740
     
    58935896    const bool fBlockSti   = !!(uIntrState & VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE_BLOCK_STI);
    58945897
    5895     Assert(!fBlockSti || (pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_RFLAGS));
     5898    Assert(!fBlockSti || (pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_RFLAGS));
    58965899    Assert(   !(uIntrState & VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE_BLOCK_NMI)      /* We don't support block-by-NMI and SMI yet.*/
    58975900           && !(uIntrState & VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE_BLOCK_SMI));
     
    65876590    Assert(!(pVCpu->hm.s.fContextUseFlags & HM_CHANGED_HOST_CONTEXT));
    65886591    Log4(("LoadFlags=%#RX32\n", pVCpu->hm.s.fContextUseFlags));
    6589 #ifdef VBOX_ALWAYS_SYNC_FULL_VTX_STATE
     6592#ifdef HMVMX_SYNC_FULL_GUEST_STATE
    65906593    pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_ALL_GUEST;
    65916594#endif
     
    67146717        /* Update the guest interruptibility-state from the VMCS. */
    67156718        hmR0VmxSaveGuestIntrState(pVCpu, pMixedCtx);
    6716 #if defined(VBOX_ALWAYS_SYNC_FULL_VTX_STATE) || defined(VBOX_ALWAYS_SAVE_FULL_VTX_STATE)
     6719#if defined(HMVMX_SYNC_FULL_GUEST_STATE) || defined(HMVMX_SAVE_FULL_GUEST_STATE)
    67176720        rc = hmR0VmxSaveGuestState(pVCpu, pMixedCtx);
    67186721        AssertRC(rc);
     
    76957698            && pMixedCtx->ecx <= MSR_IA32_X2APIC_END)
    76967699        {
    7697             Assert(pVCpu->hm.s.vmx.fUpdatedGuestState & VMX_UPDATED_GUEST_APIC_STATE);
     7700            Assert(pVCpu->hm.s.vmx.fUpdatedGuestState & HMVMX_UPDATED_GUEST_APIC_STATE);
    76987701            pVCpu->hm.s.fContextUseFlags |= HM_CHANGED_VMX_GUEST_APIC_STATE;
    76997702        }
     
    88398842    rc    |= hmR0VmxReadExitInstrLenVmcs(pVCpu, pVmxTransient);
    88408843    AssertRCReturn(rc, rc);
    8841     Assert(pVmxTransient->fVmcsFieldsRead & VMX_TRANSIENT_EXIT_INTERRUPTION_INFO);
     8844    Assert(pVmxTransient->fVmcsFieldsRead & HMVMX_UPDATED_TRANSIENT_EXIT_INTERRUPTION_INFO);
    88428845    hmR0VmxSetPendingEvent(pVCpu, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntrInfo),
    88438846                           pVmxTransient->cbInstr, pVmxTransient->uExitIntrErrorCode, 0 /* GCPtrFaultAddress */);
  • trunk/src/VBox/VMM/include/HMInternal.h

    r45623 r45637  
    4949# define HM_PROFILE_EXIT_DISPATCH
    5050#endif
    51 
    52 #define HM_VMX_EMULATE_REALMODE
    5351
    5452/* The MSR auto load/store does not work for KERNEL_GS_BASE MSR, thus we
Note: See TracChangeset for help on using the changeset viewer.

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