Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 855743f717 OvmfPkg: prevent 64-bit MMIO BAR degradation if there is no CSM
According to edk2 commit

  "MdeModulePkg/PciBus: do not improperly degrade resource"

and to the EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL definition in the
Platform Init 1.4a specification, a platform can provide such a protocol
in order to influence the PCI resource allocation performed by the PCI Bus
driver.

In particular it is possible instruct the PCI Bus driver, with a
"wildcard" hint, to allocate the 64-bit MMIO BARs of a device in 64-bit
address space, regardless of whether the device features an option ROM.

(By default, the PCI Bus driver considers an option ROM reason enough for
allocating the 64-bit MMIO BARs in 32-bit address space. It cannot know if
BDS will launch a legacy boot option, and under legacy boot, a legacy BIOS
binary from a combined option ROM could be dispatched, and fail to access
MMIO BARs in 64-bit address space.)

In platform code we can ascertain whether a CSM is present or not. If not,
then legacy BIOS binaries in option ROMs can't be dispatched, hence the
BAR degradation is detrimental, and we should prevent it. This is expected
to conserve the 32-bit address space for 32-bit MMIO BARs.

The driver added in this patch could be simplified based on the following
facts:

- In the Ia32 build, the 64-bit MMIO aperture is always zero-size, hence
  the driver will exit immediately. Therefore the driver could be omitted
  from the Ia32 build.

- In the Ia32X64 and X64 builds, the driver could be omitted if CSM_ENABLE
  was defined (because in that case the degradation would be justified).
  On the other hand, if CSM_ENABLE was undefined, then the driver could be
  included, and it could provide the hint unconditionally (without looking
  for the Legacy BIOS protocol).

These short-cuts are not taken because they would increase the differences
between the OVMF DSC/FDF files. If we can manage without extreme
complexity, we should use dynamic logic (vs. build time configuration),
plus keep conditional compilation to a minimum.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-05-25 12:27:16 +02:00
AppPkg AppPkg/.../Python: Clean up and document how to escape the -# option. 2016-01-06 01:00:19 +00:00
ArmPkg ArmPkg/PlatformBootManagerLib: implement new generic version 2016-05-12 13:56:50 +02:00
ArmPlatformPkg ArmPlatformPkg/PL031RealTimeClockLib: remove local copy of gRT pointer 2016-05-11 16:57:23 +02:00
ArmVirtPkg OvmfPkg, ArmVirtPkg: rename QemuNewBootOrderLib to QemuBootOrderLib 2016-05-25 12:25:28 +02:00
BaseTools BaseTools/GenFds: enhance to get TOOL_CHAIN_TAG and TARGET value 2016-05-25 13:43:54 +08:00
BeagleBoardPkg BeagleBoardPkg: Convert to build FatPkg from source 2016-04-07 20:45:39 +02:00
Conf
CorebootModulePkg CorebootModulePkg/CbSupportDxe: Text only support 2016-05-23 13:34:03 -07:00
CorebootPayloadPkg CorebootPayloadPkg: Consume PlatformHookLib in PlatformBootManagerLib 2016-05-23 15:38:37 -07:00
CryptoPkg CryptoPkg/SmmCryptLib: Enable AES support for SMM. 2016-05-16 10:49:21 +08:00
DuetPkg DuetPkg FSVariable: return error for empty str VariableName to GetVariable 2016-05-15 17:48:53 +08:00
EdkCompatibilityPkg EdkCompatibilityPkg: Fix a typo. 2016-04-15 13:33:43 +08: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/Lan9118Dxe: Do not return uninitialised TxBuff 2016-05-12 10:01:17 +02:00
EmulatorPkg EmulatorPkg/EmuGopDxe: Use correct FROM_THIS macro for TextInEx 2016-05-16 18:25:17 -07:00
FatBinPkg FatBinPkg: Change to 2-clause BSD license 2016-04-22 00:55:21 -07:00
FatPkg FatPkg: Add Contributions.txt 2016-04-22 00:55:21 -07:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Remove unused PCD/Protocol 2016-04-13 14:54:49 +08:00
IntelFrameworkPkg IntelFrameworkPkg/FrameworkUefiLib: implement EfiEventGroupSignal 2016-03-23 12:05:45 +01:00
IntelFsp2Pkg IntelFsp2Pkg/FspApi.h: Add comment for structure definition. 2016-05-20 08:46:58 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Update gFspWrapperTokenSpaceGuid to gIntelFsp2WrapperTokenSpaceGuid. 2016-05-23 09:27:29 +08:00
IntelFspPkg IntelFspPkg: Add NOOPT target in IntelFspPkg.dsc 2016-01-21 02:14:43 +00:00
IntelFspWrapperPkg IntelFspWrapperPkg: PeiFspHobProcessLibSample: remove set but unused variables 2016-03-25 10:52:21 +01:00
MdeModulePkg MdeModulePkg: Make function comments and function match in UI codes 2016-05-25 16:35:36 +08:00
MdePkg MdePkg/BaseLib: Add more comments for safe string functions. 2016-05-24 20:08:59 +08:00
NetworkPkg NetworkPkg: update code for NULL pointer check. 2016-05-24 16:37:42 +08:00
Nt32Pkg Nt32Pkg: Fix SnpNt32 GetStatus bug 2016-05-05 08:52:06 +08:00
Omap35xxPkg Omap35xxPkg: drop CpuExceptionHandlerLib library class resolution 2016-03-17 09:15:11 +01:00
OptionRomPkg OptionRomPkg: Ax88772b: Fixing register access issue in Apple Eth Adapter 2016-03-31 08:53:51 +08:00
OvmfPkg OvmfPkg: prevent 64-bit MMIO BAR degradation if there is no CSM 2016-05-25 12:27:16 +02:00
PcAtChipsetPkg PcAtChipsetPkg/PcRtc: get century RTC address in entry point 2016-05-23 09:59:11 +08:00
PerformancePkg PerformancePkg Dp_App: Delete InitCumulativeData() 2016-05-03 12:42:44 +08:00
QuarkPlatformPkg QuarkPlatformPkg: Fix variable set but not used build errors 2016-05-13 11:34:32 -07:00
QuarkSocPkg QuarkSocPkg/SmmCpuFeaturesLib: Add SMRR PhysBase/PhysMask fields check 2016-05-19 10:04:34 -07:00
SecurityPkg SecurityPkg/DxeImageVerificationLib: Add DEBUG messages for image verification failures 2016-05-19 11:01:10 +08:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2016-05-06 15:43:36 +08:00
ShellPkg ShellPkg/App: Fix memory leak and save resources. 2016-05-25 10:16:46 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg/SmmDebugAgent: mMailboxPointer is used before set 2016-04-06 09:13:18 +08: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/PiSmmCpuDxeSmm: Using MSRs semaphores in aligned buffer 2016-05-24 15:20:22 -07:00
UnixPkg
Vlv2DeviceRefCodePkg Vlv2TbltDevicePkg/Vlv2DeviceRefCodePkg: 2015-11-10 07:47:29 +00:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Convert to build FatPkg from source 2016-04-22 00:55:21 -07:00
.gitignore
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08: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 Update edksetup.bat to check EDK_TOOLS_PATH before set it. 2016-04-11 16:20:28 +08:00
edksetup.sh BaseTools: Update edksetup.sh to support multiple workspaces 2015-10-08 09:29:56 +00:00