public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Sami Mujawar" <sami.mujawar@arm.com>
To: Jeshua Smith <jeshuas@nvidia.com>,
	Sunil V L <sunilvl@ventanamicro.com>,
	Pierre Gondois <Pierre.Gondois@arm.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Andrei Warkentin <andrei.warkentin@intel.com>,
	Laszlo Ersek <lersek@redhat.com>,
	AbdulLateef Attar <AbdulLateef.Attar@amd.com>,
	"Jeff Brasen (jbrasen@nvidia.com)" <jbrasen@nvidia.com>,
	Yeo Reum Yun <YeoReum.Yun@arm.com>,
	"Meenakshi Aggarwal (meenakshi.aggarwal@nxp.com)"
	<meenakshi.aggarwal@nxp.com>,
	Girish Mahadevan <gmahadevan@nvidia.com>, nd <nd@arm.com>
Subject: Re: [edk2-devel] [RFC PATCH v1 00/20] DynamicTablesPkg: Prepare to add RISC-V support
Date: Mon, 22 Jan 2024 17:15:44 +0000	[thread overview]
Message-ID: <6F2DEA68-0743-4676-BBF3-A8D8FA1AE32B@arm.com> (raw)
In-Reply-To: <DM6PR12MB3371B78A845B421099107572DB692@DM6PR12MB3371.namprd12.prod.outlook.com>

Hi All,

DynamicTablesPkg currently supports Arm architecture, and we welcome the adoption by other architectures.

Following is my proposal for moving forward.

Goals:
- reuse common code
- streamline the adoption by other architectures
- minimise the impact on migration of the existing platforms
- maintain flexibility across architectural components
- use this opportunity to integrate Dynamic SMBIOS support
  (Ref: https://edk2.groups.io/g/devel/message/107254)

The following steps would help in achieving the goals:
1.  Create an edk2 staging branch. For the edk2-platforms updates, I will create a branch on my Github fork (note this is required as there is no staging repo for edk2-platforms).
2. The design aspects and changes shall be discussed on the mailing list with patches to support the details.
3. A new section in DynamicTablesPkg\Readme.md shall be added to reflect the design updates, e.g. changes to CM Objects, Namespace definitions, etc.
4.  The design changes should typically be supported by patches for the DynamicTables core framework and demonstrate the impact on the existing platform code by typically providing patches for at least one existing platform (possibly edk2-platforms/Platform/ARM/[Juno | FVP]).
5. The design changes should be small and typically be reflected in separate patch series.
6. The first phase would be to partition the codebase into common code vs architectural specific code. This would involve moving files and reflecting the associated changes such that the build does not break.
7. Define a new namespace e.g. “ArchCommon” for the common architectural components.
8. Identify the CM_ARM_OBJECTs that can be moved to the “ArchCommon” namespace. As part of this identify if any object needs to be dropped, e.g. EArmObjReserved29
9. Identify overlap of SMBIOS objects with existing CM Objects.
10. Submit patches to move CM objects from Arm Namespace to ArchCommon Namespace. Ideally one object (and any dependencies) should be moved at a time.
11. Submit patches to migrate upstream platforms that use DynamicTablesPkg
12. Define a new namespace for RISCV specific objects
13. Submit patches for enabling RISCV
14. In the next phase support for Dynamic SMBIOS can be enabled.

Notes: 
a. Periodically rebase with edk2 & edk2-platforms master branch to sync with latest changes.
b. We can decide to merge the updates after point 11 above to edk2 & edk2-platforms master branch.
c. Similarly, the RISCV support can be merged after point 13.

I will send out a request for creating the staging branch shortly.

Regards,

Sami Mujawar

On 10/01/2024, 21:56, "Jeshua Smith" <jeshuas@nvidia.com <mailto:jeshuas@nvidia.com>> wrote:


> > It looks like instead of moving the common code to
> EObjNameSpaceStandard namespace or a new (Arch? Common?) namespace,
> you're renaming the entire EObjNameSpaceArm namespace to
> EObjNameSpaceArch. It seems to me that if ARM code vs. common code is
> being separated out, then the EObjNameSpaceArm namespace should
> continue to be used for the ARM-specific code and a common namespace
> should be used for the common code.
> 
> I agree. I started with separating common things into new common space and
> create one for risc-v. However, I dropped that approach for two reasons.
> 
> 1) The commit "b2bbe3df5470 DynamicTablesPkg: Remove PPTT ID structure
> from ACPI 6.4 generator" when removed one of the enums from
> ArmObjectID, didn't change the other values for other enums but reserved the
> removed one. So, I thought there may be some assumptions which will break
> if the enum value changes.


I'm not familiar with why that was done. Hopefully someone else can comment. I do know that edk2/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c has arrays (StdNamespaceObjectParser and ArmNamespaceObjectParser) that need to be kept in sync with all of the namespace enums, but other than that I'm not aware of any places that need to be changes when the enums are changed.


> 2) DynamicPlatformRepositoryInfo structure has ArmCmObjList and
> ArmCmObjArray. With separate spaces for Arm, RiscV and Common, list
> management needs some redesign and I was not sure it is worth it.
> 
> Hence, I thought a single list of all possible Obj Ids for all architectures and
> common things would be a good trade off. But I can go back to that approach
> in v2 if above issues are fine.


Hopefully ARM can give input on the best direction before you make more changes. The DynamicPlatRepo currently only supports the ARM namespace, but comments such as "only Arm objects are supported for now." (line 144) seem to imply that support for more namespaces was considered.





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#114142): https://edk2.groups.io/g/devel/message/114142
Mute This Topic: https://groups.io/mt/103622702/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2024-01-22 17:16 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-09 16:29 [edk2-devel] [RFC PATCH v1 00/20] DynamicTablesPkg: Prepare to add RISC-V support Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 01/20] DynamicTablesPkg: FdtHwInfoParserLib: Move ARM parsers to Arm directory Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 02/20] DynamicTablesPkg: Move common ACPI libraries from folder Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 03/20] DynamicTablesPkg: Update ACPI common libraries BASE_NAME Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 04/20] DynamicTablesPkg: Rename ArmNameSpaceObjects to ArchNameSpaceObjects Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 05/20] DynamicTablesPkg: DynamicPlatRepoLib: Rename ArmObjList as ArchObjList Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 06/20] DynamicTablesPkg: Rename EObjNameSpaceArm to EObjNameSpaceArch Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 07/20] DynamicTablesPkg: FdtHwInfoParserLib: Separate ARM specific code Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 08/20] DynamicTablesPkg: FdtHwInfoParserLib: Pci: Make it common for architectures Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 09/20] DynamicTablesPkg: FdtHwInfoParserLib: Make Serial parser arch neutral Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 10/20] DynamicTablesPkg: FdtHwInfoParserLib: Move ArmLib.h to ArmGicCParser.c Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 11/20] DynamicTablesPkg: TableHelperLib: Populate OemTableId using ConfigManager Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 12/20] DynamicTablesPkg: Add CreatorId in CM_STD_OBJ_CONFIGURATION_MANAGER_INFO Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 13/20] DynamicTablesPkg: FdtHwInfoParserLib: Move ARM utilities to separate file Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 14/20] DynamicTablesPkg/FdtHwInfoParserLib: Add function for INTC address cells Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 15/20] DynamicTablesPkg: AcpiSsdtCpuTopologyLib: Move GICC from common code Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 16/20] DynamicTablesPkg: AcpiFadtLib: Move ArmBootArch to ARM specific file Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 17/20] DynamicTablesPkg: DynamicTableManagerDxe: Refactor to allow other archs Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 18/20] DynamicTablesPkg: X86: Add interfaces to succeed CI tests Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 19/20] DynamicTablesPkg/AmlLib: Fix typo Sunil V L
2024-01-09 16:29 ` [edk2-devel] [RFC PATCH v1 20/20] DynamicTablesPkg.ci.yaml: Update exception and ignore list Sunil V L
2024-01-09 18:37 ` [edk2-devel] [RFC PATCH v1 00/20] DynamicTablesPkg: Prepare to add RISC-V support Jeshua Smith via groups.io
2024-01-10  4:20   ` Sunil V L
2024-01-10 21:56     ` Jeshua Smith via groups.io
2024-01-22 17:15       ` Sami Mujawar [this message]
2024-01-23  7:01         ` Sunil V L

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6F2DEA68-0743-4676-BBF3-A8D8FA1AE32B@arm.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox