Commit 05fd2a926833 ("MdeModulePkg/NvmExpressPei: Consume S3StorageDeviceInitList LockBox") added a dependency on LockBoxLib to NvmExpressPei, causing builds using MdeModulePkg.dsc to fail on architectures other than IA32/X64 with missing reference to gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode.
Add a resolution for LockBoxNullLib for ARM/AARCH64 to restore builds. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Leif Lindholm <leif.lindh...@linaro.org> --- Note: this patch hides the symptom, but this isn't really the fix I would like to see. The build error is caused by the chain of: 1) NvmExpressPei depending on LockBoxLib 2) LockBoxLib being mapped to SmmLockBoxPeiLib in [LibraryClasses.common.PEIM] 3) SmmLockBoxPeiLib depending on PcdDxeIplSwitchToLongMode 4) PcdDxeIplSwitchToLongMode being declared in [PcdsFeatureFlag.IA32, PcdsFeatureFlag.X64] in MdeModulePkg.dsc Now, an alternative quick-fix would be to move the PEIM LockBoxLib mapping into a [LibraryClasses.IA32.PEIM, LibraryClasses.X64.PEIM] section. But that would leave NvmExpressPei unbuildable on anything not IA32/X64. Another option would be to add default declaration (for all other architectures) of FALSE for PcdDxeIplSwitchToLongMode in MdeModulePkg.dec, but the current way this is expressed seems to treat this as an architecture-specific feature (which it is). What I believe would be the cleanest solution would be to abstract NvmExpressPei to the point where it can function without the LockBoxLib. But regardless, it does not look valid to me for something as architecture-specific as MdeModulePkg/Library/SmmLockBoxLib/ to live under .common sections in the .dsc. (And if this changes at some point, because we implement an ARM/AARCH64 equivalent based on StandaloneMmPkg, we will need a major refactoring of that library anyway.) / Leif MdeModulePkg/MdeModulePkg.dsc | 1 + 1 file changed, 1 insertion(+) diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index 6cd1727a0d..6e27e9cb68 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -178,6 +178,7 @@ [LibraryClasses.common.MM_STANDALONE] [LibraryClasses.ARM, LibraryClasses.AARCH64] ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf + LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf # # It is not possible to prevent ARM compiler calls to generic intrinsic functions. -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel