VirtualBox

Changeset 19007 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 18, 2009 8:07:59 AM (16 years ago)
Author:
vboxsync
Message:

Main: centralized control for extended device profiles, ACPI cleanup

Location:
trunk/src/VBox
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/DevACPI.cpp

    r18996 r19007  
    141141    SYSTEM_INFO_INDEX_CPU3_STATUS       = 8,
    142142    SYSTEM_INFO_INDEX_HIGH_MEMORY_LENGTH= 9,
    143     SYSTEM_INFO_INDEX_END               = 10,
     143    SYSTEM_INFO_INDEX_RTC_STATUS        = 10,
     144    SYSTEM_INFO_INDEX_END               = 11,
    144145    SYSTEM_INFO_INDEX_INVALID           = 0x80,
    145146    SYSTEM_INFO_INDEX_VALID             = 0x200
     
    214215    /** If ACPI CPU device should be shown */
    215216    bool                fShowCpu;
     217    /** If Real Time Clock ACPI object to be shown */
     218    bool                fShowRtc;
    216219    /** Aligning IBase. */
    217     bool                afAlignment[6];
     220    bool                afAlignment[5];
    218221
    219222    /** ACPI port base interface. */
     
    13171320                            : 0;
    13181321                    break;
     1322               
    13191323                case SYSTEM_INFO_INDEX_CPU0_STATUS:
    1320                     *pu32 = s->fShowCpu ? (  STA_DEVICE_PRESENT_MASK
    1321                                            | STA_DEVICE_ENABLED_MASK
    1322                                            | STA_DEVICE_SHOW_IN_UI_MASK
    1323                                            | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
    1324                             : 0;
    1325                     break;
    1326 
    13271324                case SYSTEM_INFO_INDEX_CPU1_STATUS:
    13281325                case SYSTEM_INFO_INDEX_CPU2_STATUS:
     
    13351332                            | STA_DEVICE_FUNCTIONING_PROPERLY_MASK
    13361333                          : 0;
     1334                    break;
     1335
     1336                 case SYSTEM_INFO_INDEX_RTC_STATUS:
     1337                    *pu32 = s->fShowRtc ? (  STA_DEVICE_PRESENT_MASK
     1338                                           | STA_DEVICE_ENABLED_MASK
     1339                                           | STA_DEVICE_SHOW_IN_UI_MASK
     1340                                           | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
     1341                            : 0;
    13371342                    break;
    13381343
     
    18031808                              "SmcEnabled\0"
    18041809                              "FdcEnabled\0"
     1810                              "ShowRtc\0"
     1811                              "ShowCpu\0"
    18051812                              ))
    18061813        return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,
     
    18361843        return PDMDEV_SET_ERROR(pDevIns, rc,
    18371844                                N_("Configuration error: Failed to read \"SmcEnabled\""));
    1838     /** @todo: a bit of hack: if we have SMC, also show CPU object in ACPI tables */
    1839     s->fShowCpu = s->fUseSmc;
     1845
     1846    /* query whether we are supposed to present RTC object */
     1847    rc = CFGMR3QueryBoolDef(pCfgHandle, "ShowRtc", &s->fShowRtc, false);
     1848    if (RT_FAILURE(rc))
     1849        return PDMDEV_SET_ERROR(pDevIns, rc,
     1850                                N_("Configuration error: Failed to read \"ShowRtc\""));
     1851
     1852    /* query whether we are supposed to present CPU objects */
     1853    rc = CFGMR3QueryBoolDef(pCfgHandle, "ShowCpu", &s->fShowCpu, false);
     1854    if (RT_FAILURE(rc))
     1855        return PDMDEV_SET_ERROR(pDevIns, rc,
     1856                                N_("Configuration error: Failed to read \"ShowCpu\""));
    18401857
    18411858    rc = CFGMR3QueryBool(pCfgHandle, "GCEnabled", &fGCEnabled);
  • trunk/src/VBox/Devices/PC/vbox.dsl

    r18228 r19007  
    184184            UCP3,  32,
    185185            MEMH,  32,
     186            URTC,  32,
    186187            Offset (0x80),
    187188            ININ, 32,
     
    951952        Device(HPET) {
    952953            Name(_HID,  EISAID("PNP0103"))
    953 // bird: Perhaps this is the cause for the RTC bitching below, but I've no patience to fine out.
    954 //            Name (_CID, 0x010CD041)
     954            Name (_CID, 0x010CD041)
    955955            Name(_UID, 0)
    956956            Method (_STA, 0, NotSerialized) {
     
    970970        }
    971971
    972 // bird: Doesn't work, breaks Vista and W7. Why is the length 8 and not 2? The examples
    973 //       I've got here uses 2 and also  includes IRQNoFlags () {8}
    974 //       Note: Do NOT even thing about re-enabling this without testing ALL windows versions.
    975 //
    976 //        Device (RTC) {
    977 //            Name (_HID, EisaId ("PNP0B00"))
    978 //            Name (_CRS, ResourceTemplate ()
    979 //            {
    980 //                IO (Decode16,
    981 //                    0x0070,             // Range Minimum
    982 //                    0x0070,             // Range Maximum
    983 //                    0x01,               // Alignment
    984 //                    0x08,               // Length
    985 //                    )
    986 //            })
    987 //        }
     972        // Conditionally enabled, as lead to hang of Windows 7 and Vista guests
     973        Device (RTC) {
     974            Name (_HID, EisaId ("PNP0B00"))
     975            Name (_CRS, ResourceTemplate ()
     976            {
     977                IO (Decode16,
     978                    0x0070,             // Range Minimum
     979                    0x0070,             // Range Maximum
     980                    0x01,               // Alignment
     981                    0x08,               // Length
     982                    )
     983            })
     984            Method (_STA, 0, NotSerialized)
     985            {
     986                Return (URTC)
     987            }
     988        }
    988989
    989990       // System Management Controller
  • trunk/src/VBox/Main/ConsoleImpl2.cpp

    r19002 r19007  
    480480    rc = CFGMR3InsertInteger(pInst, "PCIBusNo",             1);/* ->pcibridge[0] */ RC_CHECK();
    481481#endif
     482   
     483   
     484    Bstr tmpStr;
     485    rc = pMachine->GetExtraData(Bstr("VBoxInternal/Devices/SupportExtHwProfile"), tmpStr.asOutParam());
     486
     487    BOOL fExtProfile;
     488
     489    if (SUCCEEDED(rc))
     490        fExtProfile = (tmpStr == Bstr("on"));
     491    else
     492        fExtProfile = false;
    482493
    483494    /*
     
    485496     */
    486497    BOOL fHpetEnabled;
    487     /** @todo: implement appropriate getter */
    488498#ifdef VBOX_WITH_HPET
    489     fHpetEnabled = true;
     499    fHpetEnabled = fExtProfile;
    490500#else
    491501    fHpetEnabled = false;
     
    503513     */
    504514    BOOL fSmcEnabled;
    505     /** @todo: implement appropriate getter */
    506515#ifdef VBOX_WITH_SMC
    507     fSmcEnabled = true;
     516    fSmcEnabled = fExtProfile;
    508517#else
    509518    fSmcEnabled = false;
     
    522531    /** @todo: implement appropriate getter */
    523532#ifdef VBOX_WITH_LPC
    524     fLpcEnabled = true;
     533    fLpcEnabled = fExtProfile;
    525534#else
    526535    fLpcEnabled = false;
     
    658667        rc = CFGMR3InsertInteger(pCfg,  "SmcEnabled", fSmcEnabled);                 RC_CHECK();
    659668#endif
     669        rc = CFGMR3InsertInteger(pCfg,  "ShowRtc", fExtProfile);                    RC_CHECK();     
     670        rc = CFGMR3InsertInteger(pCfg,  "ShowCpu", fExtProfile);                    RC_CHECK();
    660671        rc = CFGMR3InsertInteger(pInst, "PCIDeviceNo",          7);                 RC_CHECK();
    661672        Assert(!afPciDeviceNo[7]);
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