From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by mx.groups.io with SMTP id smtpd.web11.6607.1570720071052410068 for ; Thu, 10 Oct 2019 08:07:51 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=BDV7unpG; spf=pass (domain: linaro.org, ip: 209.85.221.68, mailfrom: leif.lindholm@linaro.org) Received: by mail-wr1-f68.google.com with SMTP id o18so8294390wrv.13 for ; Thu, 10 Oct 2019 08:07:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=DPO3Q52ud4Emm5B1oVppooW/SVnnOEMNQVrKHzJrwRs=; b=BDV7unpGX2BasqCWCpEnxVPWJlok03MzYQJIe3qPW5i1y7QAvwaNrtS8+exwc4tcYN isR15l66DTDYkHlOZ5LP1KYTRv7SaMffJRMW8Kw2rVNWNRpsSYsKYVPlqVHndjQhQMbC TusQvJeVfnl+N4RjMDjOtd6eJldnV/KhOuMHMZ5ur5pLYLqb9n7ZlxAVScBjivh97yT0 I/k2mRVFiMACEWphnMEFlnrX32Y2zl4R4NkrkEbQcEUtbjpaOAcZ5/GXnpyupSakxNbI 9HIFj0LERTCw0PKDh1NcQqOBBBuSTsBH9E0OhK8sy9APFOS/yA9K+16uloYnHRtRG9zP itEQ== 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=DPO3Q52ud4Emm5B1oVppooW/SVnnOEMNQVrKHzJrwRs=; b=Z54RA2N5GnHNH6i8h7/kHaIG62bBOBDLi5GKK1SywH7wz9fg+H/JO+X8PZn9GkpuHj g7roOMGAnthzjDpYAWWkhFE5wpKhDT/a8n2Q3mVZNgw1UmQpfHduojtFXiPwGzywkFtP vKyIww3it8TMQc6y7UXzzPxAspcDHAWl5k5YMCMsKISz4LPRRKPpal5pG3nHkpgVnFB/ jfb3tX0skWnFKT0JKKVo/rFOOZSmfWQpJVDnxBjyMXcMHYH9kMmzOUla6qddRaBG9h/x DrEmSUbHlQ76p7RUfurbzZafGWT5ADlCVXdtrwJMDJwy+QhtdwbsI2S4wKTz4EHFA8zz WtQQ== X-Gm-Message-State: APjAAAUG5LGiXX5svuxvYafCobyfuM7OMyDDX+31Wx/a9KRzTojeoTya Npi2lNw0+M83NyDr4opcFC7RdQ== X-Google-Smtp-Source: APXvYqx/8QYvg7a2tk4Iczz/h/YdCryX2iMrrptfnIe7cJ/9U1NxjApcafhw5o81vVI+knyHTPqjGw== X-Received: by 2002:a5d:4a0b:: with SMTP id m11mr9605870wrq.287.1570720069528; Thu, 10 Oct 2019 08:07:49 -0700 (PDT) Return-Path: Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id d193sm9151006wmd.0.2019.10.10.08.07.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Oct 2019 08:07:48 -0700 (PDT) Date: Thu, 10 Oct 2019 16:07:47 +0100 From: "Leif Lindholm" To: Meenakshi Aggarwal Cc: ard.biesheuvel@linaro.org, michael.d.kinney@intel.com, devel@edk2.groups.io, v.sethi@nxp.com Subject: Re: [PATCH edk2-platforms 08/12] Silicon/NXP : Add MemoryInitPei Library Message-ID: <20191010150747.GF25504@bivouac.eciton.net> References: <1543417315-5763-1-git-send-email-meenakshi.aggarwal@nxp.com> <1570639758-30355-1-git-send-email-meenakshi.aggarwal@nxp.com> <1570639758-30355-9-git-send-email-meenakshi.aggarwal@nxp.com> MIME-Version: 1.0 In-Reply-To: <1570639758-30355-9-git-send-email-meenakshi.aggarwal@nxp.com> User-Agent: Mutt/1.10.1 (2018-07-13) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Oct 09, 2019 at 10:19:14PM +0530, Meenakshi Aggarwal wrote: > Add MemoryInitPei Library for NXP platforms. > It has changes to get DRAM information from TFA. Changelog information belongs below ---, or in the cover letter. Please reword so this simply states that it retreieves DRAM information from TF-A. > Signed-off-by: Meenakshi Aggarwal > --- > .../NXP/Library/MemoryInitPei/MemoryInitPeiLib.c | 139 +++++++++++++++++++++ > .../NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf | 48 +++++++ > 2 files changed, 187 insertions(+) > create mode 100644 Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.c > create mode 100644 Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf > > diff --git a/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.c b/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.c > new file mode 100644 > index 0000000..9889d57 > --- /dev/null > +++ b/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.c > @@ -0,0 +1,139 @@ > +/** @file > +* > +* Copyright (c) 2011-2015, ARM Limited. All rights reserved. > +* > +* Copyright 2019 NXP > +* > +* SPDX-License-Identifier: BSD-2-Clause-Patent > +* > +**/ > + > +#include > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > + > +VOID > +BuildMemoryTypeInformationHob ( > + VOID > + ); > + > +VOID > +InitMmu ( > + IN ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable > + ) > +{ > + > + VOID *TranslationTableBase; > + UINTN TranslationTableSize; > + RETURN_STATUS Status; > + > + //Note: Because we called PeiServicesInstallPeiMemory() before to call InitMmu() the MMU Page Table resides in Very long line, please wrap. > + // DRAM (even at the top of DRAM as it is the first permanent memory allocation) > + Status = ArmConfigureMmu (MemoryTable, &TranslationTableBase, &TranslationTableSize); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "Error: Failed to enable MMU\n")); > + } > +} > + > +/*++ > + > +Routine Description: > + > + > + > +Arguments: > + > + FileHandle - Handle of the file being invoked. > + PeiServices - Describes the list of possible PEI Services. > + > +Returns: > + > + Status - EFI_SUCCESS if the boot mode could be set > + > +--*/ > +EFI_STATUS > +EFIAPI > +MemoryPeim ( > + IN EFI_PHYSICAL_ADDRESS UefiMemoryBase, > + IN UINT64 UefiMemorySize > + ) > +{ > + ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable; > + EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttributes; > + EFI_PEI_HOB_POINTERS NextHob; > + BOOLEAN Found; > + DRAM_INFO DramInfo; > + > + // Get Virtual Memory Map from the Platform Library > + ArmPlatformGetVirtualMemoryMap (&MemoryTable); This function is added by the subsequent patch. If there are no benefits to the current order, please reverse them. > + > + // > + // 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 | > + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | > + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | > + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | > + EFI_RESOURCE_ATTRIBUTE_TESTED Funky indentation. > + ); > + > + if (GetDramBankInfo (&DramInfo)) { > + DEBUG ((DEBUG_ERROR, "Failed to get DRAM information, exiting...\n")); > + return EFI_UNSUPPORTED; > + } > + > + while (DramInfo.NumOfDrams--) { > + // > + // Check if the resource for the main system memory has been declared > + // > + Found = FALSE; > + NextHob.Raw = GetHobList (); > + while ((NextHob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, NextHob.Raw)) != NULL) { > + if ((NextHob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) && > + (DramInfo.DramRegion[DramInfo.NumOfDrams].BaseAddress >= NextHob.ResourceDescriptor->PhysicalStart) && > + (NextHob.ResourceDescriptor->PhysicalStart + NextHob.ResourceDescriptor->ResourceLength <= > + DramInfo.DramRegion[DramInfo.NumOfDrams].BaseAddress + DramInfo.DramRegion[DramInfo.NumOfDrams].Size)) > + { > + Found = TRUE; > + break; > + } > + NextHob.Raw = GET_NEXT_HOB (NextHob); > + } > + > + if (!Found) { > + // Reserved the memory space occupied by the firmware volume > + BuildResourceDescriptorHob ( > + EFI_RESOURCE_SYSTEM_MEMORY, > + ResourceAttributes, > + DramInfo.DramRegion[DramInfo.NumOfDrams].BaseAddress, > + DramInfo.DramRegion[DramInfo.NumOfDrams].Size Funky indentation. > + ); > + } > + } > + > + // Build Memory Allocation Hob > + InitMmu (MemoryTable); > + > + if (FeaturePcdGet (PcdPrePiProduceMemoryTypeInformationHob)) { > + // Optional feature that helps prevent EFI memory map fragmentation. > + BuildMemoryTypeInformationHob (); > + } > + > + return EFI_SUCCESS; > +} > diff --git a/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf b/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf > new file mode 100644 > index 0000000..806da6d > --- /dev/null > +++ b/Silicon/NXP/Library/MemoryInitPei/MemoryInitPeiLib.inf > @@ -0,0 +1,48 @@ > +#/** @file > +# > +# Copyright (c) 2011-2014, ARM Ltd. All rights reserved.
> +# Copyright 2019 NXP > +# > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +# > +#**/ > + > +[Defines] > + INF_VERSION = 0x00010005 Bump spec version? > + BASE_NAME = ArmMemoryInitPeiLib > + FILE_GUID = 55ddb6e0-70b5-11e0-b33e-0002a5d5c51b > + MODULE_TYPE = BASE > + VERSION_STRING = 1.0 > + LIBRARY_CLASS = MemoryInitPeiLib|SEC PEIM DXE_DRIVER > + > +[Sources] > + MemoryInitPeiLib.c > + > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + EmbeddedPkg/EmbeddedPkg.dec > + ArmPkg/ArmPkg.dec > + ArmPlatformPkg/ArmPlatformPkg.dec > + Silicon/NXP/NxpQoriqLs.dec Please sort Packages alphabetically. > + > +[LibraryClasses] > + DebugLib > + HobLib > + ArmMmuLib > + ArmPlatformLib > + PcdLib Plese sort LibraryClasses alphabetically. / Leif > + > +[Guids] > + gEfiMemoryTypeInformationGuid > + > +[FeaturePcd] > + gEmbeddedTokenSpaceGuid.PcdPrePiProduceMemoryTypeInformationHob > + > +[Pcd] > + gArmTokenSpaceGuid.PcdSystemMemoryBase > + gArmTokenSpaceGuid.PcdSystemMemorySize > + > +[Depex] > + TRUE > -- > 1.9.1 >