VirtualBox

Changeset 16041 in vbox


Ignore:
Timestamp:
Jan 19, 2009 12:01:27 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
41729
Message:

reverted 41727

Location:
trunk/src/VBox
Files:
4 edited

Legend:

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

    r16039 r16041  
    6666#define SYSI_DATA       0x0000404c
    6767#define ACPI_RESET_BLK  0x00004050
    68 #define FDC_STATUS      0x00004054
    6968
    7069/* PM1x status register bits */
     
    132131    SYSTEM_INFO_INDEX_MEMORY_LENGTH     = 0,
    133132    SYSTEM_INFO_INDEX_USE_IOAPIC        = 1,
    134     SYSTEM_INFO_INDEX_LAST              = 2,
     133    SYSTEM_INFO_INDEX_HPET_STATUS       = 2,
     134    SYSTEM_INFO_INDEX_SMC_STATUS        = 3,
     135    SYSTEM_INFO_INDEX_FDC_STATUS        = 4,
     136    SYSTEM_INFO_INDEX_LAST              = 5,
    135137    SYSTEM_INFO_INDEX_INVALID           = 0x80,
    136138    SYSTEM_INFO_INDEX_VALID             = 0x200
     
    143145#define BAT_TECH_SECONDARY                      2
    144146
    145 #define STA_DEVICE_PRESENT_MASK                 RT_BIT(0)
    146 #define STA_DEVICE_ENABLED_MASK                 RT_BIT(1)
    147 #define STA_DEVICE_SHOW_IN_UI_MASK              RT_BIT(2)
    148 #define STA_DEVICE_FUNCTIONING_PROPERLY_MASK    RT_BIT(3)
    149 #define STA_BATTERY_PRESENT_MASK                RT_BIT(4)
     147#define STA_DEVICE_PRESENT_MASK                 RT_BIT(0) /**< present */
     148#define STA_DEVICE_ENABLED_MASK                 RT_BIT(1) /**< enabled and decodes its resources */
     149#define STA_DEVICE_SHOW_IN_UI_MASK              RT_BIT(2) /**< should be shown in UI */
     150#define STA_DEVICE_FUNCTIONING_PROPERLY_MASK    RT_BIT(3) /**< functioning properly */
     151#define STA_BATTERY_PRESENT_MASK                RT_BIT(4) /**< the battery is present */
    150152
    151153struct ACPIState
     
    196198    /** Pointer to the driver connector interface */
    197199    R3PTRTYPE(PPDMIACPICONNECTOR) pDrv;
     200
     201    /* If High Precision Event Timer device should be supported */
     202    uint8_t             u8UseHpet;
     203    /* If System Management Controller device should be supported */
     204    uint8_t             u8UseSmc;
     205
     206    uint32_t            Alignment0; /**< Structure size alignment. */
    198207};
    199208
     
    533542IO_WRITE_PROTO (acpiBatIndexWrite);
    534543IO_READ_PROTO  (acpiBatDataRead);
    535 IO_READ_PROTO  (acpiFdcStatusRead);
    536544IO_READ_PROTO  (acpiSysInfoDataRead);
    537545IO_WRITE_PROTO (acpiSysInfoDataWrite);
     
    12461254}
    12471255
    1248 IO_READ_PROTO (acpiFdcStatusRead)
    1249 {
    1250     ACPIState *s = (ACPIState *)pvUser;
    1251 
    1252     switch (cb)
    1253     {
    1254         case 4:
    1255             *pu32 = s->u8UseFdc
    1256                 ?   STA_DEVICE_PRESENT_MASK                 /* present */
    1257                   | STA_DEVICE_ENABLED_MASK                 /* enabled and decodes its resources */
    1258                   | STA_DEVICE_SHOW_IN_UI_MASK              /* should be shown in UI */
    1259                   | STA_DEVICE_FUNCTIONING_PROPERLY_MASK    /* functioning properly */
    1260                 : 0;                                        /* device not present */
    1261             break;
    1262         default:
    1263             return VERR_IOM_IOPORT_UNUSED;
    1264     }
    1265     return VINF_SUCCESS;
    1266 }
    1267 
    12681256IO_WRITE_PROTO (acpiSysInfoIndexWrite)
    12691257{
     
    12771265        else
    12781266        {
     1267            /* see comment at the declaration of u8IndexShift */
     1268            if (s->u8IndexShift == 0)
     1269            {
     1270                uint32_t u32Index;
     1271                for (u32Index = 0; u32Index < SYSTEM_INFO_INDEX_LAST; u32Index++)
     1272                {
     1273                    if (u32 == (u32Index << 2))
     1274                    {
     1275                        s->u8IndexShift = 2;
     1276                        break;
     1277                    }
     1278                }
     1279            }
    12791280            u32 >>= s->u8IndexShift;
    12801281            Assert (u32 < SYSTEM_INFO_INDEX_LAST);
     
    12931294{
    12941295    ACPIState *s = (ACPIState *)pvUser;
    1295 
     1296 
    12961297    switch (cb)
    12971298    {
    1298         case 4:
     1299        case 4:           
    12991300            switch (s->uSystemInfoIndex)
    13001301            {
     
    13061307                    *pu32 = s->u8UseIOApic;
    13071308                    break;
    1308                    
     1309
     1310                case SYSTEM_INFO_INDEX_HPET_STATUS:
     1311                    *pu32 = s->u8UseHpet ? (  STA_DEVICE_PRESENT_MASK
     1312                                            | STA_DEVICE_ENABLED_MASK
     1313                                            | STA_DEVICE_SHOW_IN_UI_MASK
     1314                                            | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
     1315                                         : 0;
     1316                    break;
     1317
     1318                case SYSTEM_INFO_INDEX_SMC_STATUS:
     1319                    *pu32 = s->u8UseSmc ? (  STA_DEVICE_PRESENT_MASK
     1320                                           | STA_DEVICE_ENABLED_MASK
     1321                                           /* no need to show this device in the UI */
     1322                                           | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
     1323                                        : 0;
     1324                    break;
     1325               
     1326                case SYSTEM_INFO_INDEX_FDC_STATUS:
     1327                    *pu32 = s->u8UseFdc ? (  STA_DEVICE_PRESENT_MASK
     1328                                           | STA_DEVICE_ENABLED_MASK
     1329                                           | STA_DEVICE_SHOW_IN_UI_MASK
     1330                                           | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
     1331                                        : 0;
     1332                    break;
     1333
     1334 
    13091335                /* Solaris 9 tries to read from this index */
    13101336                case SYSTEM_INFO_INDEX_INVALID:
     
    17541780                               "GCEnabled\0"
    17551781                               "R0Enabled\0"
    1756                                "FdcEnabled\0"))
     1782                               "FdcEnabled\0"
     1783                               "HpetEnabled\0"
     1784                               "SmcEnabled\0"))
    17571785        return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,
    17581786                                N_("Configuration error: Invalid config key for ACPI device"));
     
    17671795        return PDMDEV_SET_ERROR(pDevIns, rc,
    17681796                                N_("Configuration error: Failed to read \"IOAPIC\""));
     1797
     1798    /* query whether we are supposed to present HPET */
     1799    rc = CFGMR3QueryU8Def (pCfgHandle, "HpetEnabled", &s->u8UseHpet, 0);
     1800    if (RT_FAILURE(rc))
     1801        return PDMDEV_SET_ERROR(pDevIns, rc,
     1802                                N_("Configuration error: Failed to read \"HpetEnabled\""));
     1803     /* query whether we are supposed to present SMC */
     1804    rc = CFGMR3QueryU8Def (pCfgHandle, "SmcEnabled", &s->u8UseSmc, 0);
     1805    if (RT_FAILURE(rc))
     1806        return PDMDEV_SET_ERROR(pDevIns, rc,
     1807                                N_("Configuration error: Failed to read \"SmcEnabled\""));
    17691808
    17701809    rc = CFGMR3QueryU16Def(pCfgHandle, "NumCPUs", &s->cCpus, 1);
     
    18311870    R (SYSI_INDEX,     1, acpiSysInfoIndexWrite, NULL,                "ACPI system info index");
    18321871    R (SYSI_DATA,      1, acpiSysInfoDataWrite,  acpiSysInfoDataRead, "ACPI system info data");
    1833     R (FDC_STATUS,     1, NULL,                  acpiFdcStatusRead,   "ACPI FDC status index");
    18341872    R (GPE0_BLK + L,   L, acpiGpe0EnWrite,       acpiGpe0EnRead,      "ACPI GPE0 Enable");
    18351873    R (GPE0_BLK,       L, acpiGpe0StsWrite,      acpiGpe0StsRead,     "ACPI GPE0 Status");
     
    18671905
    18681906    dev = &s->dev;
    1869     dev->config[0x00] = 0x86;
    1870     dev->config[0x01] = 0x80;
    1871 
    1872     dev->config[0x02] = 0x13;
    1873     dev->config[0x03] = 0x71;
    1874 
    1875     dev->config[0x04] = 0x01;
     1907    PCIDevSetVendorId(dev, 0x8086); /* Intel */
     1908    PCIDevSetDeviceId(dev, 0x7113); /* 82371AB */
     1909
     1910    dev->config[0x04] = 0x01; /* command */
    18761911    dev->config[0x05] = 0x00;
    18771912
    1878     dev->config[0x06] = 0x80;
     1913    dev->config[0x06] = 0x80; /* status */
    18791914    dev->config[0x07] = 0x02;
    18801915    dev->config[0x08] = 0x08;
  • trunk/src/VBox/Devices/PC/vbox.dsl

    r16039 r16041  
    130130    Scope (\_SB)
    131131    {
    132         OperationRegion (SYSI, SystemIO, 0x4048, 0x08)
     132        OperationRegion (SYSI, SystemIO, 0x4048, 0x8)
    133133        Field (SYSI, DwordAcc, NoLock, Preserve)
    134134        {
     
    141141            MEML, 32,
    142142            UIOA, 32,
     143            UHPT, 32,
     144            USMC, 32,
     145            UFDC, 32,
    143146            Offset (0x80),
    144147            ININ, 32,
     
    154157            DBG ("UIOA: ")
    155158            HEX4 (UIOA)
     159            DBG ("UHPT: ")
     160            HEX4 (UHPT)
     161            DBG ("USMC: ")
     162            HEX4 (USMC)
     163            DBG ("UFDC: ")
     164            HEX4 (UFDC)
    156165        }
    157166
     
    230239            Package (0x04) {0x000FFFFF, 0x03, LNKB, 0x00,},
    231240
    232 /* Disabled atm because Vista wants a reactivation
    233241            Package (0x04) {0x0010FFFF, 0x00, LNKD, 0x00,},
    234242            Package (0x04) {0x0010FFFF, 0x01, LNKA, 0x00,},
     
    310318            Package (0x04) {0x001FFFFF, 0x02, LNKA, 0x00,},
    311319            Package (0x04) {0x001FFFFF, 0x03, LNKB, 0x00,}
    312 */
    313320        })
    314321
     
    387394            Package (0x04) {0x000FFFFF, 0x03, 0x00, 0x12,},
    388395
    389 /* Disabled atm because Vista wants a reactivation
    390396            Package (0x04) {0x0010FFFF, 0x00, 0x00, 0x10,},
    391397            Package (0x04) {0x0010FFFF, 0x01, 0x00, 0x11,},
     
    467473            Package (0x04) {0x001FFFFF, 0x02, 0x00, 0x11,},
    468474            Package (0x04) {0x001FFFFF, 0x03, 0x00, 0x12,}
    469 */
    470475        })
    471476
     
    493498            IRQ (Level, ActiveLow, Shared) {5,9,10,11}
    494499        })
     500       
     501        // High Precision Event Timer
     502        Device (HPET)
     503        {
     504            Name (_HID, EisaId ("PNP0103"))
     505            Name (_CID, 0x010CD041)
     506            Name (BUF0, ResourceTemplate ()
     507            {
     508                IRQNoFlags ()
     509                    {2}
     510                IRQNoFlags ()
     511                    {8}
     512                Memory32Fixed (ReadOnly,
     513                    0xFED00000,         // Address Base
     514                    0x00000400,         // Address Length
     515                    _Y16)
     516            })
     517            Method (_STA, 0, NotSerialized)
     518            {
     519                Return (UHPT)
     520            }
     521            Method (_CRS, 0, Serialized)
     522            {
     523                Return (BUF0)
     524            }
     525        }
     526
     527        // System Management Controller
     528        Device (SMC)
     529        {
     530            Name (_HID, EisaId ("APP0001"))
     531            Name (_CID, "smc-napa")
     532
     533            Method (_STA, 0, NotSerialized)
     534            {
     535                Return (USMC)
     536            }
     537            Name (_CRS, ResourceTemplate ()
     538            {
     539                IO (Decode16,
     540                    0x0300,             // Range Minimum
     541                    0x0300,             // Range Maximum
     542                    0x01,               // Alignment
     543                    0x20,               // Length
     544                    )
     545                IRQNoFlags ()
     546                    {6}
     547            })
     548        }
     549
    495550
    496551        // PCI bus 0
     
    568623                    Name (_HID, EisaId ("PNP0700"))
    569624
    570                     OperationRegion (CFDC, SystemIO, 0x4054, 0x08)
    571                     Field (CFDC, DwordAcc, NoLock, Preserve)
    572                     {
    573                         FSTA, 32,
    574                     }
    575 
    576625                    Method (_STA, 0, NotSerialized)
    577626                    {
    578                         Return (FSTA)
     627                          Return (UFDC)           
    579628                    }
    580 
    581629                    // Current resource settings
    582630                    Name (_CRS, ResourceTemplate ()
  • trunk/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp

    r16039 r16041  
    447447    GEN_CHECK_OFF(ACPIState, pDrvBase);
    448448    GEN_CHECK_OFF(ACPIState, pDrv);
     449    GEN_CHECK_OFF(ACPIState, u8UseHpet);
     450    GEN_CHECK_OFF(ACPIState, u8UseSmc);
    449451
    450452    /* PC/DevPIC.cpp */
  • trunk/src/VBox/Main/ConsoleImpl2.cpp

    r16039 r16041  
    558558        rc = CFGMR3InsertInteger(pCfg,  "IOAPIC", fIOAPIC);                         RC_CHECK();
    559559        rc = CFGMR3InsertInteger(pCfg,  "FdcEnabled", fFdcEnabled);                 RC_CHECK();
     560        rc = CFGMR3InsertInteger(pCfg,  "HpetEnabled", 0);                          RC_CHECK();
     561        rc = CFGMR3InsertInteger(pCfg,  "SmcEnabled", 0);                           RC_CHECK();
    560562        rc = CFGMR3InsertInteger(pInst, "PCIDeviceNo",          7);                 RC_CHECK();
    561563        Assert(!afPciDeviceNo[7]);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette