VirtualBox

Changeset 22264 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Aug 14, 2009 3:23:54 PM (15 years ago)
Author:
vboxsync
Message:

Move the TPR patching decision logic to Main.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/HWACCM.cpp

    r22263 r22264  
    327327     * Check CFGM options.
    328328     */
    329     PCFGMNODE pRoot      = CFGMR3GetRoot(pVM);
    330 
    331     char *pszOSType = NULL;
    332     rc = CFGMR3QueryStringAlloc(pRoot, "OSType", &pszOSType);
    333     AssertRC(rc);
    334    
    335     pVM->hwaccm.s.fTRPPatchingAllowed = false;
    336     if (pszOSType)
    337     {
    338         /* @todo Not exactly pretty to check strings; VBOXOSTYPE would be better, but that requires quite a bit of API change in Main. */
    339         if (    !RTStrCmp(pszOSType, "WindowsNT4")
    340             ||  !RTStrCmp(pszOSType, "WindowsNT")
    341             ||  !RTStrCmp(pszOSType, "Windows 2000")
    342             ||  !RTStrCmp(pszOSType, "WindowsXP")
    343             ||  !RTStrCmp(pszOSType, "Windows 2003"))
    344         {
    345             /* Only allow TPR patching for NT, Win2k, XP and Windows Server 2003. (32 bits mode)
    346              * (IO-APIC presence is checked later on in HWACCMR3InitFinalizeR0)
    347              *
    348              * We may want to consider adding more guest OSes (Solaris) later on.
    349              */
    350             pVM->hwaccm.s.fTRPPatchingAllowed = true;
    351         }
    352         MMR3HeapFree(pszOSType);
    353     }
    354 
     329    PCFGMNODE pRoot      = CFGMR3GetRoot(pVM);
    355330    PCFGMNODE pHWVirtExt = CFGMR3GetChild(pRoot, "HWVirtExt/");
    356331    /* Nested paging: disabled by default. */
     
    364339    /* HWACCM support must be explicitely enabled in the configuration file. */
    365340    rc = CFGMR3QueryBoolDef(pHWVirtExt, "Enabled", &pVM->hwaccm.s.fAllowed, false);
     341    AssertRC(rc);
     342
     343    /* TPR patching for 32 bits (Windows) guests with IO-APIC: disabled by default. */
     344    rc = CFGMR3QueryBoolDef(pRoot, "TPRPatchingEnabled", &pVM->hwaccm.s.fTRPPatchingAllowed, false);
    366345    AssertRC(rc);
    367346
     
    671650
    672651    pVM->hwaccm.s.fHasIoApic = PDMHasIoApic(pVM);
    673     /* No TPR patching is required when the IO-APIC is not enabled for this VM. */
     652    /* No TPR patching is required when the IO-APIC is not enabled for this VM. (Main should have taken care of this already) */
    674653    if (!pVM->hwaccm.s.fHasIoApic)
     654    {
     655        Assert(pVM->hwaccm.s.fTRPPatchingAllowed); /* paranoia */
    675656        pVM->hwaccm.s.fTRPPatchingAllowed = false;
     657    }
    676658
    677659    if (pVM->hwaccm.s.vmx.fSupported)
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