VirtualBox

Changeset 10693 in vbox


Ignore:
Timestamp:
Jul 16, 2008 11:48:19 AM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
33410
Message:

Added setting for nested paging (default on).

Location:
trunk/src/VBox
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp

    r10427 r10693  
    336336                 "                            [-pae on|off]\n"
    337337                 "                            [-hwvirtex on|off|default]\n"
     338                 "                            [-nestedpaging on|off]\n"
    338339                 "                            [-monitorcount <number>]\n"
    339340                 "                            [-bioslogofadein on|off]\n"
     
    982983            RTPrintf("Hardw. virt.ext: %s\n", hwVirtExEnabled == TSBool_True ? "on" : "off");
    983984    }
     985    BOOL HWVirtExNestedPagingEnabled;
     986    machine->COMGETTER(HWVirtExNestedPagingEnabled)(&HWVirtExNestedPagingEnabled);
     987    if (details == VMINFO_MACHINEREADABLE)
     988        RTPrintf("nestedpaging=\"%s\"\n", HWVirtExNestedPagingEnabled ? "on" : "off");
     989    else
     990        RTPrintf("Nested Paging:   %s\n", HWVirtExNestedPagingEnabled ? "on" : "off");
    984991
    985992    MachineState_T machineState;
     
    37493756    char *acpi = NULL;
    37503757    char *hwvirtex = NULL;
     3758    char *nestedpaging = NULL;
    37513759    char *pae = NULL;
    37523760    char *ioapic = NULL;
     
    38743882            hwvirtex = argv[i];
    38753883        }
     3884        else if (strcmp(argv[i], "-nestedpaging") == 0)
     3885        {
     3886            if (argc <= i + 1)
     3887                return errorArgument("Missing argument to '%s'", argv[i]);
     3888            i++;
     3889            nestedpaging = argv[i];
     3890        }
    38763891        else if (strcmp(argv[i], "-pae") == 0)
    38773892        {
     
    44964511            {
    44974512                errorArgument("Invalid -hwvirtex argument '%s'", hwvirtex);
     4513                rc = E_FAIL;
     4514                break;
     4515            }
     4516        }
     4517        if (nestedpaging)
     4518        {
     4519            if (strcmp(nestedpaging, "on") == 0)
     4520            {
     4521                CHECK_ERROR(machine, COMSETTER(HWVirtExNestedPagingEnabled)(true));
     4522            }
     4523            else if (strcmp(nestedpaging, "off") == 0)
     4524            {
     4525                CHECK_ERROR(machine, COMSETTER(HWVirtExNestedPagingEnabled)(false));
     4526            }
     4527            else
     4528            {
     4529                errorArgument("Invalid -nestedpaging argument '%s'", ioapic);
    44984530                rc = E_FAIL;
    44994531                break;
  • trunk/src/VBox/Main/ConsoleImpl2.cpp

    r10372 r10693  
    174174    }
    175175#endif
     176
     177    /* Nested paging (VT-x/AMD-V) */
     178    BOOL fEnableNestedPaging = false;
     179    hrc = pMachine->COMGETTER(HWVirtExNestedPagingEnabled)(&fEnableNestedPaging);   H();
     180    rc = CFGMR3InsertInteger(pRoot, "EnableNestedPaging", fEnableNestedPaging);     RC_CHECK();
    176181
    177182    /* Physical Address Extension (PAE) */
  • trunk/src/VBox/Main/MachineImpl.cpp

    r10595 r10693  
    189189    mMonitorCount = 1;
    190190    mHWVirtExEnabled = TSBool_False;
     191    mHWVirtExNestedPagingEnabled = true;
    191192    mPAEEnabled = false;
    192193
     
    216217        mMonitorCount != that.mMonitorCount ||
    217218        mHWVirtExEnabled != that.mHWVirtExEnabled ||
     219        mHWVirtExNestedPagingEnabled != that.mHWVirtExNestedPagingEnabled ||
    218220        mPAEEnabled != that.mPAEEnabled ||
    219221        mClipboardMode != that.mClipboardMode)
     
    11161118    return S_OK;
    11171119}
     1120
     1121STDMETHODIMP Machine::COMGETTER(HWVirtExNestedPagingEnabled)(BOOL *enabled)
     1122{
     1123    if (!enabled)
     1124        return E_POINTER;
     1125
     1126    AutoCaller autoCaller (this);
     1127    CheckComRCReturnRC (autoCaller.rc());
     1128
     1129    AutoReadLock alock (this);
     1130
     1131    *enabled = mHWData->mHWVirtExNestedPagingEnabled;
     1132
     1133    return S_OK;
     1134}
     1135
     1136STDMETHODIMP Machine::COMSETTER(HWVirtExNestedPagingEnabled)(BOOL enable)
     1137{
     1138    AutoCaller autoCaller (this);
     1139    CheckComRCReturnRC (autoCaller.rc());
     1140
     1141    AutoWriteLock alock (this);
     1142
     1143    HRESULT rc = checkStateDependency (MutableStateDep);
     1144    CheckComRCReturnRC (rc);
     1145
     1146    /** @todo check validity! */
     1147
     1148    mHWData.backup();
     1149    mHWData->mHWVirtExNestedPagingEnabled = enable;
     1150
     1151    return S_OK;
     1152}
     1153
    11181154
    11191155STDMETHODIMP Machine::COMGETTER(PAEEnabled)(BOOL *enabled)
     
    44784514    {
    44794515        /* default value in case the node is not there */
    4480         mHWData->mHWVirtExEnabled = TSBool_Default;
    4481         mHWData->mPAEEnabled      = false;
     4516        mHWData->mHWVirtExEnabled             = TSBool_Default;
     4517        mHWData->mHWVirtExNestedPagingEnabled = true;
     4518        mHWData->mPAEEnabled                  = false;
    44824519
    44834520        Key cpuNode = aNode.findKey ("CPU");
     
    44954532                    mHWData->mHWVirtExEnabled = TSBool_Default;
    44964533            }
     4534            /* HardwareVirtExNestedPaging (optional, default is true) */
     4535            Key HWVirtExNestedPagingNode = cpuNode.findKey ("HardwareVirtExNestedPaging");
     4536            if (!HWVirtExNestedPagingNode.isNull())
     4537            {
     4538                mHWData->mHWVirtExNestedPagingEnabled = HWVirtExNestedPagingNode.value <bool> ("enabled");
     4539            }
     4540
    44974541            /* PAE (optional, default is false) */
    44984542            Key PAENode = cpuNode.findKey ("PAE");
     
    58615905        hwVirtExNode.setStringValue ("enabled", value);
    58625906
     5907        /* Nested paging (optional, default is true) */
     5908        Key HWVirtExNestedPagingNode = cpuNode.createKey ("HardwareVirtExNestedPaging");
     5909        HWVirtExNestedPagingNode.setValue <bool> ("enabled", !!mHWData->mHWVirtExNestedPagingEnabled);
     5910       
    58635911        /* PAE (optional, default is false) */
    58645912        Key PAENode = cpuNode.createKey ("PAE");
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r10598 r10693  
    25112511  <interface
    25122512     name="IMachine" extends="$unknown"
    2513      uuid="d6181581-e7c7-418a-b3b6-2da10b11a763"
     2513     uuid="9966d6d7-8bed-4f18-8553-2486f32957b3"
    25142514     wsmap="managed"
    25152515     >
     
    27342734    </attribute>
    27352735
     2736    <attribute name="HWVirtExNestedPagingEnabled" type="boolean" default="true">
     2737      <desc>
     2738        This setting determines whether VirtualBox will try to make use of
     2739        the nested paging extension of Intel VT-x and AMD-V. Note that in case
     2740        such extensions are not available, they will not be used.
     2741      </desc>
     2742    </attribute>
     2743
    27362744    <attribute name="PAEEnabled" type="boolean" default="false">
    27372745      <desc>
  • trunk/src/VBox/Main/include/MachineImpl.h

    r10595 r10693  
    240240        ULONG          mMonitorCount;
    241241        TSBool_T       mHWVirtExEnabled;
     242        BOOL           mHWVirtExNestedPagingEnabled;
    242243        BOOL           mPAEEnabled;
    243244
     
    469470    STDMETHOD(COMGETTER(HWVirtExEnabled))(TSBool_T *enabled);
    470471    STDMETHOD(COMSETTER(HWVirtExEnabled))(TSBool_T enabled);
     472    STDMETHOD(COMGETTER(HWVirtExNestedPagingEnabled))(BOOL *enabled);
     473    STDMETHOD(COMSETTER(HWVirtExNestedPagingEnabled))(BOOL enabled);
    471474    STDMETHOD(COMGETTER(PAEEnabled))(BOOL *enabled);
    472475    STDMETHOD(COMSETTER(PAEEnabled))(BOOL enabled);
  • trunk/src/VBox/Main/xml/VirtualBox-settings-common.xsd

    r8804 r10693  
    413413</xsd:complexType>
    414414
     415<xsd:complexType name="THWVirtExNestedPagingType">
     416  <xsd:attribute name="enabled" type="xsd:boolean" default="true"/>
     417</xsd:complexType>
     418
    415419<xsd:complexType name="TPAEType">
    416420  <xsd:attribute name="enabled" type="xsd:boolean" default="false"/>
     
    420424  <xsd:sequence>
    421425    <xsd:element name="HardwareVirtEx" type="THWVirtExType" minOccurs="0"/>
     426    <xsd:element name="HardwareVirtExNestedPaging" type="THWVirtExNestedPagingType" minOccurs="0"/>
    422427    <xsd:element name="PAE" type="TPAEType" minOccurs="0"/>
    423428  </xsd:sequence>
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