VirtualBox

Ignore:
Timestamp:
Jun 16, 2017 1:57:42 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
116170
Message:

EFI: bugref:6784: properly consider the MCFG area

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/Firmware/OvmfPkg/PlatformPei/Platform.c

    r58459 r67439  
    4040#include "Cmos.h"
    4141
     42#ifdef VBOX
     43# define IN_RING0
     44# include "../../../../DevEFI.h"
     45#endif
     46
    4247EFI_MEMORY_TYPE_INFORMATION mDefaultMemoryTypeInformation[] = {
    4348  { EfiACPIMemoryNVS,       0x004 },
     
    6570BOOLEAN mS3Supported = FALSE;
    6671
     72#ifdef VBOX
     73static UINT32
     74GetVmVariable(UINT32 Variable, CHAR8 *pbBuf, UINT32 cbBuf)
     75{
     76  UINT32 cbVar, offBuf;
     77
     78  IoWrite32(EFI_INFO_PORT, Variable);
     79  cbVar = IoRead32(EFI_INFO_PORT);
     80
     81  for (offBuf = 0; offBuf < cbVar && offBuf < cbBuf; offBuf++)
     82    pbBuf[offBuf] = IoRead8(EFI_INFO_PORT);
     83
     84  return cbVar;
     85}
     86#endif
     87
    6788
    6889VOID
     
    269290    // 0xFEE00000    LAPIC                          1 MB
    270291    //
     292#ifdef VBOX
     293    UINT32 MCfgBase = 0;
     294    UINT32 MCfgSize = 0;
     295    GetVmVariable(EFI_INFO_INDEX_MCFG_BASE, (CHAR8 *)&MCfgBase, sizeof(MCfgBase));
     296    GetVmVariable(EFI_INFO_INDEX_MCFG_SIZE, (CHAR8 *)&MCfgSize, sizeof(MCfgSize));
     297    if (TopOfLowRam < BASE_2GB)
     298      TopOfLowRam = BASE_2GB;
     299    if (MCfgBase == 0)
     300      MCfgBase = TopOfLowRam;   // backward compatibilit with old DevEFI
     301    if (TopOfLowRam < MCfgBase)
     302      AddIoMemoryRangeHob (TopOfLowRam, MCfgBase);
     303    AddIoMemoryRangeHob (MCfgBase + MCfgSize, 0xFC000000);
     304#else
    271305    AddIoMemoryRangeHob (TopOfLowRam < BASE_2GB ?
    272306                         BASE_2GB : TopOfLowRam, 0xFC000000);
     307#endif
    273308    AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_4KB);
    274309    AddIoMemoryBaseSizeHob (0xFED00000, SIZE_1KB);
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