- Timestamp:
- Dec 21, 2017 5:54:03 AM (7 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r70253 r70254 678 678 679 679 /** 680 * Returns whether VMCB Clean Bits feature is supported. 681 * 680 * Returns whether the VMCB Clean Bits feature is supported. 681 * 682 * @return @c true if supported, @c false otherwise. 682 683 * @param pVCpu The cross context virtual CPU structure. 683 684 * @param pCtx Pointer to the guest-CPU context. … … 700 701 701 702 /** 702 * Returns whether decode-assist feature is supported. 703 * 703 * Returns whether the decode assists feature is supported. 704 * 705 * @return @c true if supported, @c false otherwise. 704 706 * @param pVCpu The cross context virtual CPU structure. 705 707 * @param pCtx Pointer to the guest-CPU context. 706 708 */ 707 DECLINLINE(bool) hmR0SvmSupportsDecodeAssist (PVMCPU pVCpu, PCPUMCTX pCtx)709 DECLINLINE(bool) hmR0SvmSupportsDecodeAssists(PVMCPU pVCpu, PCPUMCTX pCtx) 708 710 { 709 711 PVM pVM = pVCpu->CTX_SUFF(pVM); … … 711 713 if (CPUMIsGuestInSvmNestedHwVirtMode(pCtx)) 712 714 { 713 return (pVM->hm.s.svm.u32Features & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSIST )714 && pVM->cpum.ro.GuestFeatures.fSvmDecodeAssist ;715 return (pVM->hm.s.svm.u32Features & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS) 716 && pVM->cpum.ro.GuestFeatures.fSvmDecodeAssists; 715 717 } 716 718 #else 717 719 RT_NOREF(pCtx); 718 720 #endif 719 return RT_BOOL(pVM->hm.s.svm.u32Features & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSIST); 720 } 721 722 723 /** 724 * Returns whether NRIP_SAVE feature is supported. 725 * 721 return RT_BOOL(pVM->hm.s.svm.u32Features & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS); 722 } 723 724 725 /** 726 * Returns whether the NRIP_SAVE feature is supported. 727 * 728 * @return @c true if supported, @c false otherwise. 726 729 * @param pVCpu The cross context virtual CPU structure. 727 730 * @param pCtx Pointer to the guest-CPU context. … … 3092 3095 * now. 3093 3096 * 3094 * @returns true if the interrupt shadow is active,false otherwise.3097 * @returns @c true if the interrupt shadow is active, @c false otherwise. 3095 3098 * @param pVCpu The cross context virtual CPU structure. 3096 3099 * @param pCtx Pointer to the guest-CPU context. … … 5595 5598 * included here as it's a conditional contributory exception. 5596 5599 * 5597 * @returns true if the exception is contributory,false otherwise.5600 * @returns @c true if the exception is contributory, @c false otherwise. 5598 5601 * @param uVector The exception vector. 5599 5602 */ … … 6140 6143 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitInvlpg); 6141 6144 6142 bool const fSupportsDecodeAssist = hmR0SvmSupportsDecodeAssist(pVCpu, pCtx);6143 bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu, pCtx);6144 if ( fSupportsDecodeAssist 6145 bool const fSupportsDecodeAssists = hmR0SvmSupportsDecodeAssists(pVCpu, pCtx); 6146 bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu, pCtx); 6147 if ( fSupportsDecodeAssists 6145 6148 && fSupportsNextRipSave) 6146 6149 { … … 6264 6267 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitCRxRead[pSvmTransient->u64ExitCode - SVM_EXIT_READ_CR0]); 6265 6268 6266 bool const fSupportsDecodeAssist = hmR0SvmSupportsDecodeAssist(pVCpu, pCtx);6267 bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu, pCtx);6268 if ( fSupportsDecodeAssist 6269 bool const fSupportsDecodeAssists = hmR0SvmSupportsDecodeAssists(pVCpu, pCtx); 6270 bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu, pCtx); 6271 if ( fSupportsDecodeAssists 6269 6272 && fSupportsNextRipSave) 6270 6273 { … … 6305 6308 VBOXSTRICTRC rcStrict = VERR_SVM_IPE_5; 6306 6309 bool fDecodedInstr = false; 6307 bool const fSupportsDecodeAssist = hmR0SvmSupportsDecodeAssist(pVCpu, pCtx);6308 bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu, pCtx);6309 if ( fSupportsDecodeAssist 6310 bool const fSupportsDecodeAssists = hmR0SvmSupportsDecodeAssists(pVCpu, pCtx); 6311 bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu, pCtx); 6312 if ( fSupportsDecodeAssists 6310 6313 && fSupportsNextRipSave) 6311 6314 { -
trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
r70184 r70254 1721 1721 pFeatures->fSvmVmcbClean = RT_BOOL(pSvmLeaf->uEdx & X86_CPUID_SVM_FEATURE_EDX_VMCB_CLEAN); 1722 1722 pFeatures->fSvmFlusbByAsid = RT_BOOL(pSvmLeaf->uEdx & X86_CPUID_SVM_FEATURE_EDX_FLUSH_BY_ASID); 1723 pFeatures->fSvmDecodeAssist = RT_BOOL(pSvmLeaf->uEdx & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSIST);1723 pFeatures->fSvmDecodeAssists = RT_BOOL(pSvmLeaf->uEdx & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS); 1724 1724 pFeatures->fSvmPauseFilter = RT_BOOL(pSvmLeaf->uEdx & X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER); 1725 1725 pFeatures->fSvmPauseFilterThreshold = RT_BOOL(pSvmLeaf->uEdx & X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER_THRESHOLD); -
trunk/src/VBox/VMM/VMMR3/HM.cpp
r69535 r70254 1626 1626 HMSVM_REPORT_FEATURE("VMCB_CLEAN", X86_CPUID_SVM_FEATURE_EDX_VMCB_CLEAN), 1627 1627 HMSVM_REPORT_FEATURE("FLUSH_BY_ASID", X86_CPUID_SVM_FEATURE_EDX_FLUSH_BY_ASID), 1628 HMSVM_REPORT_FEATURE("DECODE_ASSIST ", X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSIST),1628 HMSVM_REPORT_FEATURE("DECODE_ASSISTS", X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS), 1629 1629 HMSVM_REPORT_FEATURE("PAUSE_FILTER", X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER), 1630 1630 HMSVM_REPORT_FEATURE("PAUSE_FILTER_THRESHOLD", X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER_THRESHOLD), … … 1650 1650 * SVM R0 code assumes if the decode-assist feature exists, NRIP feature exists too. 1651 1651 */ 1652 AssertLogRelReturn( !(pVM->hm.s.svm.u32Features & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSIST )1652 AssertLogRelReturn( !(pVM->hm.s.svm.u32Features & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS) 1653 1653 || (pVM->hm.s.svm.u32Features & X86_CPUID_SVM_FEATURE_EDX_NRIP_SAVE), 1654 1654 VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO);
Note:
See TracChangeset
for help on using the changeset viewer.