public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Sami Mujawar" <sami.mujawar@arm.com>
To: Rohit Mathew <Rohit.Mathew@arm.com>, devel@edk2.groups.io
Cc: James Morse <james.Morse@arm.com>,
	Thomas Abraham <thomas.abraham@arm.com>,
	Zhichao Gao <zhichao.gao@intel.com>, "nd@arm.com" <nd@arm.com>
Subject: Re: [edk2-devel] [PATCH v5 2/6] ShellPkg/AcpiView: Update field-validator prototype
Date: Tue, 5 Dec 2023 11:47:13 +0000	[thread overview]
Message-ID: <97994f97-55bd-41a2-a31a-c650dd2d7ebb@arm.com> (raw)
In-Reply-To: <20231002171550.901005-1-Rohit.Mathew@arm.com>

Hi Rohit,

Thank you for this patch.

I haev a minor suggestion to marked inline as [SAMI] which involves 
moving the Length as the second parameter in the validator function.

Unfortunately this would mean changes across the entire patch. But I 
think it provides better grouping of parameters.

With that addressed,

Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>

Regards,

Sami Mujawar

On 02/10/2023 06:15 pm, Rohit Mathew wrote:
> As of now, the field-validator implemented by FNPTR_FIELD_VALIDATOR
> function pointer takes two parameters, the pointer to the field and a
> context pointer. For cases where the validator has to have access to the
> length of the field, there is no clean way to currently do it. In order
> to resolve this, this commit updates the field-validator's prototype to
> take the length of the field as a third parameter.
>
> This enhancement allows field validators to perform more comprehensive
> validation, especially when the length of the field is critical to the
> validation logic. This change should improve the overall robustness and
> flexibility of AcpiView.
>
> Signed-off-by: Rohit Mathew<Rohit.Mathew@arm.com>
> Cc: James Morse<james.Morse@arm.com>
> Cc: Sami Mujawar<sami.mujawar@arm.com>
> Cc: Thomas Abraham<thomas.abraham@arm.com>
> Cc: Zhichao Gao<zhichao.gao@intel.com>
> ---
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c              |  6 +--
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h              |  5 +-
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Aest/AestParser.c | 32 +++++++----
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c |  8 +--
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstParser.c | 20 ++++---
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c | 20 ++++---
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c | 14 +++--
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Hmat/HmatParser.c |  8 +--
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c | 32 +++++++----
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c | 14 +++--
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pcct/PcctParser.c | 56 +++++++++++++-------
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c | 38 ++++++++-----
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c | 14 +++--
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c | 14 +++--
>   ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c | 14 +++--
>   15 files changed, 190 insertions(+), 105 deletions(-)
>
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c
> index eac9286176..6823ba60cf 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     ACPI parser
>   
> -  Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, Arm Limited. All rights reserved.
>     Copyright (c) 2022, AMD Incorporated. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   **/
> @@ -616,7 +616,7 @@ ParseAcpi (
>         if (GetConsistencyChecking () &&
>             (Parser[Index].FieldValidator != NULL))
>         {
> -        Parser[Index].FieldValidator (Ptr, Parser[Index].Context);
> +        Parser[Index].FieldValidator (Ptr, Parser[Index].Context, Parser[Index].Length);
>         }
>   
>         Print (L"\n");
> @@ -927,7 +927,7 @@ ParseAcpiBitFields (
>         if (GetConsistencyChecking () &&
>             (Parser[Index].FieldValidator != NULL))
>         {
> -        Parser[Index].FieldValidator ((UINT8 *)&Data, Parser[Index].Context);
> +        Parser[Index].FieldValidator ((UINT8 *)&Data, Parser[Index].Context, Parser[Index].Length);
>         }
>   
>         Print (L"\n");
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h
> index 4b4397961b..6d8b44d94a 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h
> @@ -2,7 +2,7 @@
>     Header file for ACPI parser
>   
>     Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
> -  Copyright (c) 2016 - 2020, Arm Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, Arm Limited. All rights reserved.
>     Copyright (c) 2022, AMD Incorporated. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   **/
> @@ -237,8 +237,9 @@ typedef VOID (EFIAPI *FNPTR_PRINT_FORMATTER)(CONST CHAR16 *Format, UINT8 *Ptr);
>     @param [in] Context Pointer to context specific information as specified by
>                         the 'Context' member of the ACPI_PARSER.
>                         e.g. this could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
> -typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)(UINT8 *Ptr, VOID *Context);
> +typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)(UINT8 *Ptr, VOID *Context, UINT32 Length);
[SAMI] I would prefer the Length field to be the second parameter.
>   
>   /**
>     The ACPI_PARSER structure describes the fields of an ACPI table and
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Aest/AestParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Aest/AestParser.c
> index 48f71484fb..a37927b107 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Aest/AestParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Aest/AestParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     AEST table parser
>   
> -  Copyright (c) 2020, Arm Limited.
> +  Copyright (c) 2023, Arm Limited.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -35,13 +35,15 @@ STATIC UINT8                         *ProcessorResourceType;
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateProcessorFlags (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     // If the global or shared node flag is set then the ACPI Processor ID
> @@ -61,13 +63,15 @@ ValidateProcessorFlags (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateGicInterfaceType (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT32  GicInterfaceType;
> @@ -85,13 +89,15 @@ ValidateGicInterfaceType (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateInterfaceType (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*Ptr > 1) {
> @@ -106,13 +112,15 @@ ValidateInterfaceType (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateInterruptType (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*Ptr > 1) {
> @@ -127,13 +135,15 @@ ValidateInterruptType (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateInterruptFlags (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if ((*Ptr & 0xfe) != 0) {
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c
> index d25d4d84f8..4400b55553 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     DBG2 table parser
>   
> -  Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -32,13 +32,15 @@ STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
>     @param [in] Ptr     Pointer to the start of the buffer.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateNameSpaceStrLen (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT16  NameSpaceStrLen;
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstParser.c
> index f3ae09309c..f9f08732ca 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstParser.c
> @@ -2,7 +2,7 @@
>     ERST table parser
>   
>     Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
> -  Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -72,13 +72,15 @@ STATIC CONST CHAR16  *ErstInstructionTable[] = {
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateErstAction (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*Ptr > EFI_ACPI_6_4_ERST_GET_EXECUTE_OPERATION_TIMINGS) {
> @@ -93,13 +95,15 @@ ValidateErstAction (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateErstInstruction (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*Ptr > EFI_ACPI_6_4_ERST_MOVE_DATA) {
> @@ -114,13 +118,15 @@ ValidateErstInstruction (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateErstFlags (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if ((*Ptr & 0xfe) != 0) {
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c
> index abc58d6552..f03b99ebde 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     FADT table parser
>   
> -  Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     Copyright (c) 2022, AMD Incorporated. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -59,13 +59,15 @@ GetAcpiXsdtHeaderInfo (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateFirmwareCtrl (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> @@ -85,13 +87,15 @@ ValidateFirmwareCtrl (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateXFirmwareCtrl (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> @@ -111,13 +115,15 @@ ValidateXFirmwareCtrl (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateFlags (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c
> index e62927098a..29bd781465 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     GTDT table parser
>   
> -  Copyright (c) 2016 - 2021, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -32,13 +32,15 @@ STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateGtBlockTimerCount (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT32  BlockTimerCount;
> @@ -61,13 +63,15 @@ ValidateGtBlockTimerCount (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateGtFrameNumber (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT8  FrameNumber;
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Hmat/HmatParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Hmat/HmatParser.c
> index 2a1357c853..de8e9cf01f 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Hmat/HmatParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Hmat/HmatParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     HMAT table parser
>   
> -  Copyright (c) 2020, Arm Limited.
> +  Copyright (c) 2023, Arm Limited.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -56,13 +56,15 @@ STATIC CONST CHAR16  *SllbiNames[] = {
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateCacheAttributes (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES *
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c
> index 599cf0ee8f..122e087eed 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     IORT table parser
>   
> -  Copyright (c) 2016 - 2022, Arm Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, Arm Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -48,13 +48,15 @@ STATIC CONST UINT32  *RmrMemDescOffset;
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateItsIdMappingCount (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT32 *)Ptr != 0) {
> @@ -70,13 +72,15 @@ ValidateItsIdMappingCount (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePmcgIdMappingCount (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT32 *)Ptr > 1) {
> @@ -91,13 +95,15 @@ ValidatePmcgIdMappingCount (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateItsIdArrayReference (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT32 *)Ptr != 0) {
> @@ -113,13 +119,15 @@ ValidateItsIdArrayReference (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePhysicalRange (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT64  Value;
> @@ -137,13 +145,15 @@ ValidatePhysicalRange (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateRmrMemDescCount (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT32 *)Ptr == 0) {
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c
> index 41edcb9ffd..3633329bea 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     MADT table parser
>   
> -  Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     Copyright (c) 2022, AMD Incorporated. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -30,13 +30,15 @@ STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateGICDSystemVectorBase (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT32 *)Ptr != 0) {
> @@ -53,13 +55,15 @@ ValidateGICDSystemVectorBase (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateSpeOverflowInterrupt (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT16  SpeOverflowInterrupt;
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pcct/PcctParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pcct/PcctParser.c
> index 8ad39090af..5d350ae16d 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pcct/PcctParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pcct/PcctParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     PCCT table parser
>   
> -  Copyright (c) 2021, Arm Limited.
> +  Copyright (c) 2023, Arm Limited.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -30,13 +30,15 @@ STATIC UINT8   *ExtendedPccSubspaceInterruptFlags;
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateRangeLength4 (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT32 *)Ptr < MIN_EXT_PCC_SUBSPACE_MEM_RANGE_LEN) {
> @@ -56,13 +58,15 @@ ValidateRangeLength4 (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateRangeLength8 (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT64 *)Ptr <= MIN_MEMORY_RANGE_LENGTH) {
> @@ -82,13 +86,15 @@ ValidateRangeLength8 (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePccMemoryIoGas (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     switch (*(UINT8 *)Ptr) {
> @@ -109,13 +115,15 @@ ValidatePccMemoryIoGas (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePccGas (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     switch (*(UINT8 *)Ptr) {
> @@ -137,13 +145,15 @@ ValidatePccGas (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePccDoorbellGas (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     // For responder subspaces this field is optional, if not present the field
> @@ -158,7 +168,7 @@ ValidatePccDoorbellGas (
>       }
>     }
>   
> -  ValidatePccGas (Ptr, Context);
> +  ValidatePccGas (Ptr, Context, Length);
>   }
>   
>   /**
> @@ -168,13 +178,15 @@ ValidatePccDoorbellGas (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePccIntAckGas (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     // If the subspace does not support interrupts or the interrupt is
> @@ -196,7 +208,7 @@ ValidatePccIntAckGas (
>       }
>     }
>   
> -  ValidatePccGas (Ptr, Context);
> +  ValidatePccGas (Ptr, Context, Length);
>   }
>   
>   /**
> @@ -205,13 +217,15 @@ ValidatePccIntAckGas (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePccErrStatusGas (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     // This field is ignored by the OSPM on responder channels.
> @@ -219,7 +233,7 @@ ValidatePccErrStatusGas (
>       return;
>     }
>   
> -  ValidatePccGas (Ptr, Context);
> +  ValidatePccGas (Ptr, Context, Length);
>   }
>   
>   /**
> @@ -228,13 +242,15 @@ ValidatePccErrStatusGas (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidatePlatInterrupt (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     // If a responder subspace is present in the PCCT, then the global Platform
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
> index 5377764458..a079d2498f 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     PPTT table parser
>   
> -  Copyright (c) 2019 - 2021, ARM Limited. All rights reserved.
> +  Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -54,13 +54,15 @@ LogCacheFlagError (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateCacheFlags (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> @@ -117,13 +119,15 @@ ValidateCacheFlags (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateCacheNumberOfSets (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT32  NumberOfSets;
> @@ -168,13 +172,15 @@ ValidateCacheNumberOfSets (
>     @param [in] Ptr       Pointer to the start of the field data.
>     @param [in] Context   Pointer to context specific information e.g. this
>                           could be a pointer to the ACPI table header.
> +  @param [in] Length    Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateCacheAssociativity (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT8  Associativity;
> @@ -194,13 +200,15 @@ ValidateCacheAssociativity (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateCacheLineSize (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> @@ -239,13 +247,15 @@ ValidateCacheLineSize (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateCacheId (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT32  CacheId;
> @@ -278,13 +288,15 @@ ValidateCacheId (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateCacheAttributes (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     // Reference: Advanced Configuration and Power Interface (ACPI) Specification
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c
> index bddf276356..8d58392b08 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     RSDP table parser
>   
> -  Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -21,13 +21,15 @@ STATIC CONST UINT64  *XsdtAddress;
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateRsdtAddress (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> @@ -57,13 +59,15 @@ ValidateRsdtAddress (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateXsdtAddress (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c
> index e5267b1d04..60522dd408 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     SPCR table parser
>   
> -  Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -24,13 +24,15 @@ STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateInterruptType (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> @@ -57,13 +59,15 @@ ValidateInterruptType (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateIrq (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>    #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
> diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c
> index 2980704479..76534ccee3 100644
> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c
> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c
> @@ -1,7 +1,7 @@
>   /** @file
>     SRAT table parser
>   
> -  Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
> +  Copyright (c) 2016 - 2023, ARM Limited. All rights reserved.
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
>     @par Reference(s):
> @@ -27,13 +27,15 @@ STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateSratReserved (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     if (*(UINT32 *)Ptr != 1) {
> @@ -49,13 +51,15 @@ ValidateSratReserved (
>     @param [in] Ptr     Pointer to the start of the field data.
>     @param [in] Context Pointer to context specific information e.g. this
>                         could be a pointer to the ACPI table header.
> +  @param [in] Length  Length of the field.
>   **/
>   STATIC
>   VOID
>   EFIAPI
>   ValidateSratDeviceHandleType (
> -  IN UINT8  *Ptr,
> -  IN VOID   *Context
> +  IN UINT8   *Ptr,
> +  IN VOID    *Context,
> +  IN UINT32  Length
>     )
>   {
>     UINT8  DeviceHandleType;


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



      reply	other threads:[~2023-12-05 11:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-02 17:15 [edk2-devel] [PATCH v5 2/6] ShellPkg/AcpiView: Update field-validator prototype Rohit Mathew
2023-12-05 11:47 ` Sami Mujawar [this message]

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=97994f97-55bd-41a2-a31a-c650dd2d7ebb@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