https://bugzilla.tianocore.org/show_bug.cgi?id=260
The PiSmmCPuDxeSmm module requires the SMRR base address and length to be aligned. The memory initialization for Vlv2TbltDevicePkg produces an SMRAM base address that is on a 16MB boundary and an SMRAM length of 12MB. The SMRAM length is rounded up to 16MB. This is a workaround until the binary module that produces the gEfiSmmPeiSmramMemoryReserveGuid HOB is updated Cc: Jiewen Yao <jiewen....@intel.com> Cc: David Wei <david....@intel.com> Cc: Mang Guo <mang....@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kin...@intel.com> --- Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c | 15 ++++++++++++++- Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h | 3 ++- Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf | 3 ++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c index cbfe78d..f8ea09a 100644 --- a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c +++ b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c @@ -1,6 +1,6 @@ /** @file - Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. @@ -820,6 +820,19 @@ PlatformEarlyInitEntry ( EFI_PLATFORM_INFO_HOB *PlatformInfo; EFI_PEI_HOB_POINTERS Hob; EFI_PLATFORM_CPU_INFO PlatformCpuInfo; + EFI_SMRAM_HOB_DESCRIPTOR_BLOCK *DescriptorBlock; + UINT64 Size; + + // + // Make sure last SMRAM region is aligned + // + Hob.Raw = GetFirstGuidHob (&gEfiSmmPeiSmramMemoryReserveGuid); + if (Hob.Raw != NULL) { + DescriptorBlock = GET_GUID_HOB_DATA (Hob.Raw); + Size = DescriptorBlock->Descriptor[DescriptorBlock->NumberOfSmmReservedRegions - 1].PhysicalSize; + Size = LShiftU64 (1, HighBitSet64 (Size - 1) + 1); + DescriptorBlock->Descriptor[DescriptorBlock->NumberOfSmmReservedRegions - 1].PhysicalSize = Size; + } // // Initialize SmbusPolicy PPI diff --git a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h index c2cdfa3..c280fb8 100644 --- a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h +++ b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h @@ -1,6 +1,6 @@ /*++ - Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. @@ -83,6 +83,7 @@ Abstract: #include <Ppi/MasterBootMode.h> #include <Guid/PlatformCpuInfo.h> #include <Guid/OsSelection.h> +#include <Guid/SmramMemoryReserve.h> #define SMC_LAN_ON 0x46 #define SMC_LAN_OFF 0x47 diff --git a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf index fc517ef..309487d 100644 --- a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf +++ b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf @@ -1,6 +1,6 @@ # # -# Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved +# Copyright (c) 1999 - 2016, Intel Corporation. All rights reserved # # This program and the accompanying materials are licensed and made available under # the terms and conditions of the BSD License that accompanies this distribution. @@ -102,6 +102,7 @@ ENTRY_POINT = PlatformEarlyInitEntry gEfiNormalSetupGuid gEfiMemoryTypeInformationGuid gOsSelectionVariableGuid + gEfiSmmPeiSmramMemoryReserveGuid [Pcd.common] gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase -- 2.6.3.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel