[edk2-devel] [PATCH v1 1/1] DynamicTablesPkg: Add support to specify FADT minor revision

PierreGondois pierre.gondois at arm.com
Wed Jul 6 15:03:23 UTC 2022


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 at 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 at 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)) {


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#91116): https://edk2.groups.io/g/devel/message/91116
Mute This Topic: https://groups.io/mt/92204479/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list