VirtualBox

Changeset 81710 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Nov 6, 2019 2:51:26 PM (5 years ago)
Author:
vboxsync
Message:

Main: Preps for embedding the EFI firmware into VBoxDD2.

Location:
trunk/src/VBox/Main
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/Makefile.kmk

    r81426 r81710  
    159159 VBOX_MAIN_DEFS += VBOX_WITH_EHCI
    160160 endif
     161endif
     162ifdef VBOX_WITH_EFI_IN_DD2
     163 VBOX_MAIN_DEFS += VBOX_WITH_EFI_IN_DD2
    161164endif
    162165# Unconditionally enable the new semaphore key generation code
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r81603 r81710  
    17411741            bool const f64BitEntry = eFwType == FirmwareType_EFI64;
    17421742
     1743            Assert(eFwType == FirmwareType_EFI64 || eFwType == FirmwareType_EFI32 || eFwType == FirmwareType_EFIDUAL);
     1744#ifdef VBOX_WITH_EFI_IN_DD2
     1745            const char *pszEfiRomFile = eFwType == FirmwareType_EFIDUAL ? "VBoxEFIDual.fd"
     1746                                      : eFwType == FirmwareType_EFI32   ? "VBoxEFI32.fd"
     1747                                      :                                   "VBoxEFI64.fd";
     1748#else
    17431749            Utf8Str efiRomFile;
    17441750            rc = findEfiRom(virtualBox, eFwType, &efiRomFile);
    17451751            AssertRCReturn(rc, rc);
     1752            const char *pszEfiRomFile = efiRomFile.c_str();
     1753#endif
    17461754
    17471755            /* Get boot args */
     
    18161824            InsertConfigInteger(pCfg,  "McfgBase",    uMcfgBase);
    18171825            InsertConfigInteger(pCfg,  "McfgLength",  cbMcfgLength);
    1818             InsertConfigString(pCfg,   "EfiRom",      efiRomFile);
     1826            InsertConfigString(pCfg,   "EfiRom",      pszEfiRomFile);
    18191827            InsertConfigString(pCfg,   "BootArgs",    bootArgs);
    18201828            InsertConfigString(pCfg,   "DeviceProps", deviceProps);
  • trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp

    r81427 r81710  
    16341634    static const struct
    16351635    {
    1636         FirmwareType_T type;
    1637         const char*    fileName;
    1638         const char*    url;
     1636        FirmwareType_T  enmType;
     1637        bool            fBuiltIn;
     1638        const char     *pszFileName;
     1639        const char     *pszUrl;
    16391640    }
    16401641    firmwareDesc[] =
    16411642    {
    1642         {
    1643             /* compiled-in firmware */
    1644             FirmwareType_BIOS,    NULL,             NULL
    1645         },
    1646         {
    1647             FirmwareType_EFI32,   "VBoxEFI32.fd",   "http://virtualbox.org/firmware/VBoxEFI32.fd"
    1648         },
    1649         {
    1650             FirmwareType_EFI64,   "VBoxEFI64.fd",   "http://virtualbox.org/firmware/VBoxEFI64.fd"
    1651         },
    1652         {
    1653             FirmwareType_EFIDUAL, "VBoxEFIDual.fd", "http://virtualbox.org/firmware/VBoxEFIDual.fd"
    1654         }
     1643        {   FirmwareType_BIOS,    true,  NULL,             NULL },
     1644#ifdef VBOX_WITH_EFI_IN_DD2
     1645        {   FirmwareType_EFI32,   true,  "VBoxEFI32.fd",   NULL },
     1646        {   FirmwareType_EFI64,   true,  "VBoxEFI64.fd",   NULL },
     1647        {   FirmwareType_EFIDUAL, true,  "VBoxEFIDual.fd", NULL },
     1648#else
     1649        {   FirmwareType_EFI32,   false, "VBoxEFI32.fd",   "http://virtualbox.org/firmware/VBoxEFI32.fd" },
     1650        {   FirmwareType_EFI64,   false, "VBoxEFI64.fd",   "http://virtualbox.org/firmware/VBoxEFI64.fd" },
     1651        {   FirmwareType_EFIDUAL, false, "VBoxEFIDual.fd", "http://virtualbox.org/firmware/VBoxEFIDual.fd" },
     1652#endif
    16551653    };
    16561654
    16571655    for (size_t i = 0; i < sizeof(firmwareDesc) / sizeof(firmwareDesc[0]); i++)
    16581656    {
    1659         if (aFirmwareType != firmwareDesc[i].type)
     1657        if (aFirmwareType != firmwareDesc[i].enmType)
    16601658            continue;
    16611659
    16621660        /* compiled-in firmware */
    1663         if (firmwareDesc[i].fileName == NULL)
    1664         {
     1661        if (firmwareDesc[i].fBuiltIn)
     1662        {
     1663            aFile = firmwareDesc[i].pszFileName;
    16651664            *aResult = TRUE;
    16661665            break;
    16671666        }
    16681667
    1669         Utf8Str shortName, fullName;
    1670 
    1671         shortName = Utf8StrFmt("Firmware%c%s",
    1672                                RTPATH_DELIMITER,
    1673                                firmwareDesc[i].fileName);
     1668        Utf8Str    fullName;
     1669        Utf8StrFmt shortName("Firmware%c%s", RTPATH_DELIMITER, firmwareDesc[i].pszFileName);
    16741670        int rc = i_calculateFullPath(shortName, fullName);
    16751671        AssertRCReturn(rc, VBOX_E_IPRT_ERROR);
     
    16811677        }
    16821678
    1683         char pszVBoxPath[RTPATH_MAX];
    1684         rc = RTPathExecDir(pszVBoxPath, RTPATH_MAX);
     1679        char szVBoxPath[RTPATH_MAX];
     1680        rc = RTPathExecDir(szVBoxPath, RTPATH_MAX);
    16851681        AssertRCReturn(rc, VBOX_E_IPRT_ERROR);
    1686         fullName = Utf8StrFmt("%s%c%s",
    1687                               pszVBoxPath,
    1688                               RTPATH_DELIMITER,
    1689                               firmwareDesc[i].fileName);
    1690         if (RTFileExists(fullName.c_str()))
     1682        rc = RTPathAppend(szVBoxPath, sizeof(szVBoxPath), firmwareDesc[i].pszFileName);
     1683        if (RTFileExists(szVBoxPath))
    16911684        {
    16921685            *aResult = TRUE;
    1693             aFile = fullName;
     1686            aFile = szVBoxPath;
    16941687            break;
    16951688        }
    16961689
    16971690        /** @todo account for version in the URL */
    1698         aUrl = firmwareDesc[i].url;
     1691        aUrl = firmwareDesc[i].pszUrl;
    16991692        *aResult = FALSE;
    17001693
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