Changeset 70606 in vbox for trunk/include
- Timestamp:
- Jan 16, 2018 7:05:36 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 120319
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo
-
old new 8 8 /branches/VBox-5.0:104445,104938,104943,104950,104952-104953,104987-104988,104990,106453 9 9 /branches/VBox-5.1:112367,115992,116543,116550,116568,116573 10 /branches/VBox-5.2:120083,120099,120213,120221,120239 10 11 /branches/andy/draganddrop:90781-91268 11 12 /branches/andy/guestctrl20:78916,78930
-
- Property svn:mergeinfo
-
trunk/include/VBox/settings.h
r69107 r70606 905 905 fAPIC, // requires settings version 1.16 (VirtualBox 5.1) 906 906 fX2APIC; // requires settings version 1.16 (VirtualBox 5.1) 907 bool fIBPBOnVMExit; //< added out of cycle, after 1.16 was out. 908 bool fIBPBOnVMEntry; //< added out of cycle, after 1.16 was out. 907 909 typedef enum LongModeType { LongMode_Enabled, LongMode_Disabled, LongMode_Legacy } LongModeType; 908 910 LongModeType enmLongMode; -
trunk/include/VBox/vmm/cpum.h
r70555 r70606 1026 1026 /** Supports CLFLUSHOPT. */ 1027 1027 uint32_t fClFlushOpt : 1; 1028 /** Supports IA32_PRED_CMD.IBPB. */ 1029 uint32_t fIbpb : 1; 1030 /** Supports IA32_SPEC_CTRL.IBRS. */ 1031 uint32_t fIbrs : 1; 1032 /** Supports IA32_SPEC_CTRL.STIBP. */ 1033 uint32_t fStibp : 1; 1034 /** Supports IA32_ARCH_CAP. */ 1035 uint32_t fArchCap : 1; 1028 1036 1029 1037 /** Supports AMD 3DNow instructions. */ … … 1059 1067 1060 1068 /** Alignment padding / reserved for future use. */ 1061 uint32_t fPadding : 23;1069 uint32_t fPadding : 19; 1062 1070 1063 1071 /** SVM: Supports Nested-paging. */ -
trunk/include/VBox/vmm/cpum.mac
r69764 r70606 147 147 %define XSTATE_SIZE 8192 148 148 149 ;; Note! Updates here must be reflected in CPUMInternal.mac too! 149 150 struc CPUMCTX 150 151 .eax resq 1 … … 250 251 .fXStateMask resq 1 251 252 .pXStateR0 RTR0PTR_RES 1 253 alignb 8 252 254 .pXStateR3 RTR3PTR_RES 1 255 alignb 8 253 256 .pXStateRC RTRCPTR_RES 1 254 257 .aoffXState resw 64 255 %if HC_ARCH_BITS == 64 256 .abPadding resb 4 257 %else 258 .abPadding resb 12 259 %endif 258 .fWorldSwitcher resd 1 259 alignb 8 260 260 .hwvirt.svm.uMsrHSavePa resq 1 261 261 .hwvirt.svm.GCPhysVmcb resq 1 … … 284 284 endstruc 285 285 286 %define CPUMCTX_WSF_IBPB_EXIT RT_BIT_32(0) 287 %define CPUMCTX_WSF_IBPB_ENTRY RT_BIT_32(1) 286 288 287 289 %define CPUMSELREG_FLAGS_VALID 0x0001 -
trunk/include/VBox/vmm/cpumctx.h
r69764 r70606 458 458 /** Pointer to the FPU/SSE/AVX/XXXX state ring-0 mapping. */ 459 459 R0PTRTYPE(PX86XSAVEAREA) pXStateR0; 460 #if HC_ARCH_BITS == 32 461 uint32_t uXStateR0Padding; 462 #endif 460 463 /** Pointer to the FPU/SSE/AVX/XXXX state ring-3 mapping. */ 461 464 R3PTRTYPE(PX86XSAVEAREA) pXStateR3; 465 #if HC_ARCH_BITS == 32 466 uint32_t uXStateR3Padding; 467 #endif 462 468 /** Pointer to the FPU/SSE/AVX/XXXX state raw-mode mapping. */ 463 469 RCPTRTYPE(PX86XSAVEAREA) pXStateRC; … … 465 471 uint16_t aoffXState[64]; 466 472 467 /** 724 - Size padding. */468 uint 8_t abPadding[HC_ARCH_BITS == 64 ? 4 : 12];473 /** 0x2d4 - World switcher flags, CPUMCTX_WSF_XXX. */ 474 uint32_t fWorldSwitcher; 469 475 470 476 /** 728 - Hardware virtualization state. */ … … 579 585 AssertCompileMemberOffset(CPUMCTX, fXStateMask, 568); 580 586 AssertCompileMemberOffset(CPUMCTX, pXStateR0, 576); 581 AssertCompileMemberOffset(CPUMCTX, pXStateR3, HC_ARCH_BITS == 64 ? 584 : 580);582 AssertCompileMemberOffset(CPUMCTX, pXStateRC, HC_ARCH_BITS == 64 ? 592 : 584);583 AssertCompileMemberOffset(CPUMCTX, aoffXState, HC_ARCH_BITS == 64 ? 596 : 588);587 AssertCompileMemberOffset(CPUMCTX, pXStateR3, 584); 588 AssertCompileMemberOffset(CPUMCTX, pXStateRC, 592); 589 AssertCompileMemberOffset(CPUMCTX, aoffXState, 596); 584 590 AssertCompileMemberOffset(CPUMCTX, hwvirt, 728); 585 591 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.uMsrHSavePa, 728); … … 737 743 #endif /* !VBOX_FOR_DTRACE_LIB */ 738 744 745 746 /** @name CPUMCTX_WSF_XXX 747 * @{ */ 748 /** Touch IA32_PRED_CMD.IBPB on VM exit. */ 749 #define CPUMCTX_WSF_IBPB_EXIT RT_BIT_32(0) 750 /** Touch IA32_PRED_CMD.IBPB on VM entry. */ 751 #define CPUMCTX_WSF_IBPB_ENTRY RT_BIT_32(1) 752 /** @} */ 753 754 739 755 /** 740 756 * Additional guest MSRs (i.e. not part of the CPU context structure). -
trunk/include/iprt/x86.h
r70265 r70606 598 598 /** ECX Bit 0 - PREFETCHWT1 - Supports the PREFETCHWT1 instruction. */ 599 599 #define X86_CPUID_STEXT_FEATURE_ECX_PREFETCHWT1 RT_BIT_32(0) 600 /** ECX Bit 2 - UIMP - Supports user mode instruction prevention. */ 601 #define X86_CPUID_STEXT_FEATURE_ECX_UMIP RT_BIT_32(2) 602 /** ECX Bit 3 - PKU - Supports protection keys for user-mode pages. */ 603 #define X86_CPUID_STEXT_FEATURE_ECX_PKU RT_BIT_32(3) 604 /** ECX Bit 4 - OSPKE - Protection keys for user mode pages enabled. */ 605 #define X86_CPUID_STEXT_FEATURE_ECX_OSPKE RT_BIT_32(4) 606 /** ECX Bits 17-21 - MAWAU - Value used by BNDLDX and BNDSTX. */ 607 #define X86_CPUID_STEXT_FEATURE_ECX_MAWAU UINT32_C(0x003e0000) 608 /** ECX Bit 22 - RDPID - Support pread process ID. */ 609 #define X86_CPUID_STEXT_FEATURE_ECX_RDPID RT_BIT_32(2) 610 /** ECX Bit 30 - SGX_LC - Supports SGX launch configuration. */ 611 #define X86_CPUID_STEXT_FEATURE_ECX_SGX_LC RT_BIT_32(30) 612 613 /** EDX Bit 26 - IBRS & IBPB - Supports the IBRS flag in IA32_SPEC_CTRL and 614 * IBPB command in IA32_PRED_CMD. */ 615 #define X86_CPUID_STEXT_FEATURE_EDX_IBRS_IBPB RT_BIT_32(26) 616 /** EDX Bit 27 - IBRS & IBPB - Supports the STIBP flag in IA32_SPEC_CTRL. */ 617 #define X86_CPUID_STEXT_FEATURE_EDX_STIBP RT_BIT_32(27) 618 619 /** EDX Bit 29 - ARCHCAP - Supports the IA32_ARCH_CAP MSR. */ 620 #define X86_CPUID_STEXT_FEATURE_EDX_ARCHCAP RT_BIT_32(29) 621 600 622 /** @} */ 601 623 … … 742 764 743 765 766 /** @name CPUID AMD extended feature extensions ID (EBX). 767 * CPUID query with EAX=0x80000008. 768 * @{ 769 */ 770 /** Bit 0 - CLZERO - Clear zero instruction. */ 771 #define X86_CPUID_AMD_EFEID_EBX_CLZERO RT_BIT_32(0) 772 /** Bit 1 - IRPerf - Instructions retired count support. */ 773 #define X86_CPUID_AMD_EFEID_EBX_IRPERF RT_BIT_32(1) 774 /** Bit 2 - XSaveErPtr - Always XSAVE* and XRSTR* error pointers. */ 775 #define X86_CPUID_AMD_EFEID_EBX_XSAVE_ER_PTR RT_BIT_32(2) 776 /* AMD pipeline length: 9 feature bits ;-) */ 777 /** Bit 12 - IBPB - Supports the IBPB command in IA32_PRED_CMD. */ 778 #define X86_CPUID_AMD_EFEID_EBX_IBPB RT_BIT_32(12) 779 /** @} */ 780 781 744 782 /** @name CPUID AMD SVM Feature information. 745 783 * CPUID query with EAX=0x8000000a. … … 1114 1152 #define MSR_IA32_TSC_ADJUST 0x3B 1115 1153 1154 /** Spectre control register. 1155 * Logical processor scope. Reset value 0, unaffected by SIPI & INIT. */ 1156 #define MSR_IA32_SPEC_CTRL 0x48 1157 /** IBRS - Indirect branch restricted speculation. */ 1158 #define MSR_IA32_SPEC_CTRL_F_IBRS RT_BIT_32(0) 1159 /** STIBP - Single thread indirect branch predictors. */ 1160 #define MSR_IA32_SPEC_CTRL_F_STIBP RT_BIT_32(1) 1161 1162 /** Prediction command register. 1163 * Write only, logical processor scope, no state since write only. */ 1164 #define MSR_IA32_PRED_CMD 0x49 1165 /** IBPB - Indirect branch prediction barrie when written as 1. */ 1166 #define MSR_IA32_PRED_CMD_F_IBPB RT_BIT_32(0) 1167 1116 1168 /** BIOS update trigger (microcode update). */ 1117 1169 #define MSR_IA32_BIOS_UPDT_TRIG 0x79 … … 1148 1200 /** MTRR Capabilities. */ 1149 1201 #define MSR_IA32_MTRR_CAP 0xFE 1202 1203 /** Architecture capabilities (bugfixes). 1204 * @note May move */ 1205 #define MSR_IA32_ARCH_CAP UINT32_C(0x10a) 1206 /** CPU is no subject to spectre problems. */ 1207 #define MSR_IA32_ARCH_CAP_F_SPECTRE_FIX RT_BIT_32(0) 1208 /** CPU has better IBRS and you can leave it on all the time. */ 1209 #define MSR_IA32_ARCH_CAP_F_BETTER_IBRS RT_BIT_32(1) 1150 1210 1151 1211 /** Cache control/info. */ -
trunk/include/iprt/x86.mac
r70459 r70606 177 177 %define X86_CPUID_STEXT_FEATURE_EBX_SHA RT_BIT_32(29) 178 178 %define X86_CPUID_STEXT_FEATURE_ECX_PREFETCHWT1 RT_BIT_32(0) 179 %define X86_CPUID_STEXT_FEATURE_EDX_IBRS_IBPB RT_BIT_32(26) 180 %define X86_CPUID_STEXT_FEATURE_EDX_STIBP RT_BIT_32(27) 181 %define X86_CPUID_STEXT_FEATURE_EDX_ARCHCAP RT_BIT_32(29) 179 182 %define X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF RT_BIT_32(0) 180 183 %define X86_CPUID_EXT_FEATURE_EDX_SYSCALL RT_BIT_32(11) … … 380 383 %define MSR_IA32_FEATURE_CONTROL_VMXON RT_BIT_32(2) 381 384 %define MSR_IA32_TSC_ADJUST 0x3B 385 %define MSR_IA32_SPEC_CTRL 0x48 386 %define MSR_IA32_SPEC_CTRL_F_IBRS RT_BIT_32(0) 387 %define MSR_IA32_SPEC_CTRL_F_STIBP RT_BIT_32(1) 388 %define MSR_IA32_PRED_CMD 0x49 389 %define MSR_IA32_PRED_CMD_F_IBPB RT_BIT_32(0) 382 390 %define MSR_IA32_BIOS_UPDT_TRIG 0x79 383 391 %define MSR_IA32_BIOS_SIGN_ID 0x8B … … 393 401 %define MSR_IA32_APERF 0xE8 394 402 %define MSR_IA32_MTRR_CAP 0xFE 403 %define MSR_IA32_ARCH_CAP 0x10a 404 %define MSR_IA32_ARCH_CAP_F_SPECTRE_FIX RT_BIT_32(0) 405 %define MSR_IA32_ARCH_CAP_F_BETTER_IBRS RT_BIT_32(1) 395 406 %define MSR_BBL_CR_CTL3 0x11e 396 407 %ifndef MSR_IA32_SYSENTER_CS
Note:
See TracChangeset
for help on using the changeset viewer.