Hi Chandni,<br /><br />One input,<br /><br />On Sat, Dec 4, 2021 at 04:31 AM, chandni cherukuri wrote:<br />
<blockquote>This patch implements the configuration manager for Morello<br />SoC platform. It enables support for generating the following<br />ACPI tables for Morello SoC Platform:<br />1. FADT<br />2. DSDT<br />3. GTDT<br />4. MADT<br />5. SPCR<br />6. DBG2<br />7. PPTT<br /><br />Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com><br />---<br />Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerSoc.dsc.inc | 16 ++<br />Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxeSoc.inf | 72 +++++++++<br />Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.h | 97 ++++++++++++<br />Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.c | 161 ++++++++++++++++++++<br />Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtSoc.asl | 41 +++++<br />5 files changed, 387 insertions(+)<br /><br />diff --git a/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerSoc.dsc.inc b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerSoc.dsc.inc<br />new file mode 100644<br />index 000000000000..f7e58185696e<br />--- /dev/null<br />+++ b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerSoc.dsc.inc</blockquote>
I think there is no need for this separate .dsc.inc file, can you please refer to the N1SDP implementation, I had received a suggestion from Pierre after which I had removed a similar file in N1SDP patch set.<br /><br /><br /><br />
<blockquote>@@ -0,0 +1,16 @@<br />+## @file<br />+# dsc include file for Configuration Manager<br />+#<br />+# Copyright (c) 2021, ARM Limited. All rights reserved.<BR><br />+#<br />+# SPDX-License-Identifier: BSD-2-Clause-Patent<br />+#<br />+##<br />+<br />+[Defines]<br />+<br />+[BuildOptions]<br />+<br />+[Components.common]<br />+ # Configuration Manager<br />+ Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxeSoc.inf<br />diff --git a/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxeSoc.inf b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxeSoc.inf<br />new file mode 100644<br />index 000000000000..6f9199a6fda2<br />--- /dev/null<br />+++ b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxeSoc.inf<br />@@ -0,0 +1,72 @@<br />+## @file<br />+# Configuration Manager Dxe<br />+#<br />+# Copyright (c) 2021, ARM Limited. All rights reserved.<BR><br />+#<br />+# SPDX-License-Identifier: BSD-2-Clause-Patent<br />+##<br />+<br />+[Defines]<br />+ INF_VERSION = 0x0001001B<br />+ BASE_NAME = ConfigurationManagerDxe<br />+ FILE_GUID = BF8FBCEE-AD95-466B-9185-50A1BB651DDA<br />+ MODULE_TYPE = DXE_DRIVER<br />+ VERSION_STRING = 1.0<br />+ ENTRY_POINT = ConfigurationManagerDxeInitialize<br />+<br />+#<br />+# The following information is for reference only and not required by the build tools.<br />+#<br />+# VALID_ARCHITECTURES = AARCH64<br />+#<br />+<br />+[Sources]<br />+ AslTables/DsdtSoc.asl<br />+ ConfigurationManager.c<br />+ ConfigurationManager.h<br />+ ConfigurationManagerSoc.c<br />+ ConfigurationManagerSoc.h<br />+ Platform.h<br />+<br />+[Packages]<br />+ ArmPkg/ArmPkg.dec<br />+ ArmPlatformPkg/ArmPlatformPkg.dec<br />+ DynamicTablesPkg/DynamicTablesPkg.dec<br />+ MdeModulePkg/MdeModulePkg.dec<br />+ MdePkg/MdePkg.dec<br />+ Platform/ARM/Morello/MorelloPlatform.dec<br />+<br />+[LibraryClasses]<br />+ UefiDriverEntryPoint<br />+<br />+[Protocols]<br />+ gEdkiiConfigurationManagerProtocolGuid<br />+<br />+[FixedPcd]<br />+ ## PL011 Serial Debug UART<br />+ gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase<br />+ gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate<br />+ gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz<br />+<br />+ gArmPlatformTokenSpaceGuid.PL011UartClkInHz<br />+ gArmPlatformTokenSpaceGuid.PL011UartInterrupt<br />+<br />+ gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum<br />+ gArmTokenSpaceGuid.PcdArmArchTimerIntrNum<br />+ gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum<br />+ gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum<br />+<br />+ # SBSA Generic Watchdog<br />+ gArmTokenSpaceGuid.PcdGenericWatchdogControlBase<br />+ gArmTokenSpaceGuid.PcdGenericWatchdogEl2IntrNum<br />+ gArmTokenSpaceGuid.PcdGenericWatchdogRefreshBase<br />+<br />+ gArmTokenSpaceGuid.PcdGicDistributorBase<br />+ gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase<br />+ gArmTokenSpaceGuid.PcdGicRedistributorsBase<br />+<br />+ gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase<br />+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate<br />+<br />+[Depex]<br />+ TRUE<br />diff --git a/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.h b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.h<br />new file mode 100644<br />index 000000000000..8a521b83c8dc<br />--- /dev/null<br />+++ b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.h<br />@@ -0,0 +1,97 @@<br />+/** @file<br />+<br />+ Copyright (c) 2021, ARM Limited. All rights reserved.<BR><br />+<br />+ SPDX-License-Identifier: BSD-2-Clause-Patent<br />+<br />+ @par Glossary:<br />+ - Cm or CM - Configuration Manager<br />+ - Obj or OBJ - Object<br />+**/<br />+<br />+#ifndef SOC_CONFIGURATION_MANAGER_H_<br />+#define SOC_CONFIGURATION_MANAGER_H_<br />+<br />+#include "ConfigurationManager.h"<br />+<br />+/** The number of ACPI tables to install<br />+*/<br />+#define PLAT_ACPI_TABLE_COUNT 7<br />+<br />+/** A helper macro for mapping a reference token<br />+*/<br />+#define REFERENCE_TOKEN_SOC(Field) \<br />+ (CM_OBJECT_TOKEN)((UINT8*)&MorelloSocRepositoryInfo + \<br />+ OFFSET_OF (EDKII_SOC_PLATFORM_REPOSITORY_INFO, Field))<br />+<br />+/** C array containing the compiled AML template.<br />+ These symbols are defined in the auto generated C file<br />+ containing the AML bytecode array.<br />+*/<br />+extern CHAR8 dsdtsoc_aml_code[];<br />+<br />+/** A structure describing the SoC Platform specific information<br />+*/<br />+typedef struct SocPlatformRepositoryInfo {<br />+ /// List of ACPI tables<br />+ CM_STD_OBJ_ACPI_TABLE_INFO CmAcpiTableList[PLAT_ACPI_TABLE_COUNT];<br />+} EDKII_SOC_PLATFORM_REPOSITORY_INFO;<br />+<br />+/** A structure describing the platform configuration<br />+ manager repository information<br />+*/<br />+typedef struct PlatformRepositoryInfo {<br />+ /// Common information<br />+ EDKII_COMMON_PLATFORM_REPOSITORY_INFO *CommonPlatRepoInfo;<br />+<br />+ /// SoC Platform specific information<br />+ EDKII_SOC_PLATFORM_REPOSITORY_INFO *SocPlatRepoInfo;<br />+} EDKII_PLATFORM_REPOSITORY_INFO;<br />+<br />+extern EDKII_COMMON_PLATFORM_REPOSITORY_INFO CommonPlatformInfo;<br />+<br />+/** Return platform specific ARM namespace object.<br />+<br />+ @param [in] This Pointer to the Configuration Manager Protocol.<br />+ @param [in] CmObjectId The Configuration Manager Object ID.<br />+ @param [in] Token An optional token identifying the object. If<br />+ unused this must be CM_NULL_TOKEN.<br />+ @param [in, out] CmObject Pointer to the Configuration Manager Object<br />+ descriptor describing the requested Object.<br />+<br />+ @retval EFI_SUCCESS Success.<br />+ @retval EFI_INVALID_PARAMETER A parameter is invalid.<br />+ @retval EFI_NOT_FOUND The required object information is not found.<br />+**/<br />+EFI_STATUS<br />+EFIAPI<br />+GetArmNameSpaceObjectPlat (<br />+ IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This,<br />+ IN CONST CM_OBJECT_ID CmObjectId,<br />+ IN CONST CM_OBJECT_TOKEN Token OPTIONAL,<br />+ IN OUT CM_OBJ_DESCRIPTOR *CONST CmObject<br />+ );<br />+<br />+/** Return platform specific standard namespace object.<br />+<br />+ @param [in] This Pointer to the Configuration Manager Protocol.<br />+ @param [in] CmObjectId The Configuration Manager Object ID.<br />+ @param [in] Token An optional token identifying the object. If<br />+ unused this must be CM_NULL_TOKEN.<br />+ @param [in, out] CmObject Pointer to the Configuration Manager Object<br />+ descriptor describing the requested Object.<br />+<br />+ @retval EFI_SUCCESS Success.<br />+ @retval EFI_INVALID_PARAMETER A parameter is invalid.<br />+ @retval EFI_NOT_FOUND The required object information is not found.<br />+**/<br />+EFI_STATUS<br />+EFIAPI<br />+GetStandardNameSpaceObjectPlat (<br />+ IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This,<br />+ IN CONST CM_OBJECT_ID CmObjectId,<br />+ IN CONST CM_OBJECT_TOKEN Token OPTIONAL,<br />+ IN OUT CM_OBJ_DESCRIPTOR *CONST CmObject<br />+ );<br />+<br />+#endif // SOC_CONFIGURATION_MANAGER_H_<br />diff --git a/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.c b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.c<br />new file mode 100644<br />index 000000000000..7ca8ae212a61<br />--- /dev/null<br />+++ b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerSoc.c<br />@@ -0,0 +1,161 @@<br />+/** @file<br />+ Configuration Manager Dxe<br />+<br />+ Copyright (c) 2021, ARM Limited. All rights reserved.<BR><br />+<br />+ SPDX-License-Identifier: BSD-2-Clause-Patent<br />+<br />+ @par Glossary:<br />+ - Cm or CM - Configuration Manager<br />+ - Obj or OBJ - Object<br />+**/<br />+<br />+#include <IndustryStandard/DebugPort2Table.h><br />+#include <IndustryStandard/IoRemappingTable.h><br />+#include <IndustryStandard/MemoryMappedConfigurationSpaceAccessTable.h><br />+#include <IndustryStandard/SerialPortConsoleRedirectionTable.h><br />+#include <Library/DebugLib.h><br />+#include <Library/UefiBootServicesTableLib.h><br />+#include <Protocol/ConfigurationManagerProtocol.h><br />+<br />+#include "ConfigurationManagerSoc.h"<br />+#include "Platform.h"<br />+<br />+EDKII_SOC_PLATFORM_REPOSITORY_INFO MorelloSocRepositoryInfo = {<br />+ // ACPI Table List<br />+ {<br />+ // FADT Table<br />+ {<br />+ EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,<br />+ EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_REVISION,<br />+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdFadt),<br />+ NULL<br />+ },<br />+ // GTDT Table<br />+ {<br />+ EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,<br />+ EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION,<br />+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdGtdt),<br />+ NULL<br />+ },<br />+ // MADT Table<br />+ {<br />+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,<br />+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION,<br />+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdMadt),<br />+ NULL<br />+ },<br />+ // SPCR Table<br />+ {<br />+ EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,<br />+ EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION,<br />+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdSpcr),<br />+ NULL<br />+ },<br />+ // DSDT Table<br />+ {<br />+ EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,<br />+ 0, // Unused<br />+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdDsdt),<br />+ (EFI_ACPI_DESCRIPTION_HEADER *)dsdtsoc_aml_code<br />+ },<br />+ // DBG2 Table<br />+ {<br />+ EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,<br />+ EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION,<br />+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdDbg2),<br />+ NULL<br />+ },<br />+ // PPTT Table<br />+ {<br />+ EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE,<br />+ EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_REVISION,<br />+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdPptt),<br />+ NULL<br />+ },<br />+ },<br />+};<br />+<br />+EDKII_PLATFORM_REPOSITORY_INFO MorelloRepositoryInfo = {<br />+ &CommonPlatformInfo,<br />+ &MorelloSocRepositoryInfo<br />+};<br />+<br />+/** Return platform specific ARM namespace object.<br />+<br />+ @param [in] This Pointer to the Configuration Manager Protocol.<br />+ @param [in] CmObjectId The Configuration Manager Object ID.<br />+ @param [in] Token An optional token identifying the object. If<br />+ unused this must be CM_NULL_TOKEN.<br />+ @param [in, out] CmObject Pointer to the Configuration Manager Object<br />+ descriptor describing the requested Object.<br />+<br />+ @retval EFI_SUCCESS Success.<br />+ @retval EFI_INVALID_PARAMETER A parameter is invalid.<br />+ @retval EFI_NOT_FOUND The required object information is not found.<br />+**/<br />+EFI_STATUS<br />+EFIAPI<br />+GetArmNameSpaceObjectPlat (<br />+ IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This,<br />+ IN CONST CM_OBJECT_ID CmObjectId,<br />+ IN CONST CM_OBJECT_TOKEN Token OPTIONAL,<br />+ IN OUT CM_OBJ_DESCRIPTOR *CONST CmObject<br />+ )<br />+{<br />+ return EFI_NOT_FOUND;<br />+}<br />+<br />+/** Return platform specific standard namespace object.<br />+<br />+ @param [in] This Pointer to the Configuration Manager Protocol.<br />+ @param [in] CmObjectId The Configuration Manager Object ID.<br />+ @param [in] Token An optional token identifying the object. If<br />+ unused this must be CM_NULL_TOKEN.<br />+ @param [in, out] CmObject Pointer to the Configuration Manager Object<br />+ descriptor describing the requested Object.<br />+<br />+ @retval EFI_SUCCESS Success.<br />+ @retval EFI_INVALID_PARAMETER A parameter is invalid.<br />+ @retval EFI_NOT_FOUND The required object information is not found.<br />+**/<br />+EFI_STATUS<br />+EFIAPI<br />+GetStandardNameSpaceObjectPlat (<br />+ IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This,<br />+ IN CONST CM_OBJECT_ID CmObjectId,<br />+ IN CONST CM_OBJECT_TOKEN Token OPTIONAL,<br />+ IN OUT CM_OBJ_DESCRIPTOR *CONST CmObject<br />+ )<br />+{<br />+ EFI_STATUS Status;<br />+ EDKII_SOC_PLATFORM_REPOSITORY_INFO *PlatformRepo;<br />+<br />+ if ((This == NULL) || (CmObject == NULL)) {<br />+ ASSERT (This != NULL);<br />+ ASSERT (CmObject != NULL);<br />+ return EFI_INVALID_PARAMETER;<br />+ }<br />+<br />+ Status = EFI_NOT_FOUND;<br />+ PlatformRepo = This->PlatRepoInfo->SocPlatRepoInfo;<br />+<br />+ switch (GET_CM_OBJECT_ID (CmObjectId)) {<br />+ case EStdObjAcpiTableList:<br />+ Status = HandleCmObject (<br />+ CmObjectId,<br />+ PlatformRepo->CmAcpiTableList,<br />+ sizeof (PlatformRepo->CmAcpiTableList),<br />+ ARRAY_SIZE (PlatformRepo->CmAcpiTableList),<br />+ CmObject<br />+ );<br />+ break;<br />+<br />+ default:<br />+ {<br />+ break;<br />+ }<br />+ }<br />+<br />+ return Status;<br />+}<br />diff --git a/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtSoc.asl b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtSoc.asl<br />new file mode 100644<br />index 000000000000..806e170515b7<br />--- /dev/null<br />+++ b/Platform/ARM/Morello/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtSoc.asl<br />@@ -0,0 +1,41 @@<br />+/** @file<br />+ Differentiated System Description Table Fields (DSDT)<br />+<br />+ Copyright (c) 2021, ARM Ltd. All rights reserved.<BR><br />+<br />+ SPDX-License-Identifier: BSD-2-Clause-Patent<br />+<br />+ @par Reference(s):<br />+ - ACPI for Arm Components 1.0, Platform Design Document<br />+<br />+**/<br />+<br />+#include "ConfigurationManager.h"<br />+<br />+DefinitionBlock("Dsdt.aml", "DSDT", 1, "ARMLTD", "MORELLO", CFG_MGR_OEM_REVISION) {<br />+ Scope(_SB) {<br />+ Device(CP00) { // Cluster 0, Cpu 0<br />+ Name(_HID, "ACPI0007")<br />+ Name(_UID, 0)<br />+ Name(_STA, 0xF)<br />+ }<br />+<br />+ Device(CP01) { // Cluster 0, Cpu 1<br />+ Name(_HID, "ACPI0007")<br />+ Name(_UID, 1)<br />+ Name(_STA, 0xF)<br />+ }<br />+<br />+ Device(CP02) { // Cluster 1, Cpu 0<br />+ Name(_HID, "ACPI0007")<br />+ Name(_UID, 2)<br />+ Name(_STA, 0xF)<br />+ }<br />+<br />+ Device(CP03) { // Cluster 1, Cpu 1<br />+ Name(_HID, "ACPI0007")<br />+ Name(_UID, 3)<br />+ Name(_STA, 0xF)<br />+ }<br />+ } // Scope(_SB)<br />+}<br />-- <br />2.17.1</blockquote>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/84487">View/Reply Online (#84487)</a> |    |  <a target="_blank" href="https://groups.io/mt/87497018/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>