VirtualBox

Changeset 101035 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Sep 7, 2023 8:59:15 AM (15 months ago)
Author:
vboxsync
Message:

Initial commit (based draft v2 / on patch v5) for implementing platform architecture support for x86 and ARM. bugref:10384

Location:
trunk/src/VBox/Frontends
Files:
33 edited

Legend:

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

    r99604 r101035  
    10161016                                            break;
    10171017                                    }
    1018                                     CHECK_ERROR_RET(systemProperties, GetMaxPortCountForStorageBus(enmStorageBus, &maxPorts),
    1019                                         RTEXITCODE_FAILURE);
     1018
     1019                                    PlatformArchitecture_T platformArch = PlatformArchitecture_x86; /** @todo BUGBUG Appliances only handle x86 so far! */
     1020
     1021                                    ComPtr<IPlatformProperties> pPlatformProperties;
     1022                                    CHECK_ERROR_RET(pVirtualBox, GetPlatformProperties(platformArch, pPlatformProperties.asOutParam()),
     1023                                                                                       RTEXITCODE_FAILURE);
     1024
     1025                                    CHECK_ERROR_RET(pPlatformProperties, GetMaxPortCountForStorageBus(enmStorageBus, &maxPorts),
     1026                                                    RTEXITCODE_FAILURE);
    10201027                                    if (uTargetControllerPort >= maxPorts)
    10211028                                        return errorSyntax(Appliance::tr("Illegal port value: %u. For %ls controllers the only valid values are 0 to %lu (inclusive)"),
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r99775 r101035  
    805805            setCurrentSubcommand(HELP_SCOPE_CONTROLVM_SETLINKSTATE);
    806806            /* Get the number of network adapters */
    807             ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, sessionMachine);
     807            ULONG NetworkAdapterCount = getMaxNics(sessionMachine);
    808808            unsigned n = parseNum(&a->argv[1][12], NetworkAdapterCount, "NIC");
    809809            if (!n)
     
    843843            setCurrentSubcommand(HELP_SCOPE_CONTROLVM_NICTRACEFILE);
    844844            /* Get the number of network adapters */
    845             ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, sessionMachine);
     845            ULONG NetworkAdapterCount = getMaxNics(sessionMachine);
    846846            unsigned n = parseNum(&a->argv[1][12], NetworkAdapterCount, "NIC");
    847847            if (!n)
     
    887887            setCurrentSubcommand(HELP_SCOPE_CONTROLVM_NICTRACE);
    888888            /* Get the number of network adapters */
    889             ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, sessionMachine);
     889            ULONG NetworkAdapterCount = getMaxNics(sessionMachine);
    890890            unsigned n = parseNum(&a->argv[1][8], NetworkAdapterCount, "NIC");
    891891            if (!n)
     
    928928        {
    929929            /* Get the number of network adapters */
    930             ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, sessionMachine);
     930            ULONG NetworkAdapterCount = getMaxNics(sessionMachine);
    931931            unsigned n = parseNum(&a->argv[1][5], NetworkAdapterCount, "NIC");
    932932            if (!n)
     
    10221022            setCurrentSubcommand(HELP_SCOPE_CONTROLVM_NICPROPERTY);
    10231023            /* Get the number of network adapters */
    1024             ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, sessionMachine);
     1024            ULONG NetworkAdapterCount = getMaxNics(sessionMachine);
    10251025            unsigned n = parseNum(&a->argv[1][11], NetworkAdapterCount, "NIC");
    10261026            if (!n)
     
    10841084            setCurrentSubcommand(HELP_SCOPE_CONTROLVM_NICPROMISC);
    10851085            /* Get the number of network adapters */
    1086             ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, sessionMachine);
     1086            ULONG NetworkAdapterCount = getMaxNics(sessionMachine);
    10871087            unsigned n = parseNum(&a->argv[1][10], NetworkAdapterCount, "NIC");
    10881088            if (!n)
     
    11341134            setCurrentSubcommand(HELP_SCOPE_CONTROLVM_NIC);
    11351135            /* Get the number of network adapters */
    1136             ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, sessionMachine);
     1136            ULONG NetworkAdapterCount = getMaxNics(sessionMachine);
    11371137            unsigned n = parseNum(&a->argv[1][3], NetworkAdapterCount, "NIC");
    11381138            if (!n)
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp

    r99775 r101035  
    10921092        pSession->COMGETTER(Console)(pConsole.asOutParam());
    10931093
     1094    ComPtr<IPlatform> platform;
     1095    CHECK_ERROR_RET(machine, COMGETTER(Platform)(platform.asOutParam()), hrc);
     1096    ComPtr<IPlatformProperties> platformProperties;
     1097    CHECK_ERROR_RET(platform, COMGETTER(Properties)(platformProperties.asOutParam()), hrc);
     1098
     1099    PlatformArchitecture_T platformArch;
     1100    CHECK_ERROR_RET(platform, COMGETTER(Architecture)(&platformArch), hrc);
     1101
     1102    ComPtr<IFirmwareSettings> firmwareSettings;
     1103    CHECK_ERROR_RET(machine, COMGETTER(FirmwareSettings)(firmwareSettings.asOutParam()), hrc);
     1104
    10941105    char szNm[80];
    10951106    char szValue[256];
     
    11701181        Bstr strPasswordId;
    11711182        HRESULT hrc2 = machine->GetEncryptionSettings(strCipher.asOutParam(), strPasswordId.asOutParam());
     1183
     1184        SHOW_UTF8_STRING(      "encryption",              Info::tr("Encryption:"),
     1185                                                          SUCCEEDED(hrc2) ? "enabled" : "disabled");
    11721186        if (SUCCEEDED(hrc2))
    11731187        {
    1174             RTPrintf("Encryption:     enabled\n");
    1175             RTPrintf("Cipher:         %ls\n", strCipher.raw());
    1176             RTPrintf("Password ID:    %ls\n", strPasswordId.raw());
    1177         }
    1178         else
    1179             RTPrintf("Encryption:     disabled\n");
     1188            SHOW_BSTR_STRING(      "enc_cipher",          Info::tr("Cipher:"), strCipher);
     1189            SHOW_BSTR_STRING(      "enc_password_id",     Info::tr("Password ID:"), strPasswordId);
     1190        }
    11801191    }
    11811192    SHOW_STRINGARRAY_PROP( machine, Groups,                     "groups",               Info::tr("Groups:"));
     1193    SHOW_UTF8_STRING(      "platformArchitecture",              Info::tr("Platform Architecture:"),
     1194                                                                                        platformArch == PlatformArchitecture_x86 ? "x86" : "ARM");
    11821195    Bstr osTypeId;
    11831196    CHECK_ERROR2I_RET(machine, COMGETTER(OSTypeId)(osTypeId.asOutParam()), hrcCheck);
     
    11991212    SHOW_ULONG_PROP(pGraphicsAdapter, VRAMSize,                 "vram",                 Info::tr("VRAM size:"),       "MB");
    12001213    SHOW_ULONG_PROP(       machine, CPUExecutionCap,            "cpuexecutioncap",      Info::tr("CPU exec cap:"),    "%");
    1201     SHOW_BOOLEAN_PROP(     machine, HPETEnabled,                "hpet",                 Info::tr("HPET:"));
    12021214    SHOW_STRING_PROP_MAJ(  machine, CPUProfile,                 "cpu-profile",          Info::tr("CPUProfile:"),      "host", 6);
    12031215
    12041216    ChipsetType_T chipsetType;
    1205     CHECK_ERROR2I_RET(machine, COMGETTER(ChipsetType)(&chipsetType), hrcCheck);
     1217    CHECK_ERROR2I_RET(platform, COMGETTER(ChipsetType)(&chipsetType), hrcCheck);
    12061218    const char *pszChipsetType;
    12071219    switch (chipsetType)
     
    12261238
    12271239    FirmwareType_T firmwareType;
    1228     CHECK_ERROR2I_RET(machine, COMGETTER(FirmwareType)(&firmwareType), hrcCheck);
     1240    CHECK_ERROR2I_RET(firmwareSettings, COMGETTER(FirmwareType)(&firmwareType), hrcCheck);
    12291241    const char *pszFirmwareType;
    12301242    switch (firmwareType)
     
    12461258
    12471259    SHOW_ULONG_PROP(       machine, CPUCount, "cpus", Info::tr("Number of CPUs:"), "");
    1248     SHOW_BOOLEAN_METHOD(   machine, GetCPUProperty(CPUPropertyType_PAE, &f), "pae", "PAE:");
    1249     SHOW_BOOLEAN_METHOD(   machine, GetCPUProperty(CPUPropertyType_LongMode, &f), "longmode", Info::tr("Long Mode:"));
    1250     SHOW_BOOLEAN_METHOD(   machine, GetCPUProperty(CPUPropertyType_TripleFaultReset, &f), "triplefaultreset", Info::tr("Triple Fault Reset:"));
    1251     SHOW_BOOLEAN_METHOD(   machine, GetCPUProperty(CPUPropertyType_APIC, &f), "apic", "APIC:");
    1252     SHOW_BOOLEAN_METHOD(   machine, GetCPUProperty(CPUPropertyType_X2APIC, &f), "x2apic", "X2APIC:");
    1253     SHOW_BOOLEAN_METHOD(   machine, GetCPUProperty(CPUPropertyType_HWVirt, &f), "nested-hw-virt", Info::tr("Nested VT-x/AMD-V:"));
     1260
     1261    switch (platformArch)
     1262    {
     1263        case PlatformArchitecture_x86:
     1264        {
     1265            ComPtr<IPlatformX86> platformX86;
     1266            CHECK_ERROR_RET(platform, COMGETTER(X86)(platformX86.asOutParam()), hrc);
     1267
     1268            SHOW_BOOLEAN_PROP(     platformX86, HPETEnabled, "hpet", Info::tr("HPET:"));
     1269            SHOW_BOOLEAN_METHOD(   platformX86, GetCPUProperty(CPUPropertyTypeX86_PAE, &f), "pae", "PAE:");
     1270            SHOW_BOOLEAN_METHOD(   platformX86, GetCPUProperty(CPUPropertyTypeX86_LongMode, &f), "longmode", Info::tr("Long Mode:"));
     1271            SHOW_BOOLEAN_METHOD(   platformX86, GetCPUProperty(CPUPropertyTypeX86_TripleFaultReset, &f), "triplefaultreset", Info::tr("Triple Fault Reset:"));
     1272            SHOW_BOOLEAN_METHOD(   platformX86, GetCPUProperty(CPUPropertyTypeX86_APIC, &f), "apic", "APIC:");
     1273            SHOW_BOOLEAN_METHOD(   platformX86, GetCPUProperty(CPUPropertyTypeX86_X2APIC, &f), "x2apic", "X2APIC:");
     1274            SHOW_BOOLEAN_METHOD(   platformX86, GetCPUProperty(CPUPropertyTypeX86_HWVirt, &f), "nested-hw-virt", Info::tr("Nested VT-x/AMD-V:"));
     1275
     1276            if (details != VMINFO_MACHINEREADABLE)
     1277                RTPrintf("%-28s ", Info::tr("CPUID overrides:"));
     1278            ULONG uOrdinal = 0;
     1279            for (uOrdinal = 0; uOrdinal < _4K; uOrdinal++)
     1280            {
     1281                ULONG uLeaf, uSubLeaf, uEAX, uEBX, uECX, uEDX;
     1282                hrc = platformX86->GetCPUIDLeafByOrdinal(uOrdinal, &uLeaf, &uSubLeaf, &uEAX, &uEBX, &uECX, &uEDX);
     1283                if (SUCCEEDED(hrc))
     1284                {
     1285                    if (details == VMINFO_MACHINEREADABLE)
     1286                        RTPrintf("cpuid=%08x,%08x,%08x,%08x,%08x,%08x", uLeaf, uSubLeaf, uEAX, uEBX, uECX, uEDX);
     1287                    else
     1288                    {
     1289                        if (!uOrdinal)
     1290                            RTPrintf(Info::tr("Leaf no.      EAX      EBX      ECX      EDX\n"));
     1291                        RTPrintf("%-28s %08x/%03x  %08x %08x %08x %08x\n", "", uLeaf, uSubLeaf, uEAX, uEBX, uECX, uEDX);
     1292                    }
     1293                }
     1294                else
     1295                {
     1296                    if (hrc != E_INVALIDARG)
     1297                        com::GlueHandleComError(machine, "GetCPUIDLeaf", hrc, __FILE__, __LINE__);
     1298                    break;
     1299                }
     1300            }
     1301            if (!uOrdinal && details != VMINFO_MACHINEREADABLE)
     1302                RTPrintf(Info::tr("None\n"));
     1303
     1304            SHOW_BOOLEAN_METHOD(platformX86, GetHWVirtExProperty(HWVirtExPropertyType_Enabled,   &f),   "hwvirtex",     Info::tr("Hardware Virtualization:"));
     1305            SHOW_BOOLEAN_METHOD(platformX86, GetHWVirtExProperty(HWVirtExPropertyType_NestedPaging, &f),"nestedpaging", Info::tr("Nested Paging:"));
     1306            SHOW_BOOLEAN_METHOD(platformX86, GetHWVirtExProperty(HWVirtExPropertyType_LargePages, &f),  "largepages",   Info::tr("Large Pages:"));
     1307            SHOW_BOOLEAN_METHOD(platformX86, GetHWVirtExProperty(HWVirtExPropertyType_VPID, &f),        "vtxvpid",      "VT-x VPID:");
     1308            SHOW_BOOLEAN_METHOD(platformX86, GetHWVirtExProperty(HWVirtExPropertyType_UnrestrictedExecution, &f), "vtxux", Info::tr("VT-x Unrestricted Exec.:"));
     1309            SHOW_BOOLEAN_METHOD(platformX86, GetHWVirtExProperty(HWVirtExPropertyType_VirtVmsaveVmload, &f),      "virtvmsavevmload", Info::tr("AMD-V Virt. Vmsave/Vmload:"));
     1310            break;
     1311        }
     1312
     1313        case PlatformArchitecture_ARM:
     1314        {
     1315            /** @todo BUGBUG ARM stuff here */
     1316            break;
     1317        }
     1318
     1319        default:
     1320            AssertFailed();
     1321            break;
     1322    }
     1323
    12541324    SHOW_ULONG_PROP(       machine, CPUIDPortabilityLevel, "cpuid-portability-level", Info::tr("CPUID Portability Level:"), "");
    1255 
    1256     if (details != VMINFO_MACHINEREADABLE)
    1257         RTPrintf("%-28s ", Info::tr("CPUID overrides:"));
    1258     ULONG uOrdinal = 0;
    1259     for (uOrdinal = 0; uOrdinal < _4K; uOrdinal++)
    1260     {
    1261         ULONG uLeaf, uSubLeaf, uEAX, uEBX, uECX, uEDX;
    1262         hrc = machine->GetCPUIDLeafByOrdinal(uOrdinal, &uLeaf, &uSubLeaf, &uEAX, &uEBX, &uECX, &uEDX);
    1263         if (SUCCEEDED(hrc))
    1264         {
    1265             if (details == VMINFO_MACHINEREADABLE)
    1266                 RTPrintf("cpuid=%08x,%08x,%08x,%08x,%08x,%08x", uLeaf, uSubLeaf, uEAX, uEBX, uECX, uEDX);
    1267             else
    1268             {
    1269                 if (!uOrdinal)
    1270                     RTPrintf(Info::tr("Leaf no.      EAX      EBX      ECX      EDX\n"));
    1271                 RTPrintf("%-28s %08x/%03x  %08x %08x %08x %08x\n", "", uLeaf, uSubLeaf, uEAX, uEBX, uECX, uEDX);
    1272             }
    1273         }
    1274         else
    1275         {
    1276             if (hrc != E_INVALIDARG)
    1277                 com::GlueHandleComError(machine, "GetCPUIDLeaf", hrc, __FILE__, __LINE__);
    1278             break;
    1279         }
    1280     }
    1281     if (!uOrdinal && details != VMINFO_MACHINEREADABLE)
    1282         RTPrintf(Info::tr("None\n"));
    1283 
    1284     ComPtr<IBIOSSettings> biosSettings;
    1285     CHECK_ERROR2I_RET(machine, COMGETTER(BIOSSettings)(biosSettings.asOutParam()), hrcCheck);
    12861325
    12871326    ComPtr<INvramStore> nvramStore;
    12881327    CHECK_ERROR2I_RET(machine, COMGETTER(NonVolatileStore)(nvramStore.asOutParam()), hrcCheck);
    12891328
    1290     BIOSBootMenuMode_T bootMenuMode;
    1291     CHECK_ERROR2I_RET(biosSettings, COMGETTER(BootMenuMode)(&bootMenuMode), hrcCheck);
     1329    FirmwareBootMenuMode_T enmBootMenuMode;
     1330    CHECK_ERROR2I_RET(firmwareSettings, COMGETTER(BootMenuMode)(&enmBootMenuMode), hrcCheck);
    12921331    const char *pszBootMenu;
    1293     switch (bootMenuMode)
    1294     {
    1295         case BIOSBootMenuMode_Disabled:
     1332    switch (enmBootMenuMode)
     1333    {
     1334        case FirmwareBootMenuMode_Disabled:
    12961335            if (details == VMINFO_MACHINEREADABLE)
    12971336                pszBootMenu = "disabled";
     
    12991338                pszBootMenu = Info::tr("disabled");
    13001339            break;
    1301         case BIOSBootMenuMode_MenuOnly:
     1340        case FirmwareBootMenuMode_MenuOnly:
    13021341            if (details == VMINFO_MACHINEREADABLE)
    13031342                pszBootMenu = "menuonly";
     
    13161355    CHECK_ERROR2I_RET(pVirtualBox, COMGETTER(SystemProperties)(systemProperties.asOutParam()), hrcCheck);
    13171356    ULONG maxBootPosition = 0;
    1318     CHECK_ERROR2I_RET(systemProperties, COMGETTER(MaxBootPosition)(&maxBootPosition), hrcCheck);
     1357    CHECK_ERROR2I_RET(platformProperties, COMGETTER(MaxBootPosition)(&maxBootPosition), hrcCheck);
    13191358    for (ULONG i = 1; i <= maxBootPosition; i++)
    13201359    {
     
    13391378    }
    13401379
    1341     SHOW_BOOLEAN_PROP(biosSettings, ACPIEnabled,                "acpi",                 "ACPI:");
    1342     SHOW_BOOLEAN_PROP(biosSettings, IOAPICEnabled,              "ioapic",               "IOAPIC:");
     1380    SHOW_BOOLEAN_PROP(firmwareSettings, ACPIEnabled,                "acpi",                 "ACPI:");
     1381    SHOW_BOOLEAN_PROP(firmwareSettings, IOAPICEnabled,              "ioapic",               "IOAPIC:");
    13431382
    13441383    APICMode_T apicMode;
    1345     CHECK_ERROR2I_RET(biosSettings, COMGETTER(APICMode)(&apicMode), hrcCheck);
     1384    CHECK_ERROR2I_RET(firmwareSettings, COMGETTER(APICMode)(&apicMode), hrcCheck);
    13461385    const char *pszAPIC;
    13471386    switch (apicMode)
     
    13691408    SHOW_UTF8_STRING("biosapic", Info::tr("BIOS APIC mode:"), pszAPIC);
    13701409
    1371     SHOW_LONG64_PROP(biosSettings,  TimeOffset, "biossystemtimeoffset", Info::tr("Time offset:"),  Info::tr("ms"));
     1410    SHOW_LONG64_PROP(firmwareSettings,  TimeOffset, "biossystemtimeoffset", Info::tr("Time offset:"),  Info::tr("ms"));
    13721411    Bstr bstrNVRAMFile;
    13731412    CHECK_ERROR2I_RET(nvramStore, COMGETTER(NonVolatileStorageFile)(bstrNVRAMFile.asOutParam()), hrcCheck);
    13741413    if (bstrNVRAMFile.isNotEmpty())
    13751414        SHOW_BSTR_STRING("BIOS NVRAM File", Info::tr("BIOS NVRAM File:"), bstrNVRAMFile);
    1376     SHOW_BOOLEAN_PROP_EX(machine,   RTCUseUTC, "rtcuseutc", Info::tr("RTC:"), "UTC", Info::tr("local time"));
    1377     SHOW_BOOLEAN_METHOD(machine, GetHWVirtExProperty(HWVirtExPropertyType_Enabled,   &f),   "hwvirtex",     Info::tr("Hardware Virtualization:"));
    1378     SHOW_BOOLEAN_METHOD(machine, GetHWVirtExProperty(HWVirtExPropertyType_NestedPaging, &f),"nestedpaging", Info::tr("Nested Paging:"));
    1379     SHOW_BOOLEAN_METHOD(machine, GetHWVirtExProperty(HWVirtExPropertyType_LargePages, &f),  "largepages",   Info::tr("Large Pages:"));
    1380     SHOW_BOOLEAN_METHOD(machine, GetHWVirtExProperty(HWVirtExPropertyType_VPID, &f),        "vtxvpid",      "VT-x VPID:");
    1381     SHOW_BOOLEAN_METHOD(machine, GetHWVirtExProperty(HWVirtExPropertyType_UnrestrictedExecution, &f), "vtxux", Info::tr("VT-x Unrestricted Exec.:"));
    1382     SHOW_BOOLEAN_METHOD(machine, GetHWVirtExProperty(HWVirtExPropertyType_VirtVmsaveVmload, &f),      "virtvmsavevmload", Info::tr("AMD-V Virt. Vmsave/Vmload:"));
    1383 
    1384 #ifdef VBOX_WITH_IOMMU_AMD
     1415    SHOW_BOOLEAN_PROP_EX(platform,   RTCUseUTC, "rtcuseutc", Info::tr("RTC:"), "UTC", Info::tr("local time"));
     1416
     1417#ifdef VBOX_WITH_IOMMU_AMD /** @todo BUGBUG Do we set / needs this for ARM as well? */
    13851418    IommuType_T iommuType;
    1386     CHECK_ERROR2I_RET(machine, COMGETTER(IommuType)(&iommuType), hrcCheck);
     1419    CHECK_ERROR2I_RET(platform, COMGETTER(IommuType)(&iommuType), hrcCheck);
    13871420    const char *pszIommuType = iommuTypeToString(iommuType, details);
    13881421    SHOW_UTF8_STRING("iommu", "IOMMU:", pszIommuType);
     
    15871620
    15881621    /* get the maximum amount of NICS */
    1589     ULONG maxNICs = getMaxNics(pVirtualBox, machine);
     1622    ULONG maxNICs = getMaxNics(machine);
    15901623
    15911624    for (ULONG currentNIC = 0; currentNIC < maxNICs; currentNIC++)
     
    20092042    /* get the maximum amount of UARTs */
    20102043    ULONG maxUARTs = 0;
    2011     sysProps->COMGETTER(SerialPortCount)(&maxUARTs);
     2044    platformProperties->COMGETTER(SerialPortCount)(&maxUARTs);
    20122045    for (ULONG currentUART = 0; currentUART < maxUARTs; currentUART++)
    20132046    {
     
    20302063            else
    20312064            {
    2032                 ULONG ulIRQ, ulIOBase;
     2065                ULONG ulIRQ, ulIOAddress;
    20332066                PortMode_T HostMode;
    20342067                Bstr path;
     
    20362069                UartType_T UartType;
    20372070                uart->COMGETTER(IRQ)(&ulIRQ);
    2038                 uart->COMGETTER(IOBase)(&ulIOBase);
     2071                uart->COMGETTER(IOAddress)(&ulIOAddress);
    20392072                uart->COMGETTER(Path)(path.asOutParam());
    20402073                uart->COMGETTER(Server)(&fServer);
     
    20432076
    20442077                if (details == VMINFO_MACHINEREADABLE)
    2045                     RTPrintf("%s=\"%#06x,%d\"\n", szNm, ulIOBase, ulIRQ);
     2078                    RTPrintf("%s=\"%#06x,%d\"\n", szNm, ulIOAddress, ulIRQ);
    20462079                else
    2047                     RTPrintf(Info::tr("%-28s I/O base: %#06x, IRQ: %d"), szNm, ulIOBase, ulIRQ);
     2080                    RTPrintf(Info::tr("%-28s I/O address: %#06x, IRQ: %d"), szNm, ulIOAddress, ulIRQ);
    20482081                switch (HostMode)
    20492082                {
     
    21152148    /* get the maximum amount of LPTs */
    21162149    ULONG maxLPTs = 0;
    2117     sysProps->COMGETTER(ParallelPortCount)(&maxLPTs);
     2150    platformProperties->COMGETTER(ParallelPortCount)(&maxLPTs);
    21182151    for (ULONG currentLPT = 0; currentLPT < maxLPTs; currentLPT++)
    21192152    {
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageList.cpp

    r100772 r101035  
    732732    CHECK_ERROR2I_RET(pVirtualBox, COMGETTER(SystemProperties)(systemProperties.asOutParam()), hrcCheck);
    733733
     734    ComPtr<IPlatformProperties> platformProperties;
     735    CHECK_ERROR2I_RET(systemProperties, COMGETTER(Platform)(platformProperties.asOutParam()), hrcCheck);
     736
    734737    Bstr str;
    735738    ULONG ulValue;
     
    757760    systemProperties->COMGETTER(InfoVDSize)(&i64Value);
    758761    RTPrintf(List::tr("Virtual disk limit (info):       %lld Bytes\n", "" , i64Value), i64Value);
    759     systemProperties->COMGETTER(SerialPortCount)(&ulValue);
     762    platformProperties->COMGETTER(SerialPortCount)(&ulValue);
    760763    RTPrintf(List::tr("Maximum Serial Port count:       %u\n"), ulValue);
    761     systemProperties->COMGETTER(ParallelPortCount)(&ulValue);
     764    platformProperties->COMGETTER(ParallelPortCount)(&ulValue);
    762765    RTPrintf(List::tr("Maximum Parallel Port count:     %u\n"), ulValue);
    763     systemProperties->COMGETTER(MaxBootPosition)(&ulValue);
     766    platformProperties->COMGETTER(MaxBootPosition)(&ulValue);
    764767    RTPrintf(List::tr("Maximum Boot Position:           %u\n"), ulValue);
    765     systemProperties->GetMaxNetworkAdapters(ChipsetType_PIIX3, &ulValue);
     768    platformProperties->GetMaxNetworkAdapters(ChipsetType_PIIX3, &ulValue);
    766769    RTPrintf(List::tr("Maximum PIIX3 Network Adapter count:   %u\n"), ulValue);
    767     systemProperties->GetMaxNetworkAdapters(ChipsetType_ICH9,  &ulValue);
     770    platformProperties->GetMaxNetworkAdapters(ChipsetType_ICH9,  &ulValue);
    768771    RTPrintf(List::tr("Maximum ICH9 Network Adapter count:   %u\n"), ulValue);
    769     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_IDE, &ulValue);
     772    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_IDE, &ulValue);
    770773    RTPrintf(List::tr("Maximum PIIX3 IDE Controllers:   %u\n"), ulValue);
    771     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_IDE, &ulValue);
     774    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_IDE, &ulValue);
    772775    RTPrintf(List::tr("Maximum ICH9 IDE Controllers:    %u\n"), ulValue);
    773     systemProperties->GetMaxPortCountForStorageBus(StorageBus_IDE, &ulValue);
     776    platformProperties->GetMaxPortCountForStorageBus(StorageBus_IDE, &ulValue);
    774777    RTPrintf(List::tr("Maximum IDE Port count:          %u\n"), ulValue);
    775     systemProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_IDE, &ulValue);
     778    platformProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_IDE, &ulValue);
    776779    RTPrintf(List::tr("Maximum Devices per IDE Port:    %u\n"), ulValue);
    777     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_SATA, &ulValue);
     780    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_SATA, &ulValue);
    778781    RTPrintf(List::tr("Maximum PIIX3 SATA Controllers:  %u\n"), ulValue);
    779     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_SATA, &ulValue);
     782    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_SATA, &ulValue);
    780783    RTPrintf(List::tr("Maximum ICH9 SATA Controllers:   %u\n"), ulValue);
    781     systemProperties->GetMaxPortCountForStorageBus(StorageBus_SATA, &ulValue);
     784    platformProperties->GetMaxPortCountForStorageBus(StorageBus_SATA, &ulValue);
    782785    RTPrintf(List::tr("Maximum SATA Port count:         %u\n"), ulValue);
    783     systemProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_SATA, &ulValue);
     786    platformProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_SATA, &ulValue);
    784787    RTPrintf(List::tr("Maximum Devices per SATA Port:   %u\n"), ulValue);
    785     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_SCSI, &ulValue);
     788    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_SCSI, &ulValue);
    786789    RTPrintf(List::tr("Maximum PIIX3 SCSI Controllers:  %u\n"), ulValue);
    787     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_SCSI, &ulValue);
     790    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_SCSI, &ulValue);
    788791    RTPrintf(List::tr("Maximum ICH9 SCSI Controllers:   %u\n"), ulValue);
    789     systemProperties->GetMaxPortCountForStorageBus(StorageBus_SCSI, &ulValue);
     792    platformProperties->GetMaxPortCountForStorageBus(StorageBus_SCSI, &ulValue);
    790793    RTPrintf(List::tr("Maximum SCSI Port count:         %u\n"), ulValue);
    791     systemProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_SCSI, &ulValue);
     794    platformProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_SCSI, &ulValue);
    792795    RTPrintf(List::tr("Maximum Devices per SCSI Port:   %u\n"), ulValue);
    793     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_SAS, &ulValue);
     796    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_SAS, &ulValue);
    794797    RTPrintf(List::tr("Maximum SAS PIIX3 Controllers:   %u\n"), ulValue);
    795     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_SAS, &ulValue);
     798    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_SAS, &ulValue);
    796799    RTPrintf(List::tr("Maximum SAS ICH9 Controllers:    %u\n"), ulValue);
    797     systemProperties->GetMaxPortCountForStorageBus(StorageBus_SAS, &ulValue);
     800    platformProperties->GetMaxPortCountForStorageBus(StorageBus_SAS, &ulValue);
    798801    RTPrintf(List::tr("Maximum SAS Port count:          %u\n"), ulValue);
    799     systemProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_SAS, &ulValue);
     802    platformProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_SAS, &ulValue);
    800803    RTPrintf(List::tr("Maximum Devices per SAS Port:    %u\n"), ulValue);
    801     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_PCIe, &ulValue);
     804    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_PCIe, &ulValue);
    802805    RTPrintf(List::tr("Maximum NVMe PIIX3 Controllers:  %u\n"), ulValue);
    803     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_PCIe, &ulValue);
     806    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_PCIe, &ulValue);
    804807    RTPrintf(List::tr("Maximum NVMe ICH9 Controllers:   %u\n"), ulValue);
    805     systemProperties->GetMaxPortCountForStorageBus(StorageBus_PCIe, &ulValue);
     808    platformProperties->GetMaxPortCountForStorageBus(StorageBus_PCIe, &ulValue);
    806809    RTPrintf(List::tr("Maximum NVMe Port count:         %u\n"), ulValue);
    807     systemProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_PCIe, &ulValue);
     810    platformProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_PCIe, &ulValue);
    808811    RTPrintf(List::tr("Maximum Devices per NVMe Port:   %u\n"), ulValue);
    809     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_VirtioSCSI, &ulValue);
     812    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_VirtioSCSI, &ulValue);
    810813    RTPrintf(List::tr("Maximum virtio-scsi PIIX3 Controllers:  %u\n"), ulValue);
    811     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_VirtioSCSI, &ulValue);
     814    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_VirtioSCSI, &ulValue);
    812815    RTPrintf(List::tr("Maximum virtio-scsi ICH9 Controllers:   %u\n"), ulValue);
    813     systemProperties->GetMaxPortCountForStorageBus(StorageBus_VirtioSCSI, &ulValue);
     816    platformProperties->GetMaxPortCountForStorageBus(StorageBus_VirtioSCSI, &ulValue);
    814817    RTPrintf(List::tr("Maximum virtio-scsi Port count:         %u\n"), ulValue);
    815     systemProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_VirtioSCSI, &ulValue);
     818    platformProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_VirtioSCSI, &ulValue);
    816819    RTPrintf(List::tr("Maximum Devices per virtio-scsi Port:   %u\n"), ulValue);
    817     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_Floppy, &ulValue);
     820    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_PIIX3, StorageBus_Floppy, &ulValue);
    818821    RTPrintf(List::tr("Maximum PIIX3 Floppy Controllers:%u\n"), ulValue);
    819     systemProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_Floppy, &ulValue);
     822    platformProperties->GetMaxInstancesOfStorageBus(ChipsetType_ICH9, StorageBus_Floppy, &ulValue);
    820823    RTPrintf(List::tr("Maximum ICH9 Floppy Controllers: %u\n"), ulValue);
    821     systemProperties->GetMaxPortCountForStorageBus(StorageBus_Floppy, &ulValue);
     824    platformProperties->GetMaxPortCountForStorageBus(StorageBus_Floppy, &ulValue);
    822825    RTPrintf(List::tr("Maximum Floppy Port count:       %u\n"), ulValue);
    823     systemProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_Floppy, &ulValue);
     826    platformProperties->GetMaxDevicesPerPortForStorageBus(StorageBus_Floppy, &ulValue);
    824827    RTPrintf(List::tr("Maximum Devices per Floppy Port: %u\n"), ulValue);
    825828#if 0
     
    835838    systemProperties->COMGETTER(DefaultMachineFolder)(str.asOutParam());
    836839    RTPrintf(List::tr("Default machine folder:          %ls\n"), str.raw());
    837     systemProperties->COMGETTER(RawModeSupported)(&fValue);
     840    platformProperties->COMGETTER(RawModeSupported)(&fValue);
    838841    RTPrintf(List::tr("Raw-mode Supported:              %s\n"), fValue ? List::tr("yes") : List::tr("no"));
    839     systemProperties->COMGETTER(ExclusiveHwVirt)(&fValue);
     842    platformProperties->COMGETTER(ExclusiveHwVirt)(&fValue);
    840843    RTPrintf(List::tr("Exclusive HW virtualization use: %s\n"), fValue ? List::tr("on") : List::tr("off"));
    841844    systemProperties->COMGETTER(DefaultHardDiskFormat)(str.asOutParam());
     
    14421445    switch (enmArchitecture)
    14431446    {
    1444         case CPUArchitecture_x86:       pszArchitecture = "x86"; break;
    1445         case CPUArchitecture_AMD64:     pszArchitecture = "AMD64"; break;
    1446 
     1447        case CPUArchitecture_x86:      pszArchitecture = "x86"; break;
     1448        case CPUArchitecture_AMD64:    pszArchitecture = "AMD64"; break;
     1449        case CPUArchitecture_ARMv8_32: pszArchitecture = "ARMv8 (32-bit only)"; break;
     1450        case CPUArchitecture_ARMv8_64: pszArchitecture = "ARMv8 (64-bit)"; break;
    14471451#ifdef VBOX_WITH_XPCOM_CPP_ENUM_HACK
    14481452        case CPUArchitecture_32BitHack:
     
    21542158        {
    21552159            ComPtr<IHost> Host;
    2156             CHECK_ERROR(pVirtualBox, COMGETTER(Host)(Host.asOutParam()));
    2157 
    2158             RTPrintf(List::tr("Host CPUIDs:\n\nLeaf no.  EAX      EBX      ECX      EDX\n"));
    2159             ULONG uCpuNo = 0; /* ASSUMES that CPU#0 is online. */
    2160             static uint32_t const s_auCpuIdRanges[] =
     2160            CHECK_ERROR_BREAK(pVirtualBox, COMGETTER(Host)(Host.asOutParam()));
     2161            PlatformArchitecture_T platformArch;
     2162            CHECK_ERROR_BREAK(Host, COMGETTER(Architecture)(&platformArch));
     2163
     2164            switch (platformArch)
    21612165            {
    2162                 UINT32_C(0x00000000), UINT32_C(0x0000007f),
    2163                 UINT32_C(0x80000000), UINT32_C(0x8000007f),
    2164                 UINT32_C(0xc0000000), UINT32_C(0xc000007f)
    2165             };
    2166             for (unsigned i = 0; i < RT_ELEMENTS(s_auCpuIdRanges); i += 2)
    2167             {
    2168                 ULONG uEAX, uEBX, uECX, uEDX, cLeafs;
    2169                 CHECK_ERROR(Host, GetProcessorCPUIDLeaf(uCpuNo, s_auCpuIdRanges[i], 0, &cLeafs, &uEBX, &uECX, &uEDX));
    2170                 if (cLeafs < s_auCpuIdRanges[i] || cLeafs > s_auCpuIdRanges[i+1])
    2171                     continue;
    2172                 cLeafs++;
    2173                 for (ULONG iLeaf = s_auCpuIdRanges[i]; iLeaf <= cLeafs; iLeaf++)
     2166                case PlatformArchitecture_x86:
    21742167                {
    2175                     CHECK_ERROR(Host, GetProcessorCPUIDLeaf(uCpuNo, iLeaf, 0, &uEAX, &uEBX, &uECX, &uEDX));
    2176                     RTPrintf("%08x  %08x %08x %08x %08x\n", iLeaf, uEAX, uEBX, uECX, uEDX);
     2168                    ComPtr<IHostX86> HostX86;
     2169                    CHECK_ERROR_BREAK(Host, COMGETTER(X86)(HostX86.asOutParam()));
     2170
     2171                    RTPrintf(List::tr("Host CPUIDs:\n\nLeaf no.  EAX      EBX      ECX      EDX\n"));
     2172                    ULONG uCpuNo = 0; /* ASSUMES that CPU#0 is online. */
     2173                    static uint32_t const s_auCpuIdRanges[] =
     2174                    {
     2175                        UINT32_C(0x00000000), UINT32_C(0x0000007f),
     2176                        UINT32_C(0x80000000), UINT32_C(0x8000007f),
     2177                        UINT32_C(0xc0000000), UINT32_C(0xc000007f)
     2178                    };
     2179                    for (unsigned i = 0; i < RT_ELEMENTS(s_auCpuIdRanges); i += 2)
     2180                    {
     2181                        ULONG uEAX, uEBX, uECX, uEDX, cLeafs;
     2182                        CHECK_ERROR(HostX86, GetProcessorCPUIDLeaf(uCpuNo, s_auCpuIdRanges[i], 0, &cLeafs, &uEBX, &uECX, &uEDX));
     2183                        if (cLeafs < s_auCpuIdRanges[i] || cLeafs > s_auCpuIdRanges[i+1])
     2184                            continue;
     2185                        cLeafs++;
     2186                        for (ULONG iLeaf = s_auCpuIdRanges[i]; iLeaf <= cLeafs; iLeaf++)
     2187                        {
     2188                            CHECK_ERROR(HostX86, GetProcessorCPUIDLeaf(uCpuNo, iLeaf, 0, &uEAX, &uEBX, &uECX, &uEDX));
     2189                            RTPrintf("%08x  %08x %08x %08x %08x\n", iLeaf, uEAX, uEBX, uECX, uEDX);
     2190                        }
     2191                    }
     2192
     2193                    break;
    21772194                }
     2195
     2196                case PlatformArchitecture_ARM:
     2197                {
     2198                    /** @todo BUGBUG Implement this for ARM! */
     2199                    break;
     2200                }
     2201
     2202                default:
     2203                    AssertFailed();
     2204                    break;
    21782205            }
    21792206            break;
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp

    r99775 r101035  
    263263static const RTGETOPTDEF g_aCreateVMOptions[] =
    264264{
    265     { "--name",           'n', RTGETOPT_REQ_STRING },
    266     { "-name",            'n', RTGETOPT_REQ_STRING },
    267     { "--groups",         'g', RTGETOPT_REQ_STRING },
    268     { "--basefolder",     'p', RTGETOPT_REQ_STRING },
    269     { "-basefolder",      'p', RTGETOPT_REQ_STRING },
    270     { "--ostype",         'o', RTGETOPT_REQ_STRING },
    271     { "-ostype",          'o', RTGETOPT_REQ_STRING },
    272     { "--uuid",           'u', RTGETOPT_REQ_UUID },
    273     { "-uuid",            'u', RTGETOPT_REQ_UUID },
    274     { "--register",       'r', RTGETOPT_REQ_NOTHING },
    275     { "-register",        'r', RTGETOPT_REQ_NOTHING },
    276     { "--default",        'd', RTGETOPT_REQ_NOTHING },
    277     { "-default",         'd', RTGETOPT_REQ_NOTHING },
    278     { "--cipher",         'c', RTGETOPT_REQ_STRING },
    279     { "-cipher",          'c', RTGETOPT_REQ_STRING },
    280     { "--password-id",    'i', RTGETOPT_REQ_STRING },
    281     { "-password-id",     'i', RTGETOPT_REQ_STRING },
    282     { "--password",       'w', RTGETOPT_REQ_STRING },
    283     { "-password",        'w', RTGETOPT_REQ_STRING },
     265    { "--name",                  'n', RTGETOPT_REQ_STRING },
     266    { "-name",                   'n', RTGETOPT_REQ_STRING },
     267    { "--groups",                'g', RTGETOPT_REQ_STRING },
     268    { "--basefolder",            'p', RTGETOPT_REQ_STRING },
     269    { "-basefolder",             'p', RTGETOPT_REQ_STRING },
     270    { "--ostype",                'o', RTGETOPT_REQ_STRING },
     271    { "-ostype",                 'o', RTGETOPT_REQ_STRING },
     272    { "--uuid",                  'u', RTGETOPT_REQ_UUID },
     273    { "-uuid",                   'u', RTGETOPT_REQ_UUID },
     274    { "--register",              'r', RTGETOPT_REQ_NOTHING },
     275    { "-register",               'r', RTGETOPT_REQ_NOTHING },
     276    { "--default",               'd', RTGETOPT_REQ_NOTHING },
     277    { "-default",                'd', RTGETOPT_REQ_NOTHING },
     278    { "--cipher",                'c', RTGETOPT_REQ_STRING },
     279    { "-cipher",                 'c', RTGETOPT_REQ_STRING },
     280    { "--password-id",           'i', RTGETOPT_REQ_STRING },
     281    { "-password-id",            'i', RTGETOPT_REQ_STRING },
     282    { "--password",              'w', RTGETOPT_REQ_STRING },
     283    { "-password",               'w', RTGETOPT_REQ_STRING },
     284    { "--platform-architecture", 'a', RTGETOPT_REQ_STRING },
     285    { "--platform-arch",         'a', RTGETOPT_REQ_STRING }, /* Shorter. */
    284286};
    285287
     
    287289{
    288290    HRESULT hrc;
     291    PlatformArchitecture_T platformArch = PlatformArchitecture_None;
    289292    Bstr bstrBaseFolder;
    290293    Bstr bstrName;
     
    350353                break;
    351354
     355            case 'a':   // --platform-architecture
     356                if (!RTStrICmp(ValueUnion.psz, "x86"))
     357                    platformArch = PlatformArchitecture_x86;
     358                else if (!RTStrICmp(ValueUnion.psz, "arm"))
     359                    platformArch = PlatformArchitecture_ARM;
     360                else
     361                    return errorArgument(Misc::tr("Invalid --platform-architecture argument '%s'"), ValueUnion.psz);
     362                break;
     363
    352364            default:
    353365                return errorGetOpt(c, &ValueUnion);
     
    356368
    357369    /* check for required options */
     370    if (platformArch == PlatformArchitecture_None)
     371        return errorSyntax(Misc::tr("Parameter --platform-architecture is required"));
    358372    if (bstrName.isEmpty())
    359373        return errorSyntax(Misc::tr("Parameter --name is required"));
     
    398412                          CreateMachine(bstrSettingsFile.raw(),
    399413                                        bstrName.raw(),
     414                                        platformArch,
    400415                                        ComSafeArrayAsInParam(groups),
    401416                                        bstrOsTypeId.raw(),
     
    670685                    RTEXITCODE_FAILURE);
    671686
     687    /* Get the platform architecture, to clone a VM which has the same architecture. */
     688    ComPtr<IPlatform>      platform;
     689    CHECK_ERROR_RET(srcMachine, COMGETTER(Platform)(platform.asOutParam()), RTEXITCODE_FAILURE);
     690    PlatformArchitecture_T platformArch;
     691    CHECK_ERROR_RET(platform, COMGETTER(Architecture)(&platformArch), RTEXITCODE_FAILURE);
     692
    672693    /* If a snapshot name/uuid was given, get the particular machine of this
    673694     * snapshot. */
     
    704725    CHECK_ERROR_RET(a->virtualBox, CreateMachine(bstrSettingsFile.raw(),
    705726                                                 Bstr(pszTrgName).raw(),
     727                                                 platformArch,
    706728                                                 ComSafeArrayAsInParam(groups),
    707729                                                 NULL,
     
    14191441}
    14201442
    1421 RTEXITCODE handleSetProperty(HandlerArg *a)
     1443RTEXITCODE handleSetProperty(HandlerArg *a) /** @todo r=andy Rename this to handle[Get|Set]SystemProperty? */
    14221444{
    14231445    HRESULT hrc;
     
    14291451    ComPtr<ISystemProperties> systemProperties;
    14301452    a->virtualBox->COMGETTER(SystemProperties)(systemProperties.asOutParam());
     1453
     1454    ComPtr<IPlatformProperties> platformProperties;
     1455    systemProperties->COMGETTER(Platform)(platformProperties.asOutParam());
    14311456
    14321457    if (!strcmp(a->argv[0], "machinefolder"))
     
    14481473        else
    14491474            return errorArgument(Misc::tr("Invalid hwvirtexclusive argument '%s'"), a->argv[1]);
    1450         CHECK_ERROR(systemProperties, COMSETTER(ExclusiveHwVirt)(fHwVirtExclusive));
     1475        CHECK_ERROR(platformProperties, COMSETTER(ExclusiveHwVirt)(fHwVirtExclusive));
    14511476    }
    14521477    else if (   !strcmp(a->argv[0], "vrdeauthlibrary")
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r98298 r101035  
    7272    MODIFYVM_ACPI,
    7373    MODIFYVM_IOAPIC,
    74     MODIFYVM_PAE,
    75     MODIFYVM_LONGMODE,
    7674    MODIFYVM_CPUID_PORTABILITY,
    77     MODIFYVM_TFRESET,
    78     MODIFYVM_APIC,
    79     MODIFYVM_X2APIC,
    8075    MODIFYVM_PARAVIRTPROVIDER,
    8176    MODIFYVM_PARAVIRTDEBUG,
    82     MODIFYVM_HWVIRTEX,
    83     MODIFYVM_NESTEDPAGING,
    84     MODIFYVM_LARGEPAGES,
    85     MODIFYVM_VTXVPID,
    86     MODIFYVM_VTXUX,
    87     MODIFYVM_VIRT_VMSAVE_VMLOAD,
    88     MODIFYVM_IBPB_ON_VM_EXIT,
    89     MODIFYVM_IBPB_ON_VM_ENTRY,
    90     MODIFYVM_SPEC_CTRL,
    91     MODIFYVM_L1D_FLUSH_ON_SCHED,
    92     MODIFYVM_L1D_FLUSH_ON_VM_ENTRY,
    93     MODIFYVM_MDS_CLEAR_ON_SCHED,
    94     MODIFYVM_MDS_CLEAR_ON_VM_ENTRY,
    95     MODIFYVM_NESTED_HW_VIRT,
    9677    MODIFYVM_CPUS,
    9778    MODIFYVM_CPUHOTPLUG,
     
    9980    MODIFYVM_PLUGCPU,
    10081    MODIFYVM_UNPLUGCPU,
    101     MODIFYVM_SETCPUID,
    102     MODIFYVM_DELCPUID,
    103     MODIFYVM_DELCPUID_OLD,      // legacy, different syntax from MODIFYVM_DELCPUID
    104     MODIFYVM_DELALLCPUID,
    10582    MODIFYVM_GRAPHICSCONTROLLER,
    10683    MODIFYVM_MONITORCOUNT,
     
    10986    MODIFYVM_ACCELERATE2DVIDEO,
    11087#endif
    111     MODIFYVM_BIOSLOGOFADEIN,
    112     MODIFYVM_BIOSLOGOFADEOUT,
    113     MODIFYVM_BIOSLOGODISPLAYTIME,
    114     MODIFYVM_BIOSLOGOIMAGEPATH,
    115     MODIFYVM_BIOSBOOTMENU,
    116     MODIFYVM_BIOSAPIC,
    117     MODIFYVM_BIOSSYSTEMTIMEOFFSET,
    118     MODIFYVM_BIOSPXEDEBUG,
     88    /*
     89     * Firmware-specific stuff.
     90     */
     91    MODIFYVM_FWLOGOFADEIN,
     92    MODIFYVM_FWLOGOFADEOUT,
     93    MODIFYVM_FWLOGODISPLAYTIME,
     94    MODIFYVM_FWLOGOIMAGEPATH,
     95    MODIFYVM_FWBOOTMENU,
     96    MODIFYVM_FWAPIC,
     97    MODIFYVM_FWSYSTEMTIMEOFFSET,
     98    MODIFYVM_FWPXEDEBUG,
    11999    MODIFYVM_SYSTEMUUIDLE,
    120100    MODIFYVM_BOOT,
     
    224204    MODIFYVM_TRACING_ALLOW_VM_ACCESS,
    225205    MODIFYVM_HARDWARE_UUID,
    226     MODIFYVM_HPET,
    227206    MODIFYVM_IOCACHE,
    228207    MODIFYVM_IOCACHESIZE,
     
    269248    MODIFYVM_GUEST_DEBUG_ADDRESS,
    270249    MODIFYVM_GUEST_DEBUG_PORT,
     250    /*
     251     * x86-specific stuff.
     252     */
     253    MODIFYVM_X86_APIC,
     254    MODIFYVM_X86_DELCPUID,
     255    MODIFYVM_X86_DELCPUID_OLD,      // legacy, different syntax from MODIFYVM_DELCPUID
     256    MODIFYVM_X86_DELALLCPUID,
     257    MODIFYVM_X86_HPET,
     258    MODIFYVM_X86_HWVIRTEX,
     259    MODIFYVM_X86_IBPB_ON_VM_ENTRY,
     260    MODIFYVM_X86_IBPB_ON_VM_EXIT,
     261    MODIFYVM_X86_L1D_FLUSH_ON_SCHED,
     262    MODIFYVM_X86_L1D_FLUSH_ON_VM_ENTRY,
     263    MODIFYVM_X86_LARGEPAGES,
     264    MODIFYVM_X86_LONGMODE,
     265    MODIFYVM_X86_MDS_CLEAR_ON_SCHED,
     266    MODIFYVM_X86_MDS_CLEAR_ON_VM_ENTRY,
     267    MODIFYVM_X86_NESTED_HW_VIRT,
     268    MODIFYVM_X86_NESTEDPAGING,
     269    MODIFYVM_X86_PAE,
     270    MODIFYVM_X86_SETCPUID,
     271    MODIFYVM_X86_SPEC_CTRL,
     272    MODIFYVM_X86_TFRESET,
     273    MODIFYVM_X86_VIRT_VMSAVE_VMLOAD,
     274    MODIFYVM_X86_VTXUX,
     275    MODIFYVM_X86_VTXVPID,
     276    MODIFYVM_X86_X2APIC
    271277};
    272278
     
    284290    OPT1("--acpi",                                                      MODIFYVM_ACPI,                      RTGETOPT_REQ_BOOL_ONOFF),
    285291    OPT1("--ioapic",                                                    MODIFYVM_IOAPIC,                    RTGETOPT_REQ_BOOL_ONOFF),
    286     OPT1("--pae",                                                       MODIFYVM_PAE,                       RTGETOPT_REQ_BOOL_ONOFF),
    287     OPT2("--long-mode",                     "--longmode",               MODIFYVM_LONGMODE,                  RTGETOPT_REQ_BOOL_ONOFF),
    288292    OPT1("--cpuid-portability-level",                                   MODIFYVM_CPUID_PORTABILITY,         RTGETOPT_REQ_UINT32),
    289     OPT2("--triple-fault-reset",            "--triplefaultreset",       MODIFYVM_TFRESET,                   RTGETOPT_REQ_BOOL_ONOFF),
    290     OPT1("--apic",                                                      MODIFYVM_APIC,                      RTGETOPT_REQ_BOOL_ONOFF),
    291     OPT1("--x2apic",                                                    MODIFYVM_X2APIC,                    RTGETOPT_REQ_BOOL_ONOFF),
    292293    OPT2("--paravirt-provider",             "--paravirtprovider",       MODIFYVM_PARAVIRTPROVIDER,          RTGETOPT_REQ_STRING),
    293294    OPT2("--paravirt-debug",                "--paravirtdebug",          MODIFYVM_PARAVIRTDEBUG,             RTGETOPT_REQ_STRING),
    294     OPT1("--hwvirtex",                                                  MODIFYVM_HWVIRTEX,                  RTGETOPT_REQ_BOOL_ONOFF),
    295     OPT2("--nested-paging",                 "--nestedpaging",           MODIFYVM_NESTEDPAGING,              RTGETOPT_REQ_BOOL_ONOFF),
    296     OPT2("--large-pages",                   "--largepages",             MODIFYVM_LARGEPAGES,                RTGETOPT_REQ_BOOL_ONOFF),
    297     OPT2("--vtx-vpid",                      "--vtxvpid",                MODIFYVM_VTXVPID,                   RTGETOPT_REQ_BOOL_ONOFF),
    298     OPT2("--vtx-ux",                        "--vtxux",                  MODIFYVM_VTXUX,                     RTGETOPT_REQ_BOOL_ONOFF),
    299     OPT1("--virt-vmsave-vmload",                                        MODIFYVM_VIRT_VMSAVE_VMLOAD,        RTGETOPT_REQ_BOOL_ONOFF),
    300     OPT1("--ibpb-on-vm-exit",                                           MODIFYVM_IBPB_ON_VM_EXIT,           RTGETOPT_REQ_BOOL_ONOFF),
    301     OPT1("--ibpb-on-vm-entry",                                          MODIFYVM_IBPB_ON_VM_ENTRY,          RTGETOPT_REQ_BOOL_ONOFF),
    302     OPT1("--spec-ctrl",                                                 MODIFYVM_SPEC_CTRL,                 RTGETOPT_REQ_BOOL_ONOFF),
    303     OPT1("--l1d-flush-on-sched",                                        MODIFYVM_L1D_FLUSH_ON_SCHED,        RTGETOPT_REQ_BOOL_ONOFF),
    304     OPT1("--l1d-flush-on-vm-entry",                                     MODIFYVM_L1D_FLUSH_ON_VM_ENTRY,     RTGETOPT_REQ_BOOL_ONOFF),
    305     OPT1("--mds-clear-on-sched",                                        MODIFYVM_MDS_CLEAR_ON_SCHED,        RTGETOPT_REQ_BOOL_ONOFF),
    306     OPT1("--mds-clear-on-vm-entry",                                     MODIFYVM_MDS_CLEAR_ON_VM_ENTRY,     RTGETOPT_REQ_BOOL_ONOFF),
    307     OPT1("--nested-hw-virt",                                            MODIFYVM_NESTED_HW_VIRT,            RTGETOPT_REQ_BOOL_ONOFF),
    308     OPT2("--cpuid-set",                     "--cpuidset",               MODIFYVM_SETCPUID,                  RTGETOPT_REQ_UINT32_OPTIONAL_PAIR | RTGETOPT_FLAG_HEX),
    309     OPT1("--cpuid-remove",                                              MODIFYVM_DELCPUID,                  RTGETOPT_REQ_UINT32_OPTIONAL_PAIR | RTGETOPT_FLAG_HEX),
    310     OPT1("--cpuidremove",                                               MODIFYVM_DELCPUID_OLD,              RTGETOPT_REQ_UINT32 | RTGETOPT_FLAG_HEX), /* legacy - syntax differs */
    311     OPT2("--cpuid-remove-all",              "--cpuidremoveall",         MODIFYVM_DELALLCPUID,               RTGETOPT_REQ_NOTHING),
    312295    OPT1("--cpus",                                                      MODIFYVM_CPUS,                      RTGETOPT_REQ_UINT32),
    313296    OPT2("--cpu-hotplug",                   "--cpuhotplug",             MODIFYVM_CPUHOTPLUG,                RTGETOPT_REQ_BOOL_ONOFF),
     
    323306    OPT2("--accelerate-2d-video",           "--accelerate2dvideo",      MODIFYVM_ACCELERATE2DVIDEO,         RTGETOPT_REQ_BOOL_ONOFF),
    324307#endif
    325     OPT2("--bios-logo-fade-in",             "--bioslogofadein",         MODIFYVM_BIOSLOGOFADEIN,            RTGETOPT_REQ_BOOL_ONOFF),
    326     OPT2("--bios-logo-fade-out",            "--bioslogofadeout",        MODIFYVM_BIOSLOGOFADEOUT,           RTGETOPT_REQ_BOOL_ONOFF),
    327     OPT2("--bios-logo-display-time",        "--bioslogodisplaytime",    MODIFYVM_BIOSLOGODISPLAYTIME,       RTGETOPT_REQ_UINT32),
    328     OPT2("--bios-logo-image-path",          "--bioslogoimagepath",      MODIFYVM_BIOSLOGOIMAGEPATH,         RTGETOPT_REQ_STRING),
    329     OPT2("--bios-boot-menu",                "--biosbootmenu",           MODIFYVM_BIOSBOOTMENU,              RTGETOPT_REQ_STRING),
    330     OPT2("--bios-system-time-offset",       "--biossystemtimeoffset",   MODIFYVM_BIOSSYSTEMTIMEOFFSET,      RTGETOPT_REQ_INT64),
    331     OPT2("--bios-apic",                     "--biosapic",               MODIFYVM_BIOSAPIC,                  RTGETOPT_REQ_STRING),
    332     OPT2("--bios-pxe-debug",                "--biospxedebug",           MODIFYVM_BIOSPXEDEBUG,              RTGETOPT_REQ_BOOL_ONOFF),
     308    /** Kept for backwards-compatibility. */
     309    OPT1("--firmware-logo-fade-in",                                     MODIFYVM_FWLOGOFADEIN,              RTGETOPT_REQ_BOOL_ONOFF),
     310    /** Kept for backwards-compatibility. */
     311    OPT2("--bios-logo-fade-in",             "--bioslogofadein",         MODIFYVM_FWLOGOFADEIN,              RTGETOPT_REQ_BOOL_ONOFF),
     312    OPT1("--firmware-fade-out",                                         MODIFYVM_FWLOGOFADEOUT,             RTGETOPT_REQ_BOOL_ONOFF),
     313    /** Kept for backwards-compatibility. */
     314    OPT2("--bios-logo-fade-out",            "--bioslogofadeout",        MODIFYVM_FWLOGOFADEOUT,             RTGETOPT_REQ_BOOL_ONOFF),
     315    OPT1("--firmware-logo-display-time",                                MODIFYVM_FWLOGODISPLAYTIME,         RTGETOPT_REQ_UINT32),
     316    /** Kept for backwards-compatibility. */
     317    OPT2("--bios-logo-display-time",        "--bioslogodisplaytime",    MODIFYVM_FWLOGODISPLAYTIME,         RTGETOPT_REQ_UINT32),
     318    OPT1("--firmware-logo-image-path",                                  MODIFYVM_FWLOGOIMAGEPATH,           RTGETOPT_REQ_STRING),
     319    /** Kept for backwards-compatibility. */
     320    OPT2("--bios-logo-image-path",          "--bioslogoimagepath",      MODIFYVM_FWLOGOIMAGEPATH,           RTGETOPT_REQ_STRING),
     321    OPT1("--firmware-boot-menu",                                        MODIFYVM_FWBOOTMENU,                RTGETOPT_REQ_STRING),
     322    /** Kept for backwards-compatibility. */
     323    OPT2("--bios-boot-menu",                "--biosbootmenu",           MODIFYVM_FWBOOTMENU,                RTGETOPT_REQ_STRING),
     324    OPT1("--firmware-system-time-offset",                               MODIFYVM_FWSYSTEMTIMEOFFSET,        RTGETOPT_REQ_INT64),
     325    /** Kept for backwards-compatibility. */
     326    OPT2("--bios-system-time-offset",       "--biossystemtimeoffset",   MODIFYVM_FWSYSTEMTIMEOFFSET,        RTGETOPT_REQ_INT64),
     327    OPT1("--firmware-apic",                                             MODIFYVM_FWAPIC,                    RTGETOPT_REQ_STRING),
     328    /** Kept for backwards-compatibility. */
     329    OPT2("--bios-apic",                     "--biosapic",               MODIFYVM_FWAPIC,                    RTGETOPT_REQ_STRING),
     330    OPT1("--firmware-pxe-debug",                                        MODIFYVM_FWPXEDEBUG,                RTGETOPT_REQ_BOOL_ONOFF),
     331    /** Kept for backwards-compatibility. */
     332    OPT2("--bios-pxe-debug",                "--biospxedebug",           MODIFYVM_FWPXEDEBUG,                RTGETOPT_REQ_BOOL_ONOFF),
    333333    OPT2("--system-uuid-le",                "--system-uuid-le",         MODIFYVM_SYSTEMUUIDLE,              RTGETOPT_REQ_BOOL_ONOFF),
    334334    OPT1("--boot",                                                      MODIFYVM_BOOT,                      RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX),
     
    440440    OPT1("--tracing-allow-vm-access",                                   MODIFYVM_TRACING_ALLOW_VM_ACCESS,   RTGETOPT_REQ_BOOL_ONOFF),
    441441    OPT2("--hardware-uuid",                 "--hardwareuuid",                            MODIFYVM_HARDWARE_UUID,             RTGETOPT_REQ_STRING),
    442     OPT1("--hpet",                                                      MODIFYVM_HPET,                      RTGETOPT_REQ_BOOL_ONOFF),
    443442    OPT1("--iocache",                                                   MODIFYVM_IOCACHE,                   RTGETOPT_REQ_BOOL_ONOFF),
    444443    OPT2("--iocache-size",                  "--iocachesize",            MODIFYVM_IOCACHESIZE,               RTGETOPT_REQ_UINT32),
     
    483482    OPT1("--guest-debug-address",                                       MODIFYVM_GUEST_DEBUG_ADDRESS,       RTGETOPT_REQ_STRING),
    484483    OPT1("--guest-debug-port",                                          MODIFYVM_GUEST_DEBUG_PORT,          RTGETOPT_REQ_UINT32),
     484
     485    /*
     486     * x86-only stuff.
     487     *
     488     * Note: The non-prefixed options (e.g. "hpet" vs. "x86-hpet") are being kept
     489     *       to maintain backwards compatibility, at least for a while. Remove them before going on pension.
     490     *
     491     * Sorted after their MODIFYVM_X86_XXX values.
     492     */
     493    OPT1("--x86-apic",                                                  MODIFYVM_X86_APIC,                  RTGETOPT_REQ_BOOL_ONOFF),
     494    OPT1("--apic",                                                      MODIFYVM_X86_APIC,                  RTGETOPT_REQ_BOOL_ONOFF),
     495    OPT1("--x86-cpuid-remove",                                          MODIFYVM_X86_DELCPUID,              RTGETOPT_REQ_UINT32_OPTIONAL_PAIR | RTGETOPT_FLAG_HEX),
     496    OPT1("--cpuid-remove",                                              MODIFYVM_X86_DELCPUID,              RTGETOPT_REQ_UINT32_OPTIONAL_PAIR | RTGETOPT_FLAG_HEX),
     497    OPT1("--cpuidremove",                                               MODIFYVM_X86_DELCPUID_OLD,          RTGETOPT_REQ_UINT32 | RTGETOPT_FLAG_HEX), /* legacy - syntax differs */
     498    OPT1("--x86-cpuid-remove-all",                                      MODIFYVM_X86_DELALLCPUID,           RTGETOPT_REQ_NOTHING),
     499    OPT2("--cpuid-remove-all",              "--cpuidremoveall",         MODIFYVM_X86_DELALLCPUID,           RTGETOPT_REQ_NOTHING),
     500    OPT1("--x86-hpet",                                                  MODIFYVM_X86_HPET,                  RTGETOPT_REQ_BOOL_ONOFF),
     501    OPT1("--hpet",                                                      MODIFYVM_X86_HPET,                  RTGETOPT_REQ_BOOL_ONOFF),
     502    OPT1("--x86-hwvirtex",                                              MODIFYVM_X86_HWVIRTEX,              RTGETOPT_REQ_BOOL_ONOFF),
     503    OPT1("--hwvirtex",                                                  MODIFYVM_X86_HWVIRTEX,              RTGETOPT_REQ_BOOL_ONOFF),
     504    OPT1("--x86-ibpb-on-vm-entry",                                      MODIFYVM_X86_IBPB_ON_VM_ENTRY,      RTGETOPT_REQ_BOOL_ONOFF),
     505    OPT1("--ibpb-on-vm-entry",                                          MODIFYVM_X86_IBPB_ON_VM_ENTRY,      RTGETOPT_REQ_BOOL_ONOFF),
     506    OPT1("--x86-ibpb-on-vm-exit",                                       MODIFYVM_X86_IBPB_ON_VM_EXIT,       RTGETOPT_REQ_BOOL_ONOFF),
     507    OPT1("--ibpb-on-vm-exit",                                           MODIFYVM_X86_IBPB_ON_VM_EXIT,       RTGETOPT_REQ_BOOL_ONOFF),
     508    OPT1("--x86-l1d-flush-on-sched",                                    MODIFYVM_X86_L1D_FLUSH_ON_SCHED,    RTGETOPT_REQ_BOOL_ONOFF),
     509    OPT1("--l1d-flush-on-sched",                                        MODIFYVM_X86_L1D_FLUSH_ON_SCHED,    RTGETOPT_REQ_BOOL_ONOFF),
     510    OPT1("--x86-l1d-flush-on-vm-entry",                                 MODIFYVM_X86_L1D_FLUSH_ON_VM_ENTRY, RTGETOPT_REQ_BOOL_ONOFF),
     511    OPT1("--l1d-flush-on-vm-entry",                                     MODIFYVM_X86_L1D_FLUSH_ON_VM_ENTRY, RTGETOPT_REQ_BOOL_ONOFF),
     512    OPT1("--x86-large-pages",                                           MODIFYVM_X86_LARGEPAGES,            RTGETOPT_REQ_BOOL_ONOFF),
     513    OPT2("--large-pages",                   "--largepages",             MODIFYVM_X86_LARGEPAGES,            RTGETOPT_REQ_BOOL_ONOFF),
     514    OPT1("--x86-long-mode",                                             MODIFYVM_X86_LONGMODE,              RTGETOPT_REQ_BOOL_ONOFF),
     515    OPT2("--long-mode",                     "--longmode",               MODIFYVM_X86_LONGMODE,              RTGETOPT_REQ_BOOL_ONOFF),
     516    OPT1("--x86-mds-clear-on-sched",                                    MODIFYVM_X86_MDS_CLEAR_ON_SCHED,    RTGETOPT_REQ_BOOL_ONOFF),
     517    OPT1("--mds-clear-on-sched",                                        MODIFYVM_X86_MDS_CLEAR_ON_SCHED,    RTGETOPT_REQ_BOOL_ONOFF),
     518    OPT1("--x86-mds-clear-on-vm-entry",                                 MODIFYVM_X86_MDS_CLEAR_ON_VM_ENTRY, RTGETOPT_REQ_BOOL_ONOFF),
     519    OPT1("--mds-clear-on-vm-entry",                                     MODIFYVM_X86_MDS_CLEAR_ON_VM_ENTRY, RTGETOPT_REQ_BOOL_ONOFF),
     520    OPT1("--x86-nested-hw-virt",                                        MODIFYVM_X86_NESTED_HW_VIRT,        RTGETOPT_REQ_BOOL_ONOFF),
     521    OPT1("--nested-hw-virt",                                            MODIFYVM_X86_NESTED_HW_VIRT,        RTGETOPT_REQ_BOOL_ONOFF),
     522    OPT1("--x86-nested-paging",                                         MODIFYVM_X86_NESTEDPAGING,          RTGETOPT_REQ_BOOL_ONOFF),
     523    OPT2("--nested-paging",                 "--nestedpaging",           MODIFYVM_X86_NESTEDPAGING,          RTGETOPT_REQ_BOOL_ONOFF),
     524    OPT1("--x86-pae",                                                   MODIFYVM_X86_PAE,                   RTGETOPT_REQ_BOOL_ONOFF),
     525    OPT1("--pae",                                                       MODIFYVM_X86_PAE,                   RTGETOPT_REQ_BOOL_ONOFF),
     526    OPT1("--x86-cpuid-set",                                             MODIFYVM_X86_SETCPUID,              RTGETOPT_REQ_UINT32_OPTIONAL_PAIR | RTGETOPT_FLAG_HEX),
     527    OPT2("--cpuid-set",                     "--cpuidset",               MODIFYVM_X86_SETCPUID,              RTGETOPT_REQ_UINT32_OPTIONAL_PAIR | RTGETOPT_FLAG_HEX),
     528    OPT1("--x86-spec-ctrl",                                             MODIFYVM_X86_SPEC_CTRL,             RTGETOPT_REQ_BOOL_ONOFF),
     529    OPT1("--spec-ctrl",                                                 MODIFYVM_X86_SPEC_CTRL,             RTGETOPT_REQ_BOOL_ONOFF),
     530    OPT1("--x86-triple-fault-reset",                                    MODIFYVM_X86_TFRESET,               RTGETOPT_REQ_BOOL_ONOFF),
     531    OPT2("--triple-fault-reset",            "--triplefaultreset",       MODIFYVM_X86_TFRESET,               RTGETOPT_REQ_BOOL_ONOFF),
     532    OPT1("--virt-vmsave-vmload",                                        MODIFYVM_X86_VIRT_VMSAVE_VMLOAD,    RTGETOPT_REQ_BOOL_ONOFF),
     533    OPT1("--x86-virt-vmsave-vmload",                                    MODIFYVM_X86_VIRT_VMSAVE_VMLOAD,    RTGETOPT_REQ_BOOL_ONOFF),
     534    OPT1("--x86-vtx-ux",                                                MODIFYVM_X86_VTXUX,                 RTGETOPT_REQ_BOOL_ONOFF),
     535    OPT2("--vtx-ux",                        "--vtxux",                  MODIFYVM_X86_VTXUX,                 RTGETOPT_REQ_BOOL_ONOFF),
     536    OPT1("--x86-vtx-vpid",                                              MODIFYVM_X86_VTXVPID,               RTGETOPT_REQ_BOOL_ONOFF),
     537    OPT2("--vtx-vpid",                      "--vtxvpid",                MODIFYVM_X86_VTXVPID,               RTGETOPT_REQ_BOOL_ONOFF),
     538    OPT1("--x86-x2apic",                                                MODIFYVM_X86_X2APIC,                RTGETOPT_REQ_BOOL_ONOFF),
     539    OPT1("--x2apic",                                                    MODIFYVM_X86_X2APIC,                RTGETOPT_REQ_BOOL_ONOFF),
    485540};
    486541
     
    617672}
    618673
     674/**
     675 * Handles the x86-specific modifyvm options.
     676 *
     677 * @returns HRESULT
     678 * @retval  E_INVALIDARG if handed-in option was not being handled.
     679 * @param   pGetOptState        Pointer to GetOpt state to use.
     680 * @param   c                   Current GetOpt value (short form).
     681 * @param   pValueUnion         Pointer to current value union.
     682 * @param   sessionMachine      Session machine to use.
     683 * @param   platformX86         x86-specific platform object to use.
     684 */
     685HRESULT handleModifyVM_x86(PRTGETOPTSTATE pGetOptState, int c, PRTGETOPTUNION pValueUnion,
     686                           ComPtr<IMachine> &sessionMachine, ComPtr<IPlatformX86> &platformX86)
     687{
     688    RT_NOREF(sessionMachine);
     689
     690    HRESULT hrc = S_OK;
     691
     692    switch (c)
     693    {
     694        case MODIFYVM_X86_APIC:
     695            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_APIC, pValueUnion->f));
     696            break;
     697
     698        case MODIFYVM_X86_DELCPUID:
     699            CHECK_ERROR(platformX86, RemoveCPUIDLeaf(pValueUnion->PairU32.uFirst, pValueUnion->PairU32.uSecond));
     700            break;
     701
     702        case MODIFYVM_X86_DELCPUID_OLD:
     703            CHECK_ERROR(platformX86, RemoveCPUIDLeaf(pValueUnion->u32, UINT32_MAX));
     704            break;
     705
     706        case MODIFYVM_X86_DELALLCPUID:
     707            CHECK_ERROR(platformX86, RemoveAllCPUIDLeaves());
     708            break;
     709
     710        case MODIFYVM_X86_HPET:
     711            CHECK_ERROR(platformX86, COMSETTER(HPETEnabled)(pValueUnion->f));
     712            break;
     713
     714        case MODIFYVM_X86_TFRESET:
     715            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_TripleFaultReset, pValueUnion->f));
     716            break;
     717
     718        case MODIFYVM_X86_PAE:
     719            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_PAE, pValueUnion->f));
     720            break;
     721
     722        case MODIFYVM_X86_LONGMODE:
     723            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_LongMode, pValueUnion->f));
     724            break;
     725
     726        case MODIFYVM_X86_X2APIC:
     727            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_X2APIC, pValueUnion->f));
     728            break;
     729
     730        case MODIFYVM_X86_NESTEDPAGING:
     731            CHECK_ERROR(platformX86, SetHWVirtExProperty(HWVirtExPropertyType_NestedPaging, pValueUnion->f));
     732            break;
     733
     734        case MODIFYVM_X86_LARGEPAGES:
     735            CHECK_ERROR(platformX86, SetHWVirtExProperty(HWVirtExPropertyType_LargePages, pValueUnion->f));
     736            break;
     737
     738        case MODIFYVM_X86_VTXVPID:
     739            CHECK_ERROR(platformX86, SetHWVirtExProperty(HWVirtExPropertyType_VPID, pValueUnion->f));
     740            break;
     741
     742        case MODIFYVM_X86_VTXUX:
     743            CHECK_ERROR(platformX86, SetHWVirtExProperty(HWVirtExPropertyType_UnrestrictedExecution, pValueUnion->f));
     744            break;
     745
     746        case MODIFYVM_X86_VIRT_VMSAVE_VMLOAD:
     747            CHECK_ERROR(platformX86, SetHWVirtExProperty(HWVirtExPropertyType_VirtVmsaveVmload, pValueUnion->f));
     748            break;
     749
     750        case MODIFYVM_X86_IBPB_ON_VM_EXIT:
     751            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_IBPBOnVMExit, pValueUnion->f));
     752            break;
     753
     754        case MODIFYVM_X86_IBPB_ON_VM_ENTRY:
     755            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_IBPBOnVMEntry, pValueUnion->f));
     756            break;
     757
     758        case MODIFYVM_X86_SPEC_CTRL:
     759            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_SpecCtrl, pValueUnion->f));
     760            break;
     761
     762        case MODIFYVM_X86_L1D_FLUSH_ON_SCHED:
     763            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_L1DFlushOnEMTScheduling, pValueUnion->f));
     764            break;
     765
     766        case MODIFYVM_X86_L1D_FLUSH_ON_VM_ENTRY:
     767            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_L1DFlushOnVMEntry, pValueUnion->f));
     768            break;
     769
     770        case MODIFYVM_X86_MDS_CLEAR_ON_SCHED:
     771            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_MDSClearOnEMTScheduling, pValueUnion->f));
     772            break;
     773
     774        case MODIFYVM_X86_MDS_CLEAR_ON_VM_ENTRY:
     775            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_MDSClearOnVMEntry, pValueUnion->f));
     776            break;
     777
     778        case MODIFYVM_X86_NESTED_HW_VIRT:
     779            CHECK_ERROR(platformX86, SetCPUProperty(CPUPropertyTypeX86_HWVirt, pValueUnion->f));
     780            break;
     781
     782        case MODIFYVM_X86_HWVIRTEX:
     783            CHECK_ERROR(platformX86, SetHWVirtExProperty(HWVirtExPropertyType_Enabled, pValueUnion->f));
     784            break;
     785
     786        case MODIFYVM_X86_SETCPUID:
     787        {
     788            uint32_t const idx    = c == MODIFYVM_X86_SETCPUID ?  pValueUnion->PairU32.uFirst  : pValueUnion->u32;
     789            uint32_t const idxSub = c == MODIFYVM_X86_SETCPUID ?  pValueUnion->PairU32.uSecond : UINT32_MAX;
     790            uint32_t aValue[4];
     791            for (unsigned i = 0; i < 4; i++)
     792            {
     793                int vrc = RTGetOptFetchValue(pGetOptState, pValueUnion, RTGETOPT_REQ_UINT32 | RTGETOPT_FLAG_HEX);
     794                if (RT_FAILURE(vrc))
     795                    return errorSyntax(ModifyVM::tr("Missing or invalid argument to '%s'"),
     796                                       pGetOptState->pDef->pszLong);
     797                aValue[i] = pValueUnion->u32;
     798            }
     799            CHECK_ERROR(platformX86, SetCPUIDLeaf(idx, idxSub, aValue[0], aValue[1], aValue[2], aValue[3]));
     800            break;
     801        }
     802
     803        default:
     804            hrc = E_INVALIDARG;
     805            break;
     806    }
     807
     808    return hrc;
     809}
     810
    619811RTEXITCODE handleModifyVM(HandlerArg *a)
    620812{
     
    635827
    636828    /* Get the number of network adapters */
    637     ULONG NetworkAdapterCount = getMaxNics(a->virtualBox, machine);
     829    ULONG NetworkAdapterCount = getMaxNics(machine);
    638830
    639831    /* open a session for the VM */
     
    644836    CHECK_ERROR_RET(a->session, COMGETTER(Machine)(sessionMachine.asOutParam()), RTEXITCODE_FAILURE);
    645837
    646     ComPtr<IBIOSSettings> biosSettings;
    647     sessionMachine->COMGETTER(BIOSSettings)(biosSettings.asOutParam());
     838    ComPtr<IFirmwareSettings> firmwareSettings;
     839    CHECK_ERROR_RET(sessionMachine, COMGETTER(FirmwareSettings)(firmwareSettings.asOutParam()), RTEXITCODE_FAILURE);
     840
     841    ComPtr<IPlatform> platform;
     842    CHECK_ERROR_RET(sessionMachine, COMGETTER(Platform)(platform.asOutParam()), RTEXITCODE_FAILURE);
     843
     844    /* For the x86-based options we need the x86-specific platform object. */
     845    ComPtr<IPlatformX86> platformX86;
     846    platform->COMGETTER(X86)(platformX86.asOutParam());
    648847
    649848    ComPtr<IGraphicsAdapter> pGraphicsAdapter;
     
    742941                if (!RTStrICmp(ValueUnion.psz, "efi"))
    743942                {
    744                     CHECK_ERROR(sessionMachine, COMSETTER(FirmwareType)(FirmwareType_EFI));
     943                    CHECK_ERROR(firmwareSettings, COMSETTER(FirmwareType)(FirmwareType_EFI));
    745944                }
    746945                else if (!RTStrICmp(ValueUnion.psz, "efi32"))
    747946                {
    748                     CHECK_ERROR(sessionMachine, COMSETTER(FirmwareType)(FirmwareType_EFI32));
     947                    CHECK_ERROR(firmwareSettings, COMSETTER(FirmwareType)(FirmwareType_EFI32));
    749948                }
    750949                else if (!RTStrICmp(ValueUnion.psz, "efi64"))
    751950                {
    752                     CHECK_ERROR(sessionMachine, COMSETTER(FirmwareType)(FirmwareType_EFI64));
     951                    CHECK_ERROR(firmwareSettings, COMSETTER(FirmwareType)(FirmwareType_EFI64));
    753952                }
    754953                else if (!RTStrICmp(ValueUnion.psz, "efidual"))
    755954                {
    756                     CHECK_ERROR(sessionMachine, COMSETTER(FirmwareType)(FirmwareType_EFIDUAL));
     955                    CHECK_ERROR(firmwareSettings, COMSETTER(FirmwareType)(FirmwareType_EFIDUAL));
    757956                }
    758957                else if (!RTStrICmp(ValueUnion.psz, "bios"))
    759958                {
    760                     CHECK_ERROR(sessionMachine, COMSETTER(FirmwareType)(FirmwareType_BIOS));
     959                    CHECK_ERROR(firmwareSettings, COMSETTER(FirmwareType)(FirmwareType_BIOS));
    761960                }
    762961                else
     
    770969            case MODIFYVM_ACPI:
    771970            {
    772                 CHECK_ERROR(biosSettings, COMSETTER(ACPIEnabled)(ValueUnion.f));
     971                CHECK_ERROR(firmwareSettings, COMSETTER(ACPIEnabled)(ValueUnion.f));
    773972                break;
    774973            }
     
    776975            case MODIFYVM_IOAPIC:
    777976            {
    778                 CHECK_ERROR(biosSettings, COMSETTER(IOAPICEnabled)(ValueUnion.f));
    779                 break;
    780             }
    781 
    782             case MODIFYVM_PAE:
    783             {
    784                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_PAE, ValueUnion.f));
    785                 break;
    786             }
    787 
    788             case MODIFYVM_LONGMODE:
    789             {
    790                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_LongMode, ValueUnion.f));
     977                CHECK_ERROR(firmwareSettings, COMSETTER(IOAPICEnabled)(ValueUnion.f));
    791978                break;
    792979            }
     
    795982            {
    796983                CHECK_ERROR(sessionMachine, COMSETTER(CPUIDPortabilityLevel)(ValueUnion.u32));
    797                 break;
    798             }
    799 
    800             case MODIFYVM_TFRESET:
    801             {
    802                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_TripleFaultReset, ValueUnion.f));
    803                 break;
    804             }
    805 
    806             case MODIFYVM_APIC:
    807             {
    808                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_APIC, ValueUnion.f));
    809                 break;
    810             }
    811 
    812             case MODIFYVM_X2APIC:
    813             {
    814                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_X2APIC, ValueUnion.f));
    815984                break;
    816985            }
     
    8451014            }
    8461015
    847             case MODIFYVM_HWVIRTEX:
    848             {
    849                 CHECK_ERROR(sessionMachine, SetHWVirtExProperty(HWVirtExPropertyType_Enabled, ValueUnion.f));
    850                 break;
    851             }
    852 
    853             case MODIFYVM_SETCPUID:
    854             {
    855                 uint32_t const idx    = c == MODIFYVM_SETCPUID ?  ValueUnion.PairU32.uFirst  : ValueUnion.u32;
    856                 uint32_t const idxSub = c == MODIFYVM_SETCPUID ?  ValueUnion.PairU32.uSecond : UINT32_MAX;
    857                 uint32_t aValue[4];
    858                 for (unsigned i = 0; i < 4; i++)
    859                 {
    860                     int vrc = RTGetOptFetchValue(&GetOptState, &ValueUnion, RTGETOPT_REQ_UINT32 | RTGETOPT_FLAG_HEX);
    861                     if (RT_FAILURE(vrc))
    862                         return errorSyntax(ModifyVM::tr("Missing or invalid argument to '%s'"),
    863                                            GetOptState.pDef->pszLong);
    864                     aValue[i] = ValueUnion.u32;
    865                 }
    866                 CHECK_ERROR(sessionMachine, SetCPUIDLeaf(idx, idxSub, aValue[0], aValue[1], aValue[2], aValue[3]));
    867                 break;
    868             }
    869 
    870             case MODIFYVM_DELCPUID:
    871                 CHECK_ERROR(sessionMachine, RemoveCPUIDLeaf(ValueUnion.PairU32.uFirst, ValueUnion.PairU32.uSecond));
    872                 break;
    873 
    874             case MODIFYVM_DELCPUID_OLD:
    875                 CHECK_ERROR(sessionMachine, RemoveCPUIDLeaf(ValueUnion.u32, UINT32_MAX));
    876                 break;
    877 
    878             case MODIFYVM_DELALLCPUID:
    879             {
    880                 CHECK_ERROR(sessionMachine, RemoveAllCPUIDLeaves());
    881                 break;
    882             }
    883 
    884             case MODIFYVM_NESTEDPAGING:
    885             {
    886                 CHECK_ERROR(sessionMachine, SetHWVirtExProperty(HWVirtExPropertyType_NestedPaging, ValueUnion.f));
    887                 break;
    888             }
    889 
    890             case MODIFYVM_LARGEPAGES:
    891             {
    892                 CHECK_ERROR(sessionMachine, SetHWVirtExProperty(HWVirtExPropertyType_LargePages, ValueUnion.f));
    893                 break;
    894             }
    895 
    896             case MODIFYVM_VTXVPID:
    897             {
    898                 CHECK_ERROR(sessionMachine, SetHWVirtExProperty(HWVirtExPropertyType_VPID, ValueUnion.f));
    899                 break;
    900             }
    901 
    902             case MODIFYVM_VTXUX:
    903             {
    904                 CHECK_ERROR(sessionMachine, SetHWVirtExProperty(HWVirtExPropertyType_UnrestrictedExecution, ValueUnion.f));
    905                 break;
    906             }
    907 
    908             case MODIFYVM_VIRT_VMSAVE_VMLOAD:
    909                 CHECK_ERROR(sessionMachine, SetHWVirtExProperty(HWVirtExPropertyType_VirtVmsaveVmload, ValueUnion.f));
    910                 break;
    911 
    912             case MODIFYVM_IBPB_ON_VM_EXIT:
    913                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_IBPBOnVMExit, ValueUnion.f));
    914                 break;
    915 
    916             case MODIFYVM_IBPB_ON_VM_ENTRY:
    917                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_IBPBOnVMEntry, ValueUnion.f));
    918                 break;
    919 
    920             case MODIFYVM_SPEC_CTRL:
    921                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_SpecCtrl, ValueUnion.f));
    922                 break;
    923 
    924             case MODIFYVM_L1D_FLUSH_ON_SCHED:
    925                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_L1DFlushOnEMTScheduling, ValueUnion.f));
    926                 break;
    927 
    928             case MODIFYVM_L1D_FLUSH_ON_VM_ENTRY:
    929                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_L1DFlushOnVMEntry, ValueUnion.f));
    930                 break;
    931 
    932             case MODIFYVM_MDS_CLEAR_ON_SCHED:
    933                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_MDSClearOnEMTScheduling, ValueUnion.f));
    934                 break;
    935 
    936             case MODIFYVM_MDS_CLEAR_ON_VM_ENTRY:
    937                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_MDSClearOnVMEntry, ValueUnion.f));
    938                 break;
    939 
    940             case MODIFYVM_NESTED_HW_VIRT:
    941                 CHECK_ERROR(sessionMachine, SetCPUProperty(CPUPropertyType_HWVirt, ValueUnion.f));
    942                 break;
    943 
    9441016            case MODIFYVM_CPUS:
    9451017            {
     
    9501022            case MODIFYVM_RTCUSEUTC:
    9511023            {
    952                 CHECK_ERROR(sessionMachine, COMSETTER(RTCUseUTC)(ValueUnion.f));
     1024                CHECK_ERROR(platform, COMSETTER(RTCUseUTC)(ValueUnion.f));
    9531025                break;
    9541026            }
     
    10291101            }
    10301102#endif
    1031 
    1032             case MODIFYVM_BIOSLOGOFADEIN:
    1033             {
    1034                 CHECK_ERROR(biosSettings, COMSETTER(LogoFadeIn)(ValueUnion.f));
    1035                 break;
    1036             }
    1037 
    1038             case MODIFYVM_BIOSLOGOFADEOUT:
    1039             {
    1040                 CHECK_ERROR(biosSettings, COMSETTER(LogoFadeOut)(ValueUnion.f));
    1041                 break;
    1042             }
    1043 
    1044             case MODIFYVM_BIOSLOGODISPLAYTIME:
    1045             {
    1046                 CHECK_ERROR(biosSettings, COMSETTER(LogoDisplayTime)(ValueUnion.u32));
    1047                 break;
    1048             }
    1049 
    1050             case MODIFYVM_BIOSLOGOIMAGEPATH:
    1051             {
    1052                 CHECK_ERROR(biosSettings, COMSETTER(LogoImagePath)(Bstr(ValueUnion.psz).raw()));
    1053                 break;
    1054             }
    1055 
    1056             case MODIFYVM_BIOSBOOTMENU:
     1103            case MODIFYVM_FWLOGOFADEIN:
     1104            {
     1105                CHECK_ERROR(firmwareSettings, COMSETTER(LogoFadeIn)(ValueUnion.f));
     1106                break;
     1107            }
     1108
     1109            case MODIFYVM_FWLOGOFADEOUT:
     1110            {
     1111                CHECK_ERROR(firmwareSettings, COMSETTER(LogoFadeOut)(ValueUnion.f));
     1112                break;
     1113            }
     1114
     1115            case MODIFYVM_FWLOGODISPLAYTIME:
     1116            {
     1117                CHECK_ERROR(firmwareSettings, COMSETTER(LogoDisplayTime)(ValueUnion.u32));
     1118                break;
     1119            }
     1120
     1121            case MODIFYVM_FWLOGOIMAGEPATH:
     1122            {
     1123                CHECK_ERROR(firmwareSettings, COMSETTER(LogoImagePath)(Bstr(ValueUnion.psz).raw()));
     1124                break;
     1125            }
     1126
     1127            case MODIFYVM_FWBOOTMENU:
    10571128            {
    10581129                if (!RTStrICmp(ValueUnion.psz, "disabled"))
    10591130                {
    1060                     CHECK_ERROR(biosSettings, COMSETTER(BootMenuMode)(BIOSBootMenuMode_Disabled));
     1131                    CHECK_ERROR(firmwareSettings, COMSETTER(BootMenuMode)(FirmwareBootMenuMode_Disabled));
    10611132                }
    10621133                else if (!RTStrICmp(ValueUnion.psz, "menuonly"))
    10631134                {
    1064                     CHECK_ERROR(biosSettings, COMSETTER(BootMenuMode)(BIOSBootMenuMode_MenuOnly));
     1135                    CHECK_ERROR(firmwareSettings, COMSETTER(BootMenuMode)(FirmwareBootMenuMode_MenuOnly));
    10651136                }
    10661137                else if (!RTStrICmp(ValueUnion.psz, "messageandmenu"))
    10671138                {
    1068                     CHECK_ERROR(biosSettings, COMSETTER(BootMenuMode)(BIOSBootMenuMode_MessageAndMenu));
     1139                    CHECK_ERROR(firmwareSettings, COMSETTER(BootMenuMode)(FirmwareBootMenuMode_MessageAndMenu));
    10691140                }
    10701141                else
     
    10761147            }
    10771148
    1078             case MODIFYVM_BIOSAPIC:
     1149            case MODIFYVM_FWAPIC:
    10791150            {
    10801151                if (!RTStrICmp(ValueUnion.psz, "disabled"))
    10811152                {
    1082                     CHECK_ERROR(biosSettings, COMSETTER(APICMode)(APICMode_Disabled));
     1153                    CHECK_ERROR(firmwareSettings, COMSETTER(APICMode)(APICMode_Disabled));
    10831154                }
    10841155                else if (   !RTStrICmp(ValueUnion.psz, "apic")
     
    10861157                         || !RTStrICmp(ValueUnion.psz, "xapic"))
    10871158                {
    1088                     CHECK_ERROR(biosSettings, COMSETTER(APICMode)(APICMode_APIC));
     1159                    CHECK_ERROR(firmwareSettings, COMSETTER(APICMode)(APICMode_APIC));
    10891160                }
    10901161                else if (!RTStrICmp(ValueUnion.psz, "x2apic"))
    10911162                {
    1092                     CHECK_ERROR(biosSettings, COMSETTER(APICMode)(APICMode_X2APIC));
     1163                    CHECK_ERROR(firmwareSettings, COMSETTER(APICMode)(APICMode_X2APIC));
    10931164                }
    10941165                else
     
    11001171            }
    11011172
    1102             case MODIFYVM_BIOSSYSTEMTIMEOFFSET:
    1103             {
    1104                 CHECK_ERROR(biosSettings, COMSETTER(TimeOffset)(ValueUnion.i64));
    1105                 break;
    1106             }
    1107 
    1108             case MODIFYVM_BIOSPXEDEBUG:
    1109             {
    1110                 CHECK_ERROR(biosSettings, COMSETTER(PXEDebugEnabled)(ValueUnion.f));
     1173            case MODIFYVM_FWSYSTEMTIMEOFFSET:
     1174            {
     1175                CHECK_ERROR(firmwareSettings, COMSETTER(TimeOffset)(ValueUnion.i64));
     1176                break;
     1177            }
     1178
     1179            case MODIFYVM_FWPXEDEBUG:
     1180            {
     1181                CHECK_ERROR(firmwareSettings, COMSETTER(PXEDebugEnabled)(ValueUnion.f));
    11111182                break;
    11121183            }
     
    11141185            case MODIFYVM_SYSTEMUUIDLE:
    11151186            {
    1116                 CHECK_ERROR(biosSettings, COMSETTER(SMBIOSUuidLittleEndian)(ValueUnion.f));
     1187                CHECK_ERROR(firmwareSettings, COMSETTER(SMBIOSUuidLittleEndian)(ValueUnion.f));
    11171188                break;
    11181189            }
     
    24932564                    if (vrc != VINF_SUCCESS || uVal == 0)
    24942565                        return errorArgument(ModifyVM::tr("Error parsing UART I/O base '%s'"), pszIOBase);
    2495                     CHECK_ERROR(uart, COMSETTER(IOBase)(uVal));
     2566                    CHECK_ERROR(uart, COMSETTER(IOAddress)(uVal));
    24962567
    24972568                    CHECK_ERROR(uart, COMSETTER(Enabled)(TRUE));
     
    31653236            }
    31663237
    3167             case MODIFYVM_HPET:
    3168             {
    3169                 CHECK_ERROR(sessionMachine, COMSETTER(HPETEnabled)(ValueUnion.f));
    3170                 break;
    3171             }
    3172 
    31733238            case MODIFYVM_IOCACHE:
    31743239            {
     
    31873252                if (!RTStrICmp(ValueUnion.psz, "piix3"))
    31883253                {
    3189                     CHECK_ERROR(sessionMachine, COMSETTER(ChipsetType)(ChipsetType_PIIX3));
     3254                    CHECK_ERROR(platform, COMSETTER(ChipsetType)(ChipsetType_PIIX3));
    31903255                }
    31913256                else if (!RTStrICmp(ValueUnion.psz, "ich9"))
    31923257                {
    3193                     CHECK_ERROR(sessionMachine, COMSETTER(ChipsetType)(ChipsetType_ICH9));
     3258                    CHECK_ERROR(platform, COMSETTER(ChipsetType)(ChipsetType_ICH9));
    31943259                    BOOL fIoApic = FALSE;
    3195                     CHECK_ERROR(biosSettings, COMGETTER(IOAPICEnabled)(&fIoApic));
     3260                    CHECK_ERROR(firmwareSettings, COMGETTER(IOAPICEnabled)(&fIoApic));
    31963261                    if (!fIoApic)
    31973262                    {
    31983263                        RTStrmPrintf(g_pStdErr, ModifyVM::tr("*** I/O APIC must be enabled for ICH9, enabling. ***\n"));
    3199                         CHECK_ERROR(biosSettings, COMSETTER(IOAPICEnabled)(TRUE));
     3264                        CHECK_ERROR(firmwareSettings, COMSETTER(IOAPICEnabled)(TRUE));
    32003265                    }
    32013266                }
     
    32123277                if (   !RTStrICmp(ValueUnion.psz, "none")
    32133278                    || !RTStrICmp(ValueUnion.psz, "disabled"))
    3214                     CHECK_ERROR(sessionMachine, COMSETTER(IommuType)(IommuType_None));
     3279                    CHECK_ERROR(platform, COMSETTER(IommuType)(IommuType_None));
    32153280                else if (!RTStrICmp(ValueUnion.psz, "amd"))
    3216                     CHECK_ERROR(sessionMachine, COMSETTER(IommuType)(IommuType_AMD));
     3281                    CHECK_ERROR(platform, COMSETTER(IommuType)(IommuType_AMD));
    32173282                else if (!RTStrICmp(ValueUnion.psz, "intel"))
    32183283                {
    32193284#ifdef VBOX_WITH_IOMMU_INTEL
    3220                     CHECK_ERROR(sessionMachine, COMSETTER(IommuType)(IommuType_Intel));
     3285                    CHECK_ERROR(platform, COMSETTER(IommuType)(IommuType_Intel));
    32213286#else
    32223287                    errorArgument(ModifyVM::tr("Invalid --iommu argument '%s' (valid: none,amd,automatic)"), ValueUnion.psz);
     
    32263291                else if (!RTStrICmp(ValueUnion.psz, "automatic"))
    32273292                {
    3228                     CHECK_ERROR(sessionMachine, COMSETTER(IommuType)(IommuType_Automatic));
     3293                    CHECK_ERROR(platform, COMSETTER(IommuType)(IommuType_Automatic));
    32293294#ifndef VBOX_WITH_IOMMU_INTEL
    32303295                    RTStrmPrintf(g_pStdErr,
     
    36303695
    36313696            default:
    3632                 errorGetOpt(c, &ValueUnion);
     3697            {
     3698                hrc = handleModifyVM_x86(&GetOptState, c, &ValueUnion, machine, platformX86);
     3699                if (FAILED(hrc))
     3700                    errorGetOpt(c, &ValueUnion);
    36333701                hrc = E_FAIL;
    36343702                break;
     3703            }
    36353704        }
    36363705    }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageStorageController.cpp

    r98103 r101035  
    123123    ComPtr<IMachine> machine;
    124124    ComPtr<IStorageController> storageCtl;
    125     ComPtr<ISystemProperties> systemProperties;
    126125
    127126    RTGetOptInit(&GetState, a->argc, a->argv, g_aStorageAttachOptions,
     
    337336        return errorSyntax(Storage::tr("Storage controller name not specified"));
    338337
    339     /* get the virtualbox system properties */
    340     CHECK_ERROR_RET(a->virtualBox, COMGETTER(SystemProperties)(systemProperties.asOutParam()), RTEXITCODE_FAILURE);
    341 
    342338    // find the machine, lock it, get the mutable session machine
    343339    CHECK_ERROR_RET(a->virtualBox, FindMachine(Bstr(a->argv[0]).raw(),
     
    348344    a->session->COMGETTER(Machine)(machine.asOutParam());
    349345
     346    ComPtr<IPlatform> platform;
     347    CHECK_ERROR_RET(machine, COMGETTER(Platform)(platform.asOutParam()), RTEXITCODE_FAILURE);
     348    ComPtr<IPlatformProperties> platformProperties;
     349    CHECK_ERROR_RET(platform, COMGETTER(Properties)(platformProperties.asOutParam()), RTEXITCODE_FAILURE);
     350
    350351    try
    351352    {
     
    369370        CHECK_ERROR_RET(storageCtl, COMGETTER(Bus)(&storageBus), RTEXITCODE_FAILURE);
    370371        ULONG maxPorts = 0;
    371         CHECK_ERROR_RET(systemProperties, GetMaxPortCountForStorageBus(storageBus, &maxPorts), RTEXITCODE_FAILURE);
     372        CHECK_ERROR_RET(platformProperties, GetMaxPortCountForStorageBus(storageBus, &maxPorts), RTEXITCODE_FAILURE);
    372373        ULONG maxDevices = 0;
    373         CHECK_ERROR_RET(systemProperties, GetMaxDevicesPerPortForStorageBus(storageBus, &maxDevices), RTEXITCODE_FAILURE);
     374        CHECK_ERROR_RET(platformProperties, GetMaxDevicesPerPortForStorageBus(storageBus, &maxDevices), RTEXITCODE_FAILURE);
    374375
    375376        if (port == ~0U)
     
    460461
    461462                /* check if the device type is supported by the controller */
    462                 CHECK_ERROR(systemProperties, GetDeviceTypesForStorageBus(storageBus, ComSafeArrayAsOutParam(saDeviceTypes)));
     463                CHECK_ERROR(platformProperties, GetDeviceTypesForStorageBus(storageBus, ComSafeArrayAsOutParam(saDeviceTypes)));
    463464                for (size_t i = 0; i < saDeviceTypes.size(); ++ i)
    464465                {
     
    556557                com::SafeArray <DeviceType_T> saDeviceTypes;
    557558
    558                 CHECK_ERROR(systemProperties, GetDeviceTypesForStorageBus(storageBus, ComSafeArrayAsOutParam(saDeviceTypes)));
     559                CHECK_ERROR(platformProperties, GetDeviceTypesForStorageBus(storageBus, ComSafeArrayAsOutParam(saDeviceTypes)));
    559560                if (SUCCEEDED(hrc))
    560561                {
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.cpp

    r98103 r101035  
    4040DECLARE_TRANSLATION_CONTEXT(Utils);
    4141
    42 unsigned int getMaxNics(const ComPtr<IVirtualBox> &pVirtualBox,
    43                         const ComPtr<IMachine> &pMachine)
     42ULONG getMaxNics(const ComPtr<IMachine> &pMachine)
    4443{
    45     ULONG NetworkAdapterCount = 0;
     44    HRESULT hrc;
     45
     46    ULONG maxNetworkAdapters = 0;
    4647    do {
    47         HRESULT hrc;
     48        ComPtr<IPlatform> pPlatform;
     49        CHECK_ERROR_BREAK(pMachine, COMGETTER(Platform)(pPlatform.asOutParam()));
    4850
    49         ComPtr<ISystemProperties> info;
    50         CHECK_ERROR_BREAK(pVirtualBox, COMGETTER(SystemProperties)(info.asOutParam()));
     51        ChipsetType_T chipsetType;
     52        CHECK_ERROR_BREAK(pPlatform, COMGETTER(ChipsetType)(&chipsetType));
    5153
    52         ChipsetType_T aChipset;
    53         CHECK_ERROR_BREAK(pMachine, COMGETTER(ChipsetType)(&aChipset));
     54        ComPtr<IPlatformProperties> pPlatformProperties;
     55        CHECK_ERROR_BREAK(pPlatform, COMGETTER(Properties)(pPlatformProperties.asOutParam()));
    5456
    55         CHECK_ERROR_BREAK(info, GetMaxNetworkAdapters(aChipset, &NetworkAdapterCount));
     57        CHECK_ERROR_BREAK(pPlatformProperties, GetMaxNetworkAdapters(chipsetType, &maxNetworkAdapters));
    5658    } while (0);
    5759
    58     return (unsigned int)NetworkAdapterCount;
     60    return maxNetworkAdapters;
    5961}
    6062
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.h

    r98103 r101035  
    3636#include <VBox/com/VirtualBox.h>
    3737
    38 unsigned int getMaxNics(const ComPtr<IVirtualBox> &pVirtualBox,
    39                         const ComPtr<IMachine> &pMachine);
     38ULONG getMaxNics(const ComPtr<IMachine> &pMachine);
    4039
    4140void verifyHostNetworkInterfaceName(const ComPtr<IVirtualBox> &pVirtualBox,
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp

    r100064 r101035  
    3838
    3939/* COM includes: */
    40 #include "CSystemProperties.h"
     40#include "CPlatformProperties.h"
    4141
    4242
     
    200200        case KStorageBus_IDE:
    201201        {
    202             int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
    203             int iMaxDevice = uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
     202            int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(storageSlot.bus);
     203            int iMaxDevice = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
    204204            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
    205205            {
     
    224224        case KStorageBus_SATA:
    225225        {
    226             int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
     226            int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(storageSlot.bus);
    227227            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
    228228            {
     
    240240        case KStorageBus_SCSI:
    241241        {
    242             int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
     242            int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(storageSlot.bus);
    243243            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
    244244            {
     
    256256        case KStorageBus_SAS:
    257257        {
    258             int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
     258            int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(storageSlot.bus);
    259259            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
    260260            {
     
    272272        case KStorageBus_Floppy:
    273273        {
    274             int iMaxDevice = uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
     274            int iMaxDevice = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxDevicesPerPortForStorageBus(storageSlot.bus);
    275275            if (storageSlot.port != 0)
    276276            {
     
    288288        case KStorageBus_USB:
    289289        {
    290             int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
     290            int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(storageSlot.bus);
    291291            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
    292292            {
     
    304304        case KStorageBus_PCIe:
    305305        {
    306             int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
     306            int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(storageSlot.bus);
    307307            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
    308308            {
     
    320320        case KStorageBus_VirtioSCSI:
    321321        {
    322             int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
     322            int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(storageSlot.bus);
    323323            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
    324324            {
     
    403403            if (result.bus == KStorageBus_Null)
    404404                break;
    405             const int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(result.bus);
    406             const int iMaxDevice = uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(result.bus);
     405            const int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(result.bus);
     406            const int iMaxDevice = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxDevicesPerPortForStorageBus(result.bus);
    407407            const LONG iPort = iIndex / iMaxPort;
    408408            const LONG iDevice = iIndex % iMaxPort;
     
    431431            if (result.bus == KStorageBus_Null)
    432432                break;
    433             const int iMaxPort = uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(result.bus);
     433            const int iMaxPort = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxPortCountForStorageBus(result.bus);
    434434            const LONG iPort = regExp.cap(1).toInt();
    435435            const LONG iDevice = 0;
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp

    r100640 r101035  
    9898/* COM includes: */
    9999#include "CAudioAdapter.h"
    100 #include "CBIOSSettings.h"
    101100#include "CCloudMachine.h"
    102101#include "CConsole.h"
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp

    r100452 r101035  
    4848#include "CCloudMachine.h"
    4949#include "CConsole.h"
     50#include "CFirmwareSettings.h"
    5051#include "CForm.h"
    5152#include "CFormValue.h"
     
    5657#include "CNetworkAdapter.h"
    5758#include "CNvramStore.h"
     59#include "CPlatform.h"
     60#include "CPlatformX86.h"
     61#include "CPlatformProperties.h"
    5862#include "CProgress.h"
    5963#include "CRangedIntegerFormValue.h"
     
    6468#include "CStorageController.h"
    6569#include "CStringFormValue.h"
    66 #include "CSystemProperties.h"
    6770#include "CTrustedPlatformModule.h"
    6871#include "CUefiVariableStore.h"
     
    310313    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_ChipsetType)
    311314    {
    312         const KChipsetType enmChipsetType = comMachine.GetChipsetType();
     315        CPlatform comPlatform = comMachine.GetPlatform();
     316        const KChipsetType enmChipsetType = comPlatform.GetChipsetType();
    313317        if (enmChipsetType == KChipsetType_ICH9)
    314318            table << UITextTableLine(QApplication::translate("UIDetails", "Chipset Type", "details (system)"),
     
    329333    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Firmware)
    330334    {
    331         switch (comMachine.GetFirmwareType())
     335        CFirmwareSettings comFirmwareSettings = comMachine.GetFirmwareSettings();
     336        switch (comFirmwareSettings.GetFirmwareType())
    332337        {
    333338            case KFirmwareType_EFI:
     
    370375    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Acceleration)
    371376    {
     377        CPlatform comPlatform = comMachine.GetPlatform();
     378        CPlatformX86 comPlatformX86 = comPlatform.GetX86();
    372379        QStringList acceleration;
    373380        if (uiCommon().virtualBox().GetHost().GetProcessorFeature(KProcessorFeature_HWVirtEx))
    374381        {
    375382            /* Nested Paging: */
    376             if (comMachine.GetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging))
     383            if (comPlatformX86.GetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging))
    377384                acceleration << QApplication::translate("UIDetails", "Nested Paging", "details (system)");
    378385        }
    379386        /* Nested VT-x/AMD-V: */
    380         if (comMachine.GetCPUProperty(KCPUPropertyType_HWVirt))
     387        if (comPlatformX86.GetCPUProperty(KCPUPropertyTypeX86_HWVirt))
    381388            acceleration << QApplication::translate("UIDetails", "Nested VT-x/AMD-V", "details (system)");
    382389        /* PAE/NX: */
    383         if (comMachine.GetCPUProperty(KCPUPropertyType_PAE))
     390        if (comPlatformX86.GetCPUProperty(KCPUPropertyTypeX86_PAE))
    384391            acceleration << QApplication::translate("UIDetails", "PAE/NX", "details (system)");
    385392        /* Paravirtualization provider: */
     
    711718
    712719    /* Iterate over all the adapters: */
    713     const ulong uCount = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(comMachine.GetChipsetType());
     720    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     721    CPlatform comPlatform = comMachine.GetPlatform();
     722    const ulong uCount = comProperties.GetMaxNetworkAdapters(comPlatform.GetChipsetType());
    714723    for (ulong uSlot = 0; uSlot < uCount; ++uSlot)
    715724    {
     
    876885
    877886    /* Iterate over all the ports: */
    878     const ulong uCount = uiCommon().virtualBox().GetSystemProperties().GetSerialPortCount();
     887    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     888    const ulong uCount = comProperties.GetSerialPortCount();
    879889    for (ulong uSlot = 0; uSlot < uCount; ++uSlot)
    880890    {
     
    887897        /* Gather port information: */
    888898        const KPortMode enmMode = comPort.GetHostMode();
    889         const QString strModeTemplate = UITranslator::toCOMPortName(comPort.GetIRQ(), comPort.GetIOBase()) + ", ";
     899        const QString strModeTemplate = UITranslator::toCOMPortName(comPort.GetIRQ(), comPort.GetIOAddress()) + ", ";
    890900        QString strModeType;
    891901        switch (enmMode)
     
    12871297{
    12881298    /* Determine max amount of network adapters: */
    1289     const CVirtualBox comVBox = uiCommon().virtualBox();
    1290     const KChipsetType enmChipsetType = comMachine.GetChipsetType();
    1291     CSystemProperties comSystemProperties = comVBox.GetSystemProperties();
    1292     const ulong cMaxNetworkAdapters = comSystemProperties.GetMaxNetworkAdapters(enmChipsetType);
     1299    CVirtualBox comVBox = uiCommon().virtualBox();
     1300    CPlatform comPlatform = comMachine.GetPlatform();
     1301    const KChipsetType enmChipsetType = comPlatform.GetChipsetType();
     1302    CPlatformProperties comPlatformProperties = comVBox.GetPlatformProperties(KPlatformArchitecture_x86);
     1303    const ulong cMaxNetworkAdapters = comPlatformProperties.GetMaxNetworkAdapters(enmChipsetType);
    12931304
    12941305    /* Gather adapter properties: */
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp

    r100861 r101035  
    6969#include "CNATNetwork.h"
    7070#include "CNetworkAdapter.h"
     71#include "CPlatformProperties.h"
    7172#include "CRangedIntegerFormValue.h"
    7273#include "CRangedInteger64FormValue.h"
     
    627628        UIErrorString::formatErrorInfo(comAppliance),
    628629        QString(), QString(), pParent);
     630}
     631
     632/* static */
     633void UINotificationMessage::cannotAcquirePlatformPropertiesParameter(const CPlatformProperties &comProperties)
     634{
     635    createMessage(
     636        QApplication::translate("UIMessageCenter", "Platform properties failure ..."),
     637        QApplication::translate("UIMessageCenter", "Failed to acquire platform properties parameter.") +
     638        UIErrorString::formatErrorInfo(comProperties));
    629639}
    630640
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h

    r100861 r101035  
    7878class CMouse;
    7979class CNetworkAdapter;
     80class CPlatformProperties;
    8081class CStorageController;
    8182class CSystemProperties;
     
    285286        static void cannotAcquireApplianceParameter(const CAppliance &comAppliance,
    286287                                                    UINotificationCenter *pParent = 0);
     288        /** Notifies about inability to acquire IPlatformProperties parameter.
     289          * @param  comProperties  Brings the object parameter get acquired from. */
     290        static void cannotAcquirePlatformPropertiesParameter(const CPlatformProperties &comProperties);
    287291        /** Notifies about inability to acquire ISystemProperties parameter.
    288292          * @param  comProperties  Brings the object parameter get acquired from. */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp

    r100900 r101035  
    9696#include "CMediumAttachment.h"
    9797#include "CNetworkAdapter.h"
     98#include "CPlatformProperties.h"
    9899#include "CRecordingSettings.h"
    99100#include "CSnapshot.h"
     
    26972698    KChipsetType enmChipsetType = KChipsetType_Null;
    26982699    uimachine()->acquireChipsetType(enmChipsetType);
    2699     const ulong uCount = qMin((ulong)4, (ulong)uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(enmChipsetType));
     2700    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     2701    const ulong uCount = qMin((ulong)4, (ulong)comProperties.GetMaxNetworkAdapters(enmChipsetType));
    27002702
    27012703    /* Enumerate existing network adapters: */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp

    r100606 r101035  
    6767#include "CMedium.h"
    6868#include "CMediumAttachment.h"
     69#include "CPlatform.h"
     70#include "CPlatformProperties.h"
    6971#include "CRecordingSettings.h"
    7072#include "CSnapshot.h"
     
    301303    if (comMachine.isNull())
    302304        return false;
    303     const KChipsetType enmChipsetType = comMachine.GetChipsetType();
     305    CPlatform comPlatform = comMachine.GetPlatform();
     306    const KChipsetType enmChipsetType = comPlatform.GetChipsetType();
    304307    const bool fSuccess = comMachine.isOk();
    305308    if (!fSuccess)
     
    12291232    CVirtualBox comVBox = uiCommon().virtualBox();
    12301233    AssertReturn(comVBox.isNotNull(), false);
    1231     CSystemProperties comProperties = comVBox.GetSystemProperties();
     1234    CPlatformProperties comProperties = comVBox.GetPlatformProperties(KPlatformArchitecture_x86);
    12321235    if (!comVBox.isOk())
    12331236    {
     
    12451248        fSuccess = comProperties.isOk();
    12461249        if (!fSuccess)
    1247             UINotificationMessage::cannotAcquireSystemPropertiesParameter(comProperties);
     1250            UINotificationMessage::cannotAcquirePlatformPropertiesParameter(comProperties);
    12481251        else
    12491252        {
     
    26932696
    26942697        /* Enumerate all the virtual network adapters: */
    2695         const ulong cCount = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(machine().GetChipsetType());
     2698        CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     2699        CPlatform comPlatform = machine().GetPlatform();
     2700        const ulong cCount = comProperties.GetMaxNetworkAdapters(comPlatform.GetChipsetType());
    26962701        for (ulong uAdapterIndex = 0; uAdapterIndex < cCount; ++uAdapterIndex)
    26972702        {
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIAudioControllerEditor.cpp

    r101011 r101035  
    3838
    3939/* COM includes: */
    40 #include "CSystemProperties.h"
     40#include "CPlatformProperties.h"
    4141
    4242
     
    147147
    148148        /* Load currently supported audio driver types: */
    149         CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     149        CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    150150        m_supportedValues = comProperties.GetSupportedAudioControllerTypes();
    151151
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIBootOrderEditor.cpp

    r101011 r101035  
    4444#include "COMEnums.h"
    4545#include "CMachine.h"
    46 #include "CSystemProperties.h"
     46#include "CPlatformProperties.h"
    4747
    4848
     
    333333                                                                    << KDeviceType_HardDisk
    334334                                                                    << KDeviceType_Network;
    335     const CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     335    const CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    336336    const int iPossibleBootListSize = qMin((ULONG)4, comProperties.GetMaxBootPosition());
    337337    possibleBootItems.resize(iPossibleBootListSize);
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIChipsetEditor.cpp

    r101011 r101035  
    3838
    3939/* COM includes: */
    40 #include "CSystemProperties.h"
     40#include "CPlatformProperties.h"
    4141
    4242
     
    150150
    151151        /* Load currently supported values: */
    152         CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     152        CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    153153        m_supportedValues = comProperties.GetSupportedChipsetTypes();
    154154
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIGraphicsControllerEditor.cpp

    r101011 r101035  
    3838
    3939/* COM includes: */
    40 #include "CSystemProperties.h"
     40#include "CPlatformProperties.h"
    4141
    4242
     
    156156
    157157        /* Load currently supported graphics controller types: */
    158         CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     158        CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    159159        m_supportedValues = comProperties.GetSupportedGraphicsControllerTypes();
    160160
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UINetworkFeaturesEditor.cpp

    r101011 r101035  
    4545
    4646/* COM includes: */
    47 #include "CSystemProperties.h"
     47#include "CPlatformProperties.h"
    4848
    4949
     
    465465
    466466        /* Load currently supported types: */
    467         CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     467        CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    468468        QVector<KNetworkAdapterType> supportedTypes = comProperties.GetSupportedNetworkAdapterTypes();
    469469
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIParavirtProviderEditor.cpp

    r101011 r101035  
    3838
    3939/* COM includes: */
    40 #include "CSystemProperties.h"
     40#include "CPlatformProperties.h"
    4141
    4242
     
    147147
    148148        /* Load currently supported paravirt provider types: */
    149         CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     149        CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    150150        m_supportedValues = comProperties.GetSupportedParavirtProviders();
    151151
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIStorageSettingsEditor.cpp

    r101011 r101035  
    6363
    6464/* COM includes: */
     65#include "CPlatformProperties.h"
    6566#include "CSystemProperties.h"
    6667
     
    12141215{
    12151216    /* Limit maximum port count: */
    1216     m_uPortCount = qMin(uPortCount, (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(bus()));
     1217    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     1218    m_uPortCount = qMin(uPortCount, (uint)comProperties.GetMaxPortCountForStorageBus(bus()));
    12171219}
    12181220
     
    12311233uint ControllerItem::maxPortCount()
    12321234{
    1233     return (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(bus());
     1235    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     1236    return (uint)comProperties.GetMaxPortCountForStorageBus(bus());
    12341237}
    12351238
     
    12471250{
    12481251    SlotsList allSlots;
    1249     CSystemProperties comProps = uiCommon().virtualBox().GetSystemProperties();
     1252    CPlatformProperties comProps = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    12501253    for (ULONG i = 0; i < comProps.GetMaxPortCountForStorageBus(bus()); ++ i)
    12511254        for (ULONG j = 0; j < comProps.GetMaxDevicesPerPortForStorageBus(bus()); ++ j)
     
    12641267DeviceTypeList ControllerItem::deviceTypeList() const
    12651268{
    1266     return uiCommon().virtualBox().GetSystemProperties().GetDeviceTypesForStorageBus(m_enmBus).toList();
     1269    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     1270    return comProperties.GetDeviceTypesForStorageBus(m_enmBus).toList();
    12671271}
    12681272
     
    13441348
    13451349    /* Load currently supported storage buses: */
    1346     CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     1350    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    13471351    const QVector<KStorageBus> supportedBuses = comProperties.GetSupportedStorageBuses();
    13481352
     
    13661370
    13671371    /* Load currently supported storage buses & types: */
    1368     CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     1372    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    13691373    const QVector<KStorageBus> supportedBuses = comProperties.GetSupportedStorageBuses();
    13701374    const QVector<KStorageControllerType> supportedTypes = comProperties.GetSupportedStorageControllerTypes();
     
    18591863        case R_IsMoreIDEControllersPossible:
    18601864        {
     1865            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    18611866            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    18621867                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_IDE) <
    1863                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_IDE));
     1868                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_IDE));
    18641869        }
    18651870        case R_IsMoreSATAControllersPossible:
    18661871        {
     1872            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    18671873            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    18681874                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_SATA) <
    1869                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SATA));
     1875                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SATA));
    18701876        }
    18711877        case R_IsMoreSCSIControllersPossible:
    18721878        {
     1879            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    18731880            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    18741881                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_SCSI) <
    1875                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SCSI));
     1882                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SCSI));
    18761883        }
    18771884        case R_IsMoreFloppyControllersPossible:
    18781885        {
     1886            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    18791887            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    18801888                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_Floppy) <
    1881                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_Floppy));
     1889                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_Floppy));
    18821890        }
    18831891        case R_IsMoreSASControllersPossible:
    18841892        {
     1893            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    18851894            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    18861895                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_SAS) <
    1887                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SAS));
     1896                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_SAS));
    18881897        }
    18891898        case R_IsMoreUSBControllersPossible:
    18901899        {
     1900            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    18911901            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    18921902                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_USB) <
    1893                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_USB));
     1903                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_USB));
    18941904        }
    18951905        case R_IsMoreNVMeControllersPossible:
    18961906        {
     1907            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    18971908            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    18981909                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_PCIe) <
    1899                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_PCIe));
     1910                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_PCIe));
    19001911        }
    19011912        case R_IsMoreVirtioSCSIControllersPossible:
    19021913        {
     1914            CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    19031915            return (m_enmConfigurationAccessLevel == ConfigurationAccessLevel_Full) &&
    19041916                   (qobject_cast<RootItem*>(m_pRootItem)->childCount(KStorageBus_VirtioSCSI) <
    1905                     uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_VirtioSCSI));
     1917                    comProperties.GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_VirtioSCSI));
    19061918        }
    19071919        case R_IsMoreAttachmentsPossible:
     
    19121924                {
    19131925                    ControllerItem *pItemController = qobject_cast<ControllerItem*>(pItem);
    1914                     CSystemProperties comProps = uiCommon().virtualBox().GetSystemProperties();
     1926                    CPlatformProperties comProps = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    19151927                    const bool fIsMoreAttachmentsPossible = (ULONG)rowCount(specifiedIndex) <
    19161928                                                            (comProps.GetMaxPortCountForStorageBus(pItemController->bus()) *
     
    22582270
    22592271                    /* Lets make sure there is enough of place for all the remaining attachments: */
     2272                    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    22602273                    const uint uMaxPortCount =
    2261                         (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(enmNewCtrBusType);
     2274                        (uint)comProperties.GetMaxPortCountForStorageBus(enmNewCtrBusType);
    22622275                    const uint uMaxDevicePerPortCount =
    2263                         (uint)uiCommon().virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus(enmNewCtrBusType);
     2276                        (uint)comProperties.GetMaxDevicesPerPortForStorageBus(enmNewCtrBusType);
    22642277                    const QList<QUuid> ids = pItemController->attachmentIDs();
    22652278                    if (uMaxPortCount * uMaxDevicePerPortCount < (uint)ids.size())
     
    26562669{
    26572670    QMap<KStorageBus, int> maximumMap;
     2671    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    26582672    for (int iStorageBusType = KStorageBus_IDE; iStorageBusType < KStorageBus_Max; ++iStorageBusType)
    2659     {
    26602673        maximumMap.insert((KStorageBus)iStorageBusType,
    2661                           uiCommon().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), (KStorageBus)iStorageBusType));
    2662     }
     2674                          comProperties.GetMaxInstancesOfStorageBus(chipsetType(), (KStorageBus)iStorageBusType));
    26632675    return maximumMap;
    26642676}
     
    32643276{
    32653277    /* Load currently supported storage buses and types: */
    3266     CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     3278    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    32673279    const QVector<KStorageBus> supportedBuses = comProperties.GetSupportedStorageBuses();
    32683280    const QVector<KStorageControllerType> supportedTypes = comProperties.GetSupportedStorageControllerTypes();
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UITpmEditor.cpp

    r101011 r101035  
    3838
    3939/* COM includes: */
    40 #include "CSystemProperties.h"
     40#include "CPlatformProperties.h"
    4141
    4242
     
    148148
    149149        /* Load currently supported values: */
    150         CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     150        CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    151151        m_supportedValues = comProperties.GetSupportedTpmTypes();
    152152
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIUSBControllerEditor.cpp

    r101011 r101035  
    3636
    3737/* COM includes: */
    38 #include "CSystemProperties.h"
     38#include "CPlatformProperties.h"
    3939
    4040
     
    145145{
    146146    /* Load currently supported types: */
    147     CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     147    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    148148    m_supportedValues = comProperties.GetSupportedUSBControllerTypes();
    149149
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp

    r98103 r101035  
    5252#include "CMedium.h"
    5353#include "CMediumAttachment.h"
     54#include "CPlatform.h"
     55#include "CPlatformX86.h"
    5456#include "CProgress.h"
    5557
     
    729731                // Should we check global object getters?
    730732                const CGuestOSType &comNewType = vbox.GetGuestOSType(newGeneralData.m_strGuestOsTypeId);
    731                 m_machine.SetCPUProperty(KCPUPropertyType_LongMode, comNewType.GetIs64Bit());
    732                 fSuccess = m_machine.isOk();
     733                CPlatform comPlatform = m_machine.GetPlatform();
     734                CPlatformX86 comPlatformX86 = comPlatform.GetX86();
     735                comPlatformX86.SetCPUProperty(KCPUPropertyTypeX86_LongMode, comNewType.GetIs64Bit());
     736                fSuccess = comPlatformX86.isOk();
     737                /// @todo convey error info ..
    733738            }
    734739        }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp

    r98103 r101035  
    4242#include "CNATEngine.h"
    4343#include "CNetworkAdapter.h"
     44#include "CPlatformProperties.h"
    4445
    4546
     
    907908              * is that the limitation to 4 isn't necessary any more, but this needs to be checked
    908909              * on all platforms to be certain that it's usable everywhere. */
    909             const ulong uCount = qMin((ULONG)4, uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(KChipsetType_PIIX3));
     910            const ulong uCount = qMin((ULONG)4, uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetMaxNetworkAdapters(KChipsetType_PIIX3));
    910911
    911912            /* Create corresponding adapter tabs: */
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp

    r100154 r101035  
    4545
    4646/* COM includes: */
     47#include "CPlatformProperties.h"
    4748#include "CSerialPort.h"
    4849
     
    800801            oldPortData.m_fPortEnabled = comPort.GetEnabled();
    801802            oldPortData.m_uIRQ = comPort.GetIRQ();
    802             oldPortData.m_uIOBase = comPort.GetIOBase();
     803            oldPortData.m_uIOBase = comPort.GetIOAddress();
    803804            oldPortData.m_hostMode = comPort.GetHostMode();
    804805            oldPortData.m_fServer = comPort.GetServer();
     
    973974        {
    974975            /* How many ports to display: */
    975             const ulong uCount = uiCommon().virtualBox().GetSystemProperties().GetSerialPortCount();
     976            const ulong uCount = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86).GetSerialPortCount();
    976977
    977978            /* Create corresponding port tabs: */
     
    11151116            if (fSuccess && isMachineOffline() && newPortData.m_uIOBase != oldPortData.m_uIOBase)
    11161117            {
    1117                 comPort.SetIOBase(newPortData.m_uIOBase);
     1118                comPort.SetIOAddress(newPortData.m_uIOBase);
    11181119                fSuccess = comPort.isOk();
    11191120            }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp

    r98103 r101035  
    4848
    4949/* COM includes: */
    50 #include "CBIOSSettings.h"
     50#include "CFirmwareSettings.h"
     51#include "CPlatform.h"
     52#include "CPlatformX86.h"
    5153#include "CNvramStore.h"
    5254#include "CTrustedPlatformModule.h"
     
    269271    UIDataSettingsMachineSystem oldSystemData;
    270272
     273    CPlatform comPlatform = m_machine.GetPlatform();
     274    CPlatformX86 comPlatformX86 = comPlatform.GetX86();
     275    CFirmwareSettings comFirmwareSettings = m_machine.GetFirmwareSettings();
     276    CNvramStore comStoreLvl1 = m_machine.GetNonVolatileStore();
     277    CUefiVariableStore comStoreLvl2 = comStoreLvl1.GetUefiVariableStore();
     278
    271279    /* Gather support flags: */
    272280    oldSystemData.m_fSupportedPAE = uiCommon().host().GetProcessorFeature(KProcessorFeature_PAE);
     
    278286    oldSystemData.m_iMemorySize = m_machine.GetMemorySize();
    279287    oldSystemData.m_bootItems = loadBootItems(m_machine);
    280     oldSystemData.m_chipsetType = m_machine.GetChipsetType();
     288    oldSystemData.m_chipsetType = comPlatform.GetChipsetType();
    281289    oldSystemData.m_tpmType = m_machine.GetTrustedPlatformModule().GetType();
    282290    oldSystemData.m_pointingHIDType = m_machine.GetPointingHIDType();
    283     oldSystemData.m_fEnabledIoApic = m_machine.GetBIOSSettings().GetIOAPICEnabled();
    284     oldSystemData.m_fEnabledEFI = m_machine.GetFirmwareType() >= KFirmwareType_EFI && m_machine.GetFirmwareType() <= KFirmwareType_EFIDUAL;
    285     oldSystemData.m_fEnabledUTC = m_machine.GetRTCUseUTC();
    286     CNvramStore comStoreLvl1 = m_machine.GetNonVolatileStore();
    287     CUefiVariableStore comStoreLvl2 = comStoreLvl1.GetUefiVariableStore();
     291    oldSystemData.m_fEnabledIoApic = comFirmwareSettings.GetIOAPICEnabled();
     292    oldSystemData.m_fEnabledEFI = comFirmwareSettings.GetFirmwareType() >= KFirmwareType_EFI && comFirmwareSettings.GetFirmwareType() <= KFirmwareType_EFIDUAL;
     293    oldSystemData.m_fEnabledUTC = comPlatform.GetRTCUseUTC();
    288294    oldSystemData.m_fAvailableSecureBoot = comStoreLvl2.isNotNull();
    289295    oldSystemData.m_fEnabledSecureBoot = oldSystemData.m_fAvailableSecureBoot
     
    295301    oldSystemData.m_cCPUCount = oldSystemData.m_fSupportedHwVirtEx ? m_machine.GetCPUCount() : 1;
    296302    oldSystemData.m_iCPUExecCap = m_machine.GetCPUExecutionCap();
    297     oldSystemData.m_fEnabledPAE = m_machine.GetCPUProperty(KCPUPropertyType_PAE);
    298     oldSystemData.m_fEnabledNestedHwVirtEx = m_machine.GetCPUProperty(KCPUPropertyType_HWVirt);
     303    oldSystemData.m_fEnabledPAE = comPlatformX86.GetCPUProperty(KCPUPropertyTypeX86_PAE);
     304    oldSystemData.m_fEnabledNestedHwVirtEx = comPlatformX86.GetCPUProperty(KCPUPropertyTypeX86_HWVirt);
    299305
    300306    /* Gather old 'Acceleration' data: */
    301307    oldSystemData.m_paravirtProvider = m_machine.GetParavirtProvider();
    302     oldSystemData.m_fEnabledNestedPaging = m_machine.GetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging);
     308    oldSystemData.m_fEnabledNestedPaging = comPlatformX86.GetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging);
    303309
    304310    /* Cache old data: */
     
    883889        if (fSuccess && isMachineOffline() && newSystemData.m_chipsetType != oldSystemData.m_chipsetType)
    884890        {
    885             m_machine.SetChipsetType(newSystemData.m_chipsetType);
    886             fSuccess = m_machine.isOk();
     891            CPlatform comPlatform = m_machine.GetPlatform();
     892            comPlatform.SetChipsetType(newSystemData.m_chipsetType);
     893            fSuccess = comPlatform.isOk();
     894            /// @todo convey error info ..
    887895        }
    888896        /* Save TPM type: */
     
    903911        if (fSuccess && isMachineOffline() && newSystemData.m_fEnabledIoApic != oldSystemData.m_fEnabledIoApic)
    904912        {
    905             m_machine.GetBIOSSettings().SetIOAPICEnabled(newSystemData.m_fEnabledIoApic);
    906             fSuccess = m_machine.isOk();
     913            CFirmwareSettings comFirmwareSettings = m_machine.GetFirmwareSettings();
     914            comFirmwareSettings.SetIOAPICEnabled(newSystemData.m_fEnabledIoApic);
     915            fSuccess = comFirmwareSettings.isOk();
     916            /// @todo convey error info ..
    907917        }
    908918        /* Save firware type (whether EFI is enabled): */
    909919        if (fSuccess && isMachineOffline() && newSystemData.m_fEnabledEFI != oldSystemData.m_fEnabledEFI)
    910920        {
    911             m_machine.SetFirmwareType(newSystemData.m_fEnabledEFI ? KFirmwareType_EFI : KFirmwareType_BIOS);
    912             fSuccess = m_machine.isOk();
     921            CFirmwareSettings comFirmwareSettings = m_machine.GetFirmwareSettings();
     922            comFirmwareSettings.SetFirmwareType(newSystemData.m_fEnabledEFI ? KFirmwareType_EFI : KFirmwareType_BIOS);
     923            fSuccess = comFirmwareSettings.isOk();
     924            /// @todo convey error info ..
    913925        }
    914926        /* Save whether UTC is enabled: */
    915927        if (fSuccess && isMachineOffline() && newSystemData.m_fEnabledUTC != oldSystemData.m_fEnabledUTC)
    916928        {
    917             m_machine.SetRTCUseUTC(newSystemData.m_fEnabledUTC);
    918             fSuccess = m_machine.isOk();
     929            CPlatform comPlatform = m_machine.GetPlatform();
     930            comPlatform.SetRTCUseUTC(newSystemData.m_fEnabledUTC);
     931            fSuccess = comPlatform.isOk();
     932            /// @todo convey error info ..
    919933        }
    920934        /* Save whether secure boot is enabled: */
     
    9891003        if (fSuccess && isMachineOffline() && newSystemData.m_fEnabledPAE != oldSystemData.m_fEnabledPAE)
    9901004        {
    991             m_machine.SetCPUProperty(KCPUPropertyType_PAE, newSystemData.m_fEnabledPAE);
    992             fSuccess = m_machine.isOk();
     1005            CPlatform comPlatform = m_machine.GetPlatform();
     1006            CPlatformX86 comPlatformX86 = comPlatform.GetX86();
     1007            comPlatformX86.SetCPUProperty(KCPUPropertyTypeX86_PAE, newSystemData.m_fEnabledNestedPaging);
     1008            fSuccess = comPlatformX86.isOk();
     1009            /// @todo convey error info ..
    9931010        }
    9941011        /* Save whether Nested HW Virt Ex is enabled: */
    9951012        if (fSuccess && isMachineOffline() && newSystemData.m_fEnabledNestedHwVirtEx != oldSystemData.m_fEnabledNestedHwVirtEx)
    9961013        {
    997             m_machine.SetCPUProperty(KCPUPropertyType_HWVirt, newSystemData.m_fEnabledNestedHwVirtEx);
    998             fSuccess = m_machine.isOk();
     1014            CPlatform comPlatform = m_machine.GetPlatform();
     1015            CPlatformX86 comPlatformX86 = comPlatform.GetX86();
     1016            comPlatformX86.SetCPUProperty(KCPUPropertyTypeX86_HWVirt, newSystemData.m_fEnabledNestedPaging);
     1017            fSuccess = comPlatformX86.isOk();
     1018            /// @todo convey error info ..
    9991019        }
    10001020        /* Save CPU execution cap: */
     
    10381058        if (fSuccess && isMachineOffline() && newSystemData.m_fEnabledNestedPaging != oldSystemData.m_fEnabledNestedPaging)
    10391059        {
    1040             m_machine.SetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging, newSystemData.m_fEnabledNestedPaging);
    1041             fSuccess = m_machine.isOk();
     1060            CPlatform comPlatform = m_machine.GetPlatform();
     1061            CPlatformX86 comPlatformX86 = comPlatform.GetX86();
     1062            comPlatformX86.SetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging, newSystemData.m_fEnabledNestedPaging);
     1063            fSuccess = comPlatformX86.isOk();
     1064            /// @todo convey error info ..
    10421065        }
    10431066
  • trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp

    r100075 r101035  
    6262#include "CAudioAdapter.h"
    6363#include "CAudioSettings.h"
     64#include "CFirmwareSettings.h"
    6465#include "CRecordingSettings.h"
    6566#include "CRecordingScreenSettings.h"
     
    6869#include "CMediumAttachment.h"
    6970#include "CNetworkAdapter.h"
     71#include "CPlatform.h"
     72#include "CPlatformX86.h"
     73#include "CPlatformProperties.h"
    7074#include "CSerialPort.h"
    7175#include "CSharedFolder.h"
    7276#include "CStorageController.h"
    73 #include "CSystemProperties.h"
    7477#include "CUSBController.h"
    7578#include "CUSBDeviceFilter.h"
     
    13591362
    13601363            /* Chipset Type? */
    1361             const KChipsetType enmChipsetType = comMachine.GetChipsetType();
    1362             const KChipsetType enmChipsetTypeOld = comMachineOld.GetChipsetType();
     1364            CPlatform comPlatform = comMachine.GetPlatform();
     1365            const KChipsetType enmChipsetType = comPlatform.GetChipsetType();
     1366            CPlatform comPlatformOld = comMachineOld.GetPlatform();
     1367            const KChipsetType enmChipsetTypeOld = comPlatformOld.GetChipsetType();
    13631368            if (enmChipsetType == KChipsetType_ICH9)
    13641369            {
     
    17151720    QStringList aReport;
    17161721    /* Iterate through boot device types: */
    1717     for (ulong i = 1; i <= uiCommon().virtualBox().GetSystemProperties().GetMaxBootPosition(); ++i)
     1722    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     1723    for (ulong i = 1; i <= comProperties.GetMaxBootPosition(); ++i)
    17181724    {
    17191725        const KDeviceType enmDevice = comMachine.GetBootOrder(i);
     
    17331739    /* Prepare report: */
    17341740    QString strReport;
    1735     switch (comMachine.GetFirmwareType())
     1741    CFirmwareSettings comFirmwareSettings = comMachine.GetFirmwareSettings();
     1742    switch (comFirmwareSettings.GetFirmwareType())
    17361743    {
    17371744        case KFirmwareType_EFI:
     
    17561763QString UISnapshotDetailsWidget::accelerationReport(const CMachine &comMachine)
    17571764{
     1765    /* Acquire platform stuff: */
     1766    CPlatform comPlatform = comMachine.GetPlatform();
     1767    CPlatformX86 comPlatformX86 = comPlatform.GetX86();
     1768
    17581769    /* Prepare report: */
    17591770    QStringList aReport;
     
    17621773    {
    17631774        /* VT-x/AMD-V? */
    1764         if (comMachine.GetHWVirtExProperty(KHWVirtExPropertyType_Enabled))
     1775        if (comPlatformX86.GetHWVirtExProperty(KHWVirtExPropertyType_Enabled))
    17651776        {
    17661777            aReport << QApplication::translate("UIDetails", "VT-x/AMD-V", "details (system)");
    17671778            /* Nested Paging? */
    1768             if (comMachine.GetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging))
     1779            if (comPlatformX86.GetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging))
    17691780                aReport << QApplication::translate("UIDetails", "Nested Paging", "details (system)");
    17701781        }
    17711782    }
    17721783    /* PAE/NX? */
    1773     if (comMachine.GetCPUProperty(KCPUPropertyType_PAE))
     1784    if (comPlatformX86.GetCPUProperty(KCPUPropertyTypeX86_PAE))
    17741785        aReport << QApplication::translate("UIDetails", "PAE/NX", "details (system)");
    17751786    /* Paravirtualization Interface? */
     
    19351946    QStringList aReport;
    19361947    /* Iterate through machine network adapters: */
    1937     const ulong iCount = uiCommon().virtualBox().GetSystemProperties().GetMaxNetworkAdapters(comMachine.GetChipsetType());
     1948    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     1949    CPlatform comPlatform = comMachine.GetPlatform();
     1950    const ulong iCount = comProperties.GetMaxNetworkAdapters(comPlatform.GetChipsetType());
    19381951    for (ulong iSlot = 0; iSlot < iCount; ++iSlot)
    19391952    {
     
    19932006    QStringList aReport;
    19942007    /* Iterate through machine serial ports: */
    1995     const ulong iCount = uiCommon().virtualBox().GetSystemProperties().GetSerialPortCount();
     2008    CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
     2009    const ulong iCount = comProperties.GetSerialPortCount();
    19962010    for (ulong iSlot = 0; iSlot < iCount; ++iSlot)
    19972011    {
     
    20042018            /* Compose the data: */
    20052019            QStringList aInfo;
    2006             aInfo << UITranslator::toCOMPortName(comPort.GetIRQ(), comPort.GetIOBase());
     2020            aInfo << UITranslator::toCOMPortName(comPort.GetIRQ(), comPort.GetIOAddress());
    20072021            if (   enmMode == KPortMode_HostPipe
    20082022                || enmMode == KPortMode_HostDevice
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp

    r100638 r101035  
    5151
    5252/* COM includes: */
     53#include "CPlatformProperties.h"
    5354#include "CSystemProperties.h"
    5455
     
    840841                QComboBox *pComboBox = new QComboBox(pParent);
    841842                /* Load currently supported network adapter types: */
    842                 CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
     843                CPlatformProperties comProperties = uiCommon().virtualBox().GetPlatformProperties(KPlatformArchitecture_x86);
    843844                QVector<KNetworkAdapterType> supportedTypes = comProperties.GetSupportedNetworkAdapterTypes();
    844845                /* Take currently requested type into account if it's sane: */
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.cpp

    r98103 r101035  
    190190    CVirtualBox comVBox = uiCommon().virtualBox();
    191191    /* Create a new machine object: */
    192     CMachine cloneMachine = comVBox.CreateMachine(m_strCloneFilePath, m_strCloneName, QVector<QString>(), QString(), QString(),
     192    CMachine cloneMachine = comVBox.CreateMachine(m_strCloneFilePath, m_strCloneName, KPlatformArchitecture_x86,
     193                                                  QVector<QString>(), QString(), QString(),
    193194                                                  QString(), QString(), QString());
    194195    if (!comVBox.isOk())
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp

    r99207 r101035  
    4545#include "CAudioAdapter.h"
    4646#include "CAudioSettings.h"
    47 #include "CBIOSSettings.h"
     47#include "CFirmwareSettings.h"
    4848#include "CGraphicsAdapter.h"
    4949#include "CExtPackManager.h"
    5050#include "CMediumFormat.h"
     51#include "CPlatform.h"
     52#include "CPlatformX86.h"
    5153#include "CStorageController.h"
    5254#include "CUSBController.h"
     
    157159        m_machine = vbox.CreateMachine(m_strMachineFilePath,
    158160                                       m_strMachineBaseName,
     161                                       KPlatformArchitecture_x86,
    159162                                       groups, strTypeId, QString(),
    160163                                       QString(), QString(), QString());
     
    166169        }
    167170    }
     171
     172    CFirmwareSettings comFirmwareSettings = m_machine.GetFirmwareSettings();
    168173
    169174#if 0
     
    182187    /* Enabled I/O APIC explicitly in we have more than 1 VCPU: */
    183188    if (iVPUCount > 1)
    184         m_machine.GetBIOSSettings().SetIOAPICEnabled(true);
     189        comFirmwareSettings.SetIOAPICEnabled(true);
    185190
    186191    /* Set recommended firmware type: */
    187     m_machine.SetFirmwareType(m_fEFIEnabled ? KFirmwareType_EFI : KFirmwareType_BIOS);
     192    comFirmwareSettings.SetFirmwareType(m_fEFIEnabled ? KFirmwareType_EFI : KFirmwareType_BIOS);
    188193#endif
    189194
     
    276281void UIWizardNewVM::configureVM(const QString &strGuestTypeId, const CGuestOSType &comGuestType)
    277282{
     283    /* Acquire platform stuff: */
     284    CPlatform comPlatform = m_machine.GetPlatform();
     285    CPlatformX86 comPlatformX86 = comPlatform.GetX86();
     286    CFirmwareSettings comFirmwareSettings = m_machine.GetFirmwareSettings();
     287
    278288    /* Get graphics adapter: */
    279289    CGraphicsAdapter comGraphics = m_machine.GetGraphicsAdapter();
     
    288298    /* Enabled I/O APIC explicitly in we have more than 1 VCPU: */
    289299    if (iVPUCount > 1)
    290         m_machine.GetBIOSSettings().SetIOAPICEnabled(true);
     300        comFirmwareSettings.SetIOAPICEnabled(true);
    291301
    292302    /* Graphics Controller type: */
     
    297307
    298308    /* Selecting recommended chipset type: */
    299     m_machine.SetChipsetType(comGuestType.GetRecommendedChipset());
     309    comPlatform.SetChipsetType(comGuestType.GetRecommendedChipset());
    300310
    301311    /* Selecting recommended Audio Controller: */
     
    373383
    374384    /* Turn on PAE, if recommended: */
    375     m_machine.SetCPUProperty(KCPUPropertyType_PAE, comGuestType.GetRecommendedPAE());
     385    comPlatformX86.SetCPUProperty(KCPUPropertyTypeX86_PAE, comGuestType.GetRecommendedPAE());
    376386
    377387    /* Set the recommended triple fault behavior: */
    378     m_machine.SetCPUProperty(KCPUPropertyType_TripleFaultReset, comGuestType.GetRecommendedTFReset());
     388    comPlatformX86.SetCPUProperty(KCPUPropertyTypeX86_TripleFaultReset, comGuestType.GetRecommendedTFReset());
    379389
    380390    /* Set recommended firmware type: */
    381     m_machine.SetFirmwareType(m_fEFIEnabled ? KFirmwareType_EFI : KFirmwareType_BIOS);
     391    comFirmwareSettings.SetFirmwareType(m_fEFIEnabled ? KFirmwareType_EFI : KFirmwareType_BIOS);
    382392
    383393    /* Set recommended human interface device types: */
     
    398408
    399409    /* Set HPET flag: */
    400     m_machine.SetHPETEnabled(comGuestType.GetRecommendedHPET());
     410    comPlatformX86.SetHPETEnabled(comGuestType.GetRecommendedHPET());
    401411
    402412    /* Set UTC flags: */
    403     m_machine.SetRTCUseUTC(comGuestType.GetRecommendedRTCUseUTC());
     413    comPlatform.SetRTCUseUTC(comGuestType.GetRecommendedRTCUseUTC());
    404414
    405415    /* Set graphic bits: */
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