On Tue, 3 Mar 2020 at 11:33, Pete Batard <p...@akeo.ie> wrote: > > From: Andrei Warkentin <andrey.warken...@gmail.com> > > This is required so that we can make the 3 to 4 GB segment of > the Raspberry Pi 4 a user-configurable option. > > This also removes the need for the PcdAcpiBasicMode PCD. > > Signed-off-by: Pete Batard <p...@akeo.ie>
Please fix the commit log so it is clear what 'this' means > --- > Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf | 3 -- > Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c | 33 > ++++++++++++++------ > 2 files changed, 23 insertions(+), 13 deletions(-) > > diff --git a/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf > b/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf > index 9abcc2cc0075..77cdbe399a06 100644 > --- a/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf > +++ b/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf > @@ -59,8 +59,5 @@ [FixedPcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize > > -[FeaturePcd] > - gRaspberryPiTokenSpaceGuid.PcdAcpiBasicMode > - > [Ppis] > gArmMpCoreInfoPpiGuid > diff --git a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c > b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c > index 4b388465cdde..3f257d4fa528 100644 > --- a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c > +++ b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c > @@ -25,7 +25,7 @@ UINT32 mBoardRevision; > > > // The total number of descriptors, including the final "end-of-table" > descriptor. > -#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 10 > +#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 11 > > STATIC BOOLEAN VirtualMemoryInfoInitialized = FALSE; > STATIC RPI_MEMORY_REGION_INFO > VirtualMemoryInfo[MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS]; > @@ -60,6 +60,7 @@ ArmPlatformGetVirtualMemoryMap ( > { > UINTN Index = 0; > UINTN GpuIndex; > + INT64 OrigMemorySize; > INT64 SystemMemorySize; > ARM_MEMORY_REGION_DESCRIPTOR *VirtualMemoryTable; > > @@ -78,7 +79,6 @@ ArmPlatformGetVirtualMemoryMap ( > return; > } > > - > // Firmware Volume > VirtualMemoryTable[Index].PhysicalBase = FixedPcdGet64 > (PcdFdBaseAddress); > VirtualMemoryTable[Index].VirtualBase = > VirtualMemoryTable[Index].PhysicalBase; Drop this hunk please > @@ -155,13 +155,13 @@ ArmPlatformGetVirtualMemoryMap ( > VirtualMemoryInfo[Index].Type = RPI_MEM_UNMAPPED_REGION; > VirtualMemoryInfo[Index++].Name = L"SoC Reserved (283x)"; > > - if (FeaturePcdGet (PcdAcpiBasicMode)) { > - // > - // Limit the memory to 3 GB to work around the DMA bugs in the SoC > without > - // having to rely on IORT or _DMA descriptions. > - // > - SystemMemorySize = MIN(SystemMemorySize, 3U * SIZE_1GB); > - } > + // > + // By default we limit the memory to 3 GB to work around the DMA bugs in > the SoC, for > + // OSes that don't support _DMA range descriptors. On 4GB boards, it's > runtime > + // setting to boot with 4GB, and the additional 1GB is added by ConfigDxe. > + // > + OrigMemorySize = SystemMemorySize; > + SystemMemorySize = MIN(SystemMemorySize, 3U * SIZE_1GB); > > // If we have RAM above the 1 GB mark, declare it > if (SystemMemorySize - SIZE_1GB > 0) { > @@ -170,7 +170,20 @@ ArmPlatformGetVirtualMemoryMap ( > VirtualMemoryTable[Index].Length = SystemMemorySize - SIZE_1GB; > VirtualMemoryTable[Index].Attributes = > ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK; > VirtualMemoryInfo[Index].Type = RPI_MEM_BASIC_REGION; > - VirtualMemoryInfo[Index++].Name = L"Extended System RAM"; > + VirtualMemoryInfo[Index++].Name = L"Extended System RAM below > 3GB"; > + } > + > + // > + // If we have RAM above 3 GB mark, declare it so it's mapped, but > + // don't add it to the memory map. This is done later by ConfigDxe if > necessary. > + // > + if (OrigMemorySize > (3UL * SIZE_1GB)) { > + VirtualMemoryTable[Index].PhysicalBase = 3UL * SIZE_1GB; > + VirtualMemoryTable[Index].VirtualBase = > VirtualMemoryTable[Index].PhysicalBase; > + VirtualMemoryTable[Index].Length = OrigMemorySize - > VirtualMemoryTable[Index].PhysicalBase; > + VirtualMemoryTable[Index].Attributes = > ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK; > + VirtualMemoryInfo[Index].Type = RPI_MEM_UNMAPPED_REGION; > + VirtualMemoryInfo[Index++].Name = L"Extended System RAM above > 3GB"; > } > > // End of Table > -- > 2.21.0.windows.1 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55310): https://edk2.groups.io/g/devel/message/55310 Mute This Topic: https://groups.io/mt/71697496/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-