mirror of https://github.com/acidanthera/audk.git
OvmfPkg: set fixed FlashNvStorage base addresses with -D SMM_REQUIRE
The following flash-related base addresses: - PcdFlashNvStorageVariableBase64, - PcdFlashNvStorageFtwWorkingBase, - PcdFlashNvStorageFtwSpareBase, are always set to constant (invariable) values in the "-D SMM_REQUIRE" build of OVMF. (That's because in the SMM build, actual pflash is a hard requirement, and the RAM-based emulation is never available.) Set said PCDs statically, at build. This will allow us to depend on their values in the PEI phase. When SMM_REQUIRE is FALSE, this change has no effect (confirmed by report file comparison). When SMM_REQUIRE is TRUE, the report file shows the following changes: - "PcdOvmfFlashNvStorageFtwSpareBase" and "PcdOvmfFlashNvStorageFtwWorkingBase" are no longer consumed by any module directly, - for "PcdFlashNvStorageFtwSpareBase", "PcdFlashNvStorageFtwWorkingBase" and "PcdFlashNvStorageVariableBase64", the access method changes from DYN to FIXED, - for the latter PCDs, the zero (dynamic default) values are replaced with the desired constants. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Philippe Mathieu-Daudé <philmd@redhat.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=386 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20200310222739.26717-4-lersek@redhat.com> Acked-by: Leif Lindholm <leif@nuviainc.com>
This commit is contained in:
parent
cd99d07d53
commit
b0ed7ebdeb
|
@ -82,4 +82,10 @@ SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize = $(BLOCK_SIZ
|
||||||
SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
|
SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
|
||||||
SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize = $(VARS_SPARE_SIZE)
|
SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize = $(VARS_SPARE_SIZE)
|
||||||
|
|
||||||
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
|
SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase
|
||||||
|
SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase
|
||||||
|
SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase = gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase
|
||||||
|
!endif
|
||||||
|
|
||||||
DEFINE MEMFD_BASE_ADDRESS = 0x800000
|
DEFINE MEMFD_BASE_ADDRESS = 0x800000
|
||||||
|
|
|
@ -541,9 +541,11 @@
|
||||||
# ($(SMM_REQUIRE) == FALSE)
|
# ($(SMM_REQUIRE) == FALSE)
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
||||||
|
|
||||||
|
!if $(SMM_REQUIRE) == FALSE
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
||||||
|
!endif
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
|
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
|
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
|
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
|
||||||
|
|
|
@ -546,9 +546,11 @@
|
||||||
# ($(SMM_REQUIRE) == FALSE)
|
# ($(SMM_REQUIRE) == FALSE)
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
||||||
|
|
||||||
|
!if $(SMM_REQUIRE) == FALSE
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
||||||
|
!endif
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
|
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
|
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
|
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
|
||||||
|
|
|
@ -545,9 +545,11 @@
|
||||||
# ($(SMM_REQUIRE) == FALSE)
|
# ($(SMM_REQUIRE) == FALSE)
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
||||||
|
|
||||||
|
!if $(SMM_REQUIRE) == FALSE
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
||||||
|
!endif
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
|
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
|
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
|
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
|
||||||
|
|
|
@ -66,17 +66,12 @@
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase
|
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase
|
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize
|
||||||
|
|
||||||
[Pcd]
|
[Pcd]
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase
|
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase
|
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64
|
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable
|
||||||
|
|
||||||
[FeaturePcd]
|
[FeaturePcd]
|
||||||
|
|
|
@ -80,24 +80,7 @@ SetPcdFlashNvStorageBaseAddresses (
|
||||||
VOID
|
VOID
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
RETURN_STATUS PcdStatus;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set several PCD values to point to flash
|
// Do nothing.
|
||||||
//
|
//
|
||||||
PcdStatus = PcdSet64S (
|
|
||||||
PcdFlashNvStorageVariableBase64,
|
|
||||||
(UINTN) PcdGet32 (PcdOvmfFlashNvStorageVariableBase)
|
|
||||||
);
|
|
||||||
ASSERT_RETURN_ERROR (PcdStatus);
|
|
||||||
PcdStatus = PcdSet32S (
|
|
||||||
PcdFlashNvStorageFtwWorkingBase,
|
|
||||||
PcdGet32 (PcdOvmfFlashNvStorageFtwWorkingBase)
|
|
||||||
);
|
|
||||||
ASSERT_RETURN_ERROR (PcdStatus);
|
|
||||||
PcdStatus = PcdSet32S (
|
|
||||||
PcdFlashNvStorageFtwSpareBase,
|
|
||||||
PcdGet32 (PcdOvmfFlashNvStorageFtwSpareBase)
|
|
||||||
);
|
|
||||||
ASSERT_RETURN_ERROR (PcdStatus);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue