On 9 September 2015 at 16:53, Leif Lindholm <leif.lindh...@linaro.org> wrote:
> On Wed, Sep 09, 2015 at 04:38:08PM +0200, Ard Biesheuvel wrote:
>> On 9 September 2015 at 16:31, Leif Lindholm <leif.lindh...@linaro.org> wrote:
>> > On Tue, Sep 08, 2015 at 07:35:40PM +0200, Ard Biesheuvel wrote:
>> >> Make sure that the PEI memory region is carved out of memory that is
>> >> 32-bit addressable, by taking MAX_ADDRESS into account (which is
>> >> defined as '4 GB - 1' on ARM)
>> >>
>> >> Contributed-under: TianoCore Contribution Agreement 1.0
>> >> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
>> >> ---
>> >>  ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c | 7 +++++--
>> >>  1 file changed, 5 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c 
>> >> b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
>> >> index 93ab16ca4a74..9f26d26a04d3 100755
>> >> --- a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
>> >> +++ b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
>> >> @@ -96,7 +96,7 @@ InitializeMemory (
>> >>  {
>> >>    EFI_STATUS                            Status;
>> >>    UINTN                                 SystemMemoryBase;
>> >> -  UINTN                                 SystemMemoryTop;
>> >> +  UINT64                                SystemMemoryTop;
>> >>    UINTN                                 FdBase;
>> >>    UINTN                                 FdTop;
>> >>    UINTN                                 UefiMemoryBase;
>> >> @@ -115,7 +115,10 @@ InitializeMemory (
>> >>    ASSERT (PcdGet64 (PcdSystemMemorySize) != 0);
>> >>
>> >>    SystemMemoryBase = (UINTN)PcdGet64 (PcdSystemMemoryBase);
>> >> -  SystemMemoryTop = SystemMemoryBase + (UINTN)PcdGet64 
>> >> (PcdSystemMemorySize);
>> >> +  SystemMemoryTop = SystemMemoryBase + PcdGet64 (PcdSystemMemorySize);
>> >> +  if (SystemMemoryTop - 1 > MAX_ADDRESS) {
>> >> +    SystemMemoryTop = (UINT64) MAX_ADDRESS + 1;
>> >> +  }
>> >>    FdBase = (UINTN)PcdGet64 (PcdFdBaseAddress);
>> >>    FdTop = FdBase + (UINTN)PcdGet32 (PcdFdSize);
>> >>
>> >> --
>> >> 1.9.1
>> >
>> > So, this is mainly an OCD thing on my end, but is there any real
>> > benefit to _not_ converting SystemMemoryBase to 64-bit? Doing so would
>> > get rid of the other UINTN cast.
>> >
>>
>> Not really, other than the fact that UINTN is more suitable for the
>> base of DRAM, since you won't be able to run 32-bit UEFI if RAM starts
>> above 4 GB anyway, so changing it to UINT64 seemed wrong to me.
>
> Sure, but having it 64-bit would permit an assert to noticeably tell
> someone they had put an extra 0 into their Pcd, instead of
> successfully passing this function and failing mysteriously later on.
>

Shall I add this on top?

diff --git a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
index 25baac170c6c..e7880d30b1c8 100755
--- a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
+++ b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
@@ -113,6 +113,7 @@ InitializeMemory (

   // Ensure PcdSystemMemorySize has been set
   ASSERT (PcdGet64 (PcdSystemMemorySize) != 0);
+  ASSERT (PcdGet64 (PcdSystemMemoryBase) < (UINT64)MAX_ADDRESS);

   SystemMemoryBase = (UINTN)PcdGet64 (PcdSystemMemoryBase);
   SystemMemoryTop = SystemMemoryBase + PcdGet64 (PcdSystemMemorySize);
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to