VirtualBox

Changeset 16711 in vbox


Ignore:
Timestamp:
Feb 12, 2009 3:46:54 PM (16 years ago)
Author:
vboxsync
Message:

ACPI: conditionally enable showing CPU ACPI object, needed by some guests

Location:
trunk/src/VBox/Devices/PC
Files:
2 edited

Legend:

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

    r16247 r16711  
    134134    SYSTEM_INFO_INDEX_SMC_STATUS        = 3,
    135135    SYSTEM_INFO_INDEX_FDC_STATUS        = 4,
    136     SYSTEM_INFO_INDEX_LAST              = 5,
     136    SYSTEM_INFO_INDEX_CPU0_STATUS       = 5,
     137    SYSTEM_INFO_INDEX_CPU1_STATUS       = 6,
     138    SYSTEM_INFO_INDEX_CPU2_STATUS       = 7,
     139    SYSTEM_INFO_INDEX_CPU3_STATUS       = 8,
     140    SYSTEM_INFO_INDEX_LAST              = 9,
    137141    SYSTEM_INFO_INDEX_INVALID           = 0x80,
    138142    SYSTEM_INFO_INDEX_VALID             = 0x200
     
    194198    /** the guest handled the last power button event */
    195199    bool                fPowerButtonHandled;
     200    /** If ACPI CPU device should be shown */
     201    bool                fShowCpu;
    196202    /** Aligning IBase. */
    197     bool                afAlignment[3];
     203    bool                afAlignment[2];
    198204
    199205    /** ACPI port base interface. */
     
    809815    madt.IOApic.u8Type     = 1;
    810816    madt.IOApic.u8Length   = sizeof(ACPITBLIOAPIC);
    811     madt.IOApic.u8IOApicId = 0;
     817    madt.IOApic.u8IOApicId = 1;
    812818    madt.IOApic.u8Reserved = 0;
    813819    madt.IOApic.u32Address = RT_H2LE_U32(0xfec00000);
     
    13291335                            : 0;
    13301336                    break;
    1331 
     1337                case SYSTEM_INFO_INDEX_CPU0_STATUS:
     1338                    *pu32 = s->fShowCpu ? (  STA_DEVICE_PRESENT_MASK
     1339                                           | STA_DEVICE_ENABLED_MASK
     1340                                           | STA_DEVICE_SHOW_IN_UI_MASK
     1341                                           | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
     1342                            : 0;
     1343                    break;
     1344
     1345                case SYSTEM_INFO_INDEX_CPU1_STATUS:
     1346                case SYSTEM_INFO_INDEX_CPU2_STATUS:
     1347                case SYSTEM_INFO_INDEX_CPU3_STATUS:
     1348                    *pu32 = 0;
     1349                    break;
    13321350
    13331351                /* Solaris 9 tries to read from this index */
     
    18141832        return PDMDEV_SET_ERROR(pDevIns, rc,
    18151833                                N_("Configuration error: Failed to read \"SmcEnabled\""));
     1834    /** @todo: a bit of hack: if we have SMC, also show CPU in ACPI */
     1835    s->fShowCpu = s->fUseSmc;
    18161836
    18171837    rc = CFGMR3QueryBool (pCfgHandle, "GCEnabled", &fGCEnabled);
  • trunk/src/VBox/Devices/PC/vbox.dsl

    r16170 r16711  
    123123    // with SpeedStep if it finds a CPU object and when it finds out that it can't, it
    124124    // tries to unload and crashes (MS probably never tested this code path).
    125 //    Scope (\_PR)
    126 //    {
    127 //        Processor (CPU1, 0x01, 0x00000000, 0x00) {}
    128 //    }
     125    Scope (\_PR)
     126    {
     127        Processor (CPU0, 0x00, 0x00000410, 0x06)
     128        {
     129           Method (_STA) { Return(\_SB.UCP0) }
     130        }
     131        // Maybe we'll need more entries for SMP systems, enabled depending on runtime config
     132    }
    129133
    130134    Scope (\_SB)
     
    139143        IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
    140144        {
    141             MEML, 32,
    142             UIOA, 32,
    143             UHPT, 32,
    144             USMC, 32,
    145             UFDC, 32,
     145            MEML,  32,
     146            UIOA,  32,
     147            UHPT,  32,
     148            USMC,  32,
     149            UFDC,  32,
     150            UCP0,  32,
    146151            Offset (0x80),
    147152            ININ, 32,
     
    163168            DBG ("UFDC: ")
    164169            HEX4 (UFDC)
     170            DBG ("UCP0: ")
     171            HEX4 (UCP0)
    165172        }
    166173
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