[edk2-devel] [edk2-platforms][PATCH 1/1] Platform/RaspberryPi/RPi4: gain 2MB of RAM back

Pete Batard pete at akeo.ie
Fri Mar 6 11:42:36 UTC 2020


This currently produces an ASSERT for me:

ASSERT [ArmPlatformPrePiUniCore] 
/usr/src/edk2/ArmPlatformPkg/PrePi/PrePi.c(75): (((UINT64)0x00000000ULL 
 > mSystemMemoryEnd) || ((0x00000000ULL + 0x00200000U) < 0x00200000ULL)) 
|| ((0x00000000ULL >= 0x00200000ULL) && ((UINT64)(0x00000000ULL + 
0x00200000U)

Please hold off integration until we've looked into it further.

Regards,

/Pete


On 2020.03.05 22:46, Andrei Warkentin wrote:
> From: Andrei Warkentin <awarkentin at vmware.com>
> 
> The RPi4 TF-A is much smaller than RPi3 TF-A, and doesn't need
> an extra 2MB region.
> 
> Note: this depends on the edk2 ArmPlatformPkg/PrePi: fix IS_XIP.
> 
> Signed-off-by: Andrei Warkentin <awarkentin at vmware.com>
> ---
>   Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c | 22 ++++++++++++--------
>   Platform/RaspberryPi/RPi4/RPi4.dsc                        |  4 ++--
>   2 files changed, 15 insertions(+), 11 deletions(-)
> 
> diff --git a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> index 901e5e3e..e795a885 100644
> --- a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> +++ b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> @@ -39,8 +39,6 @@ STATIC RPI_MEMORY_REGION_INFO   VirtualMemoryInfo[MAX_VIRTUAL_MEMORY_MAP_DESCRIP
>                          FixedPcdGet32(PcdFdSize) - \
>                          VariablesSize)
>   
> -#define ATFBase (FixedPcdGet64(PcdFdBaseAddress) + FixedPcdGet32(PcdFdSize))
> -
>   /**
>     Return the Virtual Memory Map of your platform
>   
> @@ -96,13 +94,19 @@ ArmPlatformGetVirtualMemoryMap (
>     VirtualMemoryInfo[Index].Type             = RPI_MEM_RUNTIME_REGION;
>     VirtualMemoryInfo[Index++].Name           = L"FD Variables";
>   
> -  // TF-A reserved RAM
> -  VirtualMemoryTable[Index].PhysicalBase    = ATFBase;
> -  VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
> -  VirtualMemoryTable[Index].Length          = FixedPcdGet64 (PcdSystemMemoryBase) - ATFBase;
> -  VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
> -  VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
> -  VirtualMemoryInfo[Index++].Name           = L"TF-A RAM";
> +  if (BCM2711_SOC_REGISTERS == 0) {
> +     //
> +     // TF-A reserved RAM only exists for the Pi 3 TF-A.
> +     //
> +     // This is 2MB that directly follows the FD.
> +     //
> +     VirtualMemoryTable[Index].PhysicalBase    = (FixedPcdGet64(PcdFdBaseAddress) + FixedPcdGet32(PcdFdSize));
> +     VirtualMemoryTable[Index].VirtualBase     = VirtualMemoryTable[Index].PhysicalBase;
> +     VirtualMemoryTable[Index].Length          = FixedPcdGet64 (PcdSystemMemoryBase) - VirtualMemoryTable[Index].PhysicalBase;
> +     VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
> +     VirtualMemoryInfo[Index].Type             = RPI_MEM_RESERVED_REGION;
> +     VirtualMemoryInfo[Index++].Name           = L"TF-A RAM";
> +  }
>   
>     // Base System RAM
>     VirtualMemoryTable[Index].PhysicalBase    = FixedPcdGet64 (PcdSystemMemoryBase);
> diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc b/Platform/RaspberryPi/RPi4/RPi4.dsc
> index 79295729..da62dc5b 100644
> --- a/Platform/RaspberryPi/RPi4/RPi4.dsc
> +++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
> @@ -396,8 +396,8 @@
>     # This matches PcdFvBaseAddress, since everything less is ATF, and
>     # will be reserved away.
>     #
> -  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00400000
> -  gArmTokenSpaceGuid.PcdSystemMemorySize|0x3fc00000
> +  gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00200000
> +  gArmTokenSpaceGuid.PcdSystemMemorySize|0x3fe00000
>   
>     #
>     # Device specific addresses
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#55595): https://edk2.groups.io/g/devel/message/55595
Mute This Topic: https://groups.io/mt/71761855/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list