From nobody Mon Feb 9 10:48:05 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50528+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50528+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573615780; cv=none; d=zoho.com; s=zohoarc; b=e/SrTRcHQfCyjaVXHKcz3/mXulJ7OiSX+OX1wSqCXIKNDTsA401NX8EHK2dMdoFJ8Y9Ked4oHpHvScQ9XBUWP659mZ4VqPLgA0X+2cJd/5z9HAcZyX+/w862VT/Hetjqvwa3g6hOqmwEdRcepmNCtmlEm9F8XyvnbhHIqS3QWgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573615780; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=F3Hokh/oiv9JRjXE1C9kbO6Y8/qO47moLw4nf+M6BeY=; b=kWH9gmo7tgEj1zNNVBuEn/zgCFiRrEaWYVl7b9rIOTggEvbxYdcsSriY8ctlr4yhnQGbxVEpyWLX3b7noDOp1jbIAXNJaxHpVixJ33QIeCHXKGYKUvO7Nl0smz26zgEdv2bmyA/a+5dGwd9YQUrndqtlVxBcuv7RrZFRFTJGaPU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50528+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1573615780665113.27499229566638; Tue, 12 Nov 2019 19:29:40 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Tue, 12 Nov 2019 19:29:39 -0800 X-Received: from mga11.intel.com (mga11.intel.com []) by mx.groups.io with SMTP id smtpd.web10.2401.1573615709373949821 for ; Tue, 12 Nov 2019 19:29:38 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Nov 2019 19:29:38 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,299,1569308400"; d="scan'208";a="379091053" X-Received: from makuback-desk1.amr.corp.intel.com ([10.7.159.162]) by orsmga005.jf.intel.com with ESMTP; 12 Nov 2019 19:29:38 -0800 From: "Kubacki, Michael A" To: devel@edk2.groups.io Cc: Eric Dong , Liming Gao Subject: [edk2-devel] [edk2-platforms][PATCH V1 22/49] DebugFeaturePkg: Remove the ACPI Debug feature Date: Tue, 12 Nov 2019 19:27:48 -0800 Message-Id: <20191113032816.4056-23-michael.a.kubacki@intel.com> In-Reply-To: <20191113032816.4056-1-michael.a.kubacki@intel.com> References: <20191113032816.4056-1-michael.a.kubacki@intel.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,michael.a.kubacki@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573615779; bh=EEtZCWivHpN/RWbLt+JNLofLCXgykW4ZXfURqswJU0c=; h=Cc:Date:From:Reply-To:Subject:To; b=JbGggX4g+ldPF3KKj1omWGLRYk3l0CqezjAYAdSXPtbYygzimk33GM7KWfvtoCS66Z4 EDEBfhP/iBCtW4jPdmPrvfFn/4X1usSvwY1L0co8k+GV08Zmk5loTrM7/dAgbcAr8/MAn MntpVobzKDv3ml4KuHRE7IPxvN0Qgl6Sogo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Removes the S3 feature from DebugFeaturePkg. The feature does not follow the advanced feature design. A future change will add the feature back following the advanced feature design. Cc: Eric Dong Cc: Liming Gao Signed-off-by: Michael Kubacki --- Platform/Intel/DebugFeaturePkg/DebugFeaturePkg.dsc | 10 - Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugDxe.inf | 57 --- Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugSmm.inf | 59 --- Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.c | 523 ----------= ---------- Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.asl | 103 ---- Platform/Intel/DebugFeaturePkg/AcpiDebug/Readme.txt | 31 -- 6 files changed, 783 deletions(-) diff --git a/Platform/Intel/DebugFeaturePkg/DebugFeaturePkg.dsc b/Platform/= Intel/DebugFeaturePkg/DebugFeaturePkg.dsc index efe705bd76..c43dd63a06 100644 --- a/Platform/Intel/DebugFeaturePkg/DebugFeaturePkg.dsc +++ b/Platform/Intel/DebugFeaturePkg/DebugFeaturePkg.dsc @@ -71,14 +71,6 @@ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf =20 -[LibraryClasses.common.DXE_SMM_DRIVER] - ####################################### - # Edk2 Packages - ####################################### - HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf - MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAlloc= ationLib.inf - SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableL= ib.inf - ##########################################################################= ######################### # # Components Section - list of the modules and components that will be pro= cessed by compilation @@ -113,8 +105,6 @@ DebugFeaturePkg/Library/Usb3DebugPortParameterLibPcd/Usb3DebugPortParame= terLibPcd.inf =20 # Add components here that should be included in the package build. - DebugFeaturePkg/AcpiDebug/AcpiDebugDxe.inf - DebugFeaturePkg/AcpiDebug/AcpiDebugSmm.inf =20 [BuildOptions] *_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPRECATED_INTERFACES diff --git a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugDxe.inf b/Pl= atform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugDxe.inf deleted file mode 100644 index 7473126b11..0000000000 --- a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugDxe.inf +++ /dev/null @@ -1,57 +0,0 @@ -### @file -# Component description file for Acpi debug module. -# -# Copyright (c) 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -### - -[Defines] - INF_VERSION =3D 0x00010005 - BASE_NAME =3D AcpiDebugDxe - FILE_GUID =3D EC98FF95-242C-4513-B1BC-69FA24111C58 - MODULE_TYPE =3D DXE_DRIVER - VERSION_STRING =3D 1.0 - ENTRY_POINT =3D InitializeAcpiDebugDxe -# -# The following information is for reference only and not required by the = build tools. -# -# VALID_ARCHITECTURES =3D IA32 X64 IPF -# - -[LibraryClasses] - BaseLib - BaseMemoryLib - UefiBootServicesTableLib - UefiDriverEntryPoint - DebugLib - PcdLib - DxeServicesLib - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - DebugFeaturePkg/DebugFeaturePkg.dec - -[Pcd] - gDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugEnable ## CONSUMES - gDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugBufferSize ## CONSUMES - gDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress ## PRODUCES - -[Sources] - AcpiDebug.c - AcpiDebug.asl - -[Protocols] - gEfiAcpiTableProtocolGuid ## CONSUMES - gEfiSmmBase2ProtocolGuid ## CONSUMES # only for SMM version - gEfiSmmSwDispatch2ProtocolGuid ## CONSUMES # only for SMM version - gEfiSmmEndOfDxeProtocolGuid ## NOTIFY # only for SMM version - -[Guids] - gEfiEndOfDxeEventGroupGuid ## CONSUMES ## Event - -[Depex] - gEfiAcpiTableProtocolGuid - diff --git a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugSmm.inf b/Pl= atform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugSmm.inf deleted file mode 100644 index 679f9eb014..0000000000 --- a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebugSmm.inf +++ /dev/null @@ -1,59 +0,0 @@ -### @file -# Component description file for Acpi Debug module. -# -# Copyright (c) 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -### - -[Defines] - INF_VERSION =3D 0x00010005 - BASE_NAME =3D AcpiDebugSmm - FILE_GUID =3D 9069C144-0A7E-41ef-9C07-418BCA9BF939 - MODULE_TYPE =3D DXE_SMM_DRIVER - VERSION_STRING =3D 1.0 - PI_SPECIFICATION_VERSION =3D 0x0001000A - ENTRY_POINT =3D InitializeAcpiDebugSmm -# -# The following information is for reference only and not required by the = build tools. -# -# VALID_ARCHITECTURES =3D IA32 X64 IPF -# - -[LibraryClasses] - BaseLib - BaseMemoryLib - UefiBootServicesTableLib - UefiDriverEntryPoint - DebugLib - PcdLib - DxeServicesLib - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - DebugFeaturePkg/DebugFeaturePkg.dec - -[Pcd] - gDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugEnable ## CONSUMES - gDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugBufferSize ## CONSUMES - gDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress ## PRODUCES - -[Sources] - AcpiDebug.c - AcpiDebug.asl - -[Protocols] - gEfiAcpiTableProtocolGuid ## CONSUMES - gEfiSmmBase2ProtocolGuid ## CONSUMES - gEfiSmmSwDispatch2ProtocolGuid ## CONSUMES - gEfiSmmEndOfDxeProtocolGuid ## NOTIFY - -[Guids] - gEfiEndOfDxeEventGroupGuid ## CONSUMES ## Event # only for DXE ve= rsion - -[Depex] - gEfiAcpiTableProtocolGuid AND - gEfiSmmBase2ProtocolGuid AND - gEfiSmmSwDispatch2ProtocolGuid diff --git a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.c b/Platfor= m/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.c deleted file mode 100644 index f99d80f687..0000000000 --- a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.c +++ /dev/null @@ -1,523 +0,0 @@ -/** @file - Acpi Debug driver code. - -Copyright (c) 2019, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#define ACPI_DEBUG_STR "INTEL ACPI DEBUG" - -// -// ASL NAME structure -// -#pragma pack(1) -typedef struct { - UINT8 NameOp; // Byte [0]=3D0x08:NameOp. - UINT32 NameString; // Byte [4:1]=3DName of object. - UINT8 DWordPrefix; // Byte [5]=3D0x0C:DWord Prefix. - UINT32 Value; // 0 ; Value of named object. -} NAME_LAYOUT; -#pragma pack() - -#pragma pack(1) -typedef struct { - UINT8 Signature[16]; // "INTEL ACPI DEBUG" - UINT32 BufferSize; // Total size of Acpi Debug buffer including h= eader structure - UINT32 Head; // Current buffer pointer for SMM to print out - UINT32 Tail; // Current buffer pointer for ASL to input - UINT8 SmiTrigger; // Value to trigger the SMI via B2 port - UINT8 Wrap; // If current Tail < Head - UINT8 SmmVersion; // If SMM version - UINT8 Truncate; // If the input from ASL > MAX_BUFFER_SIZE -} ACPI_DEBUG_HEAD; -#pragma pack() - -#define AD_SIZE sizeof (ACPI_DEBUG_HEAD) // This is 0x20 - -#define MAX_BUFFER_SIZE 32 - -UINT32 mBufferEnd =3D 0; -ACPI_DEBUG_HEAD *mAcpiDebug =3D NULL; - -EFI_SMM_SYSTEM_TABLE2 *mSmst =3D NULL; - -/** - Patch and load ACPI table. - - @param[in] AcpiDebugAddress Address of Acpi debug memory buffer. - @param[in] BufferIndex Index that starts after the Acpi Debug hea= d. - @param[in] BufferEnd End of Acpi debug memory buffer. - -**/ -VOID -PatchAndLoadAcpiTable ( - IN ACPI_DEBUG_HEAD *AcpiDebugAddress, - IN UINT32 BufferIndex, - IN UINT32 BufferEnd - ) -{ - EFI_STATUS Status; - EFI_ACPI_TABLE_PROTOCOL *AcpiTable; - UINTN Size; - EFI_ACPI_DESCRIPTION_HEADER *TableHeader; - UINTN TableKey; - UINT8 *CurrPtr; - UINT32 *Signature; - NAME_LAYOUT *NamePtr; - UINT8 UpdateCounter; - - Status =3D GetSectionFromFv ( - &gEfiCallerIdGuid, - EFI_SECTION_RAW, - 0, - (VOID **) &TableHeader, - &Size - ); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return; - } - - // - // This is Acpi Debug SSDT. Acpi Debug should be enabled if we reach her= e so load the table. - // - ASSERT (((EFI_ACPI_DESCRIPTION_HEADER *) TableHeader)->OemTableId =3D=3D= SIGNATURE_64 ('A', 'D', 'e', 'b', 'T', 'a', 'b', 'l')); - - // - // Patch some pointers for the ASL code before loading the SSDT. - // - - // - // Count pointer updates, so we can stop after all three pointers are pa= tched. - // - UpdateCounter =3D 1; - for (CurrPtr =3D (UINT8 *) TableHeader; CurrPtr <=3D ((UINT8 *) TableHea= der + TableHeader->Length) && UpdateCounter < 4; CurrPtr++) { - Signature =3D (UINT32 *) (CurrPtr + 1); - // - // patch DPTR (address of Acpi debug memory buffer) - // - if ((*CurrPtr =3D=3D AML_NAME_OP) && *Signature =3D=3D SIGNATURE_32 ('= D', 'P', 'T', 'R')) { - NamePtr =3D (NAME_LAYOUT *) CurrPtr; - NamePtr->Value =3D (UINT32) (UINTN) AcpiDebugAddress; - UpdateCounter++; - } - // - // patch EPTR (end of Acpi debug memory buffer) - // - if ((*CurrPtr =3D=3D AML_NAME_OP) && *Signature =3D=3D SIGNATURE_32 ('= E', 'P', 'T', 'R')) { - NamePtr =3D (NAME_LAYOUT *) CurrPtr; - NamePtr->Value =3D BufferEnd; - UpdateCounter++; - } - // - // patch CPTR (used as an index that starts after the Acpi Debug head) - // - if ((*CurrPtr =3D=3D AML_NAME_OP) && *Signature =3D=3D SIGNATURE_32 ('= C', 'P', 'T', 'R')) { - NamePtr =3D (NAME_LAYOUT *) CurrPtr; - NamePtr->Value =3D BufferIndex; - UpdateCounter++; - } - } - - // - // Add the table - // - Status =3D gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID = **)&AcpiTable); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - goto Done; - } - - TableKey =3D 0; - Status =3D AcpiTable->InstallAcpiTable ( - AcpiTable, - TableHeader, - Size, - &TableKey - ); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - goto Done; - } - -Done: - gBS->FreePool (TableHeader); - return ; -} - -/** - Allocate Acpi Debug memory. - - @param[out] BufferSize Pointer to Acpi debug memory buffer size. - - @return Address of Acpi debug memory buffer. 0 if PcdAcpiDebugEnable is = FALSE. - -**/ -EFI_PHYSICAL_ADDRESS -AllocateAcpiDebugMemory ( - OUT UINT32 *BufferSize - ) -{ - EFI_STATUS Status; - EFI_PHYSICAL_ADDRESS AcpiDebugAddress; - UINTN PagesNum; - - AcpiDebugAddress =3D 0; - *BufferSize =3D 0; - - if (PcdGetBool (PcdAcpiDebugEnable)) { - // - // Reserve memory to store Acpi Debug data. - // - AcpiDebugAddress =3D 0xFFFFFFFF; - PagesNum =3D EFI_SIZE_TO_PAGES (PcdGet32 (PcdAcpiDebugBufferSize)); - Status =3D gBS->AllocatePages ( - AllocateMaxAddress, - EfiReservedMemoryType, - PagesNum, - &AcpiDebugAddress - ); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return 0; - } - - DEBUG ((DEBUG_INFO, "AcpiDebugAddress - 0x%08x\n", AcpiDebugAddress)); - - Status =3D PcdSet32S (PcdAcpiDebugAddress, (UINT32) AcpiDebugAddress); - ASSERT_EFI_ERROR (Status); - - if (EFI_ERROR (Status)) { - gBS->FreePages (AcpiDebugAddress, PagesNum); - return 0; - } - - *BufferSize =3D PcdGet32 (PcdAcpiDebugBufferSize); - } - - return AcpiDebugAddress; -} - -/** - Acpi Debug EndOfDxe notification. - - @param[in] Event Event whose notification function is being invoked. - @param[in] Context Pointer to the notification function's context. - -**/ -VOID -EFIAPI -AcpiDebugEndOfDxeNotification ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - UINT32 BufferSize; - UINT32 BufferIndex; - - mAcpiDebug =3D (ACPI_DEBUG_HEAD *) (UINTN) AllocateAcpiDebugMemory (&Buf= ferSize); - if (mAcpiDebug !=3D NULL) { - // - // Init ACPI DEBUG buffer to lower case 'x'. - // - SetMem ((VOID *) mAcpiDebug, BufferSize, 0x78); - - // - // Clear header of AD_SIZE bytes. - // - ZeroMem ((VOID *) mAcpiDebug, AD_SIZE); - - // - // Write a signature to the first line of the buffer, "INTEL ACPI DEBU= G". - // - CopyMem ((VOID *) mAcpiDebug, ACPI_DEBUG_STR, sizeof (ACPI_DEBUG_STR) = - 1); - - BufferIndex =3D (UINT32) (UINTN) mAcpiDebug; - mBufferEnd =3D BufferIndex + BufferSize; - - // - // Leave the Index after the Acpi Debug head. - // - BufferIndex +=3D AD_SIZE; - - // - // Patch and Load the SSDT ACPI Tables. - // - PatchAndLoadAcpiTable (mAcpiDebug, BufferIndex, mBufferEnd); - - mAcpiDebug->Head =3D BufferIndex; - mAcpiDebug->Tail =3D BufferIndex; - mAcpiDebug->BufferSize =3D BufferSize; - } - - // - // Close event, so it will not be invoked again. - // - gBS->CloseEvent (Event); - - return ; -} - -/** - Initialize ACPI Debug. - - @param[in] ImageHandle The firmware allocated handle for the EFI imag= e. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The driver initializes correctly. - -**/ -EFI_STATUS -EFIAPI -InitializeAcpiDebugDxe ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - EFI_EVENT EndOfDxeEvent; - - // - // Register EndOfDxe notification - // that point could ensure the Acpi Debug related PCDs initialized. - // - Status =3D gBS->CreateEventEx ( - EVT_NOTIFY_SIGNAL, - TPL_CALLBACK, - AcpiDebugEndOfDxeNotification, - NULL, - &gEfiEndOfDxeEventGroupGuid, - &EndOfDxeEvent - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} - -/** - Software SMI callback for ACPI Debug which is called from ACPI method. - - @param[in] DispatchHandle The unique handle assigned to this han= dler by SmiHandlerRegister(). - @param[in] Context Points to an optional handler context = which was specified when the - handler was registered. - @param[in, out] CommBuffer A pointer to a collection of data in m= emory that will - be conveyed from a non-SMM environment= into an SMM environment. - @param[in, out] CommBufferSize The size of the CommBuffer. - - @retval EFI_SUCCESS The interrupt was handled successfully. - -**/ -EFI_STATUS -EFIAPI -AcpiDebugSmmCallback ( - IN EFI_HANDLE DispatchHandle, - IN CONST VOID *Context, - IN OUT VOID *CommBuffer, - IN OUT UINTN *CommBufferSize - ) -{ - UINT8 Buffer[MAX_BUFFER_SIZE]; - - // - // Validate the fields in mAcpiDebug to ensure there is no harm to SMI h= andler. - // mAcpiDebug is below 4GB and the start address of whole buffer. - // - if ((mAcpiDebug->BufferSize !=3D (mBufferEnd - (UINT32) (UINTN) mAcpiDeb= ug)) || - (mAcpiDebug->Head < (UINT32) ((UINTN) mAcpiDebug + AD_SIZE)) || - (mAcpiDebug->Head > mBufferEnd) || - (mAcpiDebug->Tail < (UINT32) ((UINTN) mAcpiDebug + AD_SIZE)) || - (mAcpiDebug->Tail > mBufferEnd)) { - // - // If some fields in mAcpiDebug are invaid, return directly. - // - return EFI_SUCCESS; - } - - if (!(BOOLEAN)mAcpiDebug->Wrap && ((mAcpiDebug->Head >=3D (UINT32) ((UIN= TN) mAcpiDebug + AD_SIZE)) - && (mAcpiDebug->Head < mAcpiDebug->Tail))){ - // - // If curent ----- buffer + 020 - // ... - // ... Head - // ... Data for SMM print - // ... Tail - // ... Vacant for ASL input - // ----- buffer end - // - // skip NULL block - // - while ((*(CHAR8 *) (UINTN) mAcpiDebug->Head =3D=3D '\0') && (mAcpiDebu= g->Head < mAcpiDebug->Tail)) { - mAcpiDebug->Head ++; - } - - if (mAcpiDebug->Head < mAcpiDebug->Tail) { - ZeroMem (Buffer, MAX_BUFFER_SIZE); - AsciiStrnCpyS ((CHAR8 *) Buffer, MAX_BUFFER_SIZE, (CHAR8 *) (UINTN) = mAcpiDebug->Head, MAX_BUFFER_SIZE - 1); - - DEBUG ((DEBUG_INFO | DEBUG_ERROR, "%a%a\n", Buffer, (BOOLEAN) mAcpiD= ebug->Truncate ? "..." : "")); - mAcpiDebug->Head +=3D MAX_BUFFER_SIZE; - - if (mAcpiDebug->Head >=3D (mAcpiDebug->Tail)) { - // - // When head =3D=3D tail, we do nothing in handler. - // - mAcpiDebug->Head =3D mAcpiDebug->Tail; - } - } - } else if ((BOOLEAN) mAcpiDebug->Wrap && ((mAcpiDebug->Head > mAcpiDebug= ->Tail) - && (mAcpiDebug->Head < (UINT32) ((UINTN) mAcpiDebug + mAcpiDebug->Buff= erSize)))){ - // - // If curent ----- buffer + 020 - // ... Tail - // ... Vacant for ASL input - // ... Head - // ... Data for SMM print - // ----- buffer end - // - while ((*(CHAR8 *) (UINTN) mAcpiDebug->Head =3D=3D '\0') && (mAcpiDebu= g->Head < (UINT32) ((UINTN) mAcpiDebug + mAcpiDebug->BufferSize))) { - mAcpiDebug->Head ++; - } - if (mAcpiDebug->Head < (UINT32) ((UINTN) mAcpiDebug + mAcpiDebug->Buff= erSize)){ - ZeroMem (Buffer, MAX_BUFFER_SIZE); - AsciiStrnCpyS ((CHAR8 *) Buffer, MAX_BUFFER_SIZE, (CHAR8 *) (UINTN) = mAcpiDebug->Head, MAX_BUFFER_SIZE - 1); - DEBUG ((DEBUG_INFO | DEBUG_ERROR, "%a%a\n", Buffer, (BOOLEAN) mAcpiD= ebug->Truncate ? "..." : "")); - mAcpiDebug->Head +=3D MAX_BUFFER_SIZE; - - if (mAcpiDebug->Head >=3D (UINT32) ((UINTN) mAcpiDebug + mAcpiDebug-= >BufferSize)) { - // - // We met end of buffer. - // - mAcpiDebug->Wrap =3D 0; - mAcpiDebug->Head =3D (UINT32) ((UINTN) mAcpiDebug + AD_SIZE); - } - } - } - - return EFI_SUCCESS; -} - -/** - Acpi Debug SmmEndOfDxe notification. - - @param[in] Protocol Points to the protocol's unique identifier. - @param[in] Interface Points to the interface instance. - @param[in] Handle The handle on which the interface was installed. - - @retval EFI_SUCCESS Notification runs successfully. - - **/ -EFI_STATUS -EFIAPI -AcpiDebugSmmEndOfDxeNotification ( - IN CONST EFI_GUID *Protocol, - IN VOID *Interface, - IN EFI_HANDLE Handle - ) -{ - EFI_STATUS Status; - EFI_SMM_SW_DISPATCH2_PROTOCOL *SwDispatch; - EFI_SMM_SW_REGISTER_CONTEXT SwContext; - EFI_HANDLE SwHandle; - - AcpiDebugEndOfDxeNotification (NULL, NULL); - - if (mAcpiDebug !=3D NULL) { - // - // Get the Sw dispatch protocol and register SMI callback function. - // - SwDispatch =3D NULL; - Status =3D mSmst->SmmLocateProtocol (&gEfiSmmSwDispatch2ProtocolGuid, = NULL, (VOID **) &SwDispatch); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return Status; - } - - SwContext.SwSmiInputValue =3D (UINTN) -1; - Status =3D SwDispatch->Register (SwDispatch, AcpiDebugSmmCallback, &Sw= Context, &SwHandle); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return Status; - } - - mAcpiDebug->SmiTrigger =3D (UINT8) SwContext.SwSmiInputValue; - mAcpiDebug->SmmVersion =3D 1; - } - - return EFI_SUCCESS; -} - -/** - Initialize ACPI Debug. - - @param[in] ImageHandle The firmware allocated handle for the EFI imag= e. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The driver initializes correctly. - -**/ -EFI_STATUS -EFIAPI -InitializeAcpiDebugSmm ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - VOID *Registration; - EFI_SMM_BASE2_PROTOCOL *SmmBase2; - BOOLEAN InSmm; - - Status =3D gBS->LocateProtocol (&gEfiSmmBase2ProtocolGuid, NULL, (VOID *= *) &SmmBase2); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return Status; - } - - Status =3D SmmBase2->InSmm (SmmBase2, &InSmm); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return Status; - } - - ASSERT (InSmm); - - if (!InSmm) { - return EFI_UNSUPPORTED; - } - - Status =3D SmmBase2->GetSmstLocation (SmmBase2, &mSmst); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Register SmmEndOfDxe notification - // that point could ensure the Acpi Debug related PCDs initialized. - // - Registration =3D NULL; - Status =3D mSmst->SmmRegisterProtocolNotify ( - &gEfiSmmEndOfDxeProtocolGuid, - AcpiDebugSmmEndOfDxeNotification, - &Registration - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} diff --git a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.asl b/Platf= orm/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.asl deleted file mode 100644 index cbfe085b56..0000000000 --- a/Platform/Intel/DebugFeaturePkg/AcpiDebug/AcpiDebug.asl +++ /dev/null @@ -1,103 +0,0 @@ -/** @file - Acpi Debug ASL code. - -Copyright (c) 2019, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -DefinitionBlock ( - "AcpiDebug.aml", - "SSDT", - 2, - "Intel ", - "ADebTabl", - 0x1000 - ) -{ - Scope(\) - { - // - // These pointers are patched during POST. - // - Name (DPTR, 0x80000000) // Address of Acpi debug memory buffer, fixed = up during POST - Name (EPTR, 0x80000000) // End of Acpi debug memory buffer, fixed up d= uring POST - Name (CPTR, 0x80000000) // Current pointer used as an index into the b= uffer(starts after the Acpi Debug head), fixed up during POST - - // - // Use a Mutex to prevent multiple calls from simutaneously writing to= the same memory. - // - Mutex (MMUT, 0) - - // - // Operational region for SMI port access - // - OperationRegion (ADBP, SystemIO, 0xB2, 2) - Field (ADBP, ByteAcc, NoLock, Preserve) - { - B2PT, 8, - B3PT, 8, - } - - // - // Write a string to a memory buffer - // - Method (MDBG, 1, Serialized) - { - OperationRegion (ADHD, SystemMemory, DPTR, 32) // Operation region f= or Acpi Debug buffer first 0x20 bytes - Field (ADHD, ByteAcc, NoLock, Preserve) - { - Offset (0x0), - ASIG, 128, // 16 bytes is Signature - Offset (0x10), - ASIZ, 32, // 4 bytes is buffer size - ACHP, 32, // 4 bytes is current head pointer, normally is DP= TR + 0x20, - // if there's SMM handler to print, then it's th= e starting of the info hasn't been printed yet. - ACTP, 32, // 4 bytes is current tail pointer, is the same as= CPTR - SMIN, 8, // 1 byte of SMI Number for trigger callback - WRAP, 8, // 1 byte of wrap status - SMMV, 8, // 1 byte of SMM version status - TRUN, 8 // 1 byte of truncate status - } - - Store (Acquire (MMUT, 1000), Local0) // save Acquire result so we ca= n check for Mutex acquired - If (LEqual (Local0, Zero)) // check for Mutex acquired - { - OperationRegion (ABLK, SystemMemory, CPTR, 32) // Operation region= to allow writes to ACPI debug buffer - Field (ABLK, ByteAcc, NoLock, Preserve) - { - Offset (0x0), - AAAA, 256 // 32 bytes is max size for string or data - } - ToHexString (Arg0, Local1) // convert argument to Hexadecimal Stri= ng - Store (0, TRUN) - If (LGreaterEqual (SizeOf (Local1), 32)) - { - Store (1, TRUN) // the input from ASL >=3D 32 - } - Mid (Local1, 0, 31, AAAA) // extract the input to current buffer - - Add (CPTR, 32, CPTR) // advance current pointer to next string loc= ation in memory buffer - If (LGreaterEqual (CPTR, EPTR) ) // check for end of 64kb Acpi deb= ug buffer - { - Add (DPTR, 32, CPTR) // wrap around to beginning of buffer if th= e end has been reached - Store (1, WRAP) - } - Store (CPTR, ACTP) - - If (SMMV) - { - // - // Trigger the SMI to print - // - Store (SMIN, B2PT) - } - Release (MMUT) - } - - Return (Local0) // return error code indicating whether Mutex was ac= quired - } - - } // End Scope -} // End SSDT - diff --git a/Platform/Intel/DebugFeaturePkg/AcpiDebug/Readme.txt b/Platform= /Intel/DebugFeaturePkg/AcpiDebug/Readme.txt deleted file mode 100644 index 71284ec77f..0000000000 --- a/Platform/Intel/DebugFeaturePkg/AcpiDebug/Readme.txt +++ /dev/null @@ -1,31 +0,0 @@ -ACPI Debug feature - an alternative to Port 80 and WinDBG - -How it works: - Acpi Debug does this: - Opens a 64kb memory buffer during POST. - Patches the buffer address in SSDT ASL code. - Save the address in gAdvancedFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddres= s for user reference. - Write strings or numbers to the buffer from ASL code with the ADBG metho= d. - -How to use it: - 1. Enable it by set gAdvancedFeaturePkgTokenSpaceGuid.PcdAcpiDebugEnable= to TRUE. - 2. The ACPI ASL code must be instrumented with the debug method. - Strings up to 32 characters (shorter strings will be padded with Zero= 's, longer strings will be truncated) - Examples: - ADBG("This is a test.") - ADBG(Arg0) - - DXE version: The bios engineer will read the strings from the buffer on = the target machine with read/write memory utility. - SMM version: Check debug serial that would show debug strings. - - Sample code for ADBG: - External (MDBG, MethodObj) - Method (ADBG, 1, Serialized) - { - If (CondRefOf (MDBG)) // Check if ACPI Debug SSDT is loaded - { - Return (MDBG (Arg0)) - } - Return (0) - } - --=20 2.16.2.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#50528): https://edk2.groups.io/g/devel/message/50528 Mute This Topic: https://groups.io/mt/55161256/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-