VirtualBox

Ignore:
Timestamp:
Feb 2, 2021 3:03:56 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142564
Message:

VMM/HMSVM: Eliminated HMR0PERVM::svm::fFeatures and made the ring-0 code use g_fHmSvmFeatures instead. bugref:9217

File:
1 edited

Legend:

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

    r87522 r87538  
    867867{
    868868    PCVMCC pVM = pVCpu->CTX_SUFF(pVM);
    869     bool const fHostVmcbCleanBits = RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_VMCB_CLEAN);
     869    bool const fHostVmcbCleanBits = RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_VMCB_CLEAN);
    870870    if (!fIsNestedGuest)
    871871        return fHostVmcbCleanBits;
     
    885885#ifdef VBOX_WITH_NESTED_HWVIRT_SVM
    886886    if (CPUMIsGuestInSvmNestedHwVirtMode(&pVCpu->cpum.GstCtx))
    887         return (pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS)
     887        return (g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS)
    888888            &&  pVM->cpum.ro.GuestFeatures.fSvmDecodeAssists;
    889889#endif
    890     return RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS);
     890    return RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_DECODE_ASSISTS);
    891891}
    892892
     
    903903#ifdef VBOX_WITH_NESTED_HWVIRT_SVM
    904904    if (CPUMIsGuestInSvmNestedHwVirtMode(&pVCpu->cpum.GstCtx))
    905         return (pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_NRIP_SAVE)
     905        return (g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_NRIP_SAVE)
    906906            &&  pVM->cpum.ro.GuestFeatures.fSvmNextRipSave;
    907907#endif
    908     return RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_NRIP_SAVE);
     908    return RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_NRIP_SAVE);
    909909}
    910910
     
    10031003     * Determin some configuration parameters.
    10041004     */
    1005     bool const fPauseFilter          = RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER);
    1006     bool const fPauseFilterThreshold = RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER_THRESHOLD);
     1005    bool const fPauseFilter          = RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER);
     1006    bool const fPauseFilterThreshold = RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_PAUSE_FILTER_THRESHOLD);
    10071007    bool const fUsePauseFilter       = fPauseFilter && pVM->hm.s.svm.cPauseFilter;
    10081008
    1009     bool const fLbrVirt              = RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_LBR_VIRT);
     1009    bool const fLbrVirt              = RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_LBR_VIRT);
    10101010    bool const fUseLbrVirt           = fLbrVirt && pVM->hm.s.svm.fLbrVirt; /** @todo IEM implementation etc. */
    10111011
    10121012#ifdef VBOX_WITH_NESTED_HWVIRT_SVM
    1013     bool const fVirtVmsaveVmload     = RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_VIRT_VMSAVE_VMLOAD);
     1013    bool const fVirtVmsaveVmload     = RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_VIRT_VMSAVE_VMLOAD);
    10141014    bool const fUseVirtVmsaveVmload  = fVirtVmsaveVmload && pVM->hm.s.svm.fVirtVmsaveVmload && fNestedPaging;
    10151015
    1016     bool const fVGif                 = RT_BOOL(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_VGIF);
     1016    bool const fVGif                 = RT_BOOL(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_VGIF);
    10171017    bool const fUseVGif              = fVGif && pVM->hm.s.svm.fVGif;
    10181018#endif
     
    13661366            else
    13671367            {
    1368                 if (pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_FLUSH_BY_ASID)
     1368                if (g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_FLUSH_BY_ASID)
    13691369                    pVmcb->ctrl.TLBCtrl.n.u8TLBFlush = SVM_TLB_FLUSH_SINGLE_CONTEXT;
    13701370                else
     
    20532053
    20542054            HMSVM_ASSERT_NOT_IN_NESTED_GUEST(pCtx);                                /* Nested VGIF is not supported yet. */
    2055             Assert(pVM->hmr0.s.svm.fFeatures & X86_CPUID_SVM_FEATURE_EDX_VGIF);    /* Physical hardware supports VGIF. */
     2055            Assert(g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_VGIF);    /* Physical hardware supports VGIF. */
    20562056            Assert(HMIsSvmVGifActive(pVM));                                        /* Outer VM has enabled VGIF. */
    20572057            NOREF(pVM);
     
    41064106     */
    41074107    PVMCC pVM = pVCpu->CTX_SUFF(pVM);
    4108     if (RT_UNLIKELY(   !pVM->hmr0.s.svm.fFeatures
     4108    if (RT_UNLIKELY(   !g_fHmSvmFeatures
    41094109                    &&  pVCpu->hm.s.Event.fPending
    41104110                    &&  SVM_EVENT_GET_TYPE(pVCpu->hm.s.Event.u64IntInfo) == SVM_EVENT_NMI))
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