Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 7e5b1b670c OvmfPkg: PlatformPei: determine the 64-bit PCI host aperture for X64 DXE
The main observation about the 64-bit PCI host aperture is that it is the
highest part of the useful address space. It impacts the top of the GCD
memory space map, and, consequently, our maximum address width calculation
for the CPU HOB too.

Thus, modify the GetFirstNonAddress() function to consider the following
areas above the high RAM, while calculating the first non-address (i.e.,
the highest inclusive address, plus one):

- the memory hotplug area (optional, the size comes from QEMU),

- the 64-bit PCI host aperture (we set a default size).

While computing the first non-address, capture the base and the size of
the 64-bit PCI host aperture at once in PCDs, since they are natural parts
of the calculation.

(Similarly to how PcdPciMmio32* are not rewritten on the S3 resume path
(see the InitializePlatform() -> MemMapInitialization() condition), nor
are PcdPciMmio64*. Only the core PciHostBridgeDxe driver consumes them,
through our PciHostBridgeLib instance.)

Set 32GB as the default size for the aperture. Issue#59 mentions the
NVIDIA Tesla K80 as an assignable device. According to nvidia.com, these
cards may have 24GB of memory (probably 16GB + 8GB BARs).

As a strictly experimental feature, the user can specify the size of the
aperture (in MB) as well, with the QEMU option

  -fw_cfg name=opt/ovmf/X-PciMmio64Mb,string=65536

The "X-" prefix follows the QEMU tradition (spelled "x-" there), meaning
that the property is experimental, unstable, and might go away any time.
Gerd has proposed heuristics for sizing the aperture automatically (based
on 1GB page support and PCPU address width), but such should be delayed to
a later patch (which may very well back out "X-PciMmio64Mb" then).

For "everyday" guests, the 32GB default for the aperture size shouldn't
impact the PEI memory demand (the size of the page tables that the DXE IPL
PEIM builds). Namely, we've never reported narrower than 36-bit addresses;
the DXE IPL PEIM has always built page tables for 64GB at least.

For the aperture to bump the address width above 36 bits, either the guest
must have quite a bit of memory itself (in which case the additional PEI
memory demand shouldn't matter), or the user must specify a large aperture
manually with "X-PciMmio64Mb" (and then he or she is also responsible for
giving enough RAM to the VM, to satisfy the PEI memory demand).

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Thomas Lamprecht <t.lamprecht@proxmox.com>
Ref: https://github.com/tianocore/edk2/issues/59
Ref: http://www.nvidia.com/object/tesla-servers.html
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-03-23 17:47:27 +01:00
AppPkg AppPkg/.../Python: Clean up and document how to escape the -# option. 2016-01-06 01:00:19 +00:00
ArmPkg ArmPkg/AArch64Mmu: use correct AP[] bits in ArmClearMemoryRegionReadOnly 2016-03-22 17:32:25 +01:00
ArmPlatformPkg ArmPlatformPkg: PL061: support multiple controller 2016-03-14 13:17:34 +00:00
ArmVirtPkg ArmVirtPkg: PlatformIntelBdsLib: signal gRootBridgesConnectedEventGroupGuid 2016-03-23 17:39:32 +01:00
BaseTools BaseTools: not include the undefined macro in response file 2016-03-23 17:36:09 +08:00
BeagleBoardPkg BeagleBoardPkg: move to ARM version of CpuExceptionHandlerLib 2016-03-17 09:15:06 +01:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootModulePkg-CbParseLib: Fix bad reference in CbParseLib 2016-02-26 10:02:41 -08:00
CorebootPayloadPkg FW: [PATCH 3/9] CorebootPayloadPkg/PlatformBdsLib: Fix spelling error 2016-03-07 10:32:47 -08:00
CryptoPkg CryptoPkg: Fix the potential system hang issue 2016-03-15 09:04:20 +08:00
DuetPkg DuetPkg-PciBusNoEnumerationDxe: Fix stack overflow 2016-02-26 10:39:15 +08:00
EdkCompatibilityPkg EdkCompatibilityPkg: Fix wrong guid value of gEfiManagedNetworkProtocolGuid 2016-01-18 03:03:19 +00:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg EmbeddedPkg: enhance for multiple gpio controllers 2016-03-14 12:47:29 +00:00
EmulatorPkg EmulatorPkg: Use UEFI Shell by default 2016-03-02 16:05:16 -08:00
FatBinPkg FatBinPkg: Update EBC/IA32/X64/IPF binaries 2015-08-28 03:14:25 +00:00
IntelFrameworkModulePkg IntelFrameworkModulePkg/LegacyBootMaintUiLib: Refine the code 2016-03-16 10:42:03 +08:00
IntelFrameworkPkg IntelFrameworkPkg/FrameworkUefiLib: implement EfiEventGroupSignal 2016-03-23 12:05:45 +01:00
IntelFspPkg IntelFspPkg: Add NOOPT target in IntelFspPkg.dsc 2016-01-21 02:14:43 +00:00
IntelFspWrapperPkg IntelFspWrapperPkg: Add NOOPT target in IntelFspWrapperPkg.dsc 2016-01-21 02:15:02 +00:00
MdeModulePkg MdeModulePkg/BootMaintenanceManagerUiLib: Remove type casting in ChooseFile 2016-03-23 16:04:03 +08:00
MdePkg MdePkg/UefiLib: introduce EfiEventGroupSignal 2016-03-23 12:05:39 +01:00
NetworkPkg NetworkPkg: Fix the driver model issue in HTTP Boot driver. 2016-03-16 14:43:17 +08:00
Nt32Pkg Nt32Pkg: Switch the DebugLibReportStatusCode to MdeModulePkg 2016-03-21 11:16:43 +08:00
Omap35xxPkg Omap35xxPkg: drop CpuExceptionHandlerLib library class resolution 2016-03-17 09:15:11 +01:00
OptionRomPkg OptionRomPkg: Remove redundant included header file defintion in Ax88772.h and Ax88772b.h files 2015-07-08 02:56:54 +00:00
OvmfPkg OvmfPkg: PlatformPei: determine the 64-bit PCI host aperture for X64 DXE 2016-03-23 17:47:27 +01:00
PcAtChipsetPkg MdeModulePkg/PcRtc: Still create timezone variable when Daylight != 0 2016-02-03 16:13:18 +08:00
PerformancePkg PerformancePkg/Dp_App: Support execution break 2016-03-08 18:23:49 +08:00
QuarkPlatformPkg QuarkPlatformPkg/Readme.md: Move images to tianocore wiki 2016-01-31 19:22:57 +00:00
QuarkSocPkg QuarkSocPkg: Remove X64 from SUPPORTED_ARCHITECTURES 2016-01-07 21:52:53 +00:00
SecurityPkg SecurityPkg: Clear LocalAuthSession content after use. 2016-03-11 12:51:43 +08:00
ShellBinPkg ShellBinPkg: Arm/AArch64 Shell binary update. 2016-02-09 16:34:14 +00:00
ShellPkg ShellPkg: Remove the unused local variable. 2016-03-17 14:35:53 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg: DebugCommunicationLibUsb3: Update local variable type. 2016-01-25 03:33:45 +00:00
StdLib StdLib/BsdSocketLib: Fix minor memory leak by freeing rrecp on error return. 2016-02-17 16:11:29 -08:00
StdLibPrivateInternalFiles StdLib: Clarify and improve comments. 2016-01-06 00:31:42 +00:00
UefiCpuPkg UefiCpuPkg/Include: Add top level MSR include file 2016-03-13 12:00:36 -07:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg Vlv2TbltDevicePkg/Vlv2DeviceRefCodePkg: 2015-11-10 07:47:29 +00:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Add FileExplorerLib.inf to the dsc file 2016-02-26 16:52:50 +08:00
.gitignore EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
BuildNotes2.txt Update to new SVN URL in readme.txt 2013-06-08 05:26:39 +00:00
Edk2Setup.bat BaseTools: Update Edk2Setup.bat to support multiple workspaces 2015-10-08 09:29:36 +00:00
Maintainers.txt Maintainers.txt: Update maintainers for ShellBinPkg 2016-02-10 14:45:52 +00:00
edksetup.bat BaseTools: Add VS2015 tool chain in tools_def.template 2015-12-03 03:19:01 +00:00
edksetup.sh BaseTools: Update edksetup.sh to support multiple workspaces 2015-10-08 09:29:56 +00:00