From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by mx.groups.io with SMTP id smtpd.web10.3725.1587638014247974650 for ; Thu, 23 Apr 2020 03:33:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nuviainc-com.20150623.gappssmtp.com header.s=20150623 header.b=pM03PEb4; spf=pass (domain: nuviainc.com, ip: 209.85.221.65, mailfrom: leif@nuviainc.com) Received: by mail-wr1-f65.google.com with SMTP id g13so6217306wrb.8 for ; Thu, 23 Apr 2020 03:33:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=V5Yn6Z8kPGOtqOhf3+lEFlHBIe7lmse81NqX7gUu4SI=; b=pM03PEb42Hr8YqBaxalR+8x9gsZkBUzJysJPFHSyDPNQ5Ku1vJGeCybtmn92Nycsis PsbVrhD15Lgq9wK6MBlGxRKMZZSsYhWK5HPEDVm39SBpYqmIL9LdsadD7KMYOZbJhKuS IJVMaFrY67IRpsFSlKwrcvbZgmsWt4Cm3lFDQrwh4Pylf6GgZ2Q5ktcnFEv4P3JeUUNb b35HrsOCYYAtBNGL2U7CA/1BsPEvE2VXcIxUZCxuDh6tbyrHy4MGPW37RcaCS5sgH4s7 7WwWD6RVlEndqNfKLzbphfXqlNsWMhyJTBIoB1L+o2ze2spNlLt4pLBlAVXG4yik6H5a 4czQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=V5Yn6Z8kPGOtqOhf3+lEFlHBIe7lmse81NqX7gUu4SI=; b=APxpmcNMfff/bn6t7a2FukiKXWZ60itkhQzlzI71jKlicIcYK0cZjnrc6kzylg2WDr IyV3Vwdio/SenWihSL3GIvHIkI6Rw9RWeu+c0tn6OYUwxEuyglzcuo1UfxbvdMkDR7xS 5y2zRHb8Bjw/zyQAlw8fiRGkh9ghR6XTMAZpod57r8LzqPpPlCpKuhONNmNPF9LsUmQd 9j+4DYDAFOBpzV6+A5fy4prV4HesEsizrE8WUJsknvzd9ErCiTc77mEXh2PDOA+X7lyO QRFiUyJmQCOSzB/GNb1xq2WnoMQMLcutKP7Di9dfDPFBt7lD/uIInWqLHe0sdB7FpZlc V0SQ== X-Gm-Message-State: AGi0Pubme2JfyRhnTy+5qRUDEN87gv78wPqw05JpoBlTPWDM9+eAefp3 Nzss2aWvXYMeJ5AlA/p+KFkfXQ== X-Google-Smtp-Source: APiQypJVVrpy+p24mQ5eY9QMz5lDfLFx6H4+jMzbz0hQNi0ITO1X7UcuYB70HnNDJOgu62VdGxeBdA== X-Received: by 2002:adf:de8b:: with SMTP id w11mr4026402wrl.48.1587638012796; Thu, 23 Apr 2020 03:33:32 -0700 (PDT) Return-Path: Received: from vanye ([2001:470:1f09:12f0:b26e:bfff:fea9:f1b8]) by smtp.gmail.com with ESMTPSA id b12sm3469449wro.18.2020.04.23.03.33.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2020 03:33:32 -0700 (PDT) Date: Thu, 23 Apr 2020 11:33:30 +0100 From: "Leif Lindholm" To: Pankaj Bansal Cc: Meenakshi Aggarwal , Michael D Kinney , devel@edk2.groups.io, Varun Sethi , Samer El-Haj-Mahmoud , Jon Nettleton , Ard Biesheuvel Subject: Re: [PATCH edk2-platforms v3 24/24] Platform/NXP/LS1043aRdbPkg: Add PEI Phase Message-ID: <20200423103330.GZ14075@vanye> References: <20200415121342.9246-1-pankaj.bansal@oss.nxp.com> <20200415121342.9246-25-pankaj.bansal@oss.nxp.com> MIME-Version: 1.0 In-Reply-To: <20200415121342.9246-25-pankaj.bansal@oss.nxp.com> User-Agent: Mutt/1.10.1 (2018-07-13) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Apr 15, 2020 at 17:43:42 +0530, Pankaj Bansal wrote: > From: Pankaj Bansal > > Add PEI phase to LS1043aRdb. This is needed becuase we need to have > dynamic PCDs support to be able to reserve memory before reporting > memory to UEFI fimrware. > Using PEI phase we are now also dynamically setting the > PcdSystemMemoryBase and PcdSystemMemorySize depending upon the DRAM > regions detected. > This in turn would depend on the DDR DIMMs installed on board. > > Signed-off-by: Pankaj Bansal Reviewed-by: Leif Lindholm > --- > > Notes: > - Update commit description > > Silicon/NXP/NxpQoriqLs.dsc.inc | 61 +++++++++++++----- > Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.dsc | 9 --- > Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.fdf | 18 ++++-- > Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf | 3 +- > Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.c | 67 +++++++++++--------- > 5 files changed, 98 insertions(+), 60 deletions(-) > > diff --git a/Silicon/NXP/NxpQoriqLs.dsc.inc b/Silicon/NXP/NxpQoriqLs.dsc.inc > index 3c8b11d9e04c..14fbea72d3f8 100644 > --- a/Silicon/NXP/NxpQoriqLs.dsc.inc > +++ b/Silicon/NXP/NxpQoriqLs.dsc.inc > @@ -93,30 +93,35 @@ > CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf > NonDiscoverableDeviceRegistrationLib|MdeModulePkg/Library/NonDiscoverableDeviceRegistrationLib/NonDiscoverableDeviceRegistrationLib.inf > ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf > + UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf > > I2cLib|Silicon/NXP/Library/I2cLib/I2cLib.inf > ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf > IoAccessLib|Silicon/NXP/Library/IoAccessLib/IoAccessLib.inf > > + PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf > MemoryInitPeiLib|Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf > > [LibraryClasses.common.SEC] > PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf > - UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf > - ExtractGuidedSectionLib|EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.inf > - LzmaDecompressLib|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf > - PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf > - HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf > - PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf > - MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf > + DebugAgentLib|ArmPkg/Library/DebugAgentSymbolsBaseLib/DebugAgentSymbolsBaseLib.inf > + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf > + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf > + PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf > + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf > + > +[LibraryClasses.common.PEI_CORE] > + PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf > + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf > + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf > + MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf > + PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf > PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf > - PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf > + ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf > + ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf > + OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf > > - # 1/123 faster than Stm or Vstm version > - BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf > - > - # Uncomment to turn on GDB stub in SEC. > - #DebugAgentLib|EmbeddedPkg/Library/GdbDebugAgent/GdbDebugAgent.inf > + PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf > > [LibraryClasses.common.PEIM] > PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf > @@ -125,14 +130,16 @@ > PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf > HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf > MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf > + PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf > + ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf > ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf > + OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf > > [LibraryClasses.common.DXE_CORE] > HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf > MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf > DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf > ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf > - UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf > DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf > PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf > > @@ -204,6 +211,9 @@ > gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640 > gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480 > > + gArmTokenSpaceGuid.PcdSystemMemoryBase|0 > + gArmTokenSpaceGuid.PcdSystemMemorySize|0 > + > [PcdsDynamicHii.common.DEFAULT] > gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|10 > > @@ -224,6 +234,12 @@ > gEfiMdePkgTokenSpaceGuid.PcdPostCodePropertyMask|0 > gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|320 > > + ## Base of DRAM > + ## since TFA puts Fd at 0x2000000 offset from DRAM base, we can use this space > + ## for temporary ram > + gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x80000000 > + gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x02000000 > + > !if $(TARGET) == RELEASE > gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27 > gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x81000001 > @@ -281,13 +297,26 @@ > ################################################################################ > [Components.common] > # > - # SEC > + # PEI Phase modules > # > - ArmPlatformPkg/PrePi/PeiUniCore.inf > + ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf > + > + MdeModulePkg/Core/Pei/PeiMain.inf > MdeModulePkg/Universal/PCD/Pei/Pcd.inf { > > PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf > } > + MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf > + MdeModulePkg/Universal/Variable/Pei/VariablePei.inf > + > + ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf > + ArmPkg/Drivers/CpuPei/CpuPei.inf > + ArmPlatformPkg/PlatformPei/PlatformPeim.inf > + > + MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { > + > + NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf > + } > > # > # DXE > diff --git a/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.dsc b/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.dsc > index d486c9b36fab..d45fd67c03b5 100644 > --- a/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.dsc > +++ b/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.dsc > @@ -30,15 +30,6 @@ > RealTimeClockLib|Silicon/Maxim/Library/Ds1307RtcLib/Ds1307RtcLib.inf > > [PcdsFixedAtBuild.common] > - > - # > - # LS1043a board Specific PCDs > - # XX (DRAM - Region 1 2GB) > - # (NOR - IFC Region 1 512MB) > - gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000 > - gArmTokenSpaceGuid.PcdSystemMemorySize|0x7BE00000 > - gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x02000000 > - > # > # RTC Pcds > # > diff --git a/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.fdf b/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.fdf > index 99fbc87e1200..931d0bb14f9b 100644 > --- a/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.fdf > +++ b/Platform/NXP/LS1043aRdbPkg/LS1043aRdbPkg.fdf > @@ -24,10 +24,10 @@ > > [FD.LS1043ARDB_EFI] > BaseAddress = 0x82000000|gArmTokenSpaceGuid.PcdFdBaseAddress #The base address of the FLASH Device. > -Size = 0x000ED000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device > +Size = 0x00140000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device > ErasePolarity = 1 > -BlockSize = 0x1 > -NumBlocks = 0xED000 > +BlockSize = 0x40000 > +NumBlocks = 0x5 > > ################################################################################ > # > @@ -44,7 +44,7 @@ NumBlocks = 0xED000 > # RegionType > # > ################################################################################ > -0x00000000|0x000ED000 > +0x00000000|0x00140000 > gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize > FV = FVMAIN_COMPACT > > @@ -159,7 +159,15 @@ READ_STATUS = TRUE > READ_LOCK_CAP = TRUE > READ_LOCK_STATUS = TRUE > > - INF ArmPlatformPkg/PrePi/PeiUniCore.inf > + INF ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf > + INF MdeModulePkg/Core/Pei/PeiMain.inf > + INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf > + INF MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf > + INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf > + INF ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf > + INF ArmPkg/Drivers/CpuPei/CpuPei.inf > + INF ArmPlatformPkg/PlatformPei/PlatformPeim.inf > + INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > > FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { > SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { > diff --git a/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf b/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf > index ad2371115b17..a33f8cd3f743 100644 > --- a/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf > +++ b/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf > @@ -13,7 +13,8 @@ > FILE_GUID = 55ddb6e0-70b5-11e0-b33e-0002a5d5c51b > MODULE_TYPE = BASE > VERSION_STRING = 1.0 > - LIBRARY_CLASS = MemoryInitPeiLib|SEC PEIM DXE_DRIVER > + LIBRARY_CLASS = MemoryInitPeiLib|PEIM > + CONSTRUCTOR = MemoryInitPeiLibConstructor > > [Sources] > MemoryInitPeiLib.c > diff --git a/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.c b/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.c > index ea3e7d59532e..932bdf948f6f 100644 > --- a/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.c > +++ b/Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.c > @@ -111,22 +111,17 @@ GetDramRegionsInfo ( > > /** > Get the installed RAM information. > - Initialize MMU and Memory HOBs (Resource Descriptor HOBs) > + Initialize Memory HOBs (Resource Descriptor HOBs) > + Set the PcdSystemMemoryBase and PcdSystemMemorySize. > > - @param[in] UefiMemoryBase Base address of region used by UEFI in > - permanent memory > - @param[in] UefiMemorySize Size of the region used by UEFI in permanent memory > - > - @return EFI_SUCCESS Successfuly Initialize MMU and Memory HOBs. > + @return EFI_SUCCESS Successfuly retrieved the system memory information > **/ > EFI_STATUS > EFIAPI > -MemoryPeim ( > - IN EFI_PHYSICAL_ADDRESS UefiMemoryBase, > - IN UINT64 UefiMemorySize > +MemoryInitPeiLibConstructor ( > + VOID > ) > { > - ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable; > INT32 Index; > UINTN BaseAddress; > UINTN Size; > @@ -137,18 +132,6 @@ MemoryPeim ( > UINTN FdTop; > BOOLEAN FoundSystemMem; > > - // Get Virtual Memory Map from the Platform Library > - ArmPlatformGetVirtualMemoryMap (&MemoryTable); > - > - // > - // Ensure MemoryTable[0].Length which is size of DRAM has been set > - // by ArmPlatformGetVirtualMemoryMap () > - // > - ASSERT (MemoryTable[0].Length != 0); > - > - // > - // Now, the permanent memory has been installed, we can call AllocatePages() > - // > ResourceAttributes = ( > EFI_RESOURCE_ATTRIBUTE_PRESENT | > EFI_RESOURCE_ATTRIBUTE_INITIALIZED | > @@ -163,8 +146,8 @@ MemoryPeim ( > > GetDramRegionsInfo (DramRegions, ARRAY_SIZE (DramRegions)); > > - FdBase = (UINTN)FixedPcdGet64 (PcdFdBaseAddress); > - FdTop = FdBase + (UINTN)FixedPcdGet32 (PcdFdSize); > + FdBase = (UINTN)PcdGet64 (PcdFdBaseAddress); > + FdTop = FdBase + (UINTN)PcdGet32 (PcdFdSize); > > // Declare memory regios to system > // The DRAM region info is sorted based on the RAM address is SOC memory map. > @@ -217,8 +200,8 @@ MemoryPeim ( > ); > }; > // Mark the memory covering the Firmware Device as boot services data > - BuildMemoryAllocationHob (FixedPcdGet64 (PcdFdBaseAddress), > - FixedPcdGet32 (PcdFdSize), > + BuildMemoryAllocationHob (PcdGet64 (PcdFdBaseAddress), > + PcdGet32 (PcdFdSize), > EfiBootServicesData); > } else { > BuildResourceDescriptorHob ( > @@ -236,17 +219,43 @@ MemoryPeim ( > Size = DramRegions[Index].Size; > > if (FdBase >= BaseAddress && FdTop <= Top) { > - Size -= (UINTN)FixedPcdGet32 (PcdFdSize); > + Size -= (UINTN)PcdGet32 (PcdFdSize); > } > > - if ((UefiMemoryBase >= BaseAddress) && (Size >= UefiMemorySize)) { > + if (Size >= FixedPcdGet32 (PcdSystemMemoryUefiRegionSize)) { > FoundSystemMem = TRUE; > + PcdSet64S (PcdSystemMemoryBase, BaseAddress); > + PcdSet64S (PcdSystemMemorySize, Size); > } > } > > ASSERT (FoundSystemMem == TRUE); > > - // Build Memory Allocation Hob > + return EFI_SUCCESS; > +} > + > +/** > + Initialize MMU > + > + @param[in] UefiMemoryBase Base address of region used by UEFI in > + permanent memory > + @param[in] UefiMemorySize Size of the region used by UEFI in permanent memory > + > + @return EFI_SUCCESS Successfuly Initialize MMU > +**/ > +EFI_STATUS > +EFIAPI > +MemoryPeim ( > + IN EFI_PHYSICAL_ADDRESS UefiMemoryBase, > + IN UINT64 UefiMemorySize > + ) > +{ > + ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable; > + > + // Get Virtual Memory Map from the Platform Library > + ArmPlatformGetVirtualMemoryMap (&MemoryTable); > + > + // Initialize Mmu > InitMmu (MemoryTable); > > if (FeaturePcdGet (PcdPrePiProduceMemoryTypeInformationHob)) { > -- > 2.17.1 >