VirtualBox

Changeset 72963 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Jul 8, 2018 5:56:09 AM (6 years ago)
Author:
vboxsync
Message:

VMM/HM: Spaces.

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

Legend:

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

    r72911 r72963  
    988988    /* If you add any exceptions here, make sure to update hmR0SvmHandleExit(). */
    989989    pVmcbCtrl->u32InterceptXcpt |= 0
    990                                 | RT_BIT(X86_XCPT_BP)
    991                                 | RT_BIT(X86_XCPT_DE)
    992                                 | RT_BIT(X86_XCPT_NM)
    993                                 | RT_BIT(X86_XCPT_UD)
    994                                 | RT_BIT(X86_XCPT_NP)
    995                                 | RT_BIT(X86_XCPT_SS)
    996                                 | RT_BIT(X86_XCPT_GP)
    997                                 | RT_BIT(X86_XCPT_PF)
    998                                 | RT_BIT(X86_XCPT_MF)
    999                                 ;
     990                                 | RT_BIT(X86_XCPT_BP)
     991                                 | RT_BIT(X86_XCPT_DE)
     992                                 | RT_BIT(X86_XCPT_NM)
     993                                 | RT_BIT(X86_XCPT_UD)
     994                                 | RT_BIT(X86_XCPT_NP)
     995                                 | RT_BIT(X86_XCPT_SS)
     996                                 | RT_BIT(X86_XCPT_GP)
     997                                 | RT_BIT(X86_XCPT_PF)
     998                                 | RT_BIT(X86_XCPT_MF)
     999                                 ;
    10001000#endif
    10011001
     
    10181018    {
    10191019        pVmcbCtrl->u64InterceptCtrl |= SVM_CTRL_INTERCEPT_VMSAVE
    1020                                     | SVM_CTRL_INTERCEPT_VMLOAD;
     1020                                     | SVM_CTRL_INTERCEPT_VMLOAD;
    10211021    }
    10221022
     
    10261026    {
    10271027        pVmcbCtrl->u64InterceptCtrl |= SVM_CTRL_INTERCEPT_CLGI
    1028                                     | SVM_CTRL_INTERCEPT_STGI;
     1028                                     | SVM_CTRL_INTERCEPT_STGI;
    10291029    }
    10301030#endif
     
    10651065        /* Intercept INVLPG and task switches (may change CR3, EFLAGS, LDT). */
    10661066        pVmcbCtrl->u64InterceptCtrl |= SVM_CTRL_INTERCEPT_INVLPG
    1067                                     | SVM_CTRL_INTERCEPT_TASK_SWITCH;
     1067                                     | SVM_CTRL_INTERCEPT_TASK_SWITCH;
    10681068
    10691069        /* Page faults must be intercepted to implement shadow paging. */
     
    15581558    {
    15591559        uShadowCr0 |= X86_CR0_PG      /* Use shadow page tables. */
    1560                    |  X86_CR0_WP;     /* Guest CPL 0 writes to its read-only pages should cause a #PF #VMEXIT. */
     1560                    |  X86_CR0_WP;    /* Guest CPL 0 writes to its read-only pages should cause a #PF #VMEXIT. */
    15611561    }
    15621562
     
    22882288    pVmcbNstGstCtrl->u64InterceptCtrl  |= (pVmcb->ctrl.u64InterceptCtrl & ~(  SVM_CTRL_INTERCEPT_VINTR
    22892289                                                                            | SVM_CTRL_INTERCEPT_VMMCALL))
    2290                                        | HMSVM_MANDATORY_GUEST_CTRL_INTERCEPTS;
     2290                                        | HMSVM_MANDATORY_GUEST_CTRL_INTERCEPTS;
    22912291
    22922292    Assert(   (pVmcbNstGstCtrl->u64InterceptCtrl & HMSVM_MANDATORY_GUEST_CTRL_INTERCEPTS)
     
    26552655        if (!pVCpu->CTX_SUFF(pVM)->cpum.ro.GuestFeatures.fSvmVirtVmsaveVmload)
    26562656            pVmcbNstGstCtrl->u64InterceptCtrl |= SVM_CTRL_INTERCEPT_VMSAVE
    2657                                               |  SVM_CTRL_INTERCEPT_VMLOAD;
     2657                                               |  SVM_CTRL_INTERCEPT_VMLOAD;
    26582658
    26592659        /*
     
    26632663        if (!pVCpu->CTX_SUFF(pVM)->cpum.ro.GuestFeatures.fSvmVGif)
    26642664            pVmcbNstGstCtrl->u64InterceptCtrl |= SVM_CTRL_INTERCEPT_CLGI
    2665                                               |  SVM_CTRL_INTERCEPT_STGI;
     2665                                               |  SVM_CTRL_INTERCEPT_STGI;
    26662666
    26672667        /* Merge the guest and nested-guest intercepts. */
     
    32853285
    32863286    VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_TO_R3);
    3287     CPUMSetChangedFlags(pVCpu,   CPUM_CHANGED_SYSENTER_MSR
    3288                                | CPUM_CHANGED_LDTR
    3289                                | CPUM_CHANGED_GDTR
    3290                                | CPUM_CHANGED_IDTR
    3291                                | CPUM_CHANGED_TR
    3292                                | CPUM_CHANGED_HIDDEN_SEL_REGS);
     3287    CPUMSetChangedFlags(pVCpu, CPUM_CHANGED_SYSENTER_MSR
     3288                             | CPUM_CHANGED_LDTR
     3289                             | CPUM_CHANGED_GDTR
     3290                             | CPUM_CHANGED_IDTR
     3291                             | CPUM_CHANGED_TR
     3292                             | CPUM_CHANGED_HIDDEN_SEL_REGS);
    32933293    if (   pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging
    32943294        && CPUMIsGuestPagingEnabledEx(pCtx))
     
    37593759{
    37603760    HMSVM_ASSERT_IN_NESTED_GUEST(pCtx);
    3761     HMSVM_CPUMCTX_ASSERT(pVCpu,   CPUMCTX_EXTRN_HWVIRT
    3762                                 | CPUMCTX_EXTRN_RFLAGS
    3763                                 | CPUMCTX_EXTRN_HM_SVM_INT_SHADOW
    3764                                 | CPUMCTX_EXTRN_HM_SVM_HWVIRT_VIRQ);
     3761    HMSVM_CPUMCTX_ASSERT(pVCpu, CPUMCTX_EXTRN_HWVIRT
     3762                              | CPUMCTX_EXTRN_RFLAGS
     3763                              | CPUMCTX_EXTRN_HM_SVM_INT_SHADOW
     3764                              | CPUMCTX_EXTRN_HM_SVM_HWVIRT_VIRQ);
    37653765
    37663766    Assert(!pVCpu->hm.s.Event.fPending);
     
    38813881{
    38823882    HMSVM_ASSERT_NOT_IN_NESTED_GUEST(pCtx);
    3883     HMSVM_CPUMCTX_ASSERT(pVCpu,   CPUMCTX_EXTRN_HWVIRT
    3884                                 | CPUMCTX_EXTRN_RFLAGS
    3885                                 | CPUMCTX_EXTRN_HM_SVM_INT_SHADOW);
     3883    HMSVM_CPUMCTX_ASSERT(pVCpu, CPUMCTX_EXTRN_HWVIRT
     3884                              | CPUMCTX_EXTRN_RFLAGS
     3885                              | CPUMCTX_EXTRN_HM_SVM_INT_SHADOW);
    38863886
    38873887    Assert(!pVCpu->hm.s.Event.fPending);
     
    48114811     *   - Shared state (only DR7 currently) for exporting shared debug state on preemption.
    48124812     */
    4813     hmR0SvmImportGuestState(pVCpu,   CPUMCTX_EXTRN_RIP
    4814                                    | CPUMCTX_EXTRN_RFLAGS
    4815                                    | CPUMCTX_EXTRN_RAX
    4816                                    | CPUMCTX_EXTRN_RSP
    4817                                    | CPUMCTX_EXTRN_CS
    4818                                    | CPUMCTX_EXTRN_HWVIRT
    4819                                    | CPUMCTX_EXTRN_HM_SVM_INT_SHADOW
    4820                                    | CPUMCTX_EXTRN_HM_SVM_HWVIRT_VIRQ
    4821                                    | HMSVM_CPUMCTX_SHARED_STATE);
     4813    hmR0SvmImportGuestState(pVCpu, CPUMCTX_EXTRN_RIP
     4814                                 | CPUMCTX_EXTRN_RFLAGS
     4815                                 | CPUMCTX_EXTRN_RAX
     4816                                 | CPUMCTX_EXTRN_RSP
     4817                                 | CPUMCTX_EXTRN_CS
     4818                                 | CPUMCTX_EXTRN_HWVIRT
     4819                                 | CPUMCTX_EXTRN_HM_SVM_INT_SHADOW
     4820                                 | CPUMCTX_EXTRN_HM_SVM_HWVIRT_VIRQ
     4821                                 | HMSVM_CPUMCTX_SHARED_STATE);
    48224822#endif
    48234823
     
    62856285{
    62866286    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    6287     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   CPUMCTX_EXTRN_CR0
    6288                                       | CPUMCTX_EXTRN_CR4
    6289                                       | CPUMCTX_EXTRN_SS);
     6287    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_SS);
    62906288
    62916289    int rc = EMInterpretRdpmc(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx));
     
    63596357{
    63606358    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    6361     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   CPUMCTX_EXTRN_CR0
    6362                                       | CPUMCTX_EXTRN_SS);
     6359    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_SS);
    63636360
    63646361    int rc = EMInterpretMonitor(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx));
     
    63846381{
    63856382    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    6386     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   CPUMCTX_EXTRN_CR0
    6387                                       | CPUMCTX_EXTRN_SS);
     6383    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_SS);
    63886384
    63896385    VBOXSTRICTRC rc2 = EMInterpretMWait(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx));
     
    68466842{
    68476843    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    6848     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    6849                                       | CPUMCTX_EXTRN_SREG_MASK);
     6844    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_SREG_MASK);
    68506845
    68516846    /* I/O operation lookup arrays. */
     
    68716866    }
    68726867
    6873     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   CPUMCTX_EXTRN_RIP
    6874                                       | CPUMCTX_EXTRN_CS
    6875                                       | CPUMCTX_EXTRN_RFLAGS);
     6868    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_RIP | CPUMCTX_EXTRN_RFLAGS);
    68766869    VBOXSTRICTRC rcStrict;
    68776870    PCEMEXITREC pExitRec = NULL;
     
    71427135            return VINF_EM_RAW_INJECT_TRPM_EVENT;
    71437136
    7144         HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   CPUMCTX_EXTRN_RIP
    7145                                           | CPUMCTX_EXTRN_CS);
     7137        HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_RIP);
    71467138        VBOXSTRICTRC rcStrict;
    71477139        PCEMEXITREC pExitRec = EMHistoryUpdateFlagsAndTypeAndPC(pVCpu,
     
    77297721{
    77307722    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    7731     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    7732                                       | CPUMCTX_EXTRN_HWVIRT);
     7723    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_HWVIRT);
    77337724
    77347725#ifdef VBOX_STRICT
     
    77537744{
    77547745    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    7755     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    7756                                       | CPUMCTX_EXTRN_HWVIRT);
     7746    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_HWVIRT);
    77577747
    77587748    /*
     
    77787768{
    77797769    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    7780     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    7781                                       | CPUMCTX_EXTRN_FS
    7782                                       | CPUMCTX_EXTRN_GS
    7783                                       | CPUMCTX_EXTRN_TR
    7784                                       | CPUMCTX_EXTRN_LDTR
    7785                                       | CPUMCTX_EXTRN_KERNEL_GS_BASE
    7786                                       | CPUMCTX_EXTRN_SYSCALL_MSRS
    7787                                       | CPUMCTX_EXTRN_SYSENTER_MSRS);
     7770    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK
     7771                                    | CPUMCTX_EXTRN_FS   | CPUMCTX_EXTRN_GS             | CPUMCTX_EXTRN_TR
     7772                                    | CPUMCTX_EXTRN_LDTR | CPUMCTX_EXTRN_KERNEL_GS_BASE | CPUMCTX_EXTRN_SYSCALL_MSRS
     7773                                    | CPUMCTX_EXTRN_SYSENTER_MSRS);
    77887774
    77897775#ifdef VBOX_STRICT
     
    77987784    if (rcStrict == VINF_SUCCESS)
    77997785    {
    7800         /* We skip flagging changes made to LSTAR, STAR, SFMASK and other MSRs as they are always re-loaded. */
    7801         ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_FS
    7802                                                    | HM_CHANGED_GUEST_GS
    7803                                                    | HM_CHANGED_GUEST_TR
    7804                                                    | HM_CHANGED_GUEST_LDTR
    7805                                                    | HM_CHANGED_GUEST_SYSENTER_CS_MSR
    7806                                                    | HM_CHANGED_GUEST_SYSENTER_EIP_MSR
    7807                                                    | HM_CHANGED_GUEST_SYSENTER_ESP_MSR);
     7786        ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_FS              | HM_CHANGED_GUEST_GS
     7787                                                 | HM_CHANGED_GUEST_TR              | HM_CHANGED_GUEST_LDTR
     7788                                                 | HM_CHANGED_GUEST_SYSENTER_MSR_MASK);
    78087789    }
    78097790    return VBOXSTRICTRC_VAL(rcStrict);
     
    78527833{
    78537834    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
    7854     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    7855                                       | IEM_CPUMCTX_EXTRN_SVM_VMRUN_MASK);
     7835    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | IEM_CPUMCTX_EXTRN_SVM_VMRUN_MASK);
    78567836    VBOXSTRICTRC rcStrict;
    78577837    uint8_t const cbInstr = hmR0SvmGetInstrLengthHwAssist(pVCpu, pCtx, 3);
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r72929 r72963  
    23082308
    23092309    fVal |= VMX_VMCS_CTRL_PIN_EXEC_EXT_INT_EXIT              /* External interrupts cause a VM-exit. */
    2310          | VMX_VMCS_CTRL_PIN_EXEC_NMI_EXIT;                 /* Non-maskable interrupts (NMIs) cause a VM-exit. */
     2310          | VMX_VMCS_CTRL_PIN_EXEC_NMI_EXIT;                 /* Non-maskable interrupts (NMIs) cause a VM-exit. */
    23112311
    23122312    if (pVM->hm.s.vmx.Msrs.VmxPinCtls.n.allowed1 & VMX_VMCS_CTRL_PIN_EXEC_VIRTUAL_NMI)
     
    24602460
    24612461    fVal |= VMX_VMCS_CTRL_PROC_EXEC_HLT_EXIT                      /* HLT causes a VM-exit. */
    2462          | VMX_VMCS_CTRL_PROC_EXEC_USE_TSC_OFFSETTING            /* Use TSC-offsetting. */
    2463          | VMX_VMCS_CTRL_PROC_EXEC_MOV_DR_EXIT                   /* MOV DRx causes a VM-exit. */
    2464          | VMX_VMCS_CTRL_PROC_EXEC_UNCOND_IO_EXIT                /* All IO instructions cause a VM-exit. */
    2465          | VMX_VMCS_CTRL_PROC_EXEC_RDPMC_EXIT                    /* RDPMC causes a VM-exit. */
    2466          | VMX_VMCS_CTRL_PROC_EXEC_MONITOR_EXIT                  /* MONITOR causes a VM-exit. */
    2467          | VMX_VMCS_CTRL_PROC_EXEC_MWAIT_EXIT;                   /* MWAIT causes a VM-exit. */
     2462          | VMX_VMCS_CTRL_PROC_EXEC_USE_TSC_OFFSETTING            /* Use TSC-offsetting. */
     2463          | VMX_VMCS_CTRL_PROC_EXEC_MOV_DR_EXIT                   /* MOV DRx causes a VM-exit. */
     2464          | VMX_VMCS_CTRL_PROC_EXEC_UNCOND_IO_EXIT                /* All IO instructions cause a VM-exit. */
     2465          | VMX_VMCS_CTRL_PROC_EXEC_RDPMC_EXIT                    /* RDPMC causes a VM-exit. */
     2466          | VMX_VMCS_CTRL_PROC_EXEC_MONITOR_EXIT                  /* MONITOR causes a VM-exit. */
     2467          | VMX_VMCS_CTRL_PROC_EXEC_MWAIT_EXIT;                   /* MWAIT causes a VM-exit. */
    24682468
    24692469    /* We toggle VMX_VMCS_CTRL_PROC_EXEC_MOV_DR_EXIT later, check if it's not -always- needed to be set or clear. */
     
    24812481        Assert(!pVM->hm.s.vmx.fUnrestrictedGuest);                /* Paranoia. */
    24822482        fVal |= VMX_VMCS_CTRL_PROC_EXEC_INVLPG_EXIT
    2483              | VMX_VMCS_CTRL_PROC_EXEC_CR3_LOAD_EXIT
    2484              | VMX_VMCS_CTRL_PROC_EXEC_CR3_STORE_EXIT;
     2483              | VMX_VMCS_CTRL_PROC_EXEC_CR3_LOAD_EXIT
     2484              | VMX_VMCS_CTRL_PROC_EXEC_CR3_STORE_EXIT;
    24852485    }
    24862486
     
    25092509        {
    25102510            fVal |= VMX_VMCS_CTRL_PROC_EXEC_CR8_STORE_EXIT        /* CR8 reads cause a VM-exit. */
    2511                  | VMX_VMCS_CTRL_PROC_EXEC_CR8_LOAD_EXIT;        /* CR8 writes cause a VM-exit. */
     2511                  | VMX_VMCS_CTRL_PROC_EXEC_CR8_LOAD_EXIT;        /* CR8 writes cause a VM-exit. */
    25122512        }
    25132513    }
     
    33493349        {
    33503350            fVal |= VMX_VMCS_CTRL_EXIT_SAVE_GUEST_EFER_MSR
    3351                  | VMX_VMCS_CTRL_EXIT_LOAD_HOST_EFER_MSR;
     3351                  | VMX_VMCS_CTRL_EXIT_LOAD_HOST_EFER_MSR;
    33523352            Log4Func(("VMX_VMCS_CTRL_EXIT_SAVE_GUEST_EFER_MSR and VMX_VMCS_CTRL_EXIT_LOAD_HOST_EFER_MSR\n"));
    33533353        }
     
    37203720                /* The guest doesn't have paging enabled, make CR3 access cause a VM-exit to update our shadow. */
    37213721                uProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_CR3_LOAD_EXIT
    3722                           | VMX_VMCS_CTRL_PROC_EXEC_CR3_STORE_EXIT;
     3722                           | VMX_VMCS_CTRL_PROC_EXEC_CR3_STORE_EXIT;
    37233723            }
    37243724
     
    37683768#ifdef HMVMX_ALWAYS_TRAP_ALL_XCPTS
    37693769        uXcptBitmap |= 0
    3770                     | RT_BIT(X86_XCPT_BP)
    3771                     | RT_BIT(X86_XCPT_DE)
    3772                     | RT_BIT(X86_XCPT_NM)
    3773                     | RT_BIT(X86_XCPT_TS)
    3774                     | RT_BIT(X86_XCPT_UD)
    3775                     | RT_BIT(X86_XCPT_NP)
    3776                     | RT_BIT(X86_XCPT_SS)
    3777                     | RT_BIT(X86_XCPT_GP)
    3778                     | RT_BIT(X86_XCPT_PF)
    3779                     | RT_BIT(X86_XCPT_MF)
    3780                     ;
     3770                     | RT_BIT(X86_XCPT_BP)
     3771                     | RT_BIT(X86_XCPT_DE)
     3772                     | RT_BIT(X86_XCPT_NM)
     3773                     | RT_BIT(X86_XCPT_TS)
     3774                     | RT_BIT(X86_XCPT_UD)
     3775                     | RT_BIT(X86_XCPT_NP)
     3776                     | RT_BIT(X86_XCPT_SS)
     3777                     | RT_BIT(X86_XCPT_GP)
     3778                     | RT_BIT(X86_XCPT_PF)
     3779                     | RT_BIT(X86_XCPT_MF)
     3780                     ;
    37813781#elif defined(HMVMX_ALWAYS_TRAP_PF)
    37823782        uXcptBitmap |= RT_BIT(X86_XCPT_PF);
     
    38903890
    38913891            /* VMX_EPT_MEMTYPE_WB support is already checked in hmR0VmxSetupTaggedTlb(). */
    3892             pVCpu->hm.s.vmx.HCPhysEPTP |=   VMX_EPT_MEMTYPE_WB
    3893                                           | (VMX_EPT_PAGE_WALK_LENGTH_DEFAULT << VMX_EPT_PAGE_WALK_LENGTH_SHIFT);
     3892            pVCpu->hm.s.vmx.HCPhysEPTP |= VMX_EPT_MEMTYPE_WB
     3893                                        | (VMX_EPT_PAGE_WALK_LENGTH_DEFAULT << VMX_EPT_PAGE_WALK_LENGTH_SHIFT);
    38943894
    38953895            /* Validate. See Intel spec. 26.2.1 "Checks on VMX Controls" */
     
    49704970                pVCpu->hm.s.vmx.fSwitchedTo64on32 = false;
    49714971                pVCpu->hm.s.vmx.pfnStartVM = VMXR0StartVM32;
    4972                 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_EFER_MSR
    4973                                                            | HM_CHANGED_VMX_ENTRY_CTLS
    4974                                                            | HM_CHANGED_VMX_EXIT_CTLS
    4975                                                            | HM_CHANGED_HOST_CONTEXT);
     4972                ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_EFER_MSR
     4973                                                         | HM_CHANGED_VMX_ENTRY_CTLS
     4974                                                         | HM_CHANGED_VMX_EXIT_CTLS
     4975                                                         | HM_CHANGED_HOST_CONTEXT);
    49764976                Log4Func(("Selected 32-bit switcher (safe)\n"));
    49774977            }
     
    68946894        if (!fImportState)
    68956895        {
    6896             int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_KERNEL_GS_BASE
    6897                                                     | CPUMCTX_EXTRN_SYSCALL_MSRS);
     6896            int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_KERNEL_GS_BASE | CPUMCTX_EXTRN_SYSCALL_MSRS);
    68986897            AssertRCReturn(rc, rc);
    68996898        }
     
    70627061    /* Sync recompiler state. */
    70637062    VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_TO_R3);
    7064     CPUMSetChangedFlags(pVCpu,  CPUM_CHANGED_SYSENTER_MSR
    7065                               | CPUM_CHANGED_LDTR
    7066                               | CPUM_CHANGED_GDTR
    7067                               | CPUM_CHANGED_IDTR
    7068                               | CPUM_CHANGED_TR
    7069                               | CPUM_CHANGED_HIDDEN_SEL_REGS);
     7063    CPUMSetChangedFlags(pVCpu, CPUM_CHANGED_SYSENTER_MSR
     7064                             | CPUM_CHANGED_LDTR
     7065                             | CPUM_CHANGED_GDTR
     7066                             | CPUM_CHANGED_IDTR
     7067                             | CPUM_CHANGED_TR
     7068                             | CPUM_CHANGED_HIDDEN_SEL_REGS);
    70707069    if (   pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging
    70717070        && CPUMIsGuestPagingEnabledEx(pMixedCtx))
     
    77537752
    77547753            /* We require RIP, RSP, RFLAGS, CS, IDTR, import them. */
    7755             int rc2 = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_SREG_MASK
    7756                                                      | CPUMCTX_EXTRN_TABLE_MASK
    7757                                                      | CPUMCTX_EXTRN_RIP
    7758                                                      | CPUMCTX_EXTRN_RSP
    7759                                                      | CPUMCTX_EXTRN_RFLAGS);
     7754            int rc2 = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_SREG_MASK | CPUMCTX_EXTRN_TABLE_MASK | CPUMCTX_EXTRN_RIP
     7755                                                   | CPUMCTX_EXTRN_RSP       | CPUMCTX_EXTRN_RFLAGS);
    77607756            AssertRCReturn(rc2, rc2);
    77617757
     
    78217817                /* If any other guest-state bits are changed here, make sure to update
    78227818                   hmR0VmxPreRunGuestCommitted() when thread-context hooks are used. */
    7823                 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_CS
    7824                                                            | HM_CHANGED_GUEST_CR2
    7825                                                            | HM_CHANGED_GUEST_RIP
    7826                                                            | HM_CHANGED_GUEST_RFLAGS
    7827                                                            | HM_CHANGED_GUEST_RSP);
     7819                ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_CS     | HM_CHANGED_GUEST_CR2
     7820                                                         | HM_CHANGED_GUEST_RIP    | HM_CHANGED_GUEST_RFLAGS
     7821                                                         | HM_CHANGED_GUEST_RSP);
    78287822
    78297823                /* We're clearing interrupts, which means no block-by-STI interrupt-inhibition. */
     
    92039197        || IS_EITHER_ENABLED(pVM, INSTR_CRX_WRITE))
    92049198    {
    9205         int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_CR0
    9206                                                | CPUMCTX_EXTRN_CR4
    9207                                                | CPUMCTX_EXTRN_APIC_TPR);
     9199        int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_APIC_TPR);
    92089200        AssertRC(rc);
    92099201
     
    98309822            case VMX_EXIT_XRSTORS:
    98319823            {
    9832                 int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_RIP
    9833                                                         | CPUMCTX_EXTRN_CS);
     9824                int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_RIP);
    98349825                AssertRCReturn(rc, rc);
    98359826                if (   pMixedCtx->rip    != pDbgState->uRipStart
     
    99789969        if (fStepping)
    99799970        {
    9980             int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_RIP
    9981                                                     | CPUMCTX_EXTRN_CS);
     9971            int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_RIP);
    99829972            AssertRC(rc);
    99839973            if (   pCtx->rip    != DbgState.uRipStart
     
    1037810368{
    1037910369    int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
    10380     rc    |= hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_RIP
    10381                                             | CPUMCTX_EXTRN_RFLAGS);
     10370    rc    |= hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_RIP | CPUMCTX_EXTRN_RFLAGS);
    1038210371    AssertRCReturn(rc, rc);
    1038310372
     
    1134011329{
    1134111330    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
    11342     int rc = hmR0VmxImportGuestState(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    11343                                             | CPUMCTX_EXTRN_TSC_AUX);
     11331    int rc = hmR0VmxImportGuestState(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_TSC_AUX);
    1134411332    rc    |= hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
    1134511333    AssertRCReturn(rc, rc);
     
    1137011358{
    1137111359    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
    11372     int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_CR4
    11373                                             | CPUMCTX_EXTRN_CR0
    11374                                             | CPUMCTX_EXTRN_RFLAGS
    11375                                             | CPUMCTX_EXTRN_SS);
     11360    int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS);
    1137611361    AssertRCReturn(rc, rc);
    1137711362
     
    1140211387    if (EMAreHypercallInstructionsEnabled(pVCpu))
    1140311388    {
    11404         int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_RIP
    11405                                                 | CPUMCTX_EXTRN_RFLAGS
    11406                                                 | CPUMCTX_EXTRN_CR0
    11407                                                 | CPUMCTX_EXTRN_SS
    11408                                                 | CPUMCTX_EXTRN_CS
    11409                                                 | CPUMCTX_EXTRN_EFER);
     11389        int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_RIP | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_SS
     11390                                              | CPUMCTX_EXTRN_CS  | CPUMCTX_EXTRN_EFER);
    1141011391        AssertRCReturn(rc, rc);
    1141111392
     
    1147411455{
    1147511456    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
    11476     int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_CR0
    11477                                             | CPUMCTX_EXTRN_RFLAGS
    11478                                             | CPUMCTX_EXTRN_SS);
     11457    int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS);
    1147911458    AssertRCReturn(rc, rc);
    1148011459
     
    1149911478{
    1150011479    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
    11501     int rc = hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_CR0
    11502                                             | CPUMCTX_EXTRN_RFLAGS
    11503                                             | CPUMCTX_EXTRN_SS);
     11480    int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS);
    1150411481    AssertRCReturn(rc, rc);
    1150511482
     
    1168611663
    1168711664    int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
    11688     rc    |= hmR0VmxImportGuestState(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    11689                                             | CPUMCTX_EXTRN_CR4);
     11665    rc    |= hmR0VmxImportGuestState(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_CR4);
    1169011666    AssertRCReturn(rc, rc);
    1169111667
     
    1193911915             * the other bits as well, SCE and NXE. See @bugref{7368}.
    1194011916             */
    11941             ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_EFER_MSR
    11942                                                        | HM_CHANGED_VMX_ENTRY_CTLS
    11943                                                        | HM_CHANGED_VMX_EXIT_CTLS);
     11917            ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_EFER_MSR | HM_CHANGED_VMX_ENTRY_CTLS
     11918                                                     | HM_CHANGED_VMX_EXIT_CTLS);
    1194411919        }
    1194511920
     
    1223612211    int rc = hmR0VmxReadExitQualificationVmcs(pVCpu, pVmxTransient);
    1223712212    rc    |= hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
    12238     rc    |= hmR0VmxImportGuestState(pVCpu,   IEM_CPUMCTX_EXTRN_MUST_MASK
    12239                                             | CPUMCTX_EXTRN_SREG_MASK
    12240                                             | CPUMCTX_EXTRN_EFER);
     12213    rc    |= hmR0VmxImportGuestState(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_SREG_MASK | CPUMCTX_EXTRN_EFER);
    1224112214    /* EFER also required for longmode checks in EMInterpretDisasCurrent(), but it's always up-to-date. */
    1224212215    AssertRCReturn(rc, rc);
     
    1259112564                || rcStrict2 == VERR_PAGE_NOT_PRESENT)
    1259212565            {
    12593                 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_RIP
    12594                                                            | HM_CHANGED_GUEST_RSP
    12595                                                            | HM_CHANGED_GUEST_RFLAGS
    12596                                                            | HM_CHANGED_GUEST_APIC_TPR);
     12566                ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RSP | HM_CHANGED_GUEST_RFLAGS
     12567                                                         | HM_CHANGED_GUEST_APIC_TPR);
    1259712568                rcStrict2 = VINF_SUCCESS;
    1259812569            }
     
    1266612637     */
    1266712638    int rc = hmR0VmxReadExitQualificationVmcs(pVCpu, pVmxTransient);
    12668     rc    |= hmR0VmxImportGuestState(pVCpu,   CPUMCTX_EXTRN_SREG_MASK
    12669                                             | CPUMCTX_EXTRN_DR7);
     12639    rc    |= hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_SREG_MASK | CPUMCTX_EXTRN_DR7);
    1267012640    AssertRCReturn(rc, rc);
    1267112641    Log4Func(("CS:RIP=%04x:%08RX64\n", pMixedCtx->cs.Sel, pMixedCtx->rip));
     
    1275712727        {
    1275812728            /* Successfully handled MMIO operation. */
    12759             ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_RIP
    12760                                                        | HM_CHANGED_GUEST_RSP
    12761                                                        | HM_CHANGED_GUEST_RFLAGS
    12762                                                        | HM_CHANGED_GUEST_APIC_TPR);
     12729            ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RSP | HM_CHANGED_GUEST_RFLAGS
     12730                                                     | HM_CHANGED_GUEST_APIC_TPR);
    1276312731            rcStrict = VINF_SUCCESS;
    1276412732        }
     
    1284512813        /* Successfully synced our nested page tables. */
    1284612814        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitReasonNpf);
    12847         ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_RIP
    12848                                                    | HM_CHANGED_GUEST_RSP
    12849                                                    | HM_CHANGED_GUEST_RFLAGS);
     12815        ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RSP | HM_CHANGED_GUEST_RFLAGS);
    1285012816        return VINF_SUCCESS;
    1285112817    }
     
    1316613132                pMixedCtx->esp &= uMask;
    1316713133                pMixedCtx->rip += pDis->cbInstr;
    13168                 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_RIP
    13169                                                            | HM_CHANGED_GUEST_RSP
    13170                                                            | HM_CHANGED_GUEST_RFLAGS);
     13134                ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RSP | HM_CHANGED_GUEST_RFLAGS);
    1317113135                /* Generate a pending-debug exception when the guest stepping over POPF regardless of how
    1317213136                   POPF restores EFLAGS.TF. */
     
    1322213186                pMixedCtx->rip += pDis->cbInstr;
    1322313187                pMixedCtx->eflags.Bits.u1RF = 0;
    13224                 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_RIP
    13225                                                            | HM_CHANGED_GUEST_RSP
    13226                                                            | HM_CHANGED_GUEST_RFLAGS);
     13188                ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RSP | HM_CHANGED_GUEST_RFLAGS);
    1322713189                if (  !fDbgStepping
    1322813190                    && pMixedCtx->eflags.Bits.u1TF)
     
    1326913231                                              | (aIretFrame[2] & X86_EFL_POPF_BITS & uMask);
    1327013232                pMixedCtx->sp                += sizeof(aIretFrame);
    13271                 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged,   HM_CHANGED_GUEST_RIP
    13272                                                            | HM_CHANGED_GUEST_CS
    13273                                                            | HM_CHANGED_GUEST_RSP
    13274                                                            | HM_CHANGED_GUEST_RFLAGS);
     13233                ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RSP | HM_CHANGED_GUEST_RFLAGS
     13234                                                         | HM_CHANGED_GUEST_CS);
    1327513235                /* Generate a pending-debug exception when stepping over IRET regardless of how IRET modifies EFLAGS.TF. */
    1327613236                if (   !fDbgStepping
     
    1335813318
    1335913319#ifdef DEBUG_ramshankar
    13360     rc |= hmR0VmxImportGuestState(pVCpu,  CPUMCTX_EXTRN_CS
    13361                                         | CPUMCTX_EXTRN_RIP);
     13320    rc |= hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_RIP);
    1336213321    uint8_t uVector = VMX_EXIT_INTERRUPTION_INFO_VECTOR(pVmxTransient->uExitIntInfo);
    1336313322    Log(("hmR0VmxExitXcptGeneric: Reinjecting Xcpt. uVector=%#x cs:rip=%#04x:%#RX64\n", uVector, pCtx->cs.Sel, pCtx->rip));
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