VirtualBox

Changeset 61100 in vbox for trunk


Ignore:
Timestamp:
May 20, 2016 1:46:42 PM (9 years ago)
Author:
vboxsync
Message:

Main/Console: limit the firmware APIC level to what the hardware can do, giving an appropriate message in the release log

File:
1 edited

Legend:

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

    r61053 r61100  
    823823    APICMode_T apicMode;
    824824    hrc = biosSettings->COMGETTER(APICMode)(&apicMode);                                     H();
    825     uint32_t uAPIC;
     825    uint32_t uFwAPIC;
    826826    switch (apicMode)
    827827    {
    828828        case APICMode_Disabled:
    829             uAPIC = 0;
     829            uFwAPIC = 0;
    830830            break;
    831831        case APICMode_APIC:
    832             uAPIC = 1;
     832            uFwAPIC = 1;
    833833            break;
    834834        case APICMode_X2APIC:
    835             uAPIC = 2;
     835            uFwAPIC = 2;
    836836            break;
    837837        default:
    838838            AssertMsgFailed(("Invalid APICMode=%d\n", apicMode));
    839             uAPIC = 1;
     839            uFwAPIC = 1;
    840840            break;
    841841    }
     
    10311031            fEnableX2APIC = false;
    10321032        }
     1033
     1034        /* Adjust firmware APIC handling to stay within the VCPU limits. */
     1035        if (uFwAPIC == 2 && !fEnableX2APIC)
     1036        {
     1037            if (fEnableAPIC)
     1038                uFwAPIC = 1;
     1039            else
     1040                uFwAPIC = 0;
     1041            LogRel(("Limiting the firmware APIC level from x2APIC to %s\n", fEnableAPIC ? "APIC" : "Disabled"));
     1042        }
     1043        else if (uFwAPIC == 1 && !fEnableAPIC)
     1044        {
     1045            uFwAPIC = 0;
     1046            LogRel(("Limiting the firmware APIC level from APIC to Disabled\n"));
     1047        }
    10331048
    10341049        /*
     
    16681683            InsertConfigString(pBiosCfg,   "FloppyDevice",         "i82078");
    16691684            InsertConfigInteger(pBiosCfg,  "IOAPIC",               fIOAPIC);
    1670             InsertConfigInteger(pBiosCfg,  "APIC",                 uAPIC);
     1685            InsertConfigInteger(pBiosCfg,  "APIC",                 uFwAPIC);
    16711686            BOOL fPXEDebug;
    16721687            hrc = biosSettings->COMGETTER(PXEDebugEnabled)(&fPXEDebug);                     H();
     
    17731788            InsertConfigString(pCfg,   "DeviceProps",      deviceProps);
    17741789            InsertConfigInteger(pCfg,  "IOAPIC",           fIOAPIC);
    1775             InsertConfigInteger(pCfg,  "APIC",             uAPIC);
     1790            InsertConfigInteger(pCfg,  "APIC",             uFwAPIC);
    17761791            InsertConfigBytes(pCfg,    "UUID", &HardwareUuid,sizeof(HardwareUuid));
    17771792            InsertConfigInteger(pCfg,  "64BitEntry", f64BitEntry); /* boolean */
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