VirtualBox

Changeset 24706 in vbox for trunk/src/VBox/Devices/EFI


Ignore:
Timestamp:
Nov 16, 2009 5:57:20 PM (15 years ago)
Author:
vboxsync
Message:

EFI: ACPI work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/DevEFI.cpp

    r23400 r24706  
    4848#include "../Builtins.h"
    4949#include "../Builtins2.h"
     50#include "../PC/DevFwCommon.h"
    5051
    5152/* EFI includes */
     
    100101
    101102    uint64_t cbRamHole;
     103
     104    /** The DMI tables. */
     105    uint8_t         au8DMIPage[0x1000];
     106
     107    /** I/O-APIC enabled? */
     108    uint8_t         u8IOAPIC;
    102109} DEVEFI;
    103110typedef DEVEFI *PDEVEFI;
     
    839846                              "RamSize\0"
    840847                              "RamHoleSize\0"
    841                               "NumCPUs\0"))
     848                              "NumCPUs\0"
     849                              "UUID\0"
     850                              "IOAPIC\0"
     851                              "DmiBIOSVendor\0"
     852                              "DmiBIOSVersion\0"
     853                              "DmiBIOSReleaseDate\0"
     854                              "DmiBIOSReleaseMajor\0"
     855                              "DmiBIOSReleaseMinor\0"
     856                              "DmiBIOSFirmwareMajor\0"
     857                              "DmiBIOSFirmwareMinor\0"
     858                              "DmiSystemFamily\0"
     859                              "DmiSystemProduct\0"
     860                              "DmiSystemSerial\0"
     861                              "DmiSystemUuid\0"
     862                              "DmiSystemVendor\0"
     863                              "DmiSystemVersion\0"
     864                              "DmiChassisVendor\0"
     865                              "DmiChassisVersion\0"
     866                              "DmiChassisSerial\0"
     867                              "DmiChassisAssetTag\0"
     868#ifdef VBOX_WITH_DMI_OEMSTRINGS
     869                              "DmiOEMVBoxVer\0"
     870                              "DmiOEMVBoxRev\0"
     871#endif
     872                              ))
    842873        return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,
    843874                                N_("Configuration error: Invalid config value(s) for the EFI device"));
     875
     876    rc = CFGMR3QueryU8Def(pCfgHandle, "IOAPIC", &pThis->u8IOAPIC, 1);
     877    if (RT_FAILURE (rc))
     878        return PDMDEV_SET_ERROR(pDevIns, rc,
     879                                N_("Configuration error: Failed to read \"IOAPIC\""));
     880
     881    /*
     882     * Query the machine's UUID for SMBIOS/DMI use.
     883     */
     884    RTUUID  uuid;
     885    rc = CFGMR3QueryBytes(pCfgHandle, "UUID", &uuid, sizeof(uuid));
     886    if (RT_FAILURE(rc))
     887        return PDMDEV_SET_ERROR(pDevIns, rc,
     888                                N_("Configuration error: Querying \"UUID\" failed"));
     889
     890    /* Convert the UUID to network byte order. Not entirely straightforward as parts are MSB already... */
     891    uuid.Gen.u32TimeLow = RT_H2BE_U32(uuid.Gen.u32TimeLow);
     892    uuid.Gen.u16TimeMid = RT_H2BE_U16(uuid.Gen.u16TimeMid);
     893    uuid.Gen.u16TimeHiAndVersion = RT_H2BE_U16(uuid.Gen.u16TimeHiAndVersion);
     894    rc = sharedfwPlantDMITable(pDevIns, pThis->au8DMIPage, VBOX_DMI_TABLE_SIZE, &uuid, pCfgHandle);
     895    if (RT_FAILURE(rc))
     896        return rc;
     897    if (pThis->u8IOAPIC)
     898        sharedfwPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE, pThis->cCpus);
     899
     900    rc = PDMDevHlpROMRegister(pDevIns, VBOX_DMI_TABLE_BASE, _4K, pThis->au8DMIPage,
     901                              PGMPHYS_ROM_FLAGS_PERMANENT_BINARY, "DMI tables");
     902    if (RT_FAILURE(rc))
     903        return rc;
    844904
    845905    /* RAM sizes */
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