VirtualBox

Changeset 43256 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Sep 8, 2012 3:38:02 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
80666
Message:

Main/EFI: Permanent NVRAM save switched off by default.

Location:
trunk/src/VBox/Main/src-client
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r43131 r43256  
    15181518            InsertConfigNode(pLunL0,   "Config", &pCfg);
    15191519            InsertConfigInteger(pCfg,  "Object", (uint64_t)mNvram);
     1520#ifdef DEBUG_vvl
     1521            InsertConfigInteger(pCfg,  "PermanentSave", 1);
     1522#endif
    15201523        }
    15211524
  • trunk/src/VBox/Main/src-client/Nvram.cpp

    r43234 r43256  
    5050    PDMINVRAM INvram;
    5151    int cLoadedVariables;
     52    bool fPermanentSave;
    5253};
    5354
     
    9495                        cbValue));
    9596    PNVRAM pThis = RT_FROM_MEMBER(pInterface, NVRAM, INvram);
     97    if (!pThis->fPermanentSave)
     98    {
     99        LogFlowFuncLeaveRC(rc);
     100        return rc;
     101    }
     102
     103    bool fFlushVariable = (!pu8Value);
    96104
    97105    RT_ZERO(szExtraDataKey);
    98106    RT_ZERO(szExtraDataValue);
    99107    RTStrPrintf(szExtraDataKey, 256, "VBoxInternal/Devices/efi/0/LUN#0/Config/NVRAM/%d/VariableName", idxVariable);
    100     RTStrPrintf(szExtraDataValue, 1024, "%s", pcszVariableName? pcszVariableName: "");
     108    if (!fFlushVariable)
     109        RTStrPrintf(szExtraDataValue, 1024, "%s", pcszVariableName);
    101110    pThis->pNvram->getParent()->machine()->SetExtraData(Bstr(szExtraDataKey).raw(), Bstr(szExtraDataValue).raw());
    102111
     
    104113    RT_ZERO(szExtraDataValue);
    105114    RTStrPrintf(szExtraDataKey, 256, "VBoxInternal/Devices/efi/0/LUN#0/Config/NVRAM/%d/VendorGuid", idxVariable);
    106     if (pVendorUuid)
     115    if (!fFlushVariable)
    107116        RTUuidToStr(pVendorUuid, szExtraDataValue, 1024);
    108117    pThis->pNvram->getParent()->machine()->SetExtraData(Bstr(szExtraDataKey).raw(), Bstr(szExtraDataValue).raw());
     
    111120    RT_ZERO(szExtraDataValue);
    112121    RTStrPrintf(szExtraDataKey, 256, "VBoxInternal/Devices/efi/0/LUN#0/Config/NVRAM/%d/VariableValueLength", idxVariable);
    113     if (!cbValue)
     122    if (!fFlushVariable)
    114123        RTStrPrintf(szExtraDataValue, 1024, "%d", cbValue);
    115124    pThis->pNvram->getParent()->machine()->SetExtraData(Bstr(szExtraDataKey).raw(), Bstr(szExtraDataValue).raw());
     
    137146    LogFlowFuncEnter();
    138147    PNVRAM pThis = RT_FROM_MEMBER(pInterface, NVRAM, INvram);
     148    if (!pThis->fPermanentSave)
     149    {
     150        LogFlowFuncLeaveRC(rc);
     151        return rc;
     152    }
     153
    139154    for (int idxVariable = 0; idxVariable < pThis->cLoadedVariables; ++idxVariable)
    140155    {
     
    166181                        *pcbValue));
    167182    PNVRAM pThis = RT_FROM_MEMBER(pInterface, NVRAM, INvram);
     183    if (!pThis->fPermanentSave)
     184    {
     185        rc = VERR_NOT_FOUND;
     186        LogFlowFuncLeaveRC(rc);
     187        return rc;
     188    }
     189
    168190
    169191    RT_ZERO(szExtraDataKey);
     
    231253    PNVRAM pThis = PDMINS_2_DATA(pDrvIns, PNVRAM);
    232254
    233     if (!CFGMR3AreValuesValid(pCfg, "Object\0"))
     255    if (!CFGMR3AreValuesValid(pCfg, "Object\0"
     256                                    "PermanentSave\0"))
    234257        return VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES;
    235258    AssertMsgReturn(PDMDrvHlpNoAttach(pDrvIns) == VERR_PDM_NO_ATTACHED_DRIVER,
     
    241264    AssertMsgRCReturn(rc, ("Configuration error: No/bad \"Object\" value! rc=%Rrc\n", rc), rc);
    242265    pThis->pNvram = (Nvram *)pv;
     266
     267    bool fPermanentSave = false;
     268    rc = CFGMR3QueryBool(pCfg, "PermanentSave", &fPermanentSave);
     269    if (   RT_SUCCESS(rc)
     270        || rc == VERR_CFGM_VALUE_NOT_FOUND)
     271        pThis->fPermanentSave = fPermanentSave;
     272    else
     273        AssertRCReturn(rc, rc);
    243274
    244275    pDrvIns->IBase.pfnQueryInterface = Nvram::drvNvram_QueryInterface;
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