From: "PierreGondois" <pierre.gondois@arm.com>
To: Sami Mujawar <sami.mujawar@arm.com>, devel@edk2.groups.io
Cc: Alexei.Fedorov@arm.com, jbrasen@nvidia.com,
Jagadeesh.Ujja@arm.com, Deepak.Pandey@arm.com,
Chandni.Cherukuri@arm.com, Matteo.Carlini@arm.com,
Akanksha.Jain2@arm.com, Ben.Adderson@arm.com, nd@arm.com
Subject: Re: [PATCH v1 1/1] DynamicTablesPkg: Add support to specify FADT minor revision
Date: Wed, 6 Jul 2022 17:03:23 +0200 [thread overview]
Message-ID: <6a6a750c-8daa-c383-6972-306bce254a23@arm.com> (raw)
In-Reply-To: <20220706114009.26492-1-sami.mujawar@arm.com>
Hello Sami,
The only configuration manager not using ACPI 6.4 tables is at:
Platform/NXP/ConfigurationManagerPkg/ConfigurationManagerDxe/ConfigurationManager.c
I think the minor version of its FADT table needs to be updated along with
this patch. Otherwise:
Reviewed-by: <pierre.gondois@arm.com>
Regards,
Pierre
On 7/6/22 13:40, Sami Mujawar wrote:
> The CM_STD_OBJ_ACPI_TABLE_INFO.AcpiTableRevision can be used to specify
> the major revision number of the ACPI table that the generator must use.
> Although most ACPI tables only have a major revision number, the FADT
> table additionally has a minor revision number.
>
> The FADT generator currently defaults to setting the latest supported
> ACPI revision for the FADT table i.e. ACPI 6.4. This means that the minor
> revision for the FADT table is always set to 4 and there is no provision
> for a user to specify the minor revision to be selected.
>
> Therefore, update CM_STD_OBJ_ACPI_TABLE_INFO to introduce a new field
> MinorRevision which can be used to specify the minor revision for an
> ACPI table. Also update the FADT generator to validate the supported
> FADT revisions ans use the specified minor revision for the FADT table
> if supported. If an unsupported minor revision is specified the FADT
> generator defaults to the latest supported minor revision.
>
> Since the CM_STD_OBJ_ACPI_TABLE_INFO.MinorRevision field is added to
> the end of the structure, it should not break existing platform code.
>
> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
> ---
> The changes can be seen at:
> https://github.com/samimujawar/edk2/tree/2221_support_fadt_minor_rev_v1
>
> DynamicTablesPkg/Include/StandardNameSpaceObjects.h | 10 ++++++-
> DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c | 29 ++++++++++++++++++--
> 2 files changed, 36 insertions(+), 3 deletions(-)
>
> diff --git a/DynamicTablesPkg/Include/StandardNameSpaceObjects.h b/DynamicTablesPkg/Include/StandardNameSpaceObjects.h
> index 8d0c7da15a73e4910f9099c68f6e5cc2f06c0ecb..8ec3238225abe4fc16a7337c29ecd655590b408f 100644
> --- a/DynamicTablesPkg/Include/StandardNameSpaceObjects.h
> +++ b/DynamicTablesPkg/Include/StandardNameSpaceObjects.h
> @@ -1,6 +1,6 @@
> /** @file
>
> - Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.
> + Copyright (c) 2017 - 2022, Arm Limited. All rights reserved.
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -105,6 +105,14 @@ typedef struct CmAStdObjAcpiTableInfo {
> /// Generators shall populate this information using the revision of the
> /// Configuration Manager (CM_STD_OBJ_CONFIGURATION_MANAGER_INFO.Revision).
> UINT32 OemRevision;
> +
> + /// The minor revision of an ACPI table if required by the table.
> + /// Note: If this field is not populated (has value of Zero), then the
> + /// Generators shall populate this information based on the latest minor
> + /// revision of the table that is supported by the generator.
> + /// e.g. This field can be used to specify the minor revision to be set
> + /// for the FADT table.
> + UINT8 MinorRevision;
> } CM_STD_OBJ_ACPI_TABLE_INFO;
>
> /** A structure used to describe the SMBIOS table generators to be invoked.
> diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
> index 96295f539fb0505378e862edeef898be40257cdd..1d10ea55e2395c55291faa3c247e5c59e345650c 100644
> --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
> +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiFadtLibArm/FadtGenerator.c
> @@ -1,7 +1,7 @@
> /** @file
> FADT Table Generator
>
> - Copyright (c) 2017 - 2021, ARM Limited. All rights reserved.
> + Copyright (c) 2017 - 2022, Arm Limited. All rights reserved.
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @par Reference(s):
> @@ -167,7 +167,7 @@ EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE AcpiFadt = {
> // UINT16 ArmBootArch
> EFI_ACPI_6_4_ARM_PSCI_COMPLIANT, // {Template}: ARM Boot Architecture Flags
> // UINT8 MinorRevision
> - EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION,
> + EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION, // {Template}
> // UINT64 XFirmwareCtrl
> 0,
> // UINT64 XDsdt
> @@ -546,6 +546,31 @@ BuildFadtTable (
> goto error_handler;
> }
>
> + // Update the MinorRevision for the FADT table if it has been specified
> + // otherwise default to the latest FADT minor revision supported.
> + // Note:
> + // Bits 0-3 - The low order bits correspond to the minor version of the
> + // specification version.
> + // Bits 4-7 - The high order bits correspond to the version of the ACPI
> + // specification errata.
> + if (AcpiTableInfo->MinorRevision != 0) {
> + if (((AcpiTableInfo->MinorRevision & 0xF) >=
> + EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION) &&
> + ((AcpiTableInfo->MinorRevision & 0xF) <=
> + EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION))
> + {
> + AcpiFadt.MinorVersion = AcpiTableInfo->MinorRevision;
> + } else {
> + DEBUG ((
> + DEBUG_WARN,
> + "WARNING: FADT: Unsupported FADT Minor Revision 0x%x specified, " \
> + "defaulting to FADT Minor Revision 0x%x\n",
> + AcpiTableInfo->MinorRevision,
> + EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION
> + ));
> + }
> + }
> +
> // Update PmProfile Info
> Status = FadtAddPmProfileInfo (CfgMgrProtocol);
> if (EFI_ERROR (Status)) {
next prev parent reply other threads:[~2022-07-06 15:03 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-06 11:40 [PATCH v1 1/1] DynamicTablesPkg: Add support to specify FADT minor revision Sami Mujawar
2022-07-06 15:03 ` PierreGondois [this message]
2022-07-06 15:27 ` Sami Mujawar
2022-07-11 11:23 ` [edk2-devel] " Jagadeesh Ujja
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=6a6a750c-8daa-c383-6972-306bce254a23@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