VirtualBox

Changeset 21327 in vbox


Ignore:
Timestamp:
Jul 7, 2009 12:48:59 PM (15 years ago)
Author:
vboxsync
Message:

cpumR3Load: ignore some advanced capability bits, that we don't expose to the guest

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/x86.h

    r21320 r21327  
    355355/** ECX Bit 0 - SSE3 - Supports SSE3 or not. */
    356356#define X86_CPUID_FEATURE_ECX_SSE3      RT_BIT(0)
     357/** ECX Bit 2 - DTES64 - DS Area 64-bit Layout. */
     358#define X86_CPUID_FEATURE_ECX_DTES64    RT_BIT(2)
    357359/** ECX Bit 3 - MONITOR - Supports MONITOR/MWAIT. */
    358360#define X86_CPUID_FEATURE_ECX_MONITOR   RT_BIT(3)
     
    361363/** ECX Bit 5 - VMX - Virtual Machine Technology. */
    362364#define X86_CPUID_FEATURE_ECX_VMX       RT_BIT(5)
     365/** ECX Bit 6 - SMX - Safer Mode Extensions. */
     366#define X86_CPUID_FEATURE_ECX_SMX       RT_BIT(6)
    363367/** ECX Bit 7 - EST - Enh. SpeedStep Tech. */
    364368#define X86_CPUID_FEATURE_ECX_EST       RT_BIT(7)
     
    373377/** ECX Bit 14 - xTPR Update Control. Processor supports changing IA32_MISC_ENABLES[bit 23]. */
    374378#define X86_CPUID_FEATURE_ECX_TPRUPDATE RT_BIT(14)
     379/** ECX Bit 15 - PDCM - Perf/Debug Capability MSR. */
     380#define X86_CPUID_FEATURE_ECX_PDCM      RT_BIT(15)
     381/** ECX Bit 18 - DCA - Direct Cache Access. */
     382#define X86_CPUID_FEATURE_ECX_DCA       RT_BIT(18)
     383/** ECX Bit 19 - SSE4_1 - Supports SSE4_1 or not. */
     384#define X86_CPUID_FEATURE_ECX_SSE4_1    RT_BIT(19)
     385/** ECX Bit 20 - SSE4_2 - Supports SSE4_2 or not. */
     386#define X86_CPUID_FEATURE_ECX_SSE4_2    RT_BIT(20)
    375387/** ECX Bit 21 - x2APIC support. */
    376388#define X86_CPUID_FEATURE_ECX_X2APIC    RT_BIT(21)
     389/** ECX Bit 22 - MOVBE instruction. */
     390#define X86_CPUID_FEATURE_ECX_MOVBE     RT_BIT(22)
    377391/** ECX Bit 23 - POPCOUNT instruction. */
    378392#define X86_CPUID_FEATURE_ECX_POPCOUNT  RT_BIT(23)
     393/** ECX Bit 26 - XSAVE instruction. */
     394#define X86_CPUID_FEATURE_ECX_XSAVE     RT_BIT(26)
     395/** ECX Bit 27 - OSXSAVE instruction. */
     396#define X86_CPUID_FEATURE_ECX_OSXSAVE   RT_BIT(27)
    379397
    380398
  • trunk/src/VBox/VMM/CPUM.cpp

    r21320 r21327  
    11051105        au32CpuIdSaved[5] &= ~0x00ff0000;
    11061106
     1107        /* Ignore some advanced capability bits, that we don't expose to the guest. */
     1108        au32CpuId[6]      &= ~(   X86_CPUID_FEATURE_ECX_DTES64
     1109                               |  X86_CPUID_FEATURE_ECX_VMX
     1110                               |  X86_CPUID_FEATURE_ECX_SMX
     1111                               |  X86_CPUID_FEATURE_ECX_EST
     1112                               |  X86_CPUID_FEATURE_ECX_TM2
     1113                               |  X86_CPUID_FEATURE_ECX_CNTXID
     1114                               |  X86_CPUID_FEATURE_ECX_TPRUPDATE
     1115                               |  X86_CPUID_FEATURE_ECX_PDCM
     1116                               |  X86_CPUID_FEATURE_ECX_DCA
     1117                               |  X86_CPUID_FEATURE_ECX_X2APIC
     1118                               |  X86_CPUID_FEATURE_ECX_POPCOUNT
     1119                               |  X86_CPUID_FEATURE_ECX_MOVBE
     1120                               |  X86_CPUID_FEATURE_ECX_XSAVE
     1121                               |  X86_CPUID_FEATURE_ECX_OSXSAVE
     1122                              );
     1123        au32CpuIdSaved[6] &= ~(   X86_CPUID_FEATURE_ECX_DTES64
     1124                               |  X86_CPUID_FEATURE_ECX_VMX
     1125                               |  X86_CPUID_FEATURE_ECX_SMX
     1126                               |  X86_CPUID_FEATURE_ECX_EST
     1127                               |  X86_CPUID_FEATURE_ECX_TM2
     1128                               |  X86_CPUID_FEATURE_ECX_CNTXID
     1129                               |  X86_CPUID_FEATURE_ECX_TPRUPDATE
     1130                               |  X86_CPUID_FEATURE_ECX_PDCM
     1131                               |  X86_CPUID_FEATURE_ECX_DCA
     1132                               |  X86_CPUID_FEATURE_ECX_X2APIC
     1133                               |  X86_CPUID_FEATURE_ECX_POPCOUNT
     1134                               |  X86_CPUID_FEATURE_ECX_MOVBE
     1135                               |  X86_CPUID_FEATURE_ECX_XSAVE
     1136                               |  X86_CPUID_FEATURE_ECX_OSXSAVE
     1137                              );
     1138
     1139        /* Make sure we don't forget to update the masks when enabling
     1140         * features in the future.
     1141         */
     1142        AssertRelease(!(pVM->cpum.s.aGuestCpuIdStd[1].ecx &
     1143                              (   X86_CPUID_FEATURE_ECX_DTES64
     1144                               |  X86_CPUID_FEATURE_ECX_VMX
     1145                               |  X86_CPUID_FEATURE_ECX_SMX
     1146                               |  X86_CPUID_FEATURE_ECX_EST
     1147                               |  X86_CPUID_FEATURE_ECX_TM2
     1148                               |  X86_CPUID_FEATURE_ECX_CNTXID
     1149                               |  X86_CPUID_FEATURE_ECX_TPRUPDATE
     1150                               |  X86_CPUID_FEATURE_ECX_PDCM
     1151                               |  X86_CPUID_FEATURE_ECX_DCA
     1152                               |  X86_CPUID_FEATURE_ECX_X2APIC
     1153                               |  X86_CPUID_FEATURE_ECX_POPCOUNT
     1154                               |  X86_CPUID_FEATURE_ECX_MOVBE
     1155                               |  X86_CPUID_FEATURE_ECX_XSAVE
     1156                               |  X86_CPUID_FEATURE_ECX_OSXSAVE
     1157                              )));
    11071158        /* do the compare */
    11081159        if (memcmp(au32CpuIdSaved, au32CpuId, sizeof(au32CpuIdSaved)))
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