VirtualBox

Changeset 73142 in vbox for trunk/src/VBox/Devices/PC


Ignore:
Timestamp:
Jul 16, 2018 9:09:38 AM (7 years ago)
Author:
vboxsync
Message:

BIOS/EFI: Explicitly specify MP table base address rather than hardcoding.

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

Legend:

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

    r71061 r73142  
    11691169 * Only applicable if IOAPIC is active!
    11701170 *
    1171  * @param   pDevIns    The device instance data.
     1171 * @param   pDevIns         The device instance data.
     1172 * @param   u32MpTableAddr  The MP table physical address.
    11721173 */
    1173 void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns)
     1174void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns, uint32_t u32MpTableAddr)
    11741175{
    11751176    MPSFLOATPTR floatPtr;
     
    11781179    floatPtr.au8Signature[2]       = 'P';
    11791180    floatPtr.au8Signature[3]       = '_';
    1180     floatPtr.u32MPSAddr            = VBOX_MPS_TABLE_BASE;
     1181    floatPtr.u32MPSAddr            = u32MpTableAddr;
    11811182    floatPtr.u8Length              = 1; /* structure size in paragraphs */
    11821183    floatPtr.u8SpecRev             = 4; /* MPS revision 1.4 */
  • trunk/src/VBox/Devices/PC/DevFwCommon.h

    r71061 r73142  
    2121#include "DevPcBios.h"
    2222
    23 /** @def VBOX_MPS_TABLE_BASE
    24  *
    25  * Must be located in the same page as the DMI table.
    26  */
    27 #define VBOX_MPS_TABLE_BASE          (VBOX_DMI_TABLE_BASE+VBOX_DMI_TABLE_SIZE)
    28 
    2923/* Plant DMI table */
    3024int FwCommonPlantDMITable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, PCRTUUID pUuid, PCFGMNODE pCfg, uint16_t cCpus, uint16_t *pcbDmiTables, uint16_t *pcNumDmiTables);
     
    3327/* Plant MPS table */
    3428void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, uint16_t cCpus);
    35 void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns);
     29void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns, uint32_t u32MpTableAddr);
    3630
    3731#endif
  • trunk/src/VBox/Devices/PC/DevPcBios.cpp

    r71820 r73142  
    10371037    PDEVPCBIOS pThis = PDMINS_2_DATA(pDevIns, PDEVPCBIOS);
    10381038    LogFlow(("pcbiosMemSetup:\n"));
    1039 
    1040     if (pThis->u8IOAPIC)
    1041         FwCommonPlantMpsFloatPtr(pDevIns);
    10421039
    10431040    /*
     
    16081605    if (pThis->u8IOAPIC)
    16091606    {
    1610         FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE,
     1607        FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage /* aka VBOX_DMI_TABLE_BASE */ + VBOX_DMI_TABLE_SIZE,
    16111608                              _4K - VBOX_DMI_TABLE_SIZE, pThis->cCpus);
     1609        FwCommonPlantMpsFloatPtr(pDevIns, VBOX_DMI_TABLE_BASE + VBOX_DMI_TABLE_SIZE);
    16121610        LogRel(("PcBios: MPS table at %08x\n", VBOX_DMI_TABLE_BASE + VBOX_DMI_TABLE_SIZE));
    16131611    }
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