VirtualBox

Changeset 42024 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jul 5, 2012 12:10:53 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
78914
Message:

VMM: RDTSCP support on Intel. Segregated some common CPU features from the AMD superset into Extended features as they're now available on Intel too.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r41965 r42024  
    684684     */
    685685    /** @cfgm{CPUM/HostCPUID/[000000xx|800000xx|c000000x]/[eax|ebx|ecx|edx],32-bit}
    686      * Overrides the host CPUID leaf values used for calculating the guest CPUID
    687      * leaves.  This can be used to preserve the CPUID values when moving a VM
    688      * to a different machine.  Another use is restricting (or extending) the
    689      * feature set exposed to the guest. */
     686     * Loads the host CPUID leaves to the guest copy. Overrides, if any, the host
     687     * CPUID leaf values used for calculating the guest CPUID leaves.  This can be
     688     * used to preserve the CPUID values when moving a VM to a different machine.
     689     * Another use is restricting (or extending) the feature set exposed to the
     690     * guest. */
    690691    PCFGMNODE pHostOverrideCfg = CFGMR3GetChild(pCpumCfg, "HostCPUID");
    691692    rc = cpumR3CpuIdInitHostSet(UINT32_C(0x00000000), &pCPUM->aGuestCpuIdStd[0],     RT_ELEMENTS(pCPUM->aGuestCpuIdStd),     pHostOverrideCfg);
     
    825826                                  //| X86_CPUID_AMD_FEATURE_EDX_APIC   - set by the APIC device if present.
    826827                                  /* Note! we don't report sysenter/sysexit support due to our inability to keep the IOPL part of eflags in sync while in ring 1 (see @bugref{1757}) */
    827                                   //| X86_CPUID_AMD_FEATURE_EDX_SEP
     828                                  //| X86_CPUID_EXT_FEATURE_EDX_SEP
    828829                                  | X86_CPUID_AMD_FEATURE_EDX_MTRR
    829830                                  | X86_CPUID_AMD_FEATURE_EDX_PGE
     
    832833                                  | X86_CPUID_AMD_FEATURE_EDX_PAT
    833834                                  | X86_CPUID_AMD_FEATURE_EDX_PSE36
    834                                   //| X86_CPUID_AMD_FEATURE_EDX_NX     - not virtualized, requires PAE.
     835                                  //| X86_CPUID_EXT_FEATURE_EDX_NX     - not virtualized, requires PAE.
    835836                                  //| X86_CPUID_AMD_FEATURE_EDX_AXMMX
    836837                                  | X86_CPUID_AMD_FEATURE_EDX_MMX
    837838                                  | X86_CPUID_AMD_FEATURE_EDX_FXSR
    838839                                  | X86_CPUID_AMD_FEATURE_EDX_FFXSR
    839                                   //| X86_CPUID_AMD_FEATURE_EDX_PAGE1GB
    840                                   //| X86_CPUID_AMD_FEATURE_EDX_RDTSCP - AMD only; turned on when necessary
    841                                   //| X86_CPUID_AMD_FEATURE_EDX_LONG_MODE - turned on when necessary
     840                                  //| X86_CPUID_EXT_FEATURE_EDX_PAGE1GB
     841                                  | X86_CPUID_EXT_FEATURE_EDX_RDTSCP
     842                                  //| X86_CPUID_EXT_FEATURE_EDX_LONG_MODE - turned on when necessary
    842843                                  | X86_CPUID_AMD_FEATURE_EDX_3DNOW_EX
    843844                                  | X86_CPUID_AMD_FEATURE_EDX_3DNOW
    844845                                  | 0;
    845846    pCPUM->aGuestCpuIdExt[1].ecx &= 0
    846                                   //| X86_CPUID_AMD_FEATURE_ECX_LAHF_SAHF
     847                                  //| X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF
    847848                                  //| X86_CPUID_AMD_FEATURE_ECX_CMPL
    848849                                  //| X86_CPUID_AMD_FEATURE_ECX_SVM    - not virtualized.
     
    866867        PORTABLE_DISABLE_FEATURE_BIT(1, Ext[1].edx, 3DNOW_EX,   X86_CPUID_AMD_FEATURE_EDX_3DNOW_EX);
    867868        PORTABLE_DISABLE_FEATURE_BIT(1, Ext[1].edx, FFXSR,      X86_CPUID_AMD_FEATURE_EDX_FFXSR);
    868         PORTABLE_DISABLE_FEATURE_BIT(1, Ext[1].edx, RDTSCP,     X86_CPUID_AMD_FEATURE_EDX_RDTSCP);
    869         PORTABLE_DISABLE_FEATURE_BIT(2, Ext[1].ecx, LAHF_SAHF,  X86_CPUID_AMD_FEATURE_ECX_LAHF_SAHF);
     869        PORTABLE_DISABLE_FEATURE_BIT(1, Ext[1].edx, RDTSCP,     X86_CPUID_EXT_FEATURE_EDX_RDTSCP);
     870        PORTABLE_DISABLE_FEATURE_BIT(2, Ext[1].ecx, LAHF_SAHF,  X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF);
    870871        PORTABLE_DISABLE_FEATURE_BIT(3, Ext[1].ecx, CMOV,       X86_CPUID_AMD_FEATURE_EDX_CMOV);
    871872
     
    886887                                                 )));
    887888        Assert(!(pCPUM->aGuestCpuIdExt[1].edx & (  RT_BIT(10)
    888                                                  | X86_CPUID_AMD_FEATURE_EDX_SEP
     889                                                 | X86_CPUID_EXT_FEATURE_EDX_SYSCALL
    889890                                                 | RT_BIT(18)
    890891                                                 | RT_BIT(19)
    891892                                                 | RT_BIT(21)
    892893                                                 | X86_CPUID_AMD_FEATURE_EDX_AXMMX
    893                                                  | X86_CPUID_AMD_FEATURE_EDX_PAGE1GB
     894                                                 | X86_CPUID_EXT_FEATURE_EDX_PAGE1GB
    894895                                                 | RT_BIT(28)
    895896                                                 )));
     
    929930        pCPUM->aGuestCpuIdExt[0].ebx = pCPUM->aGuestCpuIdExt[0].ecx = pCPUM->aGuestCpuIdExt[0].edx = 0;
    930931
    931         /* 0x800000001: AMD only; shared feature bits are set dynamically. */
     932        /* 0x800000001: shared feature bits are set dynamically. */
    932933        memset(&pCPUM->aGuestCpuIdExt[1], 0, sizeof(pCPUM->aGuestCpuIdExt[1]));
    933934
     
    12201221    rc = CFGMR3QueryBoolDef(pCpumCfg, "EnableNX", &fEnable, false);                 AssertRCReturn(rc, rc);
    12211222    if (fEnable)
    1222         CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NXE);
     1223        CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NX);
    12231224
    12241225    /*
     
    19271928
    19281929            /* CPUID(0x80000001).ecx */
    1929             CPUID_RAW_FEATURE_IGN(Ext, ecx, X86_CPUID_AMD_FEATURE_ECX_LAHF_SAHF);
     1930            CPUID_RAW_FEATURE_IGN(Ext, ecx, X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF);
    19301931            CPUID_RAW_FEATURE_IGN(Ext, ecx, X86_CPUID_AMD_FEATURE_ECX_CMPL);
    19311932            CPUID_RAW_FEATURE_IGN(Ext, ecx, X86_CPUID_AMD_FEATURE_ECX_SVM);
     
    19721973            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_APIC);
    19731974            CPUID_RAW_FEATURE_IGN(Ext, edx, RT_BIT_32(10) /*reserved*/);
    1974             CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_SEP);
     1975            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_EXT_FEATURE_EDX_SEP);
    19751976            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_MTRR);
    19761977            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_PGE);
     
    19811982            CPUID_RAW_FEATURE_IGN(Ext, edx, RT_BIT_32(18) /*reserved*/);
    19821983            CPUID_RAW_FEATURE_IGN(Ext, edx, RT_BIT_32(19) /*reserved*/);
    1983             CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_NX);
     1984            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_EXT_FEATURE_EDX_NX);
    19841985            CPUID_RAW_FEATURE_IGN(Ext, edx, RT_BIT_32(21) /*reserved*/);
    19851986            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_AXMMX);
     
    19871988            CPUID_RAW_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_FXSR);
    19881989            CPUID_RAW_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_FFXSR);
    1989             CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_PAGE1GB);
    1990             CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_RDTSCP);
     1990            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_EXT_FEATURE_EDX_PAGE1GB);
     1991            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_EXT_FEATURE_EDX_RDTSCP);
    19911992            CPUID_RAW_FEATURE_IGN(Ext, edx, RT_BIT_32(28) /*reserved*/);
    1992             CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_LONG_MODE);
     1993            CPUID_RAW_FEATURE_IGN(Ext, edx, X86_CPUID_EXT_FEATURE_EDX_LONG_MODE);
    19931994            CPUID_RAW_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_3DNOW_EX);
    19941995            CPUID_RAW_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_3DNOW);
     
    20892090
    20902091        /* CPUID(0x80000001).ecx */
    2091         CPUID_GST_FEATURE_WRN(Ext, ecx, X86_CPUID_AMD_FEATURE_ECX_LAHF_SAHF);   // -> EMU
     2092        CPUID_GST_FEATURE_WRN(Ext, ecx, X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF);   // -> EMU
    20922093        CPUID_GST_AMD_FEATURE_WRN(Ext, ecx, X86_CPUID_AMD_FEATURE_ECX_CMPL);    // -> EMU
    20932094        CPUID_GST_AMD_FEATURE_RET(Ext, ecx, X86_CPUID_AMD_FEATURE_ECX_SVM);     // -> EMU
     
    21342135        CPUID_GST_FEATURE2_IGN(        edx, X86_CPUID_AMD_FEATURE_EDX_APIC,  X86_CPUID_FEATURE_EDX_APIC);
    21352136        CPUID_GST_AMD_FEATURE_WRN(Ext, edx, RT_BIT_32(10) /*reserved*/);
    2136         CPUID_GST_FEATURE_IGN(    Ext, edx, X86_CPUID_AMD_FEATURE_EDX_SEP);                                  // Intel: long mode only.
     2137        CPUID_GST_FEATURE_IGN(    Ext, edx, X86_CPUID_EXT_FEATURE_EDX_SYSCALL);                              // On Intel: long mode only.
    21372138        CPUID_GST_FEATURE2_IGN(        edx, X86_CPUID_AMD_FEATURE_EDX_MTRR,  X86_CPUID_FEATURE_EDX_MTRR);
    21382139        CPUID_GST_FEATURE2_IGN(        edx, X86_CPUID_AMD_FEATURE_EDX_PGE,   X86_CPUID_FEATURE_EDX_PGE);
     
    21432144        CPUID_GST_AMD_FEATURE_WRN(Ext, edx, RT_BIT_32(18) /*reserved*/);
    21442145        CPUID_GST_AMD_FEATURE_WRN(Ext, edx, RT_BIT_32(19) /*reserved*/);
    2145         CPUID_GST_FEATURE_RET(    Ext, edx, X86_CPUID_AMD_FEATURE_EDX_NX);
     2146        CPUID_GST_FEATURE_RET(    Ext, edx, X86_CPUID_EXT_FEATURE_EDX_NX);
    21462147        CPUID_GST_FEATURE_WRN(    Ext, edx, RT_BIT_32(21) /*reserved*/);
    21472148        CPUID_GST_FEATURE_RET(    Ext, edx, X86_CPUID_AMD_FEATURE_EDX_AXMMX);
     
    21492150        CPUID_GST_FEATURE2_RET(        edx, X86_CPUID_AMD_FEATURE_EDX_FXSR,  X86_CPUID_FEATURE_EDX_FXSR);    // -> EMU
    21502151        CPUID_GST_AMD_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_FFXSR);
    2151         CPUID_GST_AMD_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_PAGE1GB);
    2152         CPUID_GST_AMD_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_RDTSCP);
     2152        CPUID_GST_AMD_FEATURE_RET(Ext, edx, X86_CPUID_EXT_FEATURE_EDX_PAGE1GB);
     2153        CPUID_GST_AMD_FEATURE_RET(Ext, edx, X86_CPUID_EXT_FEATURE_EDX_RDTSCP);
    21532154        CPUID_GST_FEATURE_IGN(    Ext, edx, RT_BIT_32(28) /*reserved*/);
    2154         CPUID_GST_FEATURE_RET(    Ext, edx, X86_CPUID_AMD_FEATURE_EDX_LONG_MODE);
     2155        CPUID_GST_FEATURE_RET(    Ext, edx, X86_CPUID_EXT_FEATURE_EDX_LONG_MODE);
    21552156        CPUID_GST_AMD_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_3DNOW_EX);
    21562157        CPUID_GST_AMD_FEATURE_RET(Ext, edx, X86_CPUID_AMD_FEATURE_EDX_3DNOW);
     
    34363437            pHlp->pfnPrintf(pHlp, "MMX - Intel MMX Technology             = %d (%d)\n",  !!(uEdxGst & RT_BIT(23)),  !!(uEdxHst & RT_BIT(23)));
    34373438            pHlp->pfnPrintf(pHlp, "FXSR - FXSAVE and FXRSTOR Instructions = %d (%d)\n",  !!(uEdxGst & RT_BIT(24)),  !!(uEdxHst & RT_BIT(24)));
    3438             pHlp->pfnPrintf(pHlp, "25 - AMD fast FXSAVE and FXRSTOR Instr.= %d (%d)\n",  !!(uEdxGst & RT_BIT(25)),  !!(uEdxHst & RT_BIT(25)));
    3439             pHlp->pfnPrintf(pHlp, "26 - 1 GB large page support           = %d (%d)\n",  !!(uEdxGst & RT_BIT(26)),  !!(uEdxHst & RT_BIT(26)));
    3440             pHlp->pfnPrintf(pHlp, "27 - RDTSCP instruction                = %d (%d)\n",  !!(uEdxGst & RT_BIT(27)),  !!(uEdxHst & RT_BIT(27)));
     3439            pHlp->pfnPrintf(pHlp, "AMD fast FXSAVE and FXRSTOR Instr.     = %d (%d)\n",  !!(uEdxGst & RT_BIT(25)),  !!(uEdxHst & RT_BIT(25)));
     3440            pHlp->pfnPrintf(pHlp, "1 GB large page support                = %d (%d)\n",  !!(uEdxGst & RT_BIT(26)),  !!(uEdxHst & RT_BIT(26)));
     3441            pHlp->pfnPrintf(pHlp, "RDTSCP instruction                     = %d (%d)\n",  !!(uEdxGst & RT_BIT(27)),  !!(uEdxHst & RT_BIT(27)));
    34413442            pHlp->pfnPrintf(pHlp, "28 - Reserved                          = %d (%d)\n",  !!(uEdxGst & RT_BIT(28)),  !!(uEdxHst & RT_BIT(28)));
    3442             pHlp->pfnPrintf(pHlp, "29 - AMD Long Mode                     = %d (%d)\n",  !!(uEdxGst & RT_BIT(29)),  !!(uEdxHst & RT_BIT(29)));
    3443             pHlp->pfnPrintf(pHlp, "30 - AMD Extensions to 3DNow           = %d (%d)\n",  !!(uEdxGst & RT_BIT(30)),  !!(uEdxHst & RT_BIT(30)));
    3444             pHlp->pfnPrintf(pHlp, "31 - AMD 3DNow                         = %d (%d)\n",  !!(uEdxGst & RT_BIT(31)),  !!(uEdxHst & RT_BIT(31)));
     3443            pHlp->pfnPrintf(pHlp, "AMD Long Mode / Intel 64 ISA           = %d (%d)\n",  !!(uEdxGst & RT_BIT(29)),  !!(uEdxHst & RT_BIT(29)));
     3444            pHlp->pfnPrintf(pHlp, "AMD Extensions to 3DNow!               = %d (%d)\n",  !!(uEdxGst & RT_BIT(30)),  !!(uEdxHst & RT_BIT(30)));
     3445            pHlp->pfnPrintf(pHlp, "AMD 3DNow!                             = %d (%d)\n",  !!(uEdxGst & RT_BIT(31)),  !!(uEdxHst & RT_BIT(31)));
    34453446
    34463447            uint32_t uEcxGst = Guest.ecx;
  • trunk/src/VBox/VMM/VMMR3/HWACCM.cpp

    r41965 r42024  
    110110    EXIT_REASON(VMX_EXIT_EPT_MISCONFIG      , 49, "EPT misconfiguration. An attempt to access memory with a guest-physical address encountered a misconfigured EPT paging-structure entry."),
    111111    EXIT_REASON(VMX_EXIT_INVEPT             , 50, "INVEPT. Guest software attempted to execute INVEPT."),
    112     EXIT_REASON_NIL(),
     112    EXIT_REASON(VMX_EXIT_RDTSCP             , 51, "Guest software attempted to execute RDTSCP."),
    113113    EXIT_REASON(VMX_EXIT_PREEMPTION_TIMER   , 52, "VMX-preemption timer expired. The preemption timer counted down to zero."),
    114114    EXIT_REASON(VMX_EXIT_INVVPID            , 53, "INVVPID. Guest software attempted to execute INVVPID."),
     
    514514        HWACCM_REG_COUNTER(&pVCpu->hwaccm.s.StatExitCpuid,              "/HWACCM/CPU%d/Exit/Instr/Cpuid");
    515515        HWACCM_REG_COUNTER(&pVCpu->hwaccm.s.StatExitRdtsc,              "/HWACCM/CPU%d/Exit/Instr/Rdtsc");
     516        HWACCM_REG_COUNTER(&pVCpu->hwaccm.s.StatExitRdtscp,             "/HWACCM/CPU%d/Exit/Instr/Rdtscp");
    516517        HWACCM_REG_COUNTER(&pVCpu->hwaccm.s.StatExitRdpmc,              "/HWACCM/CPU%d/Exit/Instr/Rdpmc");
    517518        HWACCM_REG_COUNTER(&pVCpu->hwaccm.s.StatExitRdmsr,              "/HWACCM/CPU%d/Exit/Instr/Rdmsr");
     
    928929                if (val & VMX_VMCS_CTRL_PROC_EXEC2_DESCRIPTOR_INSTR_EXIT)
    929930                    LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_DESCRIPTOR_INSTR_EXIT\n"));
    930                 if (val & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP_EXIT)
    931                     LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP_EXIT\n"));
     931                if (val & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
     932                    LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP\n"));
    932933                if (val & VMX_VMCS_CTRL_PROC_EXEC2_X2APIC)
    933934                    LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_X2APIC\n"));
     
    946947                if (val & VMX_VMCS_CTRL_PROC_EXEC2_DESCRIPTOR_INSTR_EXIT)
    947948                    LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_DESCRIPTOR_INSTR_EXIT *must* be set\n"));
    948                 if (val & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP_EXIT)
    949                     LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP_EXIT *must* be set\n"));
     949                if (val & VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP)
     950                    LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_RDTSCP *must* be set\n"));
    950951                if (val & VMX_VMCS_CTRL_PROC_EXEC2_X2APIC)
    951952                    LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC2_X2APIC *must* be set\n"));
     
    10901091                LogRel(("HWACCM:    MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT %x\n", MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(pVM->hwaccm.s.vmx.msr.vmx_misc)));
    10911092            else
    1092                 LogRel(("HWACCM:    MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT %x - erratum detected, using %x instead\n", MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(pVM->hwaccm.s.vmx.msr.vmx_misc), pVM->hwaccm.s.vmx.cPreemptTimerShift));
     1093            {
     1094                LogRel(("HWACCM:    MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT %x - erratum detected, using %x instead\n",
     1095                        MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(pVM->hwaccm.s.vmx.msr.vmx_misc), pVM->hwaccm.s.vmx.cPreemptTimerShift));
     1096            }
    10931097            LogRel(("HWACCM:    MSR_IA32_VMX_MISC_ACTIVITY_STATES %x\n", MSR_IA32_VMX_MISC_ACTIVITY_STATES(pVM->hwaccm.s.vmx.msr.vmx_misc)));
    10941098            LogRel(("HWACCM:    MSR_IA32_VMX_MISC_CR3_TARGET      %x\n", MSR_IA32_VMX_MISC_CR3_TARGET(pVM->hwaccm.s.vmx.msr.vmx_misc)));
     
    11881192                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_SYSCALL);            /* 64 bits only on Intel CPUs */
    11891193                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_LAHF);
    1190                     CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NXE);
     1194                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NX);
    11911195                }
    11921196                else
     
    11951199                if (    CPUMGetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_PAE)
    11961200                    &&  (pVM->hwaccm.s.vmx.hostEFER & MSR_K6_EFER_NXE))
    1197                     CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NXE);
     1201                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NX);
    11981202
    11991203                LogRel((pVM->hwaccm.s.fAllow64BitGuests
     
    12481252                        ASMCpuId(0x80000000, &u32Eax, &u32Dummy, &u32Dummy, &u32Dummy);
    12491253                        if (    u32Eax < 0x80000001
    1250                             ||  !(ASMCpuId_EDX(0x80000001) & X86_CPUID_AMD_FEATURE_EDX_LONG_MODE))
     1254                            ||  !(ASMCpuId_EDX(0x80000001) & X86_CPUID_EXT_FEATURE_EDX_LONG_MODE))
    12511255                        {
    12521256                            pVM->hwaccm.s.fTRPPatchingAllowed = false;
     
    13771381                CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_SEP);
    13781382                CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_SYSCALL);
    1379                 CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_RDTSCP);
    13801383#ifdef VBOX_ENABLE_64_BITS_GUESTS
    13811384                if (pVM->hwaccm.s.fAllow64BitGuests)
     
    13831386                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_PAE);
    13841387                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_LONG_MODE);
    1385                     CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NXE);
     1388                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NX);
    13861389                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_LAHF);
    13871390                }
     
    13891392                /* Turn on NXE if PAE has been enabled. */
    13901393                if (CPUMGetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_PAE))
    1391                     CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NXE);
     1394                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_NX);
    13921395#endif
    13931396
  • trunk/src/VBox/VMM/VMMR3/VMMSwitcher.cpp

    r41976 r42024  
    536536            {
    537537                uint32_t u32OrMask = MSR_K6_EFER_LME | MSR_K6_EFER_SCE;
    538                 /** note: we don't care if cpuid 0x8000001 isn't supported as that implies long mode isn't either, so this switcher would never be used. */
    539                 if (!!(ASMCpuId_EDX(0x80000001) & X86_CPUID_AMD_FEATURE_EDX_NX))
     538                /*
     539                 * We don't care if cpuid 0x8000001 isn't supported as that implies
     540                 * long mode isn't supported either, so this switched would never be used.
     541                 */
     542                if (!!(ASMCpuId_EDX(0x80000001) & X86_CPUID_EXT_FEATURE_EDX_NX))
    540543                    u32OrMask |= MSR_K6_EFER_NXE;
    541544
Note: See TracChangeset for help on using the changeset viewer.

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