Reviewed-by: Chasel Chiu <[email protected]>
> -----Original Message----- > From: Shindo, Miki <[email protected]> > Sent: Wednesday, April 29, 2020 10:32 AM > To: [email protected] > Cc: Chaganty, Rangasai V <[email protected]>; Chiu, Chasel > <[email protected]>; Desimone, Nathaniel L > <[email protected]>; Agyeman, Prince > <[email protected]>; Ni, Ray <[email protected]> > 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 <[email protected]> > Cc: Sai Chaganty <[email protected]> > Cc: Chasel Chiu <[email protected]> > Cc: Nate DeSimone <[email protected]> > Cc: Prince Agyeman <[email protected]> > Cc: Ray Ni <[email protected]> > --- > > 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 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#58360): https://edk2.groups.io/g/devel/message/58360 Mute This Topic: https://groups.io/mt/73345587/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
