VirtualBox

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


Ignore:
Timestamp:
Jan 23, 2018 5:13:05 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
120457
Message:

VMM/CPUM: Changed the nested SVM CFGM key to the common NestedHWVirt one.

File:
1 edited

Legend:

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

    r70654 r70714  
    23262326    bool            fInvariantTsc;
    23272327    bool            fForceVme;
     2328    bool            fNestedHWVirt;
    23282329
    23292330    CPUMISAEXTCFG   enmCmpXchg16b;
     
    23512352    CPUMISAEXTCFG   enm3dNowPrf;
    23522353    CPUMISAEXTCFG   enmAmdExtMmx;
    2353     CPUMISAEXTCFG   enmSvm;
    23542354
    23552355    uint32_t        uMaxStdLeaf;
     
    28802880        pExtFeatureLeaf->uEcx &= X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF
    28812881                               //| X86_CPUID_AMD_FEATURE_ECX_CMPL   - set below if applicable.
    2882                                | (pConfig->enmSvm      ? X86_CPUID_AMD_FEATURE_ECX_SVM : 0)
     2882                               | (pConfig->fNestedHWVirt ? X86_CPUID_AMD_FEATURE_ECX_SVM : 0)
    28832883                               //| X86_CPUID_AMD_FEATURE_ECX_EXT_APIC
    28842884                               /* Note: This could prevent teleporting from AMD to Intel CPUs! */
     
    29202920        if (pCpum->u8PortableCpuIdLevel > 0)
    29212921        {
     2922            CPUMISAEXTCFG enmSvm = pConfig->fNestedHWVirt ? CPUMISAEXTCFG_ENABLED_SUPPORTED : CPUMISAEXTCFG_DISABLED;
    29222923            PORTABLE_DISABLE_FEATURE_BIT(    1, pExtFeatureLeaf->uEcx, CR8L,       X86_CPUID_AMD_FEATURE_ECX_CR8L);
    2923             PORTABLE_DISABLE_FEATURE_BIT_CFG(1, pExtFeatureLeaf->uEcx, SVM,        X86_CPUID_AMD_FEATURE_ECX_SVM,       pConfig->enmSvm);
     2924            PORTABLE_DISABLE_FEATURE_BIT_CFG(1, pExtFeatureLeaf->uEcx, SVM,        X86_CPUID_AMD_FEATURE_ECX_SVM,       enmSvm);
    29242925            PORTABLE_DISABLE_FEATURE_BIT_CFG(1, pExtFeatureLeaf->uEcx, ABM,        X86_CPUID_AMD_FEATURE_ECX_ABM,       pConfig->enmAbm);
    29252926            PORTABLE_DISABLE_FEATURE_BIT_CFG(1, pExtFeatureLeaf->uEcx, SSE4A,      X86_CPUID_AMD_FEATURE_ECX_SSE4A,     pConfig->enmSse4A);
     
    29642965        if (pConfig->enmSse4A     == CPUMISAEXTCFG_ENABLED_ALWAYS)
    29652966            pExtFeatureLeaf->uEcx |= X86_CPUID_AMD_FEATURE_ECX_SSE4A;
    2966         if (pConfig->enmSvm       == CPUMISAEXTCFG_ENABLED_ALWAYS)
    2967             pExtFeatureLeaf->uEcx |= X86_CPUID_AMD_FEATURE_ECX_SVM;
    29682967        if (pConfig->enmMisAlnSse == CPUMISAEXTCFG_ENABLED_ALWAYS)
    29692968            pExtFeatureLeaf->uEcx |= X86_CPUID_AMD_FEATURE_ECX_MISALNSSE;
     
    29722971        if (pConfig->enmAmdExtMmx  == CPUMISAEXTCFG_ENABLED_ALWAYS)
    29732972            pExtFeatureLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_AXMMX;
    2974         if (pConfig->enmSvm        == CPUMISAEXTCFG_ENABLED_ALWAYS)
    2975             pExtFeatureLeaf->uEcx |= X86_CPUID_AMD_FEATURE_ECX_SVM;
    29762973    }
    29772974    pExtFeatureLeaf = NULL; /* Must refetch! */
     
    39293926    AssertLogRelRCReturn(rc, rc);
    39303927
     3928#ifdef VBOX_WITH_NESTED_HWVIRT
     3929    /** @cfgm{/CPUM/NestedHWVirt, bool, false}
     3930     * Whether to expose the hardware virtualization (VMX/SVM) feature to the guest.
     3931     * The default is false, and when enabled requires nested paging and AMD-V or
     3932     * unrestricted guest mode.
     3933     */
     3934    rc = CFGMR3QueryBoolDef(pCpumCfg, "NestedHWVirt", &pConfig->fNestedHWVirt, false);
     3935    AssertLogRelRCReturn(rc, rc);
     3936    pConfig->fNestedHWVirt &= fNestedPagingAndFullGuestExec;
     3937#endif
    39313938
    39323939    /*
     
    39603967                                  "|3DNOWPRF"
    39613968                                  "|AXMMX"
    3962                                   "|SVM"
    39633969                                  , "" /*pszValidNodes*/, "CPUM" /*pszWho*/, 0 /*uInstance*/);
    39643970        if (RT_FAILURE(rc))
     
    41524158    rc = cpumR3CpuIdReadIsaExtCfg(pVM, pIsaExts, "AXMMX", &pConfig->enmAmdExtMmx, fNestedPagingAndFullGuestExec);
    41534159    AssertLogRelRCReturn(rc, rc);
    4154 
    4155 #ifdef VBOX_WITH_NESTED_HWVIRT
    4156     /** @cfgm{/CPUM/IsaExts/SVM, isaextcfg, depends}
    4157      * Whether to expose the AMD's hardware virtualization (SVM) instructions to the
    4158      * guest. For the time being, the default is to only do this for VMs with nested
    4159      * paging and AMD-V.
    4160      */
    4161     rc = cpumR3CpuIdReadIsaExtCfg(pVM, pIsaExts, "SVM", &pConfig->enmSvm, fNestedPagingAndFullGuestExec);
    4162     AssertLogRelRCReturn(rc, rc);
    4163 #endif
    41644160
    41654161    return VINF_SUCCESS;
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