VirtualBox

Changeset 43798 in vbox for trunk/src


Ignore:
Timestamp:
Nov 2, 2012 1:24:21 PM (12 years ago)
Author:
vboxsync
Message:

VMM/VMMR0: Hungarian.

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

Legend:

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

    r43771 r43798  
    580580        /** @todo make sure they don't conflict with the above requirements. */
    581581        val &= pVM->hm.s.vmx.msr.vmx_proc_ctls.n.allowed1;
    582         pVCpu->hm.s.vmx.proc_ctls = val;
     582        pVCpu->hm.s.vmx.u64ProcCtls = val;
    583583
    584584        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, val);
     
    612612            /** @todo make sure they don't conflict with the above requirements. */
    613613            val &= pVM->hm.s.vmx.msr.vmx_proc_ctls2.n.allowed1;
    614             pVCpu->hm.s.vmx.proc_ctls2 = val;
     614            pVCpu->hm.s.vmx.u64ProcCtls2 = val;
    615615            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS2, val);
    616616            AssertRC(rc);
     
    676676            hmR0VmxSetMSRPermission(pVCpu, MSR_K8_GS_BASE, true, true);
    677677            hmR0VmxSetMSRPermission(pVCpu, MSR_K8_FS_BASE, true, true);
    678             if (pVCpu->hm.s.vmx.proc_ctls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
     678            if (pVCpu->hm.s.vmx.u64ProcCtls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
    679679                hmR0VmxSetMSRPermission(pVCpu, MSR_K8_TSC_AUX, true, true);
    680680        }
     
    10401040            if (!(pCtx->eflags.u32 & X86_EFL_IF))
    10411041            {
    1042                 if (!(pVCpu->hm.s.vmx.proc_ctls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT))
     1042                if (!(pVCpu->hm.s.vmx.u64ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT))
    10431043                {
    10441044                    LogFlow(("Enable irq window exit!\n"));
    1045                     pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT;
    1046                     rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     1045                    pVCpu->hm.s.vmx.u64ProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT;
     1046                    rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    10471047                    AssertRC(rc);
    10481048                }
     
    14481448# endif
    14491449
    1450         if (pVCpu->hm.s.vmx.proc_ctls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
     1450        if (pVCpu->hm.s.vmx.u64ProcCtls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
    14511451        {
    14521452            pMsr->u32IndexMSR = MSR_K8_TSC_AUX;
     
    19121912            {
    19131913                /* Disable CR3 read/write monitoring as we don't need it for EPT. */
    1914                 pVCpu->hm.s.vmx.proc_ctls &=  ~(  VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_LOAD_EXIT
     1914                pVCpu->hm.s.vmx.u64ProcCtls &=  ~(  VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_LOAD_EXIT
    19151915                                                    | VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_STORE_EXIT);
    19161916            }
     
    19181918            {
    19191919                /* Reenable CR3 read/write monitoring as our identity mapped page table is active. */
    1920                 pVCpu->hm.s.vmx.proc_ctls |=   VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_LOAD_EXIT
     1920                pVCpu->hm.s.vmx.u64ProcCtls |=   VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_LOAD_EXIT
    19211921                                                 | VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_STORE_EXIT;
    19221922            }
    1923             rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     1923            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    19241924            AssertRC(rc);
    19251925        }
     
    20372037        if (DBGFIsStepping(pVCpu))
    20382038        {
    2039             pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_TRAP_FLAG;
    2040             rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2039            pVCpu->hm.s.vmx.u64ProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_TRAP_FLAG;
     2040            rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    20412041            AssertRC(rc);
    20422042        }
     
    21342134
    21352135            /* Disable DRx move intercepts. */
    2136             pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
    2137             rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2136            pVCpu->hm.s.vmx.u64ProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
     2137            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    21382138            AssertRC(rc);
    21392139
     
    22312231    }
    22322232
    2233     if (   pVCpu->hm.s.vmx.proc_ctls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP
     2233    if (   pVCpu->hm.s.vmx.u64ProcCtls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP
    22342234        && (u32GstExtFeatures & X86_CPUID_EXT_FEATURE_EDX_RDTSCP))
    22352235    {
     
    22782278            AssertRC(rc);
    22792279
    2280             pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
    2281             rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2280            pVCpu->hm.s.vmx.u64ProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
     2281            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    22822282            AssertRC(rc);
    22832283            STAM_COUNTER_INC(&pVCpu->hm.s.StatTscOffset);
     
    22902290                     TMCpuTickGetLastSeen(pVCpu), TMCpuTickGetLastSeen(pVCpu) - u64CurTSC - pVCpu->hm.s.vmx.u64TSCOffset,
    22912291                     TMCpuTickGet(pVCpu)));
    2292             pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
    2293             rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2292            pVCpu->hm.s.vmx.u64ProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
     2293            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    22942294            AssertRC(rc);
    22952295            STAM_COUNTER_INC(&pVCpu->hm.s.StatTscInterceptOverFlow);
     
    22982298    else
    22992299    {
    2300         pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
    2301         rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2300        pVCpu->hm.s.vmx.u64ProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
     2301        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    23022302        AssertRC(rc);
    23032303        STAM_COUNTER_INC(&pVCpu->hm.s.StatTscIntercept);
     
    32263226     * RDTSCPs (that don't cause exits) reads the guest MSR. See @bugref{3324}.
    32273227     */
    3228     if (    (pVCpu->hm.s.vmx.proc_ctls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
    3229         && !(pVCpu->hm.s.vmx.proc_ctls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT))
     3228    if (    (pVCpu->hm.s.vmx.u64ProcCtls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
     3229        && !(pVCpu->hm.s.vmx.u64ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT))
    32303230    {
    32313231        pVCpu->hm.s.u64HostTSCAux = ASMRdMsr(MSR_K8_TSC_AUX);
     
    32463246
    32473247    /* Possibly the last TSC value seen by the guest (too high) (only when we're in TSC offset mode). */
    3248     if (!(pVCpu->hm.s.vmx.proc_ctls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT))
     3248    if (!(pVCpu->hm.s.vmx.u64ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT))
    32493249    {
    32503250#ifndef VBOX_WITH_AUTO_MSR_LOAD_RESTORE
    32513251        /* Restore host's TSC_AUX. */
    3252         if (pVCpu->hm.s.vmx.proc_ctls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
     3252        if (pVCpu->hm.s.vmx.u64ProcCtls2 & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
    32533253            ASMWrMsr(MSR_K8_TSC_AUX, pVCpu->hm.s.u64HostTSCAux);
    32543254#endif
     
    41344134        LogFlow(("VMX_EXIT_IRQ_WINDOW %RGv pending=%d IF=%d\n", (RTGCPTR)pCtx->rip,
    41354135                 VMCPU_FF_ISPENDING(pVCpu, (VMCPU_FF_INTERRUPT_APIC|VMCPU_FF_INTERRUPT_PIC)), pCtx->eflags.Bits.u1IF));
    4136         pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT;
    4137         rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4136        pVCpu->hm.s.vmx.u64ProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT;
     4137        rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    41384138        AssertRC(rc2);
    41394139        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIrqWindow);
     
    43894389        {
    43904390            /* Disable DRx move intercepts. */
    4391             pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
    4392             rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4391            pVCpu->hm.s.vmx.u64ProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
     4392            rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    43934393            AssertRC(rc2);
    43944394
     
    47554755    case VMX_EXIT_MTF:                  /* 37 Exit due to Monitor Trap Flag. */
    47564756        LogFlow(("VMX_EXIT_MTF at %RGv\n", (RTGCPTR)pCtx->rip));
    4757         pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_TRAP_FLAG;
    4758         rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4757        pVCpu->hm.s.vmx.u64ProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_TRAP_FLAG;
     4758        rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    47594759        AssertRC(rc2);
    47604760        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitMtf);
     
    49774977    {
    49784978        CPUMR0LoadHostDebugState(pVM, pVCpu);
    4979         Assert(pVCpu->hm.s.vmx.proc_ctls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT);
     4979        Assert(pVCpu->hm.s.vmx.u64ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT);
    49804980    }
    49814981    else
     
    49904990
    49914991        /* Enable DRx move intercepts again. */
    4992         pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
    4993         int rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4992        pVCpu->hm.s.vmx.u64ProcCtls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
     4993        int rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.u64ProcCtls);
    49944994        AssertRC(rc);
    49954995
     
    49984998    }
    49994999    else
    5000         Assert(pVCpu->hm.s.vmx.proc_ctls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT);
     5000        Assert(pVCpu->hm.s.vmx.u64ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT);
    50015001
    50025002    /*
  • trunk/src/VBox/VMM/include/HMInternal.h

    r43747 r43798  
    542542
    543543        /** Current VMX_VMCS_CTRL_PROC_EXEC_CONTROLS. */
    544         uint64_t                    proc_ctls;
     544        uint64_t                    u64ProcCtls;
    545545        /** Current VMX_VMCS_CTRL_PROC_EXEC2_CONTROLS. */
    546         uint64_t                    proc_ctls2;
     546        uint64_t                    u64ProcCtls2;
    547547        /** Current VMX_VMCS_CTRL_EXIT_CONTROLS. */
    548548        uint64_t                    u64ExitCtls;
  • trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp

    r43511 r43798  
    401401    CHECK_MEMBER_ALIGNMENT(HMCPU, StatEntry, 8);
    402402    CHECK_MEMBER_ALIGNMENT(HMCPU, vmx.HCPhysVMCS, sizeof(RTHCPHYS));
    403     CHECK_MEMBER_ALIGNMENT(HMCPU, vmx.proc_ctls, 8);
     403    CHECK_MEMBER_ALIGNMENT(HMCPU, vmx.u64ProcCtls, 8);
    404404    CHECK_MEMBER_ALIGNMENT(HMCPU, Event.intInfo, 8);
    405405
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