VirtualBox

Changeset 28203 in vbox


Ignore:
Timestamp:
Apr 12, 2010 12:58:12 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
59943
Message:

DevPcBios,DevEFI,DevFWCommon: Don't reconstruct the MPS table at reset, just replant the MPS table pointer.

Location:
trunk/src/VBox/Devices
Files:
4 edited

Legend:

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

    r27122 r28203  
    474474    pThis->szPanicMsg[0] = '\0';
    475475
    476     /* Plant DMI and MPS tables */
    477     rc = FwCommonPlantDMITable(pDevIns,
    478                                pThis->au8DMIPage,
    479                                VBOX_DMI_TABLE_SIZE,
    480                                &pThis->aUuid,
    481                                pDevIns->pCfg,
    482                                /*fPutSmbiosHeaders=*/true);
    483     Assert(RT_SUCCESS(rc));
    484 
    485476    if (pThis->u8IOAPIC)
    486         FwCommonPlantMpsTable(pDevIns,
    487                               pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE,
    488                               _4K - VBOX_DMI_TABLE_SIZE,
    489                               pThis->cCpus);
    490     rc = PDMDevHlpROMRegister(pDevIns, VBOX_DMI_TABLE_BASE, _4K, pThis->au8DMIPage,
    491                               PGMPHYS_ROM_FLAGS_PERMANENT_BINARY, "DMI tables");
    492 
    493     Assert(RT_SUCCESS(rc));
     477        FwCommonPlantMpsFloatPtr(pDevIns);
    494478
    495479    /*
     
    11501134    pThis->u64FsbFrequency = pThis->u64TscFrequency / 4;
    11511135    pThis->u64CpuFrequency = pThis->u64TscFrequency;
     1136
    11521137    /*
    11531138     * GOP graphics
     
    11591144        pThis->u32GopMode = 2; /* 1024x768 */
    11601145    }
     1146
    11611147    /*
    11621148     * Uga graphics
     
    12021188        return rc;
    12031189
     1190    /*
     1191     * Plant DMI and MPS tables
     1192     */
     1193    rc = FwCommonPlantDMITable(pDevIns,
     1194                               pThis->au8DMIPage,
     1195                               VBOX_DMI_TABLE_SIZE,
     1196                               &pThis->aUuid,
     1197                               pDevIns->pCfg,
     1198                               true /*fPutSmbiosHeaders*/);
     1199    AssertRCReturn(rc, rc);
     1200    if (pThis->u8IOAPIC)
     1201        FwCommonPlantMpsTable(pDevIns,
     1202                              pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE,
     1203                              _4K - VBOX_DMI_TABLE_SIZE,
     1204                              pThis->cCpus);
     1205    rc = PDMDevHlpROMRegister(pDevIns, VBOX_DMI_TABLE_BASE, _4K, pThis->au8DMIPage,
     1206                              PGMPHYS_ROM_FLAGS_PERMANENT_BINARY, "DMI tables");
     1207
     1208    AssertRCReturn(rc, rc);
    12041209
    12051210    /*
  • trunk/src/VBox/Devices/PC/DevFwCommon.cpp

    r27363 r28203  
    710710
    711711/**
    712  * Construct the MPS table. Only applicable if IOAPIC is active!
     712 * Construct the MPS table for implanting as a ROM page.
     713 *
     714 * Only applicable if IOAPIC is active!
    713715 *
    714716 * See ``MultiProcessor Specificatiton Version 1.4 (May 1997)'':
     
    850852              ("VBOX_MPS_TABLE_SIZE=%d, maximum allowed size is %d",
    851853              pCfgTab->u16Length, cbMax));
    852 
     854}
     855
     856/**
     857 * Construct the MPS table pointer at VM construction and reset.
     858 *
     859 * Only applicable if IOAPIC is active!
     860 *
     861 * @param   pDevIns    The device instance data.
     862 */
     863void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns)
     864{
    853865    MPSFLOATPTR floatPtr;
    854866    floatPtr.au8Signature[0]       = '_';
     
    866878    floatPtr.au8Feature[4]         = 0;
    867879    floatPtr.u8Checksum            = fwCommonChecksum((uint8_t*)&floatPtr, 16);
    868     PDMDevHlpPhysWrite (pDevIns, 0x9fff0, &floatPtr, 16);
     880    PDMDevHlpPhysWrite(pDevIns, 0x9fff0, &floatPtr, 16);
    869881}
     882
  • trunk/src/VBox/Devices/PC/DevFwCommon.h

    r26728 r28203  
    3737/* Plant MPS table */
    3838void FwCommonPlantMpsTable(PPDMDEVINS pDevIns, uint8_t *pTable, unsigned cbMax, uint16_t cCpus);
     39void FwCommonPlantMpsFloatPtr(PPDMDEVINS pDevIns);
    3940
    4041#endif
  • trunk/src/VBox/Devices/PC/DevPcBios.cpp

    r27976 r28203  
    769769
    770770    if (pThis->u8IOAPIC)
    771         FwCommonPlantMpsTable(pDevIns, pThis->au8DMIPage + VBOX_DMI_TABLE_SIZE,
    772                               _4K - VBOX_DMI_TABLE_SIZE, pThis->cCpus);
     771        FwCommonPlantMpsFloatPtr(pDevIns);
    773772
    774773    /*
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