From: "Chiu, Chasel" <chasel.chiu@intel.com>
To: "Shindo, Miki" <miki.shindo@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Chaganty, Rangasai V" <rangasai.v.chaganty@intel.com>,
"Desimone, Nathaniel L" <nathaniel.l.desimone@intel.com>,
"Agyeman, Prince" <prince.agyeman@intel.com>,
"Ni, Ray" <ray.ni@intel.com>
Subject: Re: [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib: Cleans up APIs
Date: Thu, 30 Apr 2020 02:56:50 +0000 [thread overview]
Message-ID: <SN6PR11MB281401793F32F20C1EED0B68E6AA0@SN6PR11MB2814.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20200429023203.37544-5-miki.shindo@intel.com>
Reviewed-by: Chasel Chiu <chasel.chiu@intel.com>
> -----Original Message-----
> From: Shindo, Miki <miki.shindo@intel.com>
> Sent: Wednesday, April 29, 2020 10:32 AM
> To: devel@edk2.groups.io
> Cc: Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Chiu, Chasel
> <chasel.chiu@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>; Agyeman, Prince
> <prince.agyeman@intel.com>; Ni, Ray <ray.ni@intel.com>
> Subject: [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib:
> Cleans up APIs
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2536
>
> Callers of DxeAslUpdateLib don't have to call InitializeAslUpdateLib() but the
> library itself runs it internally. This commit makes it an internal call.
> LocateAcpiTableByOemTableId() is unreferenced externally so this commit
> makes it an internal call.
> PSS_PACKAGE_LAYOUT and AML_RESRC_TEMP_END_TAG are both
> unreferenced so they are removed.
> AslUpdateLib.h is cleaned up accordingly.
>
> Signed-off-by: Miki Shindo <miki.shindo@intel.com>
> Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
> Cc: Chasel Chiu <chasel.chiu@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Cc: Prince Agyeman <prince.agyeman@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> ---
>
> Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdate
> Lib.c | 209
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++-----------------------------------
> -------------------------------------------------------------------
> Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> | 131
> ++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
> -----------------------------------------------------------
> 2 files changed, 159 insertions(+), 181 deletions(-)
>
> diff --git
> a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpda
> teLib.c
> b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpda
> teLib.c
> index e6ab43db6d..1ba51a7c55 100644
> ---
> a/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpda
> teLib.c
> +++ b/Platform/Intel/MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslU
> +++ pdateLib.c
> @@ -6,7 +6,7 @@
>
> This library uses the ACPI Support protocol.
>
> -Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
> @@ -50,6 +50,62 @@ InitializeAslUpdateLib (
> return Status;
> }
>
> +/**
> + This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
> +
> + @param[in] TableId - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> + @param[in] TableIdSize - Length of the TableId to match. Table
> ID are 8 bytes long, this function
> + will consider it a match if the first
> TableIdSize bytes match
> + @param[in, out] Table - Updated with a pointer to the table
> + @param[in, out] Handle - AcpiSupport protocol table handle for
> the table found
> +
> + @retval EFI_SUCCESS - The function completed successfully.
> + @retval EFI_NOT_FOUND - Failed to locate AcpiTable.
> + @retval EFI_NOT_READY - Not ready to locate AcpiTable.
> +**/
> +EFI_STATUS
> +LocateAcpiTableByOemTableId (
> + IN UINT8 *TableId,
> + IN UINT8 TableIdSize,
> + IN OUT EFI_ACPI_DESCRIPTION_HEADER **Table,
> + IN OUT UINTN *Handle
> + )
> +{
> + EFI_STATUS Status;
> + INTN Index;
> + EFI_ACPI_TABLE_VERSION Version;
> + EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
> +
> + if (mAcpiSdt == NULL) {
> + InitializeAslUpdateLib ();
> + if (mAcpiSdt == NULL) {
> + return EFI_NOT_READY;
> + }
> + }
> + ///
> + /// Locate table with matching ID
> + ///
> + Version = 0;
> + Index = 0;
> + do {
> + Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER
> **)&OrgTable, &Version, Handle);
> + if (Status == EFI_NOT_FOUND) {
> + break;
> + }
> + ASSERT_EFI_ERROR (Status);
> + Index++;
> + } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
> +
> + if (Status != EFI_NOT_FOUND) {
> + *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
> + ASSERT (*Table);
> + }
> +
> + ///
> + /// If we found the table, there will be no error.
> + ///
> + return Status;
> +}
>
> /**
> This procedure will update immediate value assigned to a Name @@
> -59,8 +115,11 @@ InitializeAslUpdateLib (
> @param[in] Length - length of data to be overwritten
>
> @retval EFI_SUCCESS - The function completed successfully.
> + @retval EFI_NOT_FOUND - Failed to locate AcpiTable.
> + @retval EFI_NOT_READY - Not ready to locate AcpiTable.
> **/
> EFI_STATUS
> +EFIAPI
> UpdateNameAslCode (
> IN UINT32 AslSignature,
> IN VOID *Buffer,
> @@ -149,6 +208,50 @@ UpdateNameAslCode (
> return EFI_NOT_FOUND;
> }
>
> +/**
> + This procedure will update the name of ASL Method
> +
> + @param[in] TableId - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> + @param[in] TableIdSize - Length of the TableId to match. Table
> ID are 8 bytes long, this function
> + will consider it a match if the first
> TableIdSize bytes match
> + @param[in] AslSignature - The signature of Operation Region that
> we want to update.
> + @param[in] Buffer - source of data to be written over
> original aml
> + @param[in] Length - length of data to be overwritten
> +
> + @retval EFI_UNSUPPORTED - The function is not supported in this
> library.
> +**/
> +EFI_STATUS
> +EFIAPI
> +UpdateSsdtNameAslCode (
> + IN UINT8 *TableId,
> + IN UINT8 TableIdSize,
> + IN UINT32 AslSignature,
> + IN VOID *Buffer,
> + IN UINTN Length
> + )
> +{
> + return EFI_UNSUPPORTED;
> +}
> +
> +/**
> + This procedure will update the name of ASL Method
> +
> + @param[in] AslSignature - The signature of Operation Region that
> we want to update.
> + @param[in] Buffer - source of data to be written over
> original aml
> + @param[in] Length - length of data to be overwritten
> +
> + @retval EFI_UNSUPPORTED - The function is not supported in this
> library.
> +**/
> +EFI_STATUS
> +EFIAPI
> +UpdateMethodAslCode (
> + IN UINT32 AslSignature,
> + IN VOID *Buffer,
> + IN UINTN Length
> + )
> +{
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> This function uses the ACPI SDT protocol to locate an ACPI table.
> @@ -161,8 +264,11 @@ UpdateNameAslCode (
> @param[in, out] Version - The version of the table desired
>
> @retval EFI_SUCCESS - The function completed
> successfully.
> + @retval EFI_NOT_FOUND - Failed to locate AcpiTable.
> + @retval EFI_NOT_READY - Not ready to locate AcpiTable.
> **/
> EFI_STATUS
> +EFIAPI
> LocateAcpiTableBySignature (
> IN UINT32 Signature,
> IN OUT EFI_ACPI_DESCRIPTION_HEADER **Table,
> @@ -205,104 +311,3 @@ LocateAcpiTableBySignature (
> ///
> return Status;
> }
> -
> -/**
> - This function uses the ACPI SDT protocol to locate an ACPI SSDT table.
> -
> - @param[in] TableId - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> - @param[in] TableIdSize - Length of the TableId to match. Table
> ID are 8 bytes long, this function
> - will consider it a match if the first
> TableIdSize bytes match
> - @param[in, out] Table - Updated with a pointer to the table
> - @param[in, out] Handle - AcpiSupport protocol table handle for
> the table found
> - @param[in, out] Version - See AcpiSupport protocol, GetAcpiTable
> function for use
> -
> - @retval EFI_SUCCESS - The function completed successfully.
> -**/
> -EFI_STATUS
> -LocateAcpiTableByOemTableId (
> - IN UINT8 *TableId,
> - IN UINT8 TableIdSize,
> - IN OUT EFI_ACPI_DESCRIPTION_HEADER **Table,
> - IN OUT UINTN *Handle
> - )
> -{
> - EFI_STATUS Status;
> - INTN Index;
> - EFI_ACPI_TABLE_VERSION Version;
> - EFI_ACPI_DESCRIPTION_HEADER *OrgTable;
> -
> - if (mAcpiSdt == NULL) {
> - InitializeAslUpdateLib ();
> - if (mAcpiSdt == NULL) {
> - return EFI_NOT_READY;
> - }
> - }
> - ///
> - /// Locate table with matching ID
> - ///
> - Version = 0;
> - Index = 0;
> - do {
> - Status = mAcpiSdt->GetAcpiTable (Index, (EFI_ACPI_SDT_HEADER
> **)&OrgTable, &Version, Handle);
> - if (Status == EFI_NOT_FOUND) {
> - break;
> - }
> - ASSERT_EFI_ERROR (Status);
> - Index++;
> - } while (CompareMem (&(OrgTable->OemTableId), TableId, TableIdSize));
> -
> - if (Status != EFI_NOT_FOUND) {
> - *Table = AllocateCopyPool (OrgTable->Length, OrgTable);
> - ASSERT (*Table);
> - }
> -
> - ///
> - /// If we found the table, there will be no error.
> - ///
> - return Status;
> -}
> -
> -/**
> - This function calculates and updates an UINT8 checksum.
> -
> - @param[in] Buffer Pointer to buffer to checksum
> - @param[in] Size Number of bytes to checksum
> - @param[in] ChecksumOffset Offset to place the checksum result in
> -
> - @retval EFI_SUCCESS The function completed successfully.
> -**/
> -EFI_STATUS
> -AcpiChecksum (
> - IN VOID *Buffer,
> - IN UINTN Size,
> - IN UINTN ChecksumOffset
> - )
> -{
> - UINT8 Sum;
> - UINT8 *Ptr;
> -
> - Sum = 0;
> - ///
> - /// Initialize pointer
> - ///
> - Ptr = Buffer;
> -
> - ///
> - /// set checksum to 0 first
> - ///
> - Ptr[ChecksumOffset] = 0;
> -
> - ///
> - /// add all content of buffer
> - ///
> - while (Size--) {
> - Sum = (UINT8) (Sum + (*Ptr++));
> - }
> - ///
> - /// set checksum
> - ///
> - Ptr = Buffer;
> - Ptr[ChecksumOffset] = (UINT8) (0xff - Sum + 1);
> -
> - return EFI_SUCCESS;
> -}
> diff --git a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> index d58b6d6458..0be8df6469 100644
> --- a/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> +++ b/Platform/Intel/MinPlatformPkg/Include/Library/AslUpdateLib.h
> @@ -5,7 +5,7 @@
> Make sure you meet the requirements for the library (protocol
> dependencies, use
> restrictions, etc).
>
> -Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
> @@ -16,61 +16,70 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // //
> Include files //
> +#include <Uefi/UefiBaseType.h>
> #include <IndustryStandard/Acpi.h>
> #include <Protocol/AcpiTable.h>
> #include <Protocol/AcpiSystemDescriptionTable.h>
>
> -//
> -// AML parsing definitions
> -//
> -#define AML_RESRC_TEMP_END_TAG 0x0079
> -
> -//
> -// ASL PSS package structure layout
> -//
> -#pragma pack (1)
> -typedef struct {
> - UINT8 NameOp; // 12h ;First opcode is a NameOp.
> - UINT8 PackageLead; // 20h ;First opcode is a NameOp.
> - UINT8 NumEntries; // 06h ;First opcode is a NameOp.
> - UINT8 DwordPrefix1; // 0Ch
> - UINT32 CoreFrequency; // 00h
> - UINT8 DwordPrefix2; // 0Ch
> - UINT32 Power; // 00h
> - UINT8 DwordPrefix3; // 0Ch
> - UINT32 TransLatency; // 00h
> - UINT8 DwordPrefix4; // 0Ch
> - UINT32 BmLatency; // 00h
> - UINT8 DwordPrefix5; // 0Ch
> - UINT32 Control; // 00h
> - UINT8 DwordPrefix6; // 0Ch
> - UINT32 Status; // 00h
> -} PSS_PACKAGE_LAYOUT;
> -#pragma pack()
> -
> /**
> - Initialize the ASL update library state.
> - This must be called prior to invoking other library functions.
> + This procedure will update immediate value assigned to a Name
>
> + @param[in] AslSignature The signature of Operation
> Region that we want to update.
> + @param[in] Buffer source of data to be written
> over original aml
> + @param[in] Length length of data to be
> overwritten
>
> @retval EFI_SUCCESS The function completed
> successfully.
> + @retval EFI_NOT_FOUND Failed to locate AcpiTable.
> + @retval EFI_NOT_READY Not ready to locate
> AcpiTable.
> + @retval EFI_UNSUPPORTED The function is not
> supported in this library
> **/
> EFI_STATUS
> -InitializeAslUpdateLib (
> - VOID
> +EFIAPI
> +UpdateNameAslCode(
> + IN UINT32 AslSignature,
> + IN VOID *Buffer,
> + IN UINTN Length
> );
>
> /**
> - This procedure will update immediate value assigned to a Name
> + This procedure will update the name of ASL Method
> +
> + @param[in] TableId - Pointer to an ASCII string containing
> the OEM Table ID from the ACPI table header
> + @param[in] TableIdSize - Length of the TableId to match. Table
> ID are 8 bytes long, this function
> + @param[in] AslSignature - The signature of Operation Region that
> we want to update.
> + @param[in] Buffer - source of data to be written over
> original aml
> + @param[in] Length - length of data to be overwritten
> +
> + @retval EFI_SUCCESS - The function completed successfully.
> + @retval EFI_NOT_FOUND - Failed to locate AcpiTable.
> + @retval EFI_NOT_READY - Not ready to locate AcpiTable.
> + @retval EFI_UNSUPPORTED - The function is not supported in this
> library
> +**/
> +EFI_STATUS
> +EFIAPI
> +UpdateSsdtNameAslCode (
> + IN UINT8 *TableId,
> + IN UINT8 TableIdSize,
> + IN UINT32 AslSignature,
> + IN VOID *Buffer,
> + IN UINTN Length
> + );
>
> - @param[in] AslSignature The signature of Operation
> Region that we want to update.
> - @param[in] Buffer source of data to be written
> over original aml
> - @param[in] Length length of data to be
> overwritten
> +/**
> + This procedure will update the name of ASL Method
>
> - @retval EFI_SUCCESS The function completed
> successfully.
> + @param[in] AslSignature - The signature of Operation Region that
> we want to update.
> + @param[in] Buffer - source of data to be written over
> original aml
> + @param[in] Length - length of data to be overwritten
> +
> + @retval EFI_SUCCESS - The function completed successfully.
> + @retval EFI_NOT_FOUND - Failed to locate AcpiTable.
> + @retval EFI_NOT_READY - Not ready to locate AcpiTable.
> + @retval EFI_UNSUPPORTED - The function is not supported in this
> library
> **/
> EFI_STATUS
> -UpdateNameAslCode(
> +EFIAPI
> +UpdateMethodAslCode (
> IN UINT32 AslSignature,
> IN VOID *Buffer,
> IN UINTN Length
> @@ -86,55 +95,19 @@ UpdateNameAslCode(
> @param[in] Signature Pointer to an ASCII string
> containing the Signature to match
> @param[in, out] Table Updated with a pointer to the
> table
> @param[in, out] Handle AcpiSupport protocol table
> handle for the table found
> - @param[in, out] Version On input, the version of the
> table desired,
> - on output, the versions the
> table belongs to
> @see AcpiSupport protocol
> for details
>
> @retval EFI_SUCCESS The function completed
> successfully.
> + @retval EFI_NOT_FOUND Failed to locate AcpiTable.
> + @retval EFI_NOT_READY Not ready to locate
> AcpiTable.
> + @retval EFI_UNSUPPORTED The function is not
> supported in this library
> **/
> EFI_STATUS
> +EFIAPI
> LocateAcpiTableBySignature (
> IN UINT32 Signature,
> IN OUT EFI_ACPI_DESCRIPTION_HEADER **Table,
> IN OUT UINTN *Handle
> );
>
> -/**
> - This function uses the ACPI support protocol to locate an ACPI SSDT table.
> - The table is located by searching for a matching OEM Table ID field.
> - Partial match searches are supported via the TableIdSize parameter.
> -
> - @param[in] TableId Pointer to an ASCII string
> containing the OEM Table ID from the ACPI table header
> - @param[in] TableIdSize Length of the TableId to match.
> Table ID are 8 bytes long, this function
> - will consider it a match if
> the first TableIdSize bytes match
> - @param[in, out] Table Updated with a pointer to the
> table
> - @param[in, out] Handle AcpiSupport protocol table
> handle for the table found
> - @param[in, out] Version See AcpiSupport protocol,
> GetAcpiTable function for use
> -
> - @retval EFI_SUCCESS The function completed
> successfully.
> -**/
> -EFI_STATUS
> -LocateAcpiTableByOemTableId (
> - IN UINT8 *TableId,
> - IN UINT8 TableIdSize,
> - IN OUT EFI_ACPI_DESCRIPTION_HEADER **Table,
> - IN OUT UINTN *Handle
> - );
> -
> -/**
> - This function calculates and updates an UINT8 checksum.
> -
> - @param[in] Buffer Pointer to buffer to checksum
> - @param[in] Size Number of bytes to checksum
> - @param[in] ChecksumOffset Offset to place the checksum
> result in
> -
> - @retval EFI_SUCCESS The function completed
> successfully.
> -**/
> -EFI_STATUS
> -AcpiChecksum (
> - IN VOID *Buffer,
> - IN UINTN Size,
> - IN UINTN ChecksumOffset
> - );
> -
> #endif
> --
> 2.16.2.windows.1
next prev parent reply other threads:[~2020-04-30 2:57 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-29 2:31 [edk2-platforms:PATCH v4 0/7] IntelSiliconPkg DxeAslUpdateLib support Miki Shindo
2020-04-29 2:31 ` [edk2-platforms:PATCH v4 1/7] WhiskeylakeOpenBoardPkg/TbtDxe: Removes redundant InitializeAslUpdateLib Miki Shindo
2020-04-30 1:40 ` Chaganty, Rangasai V
2020-04-30 2:54 ` Chiu, Chasel
2020-04-29 2:31 ` [edk2-platforms:PATCH v4 2/7] KabylakeOpenBoardPkg/TbtDxe: " Miki Shindo
2020-04-30 1:47 ` Chaganty, Rangasai V
2020-04-30 2:55 ` Chiu, Chasel
2020-04-29 2:31 ` [edk2-platforms:PATCH v4 3/7] CometlakeOpenBoardPkg/TbtDxe: " Miki Shindo
2020-04-30 1:53 ` Chaganty, Rangasai V
2020-04-30 2:55 ` Chiu, Chasel
2020-04-29 2:32 ` [edk2-platforms:PATCH v4 4/7] MinPlatformPkg/DxeAslUpdateLib: Cleans up APIs Miki Shindo
2020-04-30 2:56 ` Chiu, Chasel [this message]
2020-04-30 5:00 ` Chaganty, Rangasai V
2020-04-29 2:32 ` [edk2-platforms:PATCH v4 5/7] KabylakeSiliconPkg/DxeAslUpdateLib: " Miki Shindo
2020-04-30 2:56 ` Chiu, Chasel
2020-04-30 5:02 ` Chaganty, Rangasai V
2020-04-29 2:32 ` [edk2-platforms:PATCH v4 6/7] CoffeelakeSiliconPkg/DxeAslUpdateLib: " Miki Shindo
2020-04-30 2:57 ` Chiu, Chasel
2020-04-30 5:03 ` Chaganty, Rangasai V
2020-04-29 2:32 ` [edk2-platforms:PATCH v4 7/7] IntelSiliconPkg/DxeAslUpdateLib: Add DxeAslUpdateLib support Miki Shindo
2020-04-30 2:57 ` Chiu, Chasel
2020-04-30 5:13 ` Chaganty, Rangasai V
2020-04-30 8:14 ` [edk2-platforms:PATCH v4 0/7] IntelSiliconPkg " Ni, Ray
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=SN6PR11MB281401793F32F20C1EED0B68E6AA0@SN6PR11MB2814.namprd11.prod.outlook.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