From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.1811.1675833788561826722 for ; Tue, 07 Feb 2023 21:23:08 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: sahil@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E77E21570 for ; Tue, 7 Feb 2023 21:23:49 -0800 (PST) Received: from mail-pf1-f174.google.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7053F3F8C6 for ; Tue, 7 Feb 2023 21:23:07 -0800 (PST) Received: by mail-pf1-f174.google.com with SMTP id t17so12362465pfj.0 for ; Tue, 07 Feb 2023 21:23:07 -0800 (PST) X-Gm-Message-State: AO0yUKWN/slPwCqbhmOzgxa+UNYvF3adNu6DDVAzmBp6qr8J0OJ5+yvM W/X8gRNx5OuRR5DK9uO52a+Fjb58u/uoN5M0jg== X-Google-Smtp-Source: AK7set8qqthVAD6xxYOOzKKxKWYW/P91US2qVzb9LMcItKY5CrvpKNmxhgAbJT7PwhYsi8FVUIsZPrMw+2bV7EivS9E= X-Received: by 2002:a63:9257:0:b0:4cf:3b5f:d64d with SMTP id s23-20020a639257000000b004cf3b5fd64dmr1179260pgn.53.1675833786458; Tue, 07 Feb 2023 21:23:06 -0800 (PST) MIME-Version: 1.0 References: <20230106061146.3050208-1-sahil@arm.com> <574715cc-3b8f-de6a-a741-0e365e2414a2@arm.com> In-Reply-To: <574715cc-3b8f-de6a-a741-0e365e2414a2@arm.com> From: "sahil" Date: Wed, 8 Feb 2023 10:52:55 +0530 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [edk2-devel] [edk2-platforms][PATCH V1 1/1] Platform/ARM/N1sdp: Add support to parse NT_FW_CONFIG To: devel@edk2.groups.io, thomas.abraham@arm.com, sami.mujawar@arm.com Cc: Ard Biesheuvel , Leif Lindholm Content-Type: text/plain; charset="UTF-8" Hi Thomas/Sami, This issue arose while fixing comments during upstreaming the following patch - https://edk2.groups.io/g/devel/topic/83261392#76845 and was observed while we were testing the platform with upstream code. Thanks, Sahil On Thu, 26 Jan 2023 at 02:17, Thomas Abraham wrote: > > Hi Sahil, > > On 06/01/2023 06:11, sahil via groups.io wrote: > > NT_FW_CONFIG DTB contains platform information passed by > > Tf-A boot stage. > > This information is used for Virtual memory map generation > > during PEI phase and passed on to DXE phase as a HOB, where > > it is used in ConfigurationManagerDxe. > > > > Signed-off-by: sahil > > --- > > Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec | 7 +- > > Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf | 3 +- > > Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf | 8 +- > > Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h | 16 +-- > > Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c | 24 +++-- > > Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c | 12 ++- > > Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c | 103 +++++++++++++++++++- > > Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S | 4 +- > > 8 files changed, 152 insertions(+), 25 deletions(-) > > > > diff --git a/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec b/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec > > index d59f25a5b915..9e257ebde088 100644 > > --- a/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec > > +++ b/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec > > @@ -1,7 +1,7 @@ > > ## @file > > > > # Describes the entire platform configuration. > > > > # > > > > -# Copyright (c) 2018 - 2021, ARM Limited. All rights reserved.
> > > > +# Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.
> > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -22,6 +22,8 @@ [Includes.common] > > Include # Root include for the package > > > > > > > > [Guids.common] > > > > + # ARM NeoverseN1Soc Platform Info descriptor > > > > + gArmNeoverseN1SocPlatformInfoDescriptorGuid = { 0x095cb024, 0x1e00, 0x4d6f, { 0xaa, 0x34, 0x4a, 0xf8, 0xaf, 0x0e, 0xad, 0x99 } } > > > > gArmNeoverseN1SocTokenSpaceGuid = { 0xab93eb78, 0x60d7, 0x4099, { 0xac, 0xeb, 0x6d, 0xb5, 0x02, 0x58, 0x7c, 0x24 } } > > > > > > > > [PcdsFixedAtBuild] > > > > @@ -83,3 +85,6 @@ [PcdsFixedAtBuild] > > gArmNeoverseN1SocTokenSpaceGuid.PcdRemotePcieMmio32Translation|0x40000000000|UINT64|0x0000004F > > > > gArmNeoverseN1SocTokenSpaceGuid.PcdRemotePcieMmio64Translation|0x40000000000|UINT64|0x00000050 > > > > gArmNeoverseN1SocTokenSpaceGuid.PcdRemotePcieSegmentNumber|2|UINT32|0x00000051 > > > > + > > > > +[Ppis] > > > > + gNtFwConfigDtInfoPpiGuid = { 0xb50dee0e, 0x577f, 0x47fb, { 0x83, 0xd0, 0x41, 0x78, 0x61, 0x8b, 0x33, 0x8a } } > > > > diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf > > index 4f8e7f13021a..a4e8b783ec02 100644 > > --- a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf > > +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf > > @@ -1,7 +1,7 @@ > > ## @file > > > > # Configuration Manager Dxe > > > > # > > > > -# Copyright (c) 2021, ARM Limited. All rights reserved.
> > > > +# Copyright (c) 2021 - 2023, ARM Limited. All rights reserved.
> > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -42,6 +42,7 @@ [Packages] > > > > > > [LibraryClasses] > > > > ArmPlatformLib > > > > + HobLib > > > > PrintLib > > > > UefiBootServicesTableLib > > > > UefiDriverEntryPoint > > > > diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf > > index 96e590cdd810..78f309c3aa48 100644 > > --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf > > +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf > > @@ -1,7 +1,7 @@ > > ## @file > > > > # Platform Library for N1Sdp. > > > > # > > > > -# Copyright (c) 2018-2021, ARM Limited. All rights reserved.
> > > > +# Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.
> > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -18,10 +18,14 @@ [Defines] > > [Packages] > > > > ArmPkg/ArmPkg.dec > > > > ArmPlatformPkg/ArmPlatformPkg.dec > > > > + EmbeddedPkg/EmbeddedPkg.dec > > > > MdeModulePkg/MdeModulePkg.dec > > > > MdePkg/MdePkg.dec > > > > Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec > > > > > > > > +[LibraryClasses] > > > > + FdtLib > > > > + > > > > [Sources.common] > > > > PlatformLibMem.c > > > > PlatformLib.c > > > > @@ -59,7 +63,9 @@ [FixedPcd] > > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress > > > > > > > > [Guids] > > > > + gArmNeoverseN1SocPlatformInfoDescriptorGuid > > > > gEfiHobListGuid ## CONSUMES ## SystemTable > > > > > > > > [Ppis] > > > > gArmMpCoreInfoPpiGuid > > > > + gNtFwConfigDtInfoPpiGuid > > > > diff --git a/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h b/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h > > index 097160c7e2d1..4966011ef9cf 100644 > > --- a/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h > > +++ b/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h > > @@ -1,6 +1,6 @@ > > /** @file > > > > * > > > > -* Copyright (c) 2018 - 2020, ARM Limited. All rights reserved. > > > > +* Copyright (c) 2018 - 2023, ARM Limited. All rights reserved. > > > > * > > > > * SPDX-License-Identifier: BSD-2-Clause-Patent > > > > * > > > > @@ -41,11 +41,6 @@ > > #define NEOVERSEN1SOC_EXP_PERIPH_BASE0 0x1C000000 > > > > #define NEOVERSEN1SOC_EXP_PERIPH_BASE0_SZ 0x1300000 > > > > > > > > -// Base address to a structure of type NEOVERSEN1SOC_PLAT_INFO which is > > > > -// pre-populated by a earlier boot stage > > > > -#define NEOVERSEN1SOC_PLAT_INFO_STRUCT_BASE (NEOVERSEN1SOC_NON_SECURE_SRAM_BASE + \ > > > > - 0x00008000) > > > > - > > > > /* > > > > * Platform information structure stored in Non-secure SRAM. Platform > > > > * information are passed from the trusted firmware with the below structure > > > > @@ -55,12 +50,17 @@ > > typedef struct { > > > > /*! 0 - Single Chip, 1 - Chip to Chip (C2C) */ > > > > UINT8 MultichipMode; > > > > - /*! Slave count in C2C mode */ > > > > - UINT8 SlaveCount; > > > > + /*! Secondary chip count in C2C mode */ > > > > + UINT8 SecondaryChipCount; > > > > /*! Local DDR memory size in GigaBytes */ > > > > UINT8 LocalDdrSize; > > > > /*! Remote DDR memory size in GigaBytes */ > > > > UINT8 RemoteDdrSize; > > > > } NEOVERSEN1SOC_PLAT_INFO; > > > > > > > > +// NT_FW_CONFIG DT structure > > > > +typedef struct { > > > > + UINT64 NtFwConfigDtAddr; > > > > +} NEOVERSEN1SOC_NT_FW_CONFIG_INFO_PPI; > > > > + > > > > #endif > > > > diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c > > index a6b4cb0ef482..c15020f595c3 100644 > > --- a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c > > +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c > > @@ -1,7 +1,7 @@ > > /** @file > > > > Configuration Manager Dxe > > > > > > > > - Copyright (c) 2021, ARM Limited. All rights reserved.
> > > > + Copyright (c) 2021 - 2023, ARM Limited. All rights reserved.
> > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > @@ -16,6 +16,7 @@ > > #include > > > > #include > > > > #include > > > > +#include > > > > #include > > > > #include > > > > #include > > > > @@ -28,6 +29,7 @@ > > #include "Platform.h" > > > > > > > > extern struct EFI_ACPI_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE Hmat; > > > > +static NEOVERSEN1SOC_PLAT_INFO *PlatInfo; > > > > > > > > /** The platform configuration repository information. > > > > */ > > > > @@ -1242,13 +1244,11 @@ InitializePlatformRepository ( > > IN EDKII_PLATFORM_REPOSITORY_INFO * CONST PlatRepoInfo > > > > ) > > > > { > > > > - NEOVERSEN1SOC_PLAT_INFO *PlatInfo; > > > > UINT64 Dram2Size; > > > > UINT64 RemoteDdrSize; > > > > > > > > RemoteDdrSize = 0; > > > > > > > > - PlatInfo = (NEOVERSEN1SOC_PLAT_INFO *)NEOVERSEN1SOC_PLAT_INFO_STRUCT_BASE; > > > > Dram2Size = ((PlatInfo->LocalDdrSize - 2) * SIZE_1GB); > > > > > > > > PlatRepoInfo->MemAffInfo[LOCAL_DDR_REGION2].Length = Dram2Size; > > > > @@ -1512,7 +1512,6 @@ GetGicCInfo ( > > ) > > > > { > > > > EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; > > > > - NEOVERSEN1SOC_PLAT_INFO *PlatInfo; > > > > UINT32 TotalObjCount; > > > > UINT32 ObjIndex; > > > > > > > > @@ -1523,7 +1522,6 @@ GetGicCInfo ( > > } > > > > > > > > PlatformRepo = This->PlatRepoInfo; > > > > - PlatInfo = (NEOVERSEN1SOC_PLAT_INFO *)NEOVERSEN1SOC_PLAT_INFO_STRUCT_BASE; > > > > > > > > if (PlatInfo->MultichipMode == 1) { > > > > TotalObjCount = PLAT_CPU_COUNT * 2; > > > > @@ -1623,7 +1621,6 @@ GetStandardNameSpaceObject ( > > { > > > > EFI_STATUS Status; > > > > EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; > > > > - NEOVERSEN1SOC_PLAT_INFO *PlatInfo; > > > > UINT32 AcpiTableCount; > > > > > > > > if ((This == NULL) || (CmObject == NULL)) { > > > > @@ -1634,7 +1631,7 @@ GetStandardNameSpaceObject ( > > > > > > Status = EFI_NOT_FOUND; > > > > PlatformRepo = This->PlatRepoInfo; > > > > - PlatInfo = (NEOVERSEN1SOC_PLAT_INFO *)NEOVERSEN1SOC_PLAT_INFO_STRUCT_BASE; > > > > + > > > > AcpiTableCount = ARRAY_SIZE (PlatformRepo->CmAcpiTableList); > > > > if (PlatInfo->MultichipMode == 0) > > > > AcpiTableCount -= 1; > > > > @@ -1697,7 +1694,6 @@ GetArmNameSpaceObject ( > > { > > > > EFI_STATUS Status; > > > > EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; > > > > - NEOVERSEN1SOC_PLAT_INFO *PlatInfo; > > > > UINT32 GicRedistCount; > > > > UINT32 GicCpuCount; > > > > UINT32 ProcHierarchyInfoCount; > > > > @@ -1718,8 +1714,6 @@ GetArmNameSpaceObject ( > > Status = EFI_NOT_FOUND; > > > > PlatformRepo = This->PlatRepoInfo; > > > > > > > > - // Probe for multi chip information > > > > - PlatInfo = (NEOVERSEN1SOC_PLAT_INFO *)NEOVERSEN1SOC_PLAT_INFO_STRUCT_BASE; > > > > if (PlatInfo->MultichipMode == 1) { > > > > GicRedistCount = 2; > > > > GicCpuCount = PLAT_CPU_COUNT * 2; > > > > @@ -2162,8 +2156,18 @@ ConfigurationManagerDxeInitialize ( > > IN EFI_SYSTEM_TABLE * SystemTable > > > > ) > > > > { > > > > + VOID *PlatInfoHob; > > > > EFI_STATUS Status; > > > > > > > > + PlatInfoHob = GetFirstGuidHob (&gArmNeoverseN1SocPlatformInfoDescriptorGuid); > > > > + > > > > + if (PlatInfoHob == NULL) { > > > > + DEBUG ((DEBUG_ERROR, "Platform HOB is NULL\n")); > > > > + return EFI_NOT_FOUND; > > > > + } > > > > + > > > > + PlatInfo = (NEOVERSEN1SOC_PLAT_INFO *)GET_GUID_HOB_DATA (PlatInfoHob); > > > > + > > > > // Initialize the Platform Configuration Repository before installing the > > > > // Configuration Manager Protocol > > > > Status = InitializePlatformRepository ( > > > > diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c > > index c0effd37f333..2f753be717ab 100644 > > --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c > > +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c > > @@ -1,6 +1,6 @@ > > /** @file > > > > > > > > - Copyright (c) 2018-2021, ARM Limited. All rights reserved.
> > > > + Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.
> > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > @@ -8,8 +8,12 @@ > > > > > > #include > > > > #include > > > > +#include > > > > #include > > > > > > > > +UINT64 NtFwConfigDtBlob; > > > > +STATIC NEOVERSEN1SOC_NT_FW_CONFIG_INFO_PPI mNtFwConfigDtInfoPpi; > > > > + > > > > STATIC ARM_CORE_INFO mCoreInfoTable[] = { > > > > { 0x0, 0x0 }, // Cluster 0, Core 0 > > > > { 0x0, 0x1 }, // Cluster 0, Core 1 > > > > @@ -46,6 +50,7 @@ ArmPlatformInitialize ( > > IN UINTN MpId > > > > ) > > > > { > > > > + mNtFwConfigDtInfoPpi.NtFwConfigDtAddr = NtFwConfigDtBlob; > > > > return RETURN_SUCCESS; > > > > } > > > > > > > > @@ -80,6 +85,11 @@ EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = { > > EFI_PEI_PPI_DESCRIPTOR_PPI, > > > > &gArmMpCoreInfoPpiGuid, > > > > &mMpCoreInfoPpi > > > > + }, > > > > + { > > > > + EFI_PEI_PPI_DESCRIPTOR_PPI, > > > > + &gNtFwConfigDtInfoPpiGuid, > > > > + &mNtFwConfigDtInfoPpi > > > > } > > > > }; > > > > > > > > diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c > > index 339fa07b3217..1d53ec75aa49 100644 > > --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c > > +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c > > @@ -1,6 +1,6 @@ > > /** @file > > > > > > > > - Copyright (c) 2018 - 2021, ARM Limited. All rights reserved.
> > > > + Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.
> > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > @@ -10,11 +10,95 @@ > > #include > > > > #include > > > > #include > > > > +#include > > > > +#include > > > > #include > > > > > > > > // The total number of descriptors, including the final "end-of-table" descriptor. > > > > #define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 19 > > > > > > > > +/** A helper function to locate the NtFwConfig PPI and get the base address of > > > > + NT_FW_CONFIG DT from which values are obtained using FDT helper functions. > > > > + > > > > + @param [out] plat_info Pointer to the NeoverseN1Soc PLATFORM_INFO HOB > > > > + > > > > + @retval EFI_SUCCESS Success. > > > > + returns EFI_INVALID_PARAMETER A parameter is invalid. > > > > +**/ > > > > +EFI_STATUS > > > > +GetNeoverseN1SocPlatInfo ( > > > > + OUT NEOVERSEN1SOC_PLAT_INFO *plat_info > > > > + ) > > > > +{ > > > > + CONST UINT32 *Property; > > > > + INT32 Offset; > > > > + CONST VOID *NtFwCfgDtBlob; > > > > + NEOVERSEN1SOC_NT_FW_CONFIG_INFO_PPI *NtFwConfigInfoPpi; > > > > + EFI_STATUS Status; > > > > + > > > > + Status = PeiServicesLocatePpi ( > > > > + &gNtFwConfigDtInfoPpiGuid, > > > > + 0, > > > > + NULL, > > > > + (VOID **)&NtFwConfigInfoPpi > > > > + ); > > > > + > > > > + if (EFI_ERROR (Status)) { > > > > + DEBUG (( > > > > + DEBUG_ERROR, > > > > + "PeiServicesLocatePpi failed with error %r\n", > > > > + Status > > > > + )); > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + NtFwCfgDtBlob = (VOID *)(UINTN)NtFwConfigInfoPpi->NtFwConfigDtAddr; > > > > + if (fdt_check_header (NtFwCfgDtBlob) != 0) { > > > > + DEBUG ((DEBUG_ERROR, "Invalid DTB file %p passed\n", NtFwCfgDtBlob)); > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + Offset = fdt_subnode_offset (NtFwCfgDtBlob, 0, "platform-info"); > > > > + if (Offset == -FDT_ERR_NOTFOUND) { > > > > + DEBUG ((DEBUG_ERROR, "Invalid DTB : platform-info node not found\n")); > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + Property = fdt_getprop (NtFwCfgDtBlob, Offset, "local-ddr-size", NULL); > > > > + if (Property == NULL) { > > > > + DEBUG ((DEBUG_ERROR, "local-ddr-size property not found\n")); > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + plat_info->LocalDdrSize = fdt32_to_cpu (*Property); > > > > + > > > > + Property = fdt_getprop (NtFwCfgDtBlob, Offset, "remote-ddr-size", NULL); > > > > + if (Property == NULL) { > > > > + DEBUG ((DEBUG_ERROR, "remote-ddr-size property not found\n")); > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + plat_info->RemoteDdrSize = fdt32_to_cpu (*Property); > > > > + > > > > + Property = fdt_getprop (NtFwCfgDtBlob, Offset, "secondary-chip-count", NULL); > > > > + if (Property == NULL) { > > > > + DEBUG ((DEBUG_ERROR, "secondary-chip-count property not found\n")); > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + plat_info->SecondaryChipCount = fdt32_to_cpu (*Property); > > > > + > > > > + Property = fdt_getprop (NtFwCfgDtBlob, Offset, "multichip-mode", NULL); > > > > + if (Property == NULL) { > > > > + DEBUG ((DEBUG_ERROR, "multichip-mode property not found\n")); > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + plat_info->MultichipMode = fdt32_to_cpu (*Property); > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > + > > > > /** > > > > Returns the Virtual Memory Map of the platform. > > > > > > > > @@ -36,9 +120,24 @@ ArmPlatformGetVirtualMemoryMap ( > > NEOVERSEN1SOC_PLAT_INFO *PlatInfo; > > > > UINT64 DramBlock2Size; > > > > UINT64 RemoteDdrSize; > > > > + EFI_STATUS Status; > > > > > > > > Index = 0; > > > > - PlatInfo = (NEOVERSEN1SOC_PLAT_INFO *)NEOVERSEN1SOC_PLAT_INFO_STRUCT_BASE; > > > > + > > > > + // Create platform info HOB > > > > + PlatInfo = (NEOVERSEN1SOC_PLAT_INFO *)BuildGuidHob ( > > > > + &gArmNeoverseN1SocPlatformInfoDescriptorGuid, > > > > + sizeof (NEOVERSEN1SOC_PLAT_INFO) > > > > + ); > > > > + > > > > + if (PlatInfo == NULL) { > > > > + DEBUG ((DEBUG_ERROR, "Platform HOB is NULL\n")); > > > > + ASSERT (FALSE); > > > > + return; > > > > + } > > > > + > > > > + Status = GetNeoverseN1SocPlatInfo (PlatInfo); > > > > + ASSERT (Status == 0); > > > > DramBlock2Size = ((UINT64)(PlatInfo->LocalDdrSize - > > > > NEOVERSEN1SOC_DRAM_BLOCK1_SIZE / SIZE_1GB) * > > > > (UINT64)SIZE_1GB); > > > > diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S > > index 8d2069dea837..a0b89a7bf929 100644 > > --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S > > +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S > > @@ -1,6 +1,6 @@ > > /** @file > > > > * > > > > -* Copyright (c) 2019 - 2020, ARM Limited. All rights reserved. > > > > +* Copyright (c) 2019 - 2023, ARM Limited. All rights reserved. > > > > * > > > > * SPDX-License-Identifier: BSD-2-Clause-Patent > > > > * > > > > @@ -25,6 +25,8 @@ GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore) > > // the UEFI firmware through the CPU registers. > > > > // > > > > ASM_PFX(ArmPlatformPeiBootAction): > > > > + adr x10, NtFwConfigDtBlob > > > > + str x0, [x10] > > > > ret > > > > > > > > // > > > > Sami's comments for the patch "Platform/ARM/Morello: Add support to > parse NT_FW_CONFIG" apply for this patch as well. Please consider > revising this patch based on those comments. > > Thanks, > Thomas. > > > > >