From nobody Mon Feb 9 06:26:55 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+85844+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85844+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1642641270; cv=none; d=zohomail.com; s=zohoarc; b=SEDKYY/b4o28dkiJtlPfWsZ0ULsPTercfTe51fLh9blDWd6CNXbW03VBepktBvWKawaStksDycMa2vS7di5EQVg+X325NBkYKEulMbEui1353FljbzDcbHXe1VotXwNY5GSVzLQp9Nk+tYh1Zsie4AOnlXqjZA1OtuWxKJpcdo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1642641270; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=522qLzbItb6nAmmZ5T1BFn5HQ/mwpv3njx99iCKe7ZQ=; b=Dz7XNJa0aR+rOTyZWM0UB+aNElt+hg7aq91uoOpDzvNVX6Ut+tXXPGLwGKbg6JE/oBZOkDBBOwnuAY8sFO9Og1+6kbDuhWV4OakL7qDpt/AThHkMWSUJvy7q+TSdKZ9TyEw1qslnF2BJJI4v0HJe8auvsFNbxwpEykpkE8JeEIQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85844+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 164264127060626.141475480426607; Wed, 19 Jan 2022 17:14:30 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id uA7RYY1788612xlGPUi2Br4Y; Wed, 19 Jan 2022 17:14:30 -0800 X-Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web12.5671.1642641268438975674 for ; Wed, 19 Jan 2022 17:14:29 -0800 X-IronPort-AV: E=McAfee;i="6200,9189,10231"; a="269638483" X-IronPort-AV: E=Sophos;i="5.88,301,1635231600"; d="scan'208";a="269638483" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jan 2022 17:14:27 -0800 X-IronPort-AV: E=Sophos;i="5.88,301,1635231600"; d="scan'208";a="532559789" X-Received: from iworam-desk.amr.corp.intel.com ([10.7.150.79]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jan 2022 17:14:26 -0800 From: "Oram, Isaac W" To: devel@edk2.groups.io Cc: Sai Chaganty , Liming Gao , Eric Dong , Ming Tan Subject: [edk2-devel][edk2-platforms][PATCH V2 01/14] BeepDebugFeaturePkg: Use MinPlatformPkg build include files Date: Wed, 19 Jan 2022 17:13:56 -0800 Message-Id: <9b961acd5cb5e3a68f09fcbc99bf142d1b5c270b.1642640106.git.isaac.w.oram@intel.com> In-Reply-To: References: MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: 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,isaac.w.oram@intel.com X-Gm-Message-State: 8pEteaHx0Zz5fUEhFjLl5viux1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1642641270; bh=/jI0uQRDfjUbryKEUSWaH2gDMoPrPgaTD+19+1Bd8p4=; h=Cc:Date:From:Reply-To:Subject:To; b=jOiS9TpRaD+6iaqYLYBbM40HOChdrXnVEaUBx44/9V3hoIKSXHUGuRQzuyTv7iAjyci rNY4fOZ/6iqyBg/b8xBrm6gpHUBuqSm0w9E34eFI1D0ti1G//lz0wyzGn9dnk1XjZt56p 3qBR6Eu0PeCGfkeQOvPjApjwVRyAO8r+lzY= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1642641272422100002 Content-Type: text/plain; charset="utf-8" The BeepDebugFeaturePkg was malformed and did not build anything and thus wasn't testable in standalone build. Added gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeepDebugFeatureEnable to properly control the advanced feature inclusion. Use the standard MinPlatform includes for core libraries. This increases the build time, but reduces complexity when integrating into a board build. Board build optimization is more valuable than standalone build optimization. Enable standalone build to test the library build and the component builds using edk2 StatusCodeHandler drivers. Add unique file names for the StatusCodeHandler components to avoid collisions with any existing board handlers when incorporated in board DSC and FDF files. Add PreMemory.fdf and PostMemory.fdf content for including in board FDF or AdvancedFeaturePkg in the future. Removed unused sections in DSC and FDF to reduce file clutter. Removed stale file header content from prior proprietary licensing. Moved feature customization and common include into the package DSC file to reduce board complexity when BeepDebugFeature.dsc is included. Removed the FixedAtBuild build control for beep feature as it would be redundant with the FeatureFlag control of the whole feature. Build control is via PcdBeepDebugFeatureEnable and dynamic control is via PcdStatusCodeUseBeep. Improved Readme content, format, and coding style use. Cc: Sai Chaganty Cc: Liming Gao Cc: Eric Dong Cc: Ming Tan Signed-off-by: Isaac Oram --- Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec = | 7 +- Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.dsc = | 28 +++ Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebugFeature.dsc = | 222 ++++++-------------- Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepLib.h = | 6 +- Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PostMemory.fdf = | 14 ++ Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PreMemory.fdf = | 13 ++ Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHandler= Lib/PeiBeepStatusCodeHandlerLib.inf | 5 +- Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHandler= Lib/RuntimeDxeBeepStatusCodeHandlerLib.inf | 3 - Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHandler= Lib/SmmBeepStatusCodeHandlerLib.inf | 3 - Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md = | 91 +++++--- 10 files changed, 186 insertions(+), 206 deletions(-) diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeatureP= kg.dec b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.d= ec index 4f4b36b091..d90611da51 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec @@ -31,6 +31,9 @@ [Guids] gBeepDebugFeaturePkgTokenSpaceGuid =3D {0x54f56fb5, 0xea0e, 0x4518, {0= xa0, 0x3e, 0x1b, 0xeb, 0x56, 0x94, 0xd2, 0x16}} =20 -[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] +[PcdsFeatureFlag] + gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeepDebugFeatureEnable|FALSE|BOOLE= AN|0x00000000 + +[PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] # Beep is a legacy feature, disabled it by default - gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep|FALSE|BOOLEAN|0x= 00000001 + gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep|TRUE|BOOLEAN|0x0= 0000001 diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeatureP= kg.dsc b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.d= sc index 47254f9974..56cad020bf 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.dsc +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/BeepDebugFeaturePkg.dsc @@ -24,6 +24,34 @@ PEI_ARCH =3D IA32 DXE_ARCH =3D X64 =20 +[Packages] + MinPlatformPkg/MinPlatformPkg.dec + BeepDebugFeaturePkg/BeepDebugFeaturePkg.dec + +[PcdsFeatureFlag] + # + # PCD needed for MinPlatform build includes + # + gMinPlatformPkgTokenSpaceGuid.PcdSmiHandlerProfileEnable = |FALSE + gMinPlatformPkgTokenSpaceGuid.PcdUefiSecureBootEnable = |FALSE + gMinPlatformPkgTokenSpaceGuid.PcdPerformanceEnable = |FALSE + +[PcdsDynamicExDefault] + gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep|TRUE + +# +# Include common libraries +# +!include MinPlatformPkg/Include/Dsc/CoreCommonLib.dsc +!include MinPlatformPkg/Include/Dsc/CorePeiLib.dsc +!include MinPlatformPkg/Include/Dsc/CoreDxeLib.dsc + +[LibraryClasses.Common] + # + # Required by common status code handler infrastructure + # + PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatfor= mHookLibNull.inf + # # This package always builds the feature. # diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebug= Feature.dsc b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebu= gFeature.dsc index b24b3e458f..00ef022657 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebugFeature= .dsc +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/BeepDebugFeature= .dsc @@ -18,97 +18,16 @@ # ##########################################################################= ###### [Defines] -!ifndef $(PEI_ARCH) - !error "PEI_ARCH must be specified to build this feature!" -!endif -!ifndef $(DXE_ARCH) - !error "DXE_ARCH must be specified to build this feature!" -!endif - -##########################################################################= ###### -# -# PCD Section - list of PCD Entries modified by the feature. -# -##########################################################################= ###### - -# Unmark the following and StatusCodeHandler.efi to build the .dsc file di= rectly -#[PcdsDynamicDefault] -# gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep|TRUE - -##########################################################################= ###### -# -# Library Class section - list of all Library Classes needed by this featu= re. -# -##########################################################################= ###### - -!include MdePkg/MdeLibs.dsc.inc - -[LibraryClasses] - ####################################### - # Edk2 Packages - ####################################### - BaseLib|MdePkg/Library/BaseLib/BaseLib.inf - BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf - DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf - IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf - PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf - TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplat= e.inf - UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf - UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf - UefiLib|MdePkg/Library/UefiLib/UefiLib.inf - UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/U= efiRuntimeServicesTableLib.inf - PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf - -[LibraryClasses.common.PEIM] - ####################################### - # Edk2 Packages - ####################################### - HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf - MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAlloc= ationLib.inf - PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/= PeiServicesTablePointerLibIdt.inf - -[LibraryClasses.IA32.PEIM,LibraryClasses.IA32.PEI_CORE,LibraryClasses.IA32= .SEC] - ####################################### - # Edk2 Packages - ####################################### - ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiRepor= tStatusCodeLib.inf - -[LibraryClasses.common.DXE_DRIVER] - ####################################### - # Edk2 Packages - ####################################### - HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf - MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf - -[LibraryClasses.common.DXE_RUNTIME_DRIVER] - ####################################### - # Edk2 Packages - ####################################### - HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf - MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf - UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/R= untimeDxeReportStatusCodeLib.inf - -[LibraryClasses.common.UEFI_DRIVER] - ####################################### - # Edk2 Packages - ####################################### - HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf - MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf - -[LibraryClasses.X64.DXE_SMM_DRIVER] - ####################################### - # Edk2 Packages - ####################################### - SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableL= ib.inf - MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAlloc= ationLib.inf - SmmIoLib|MdePkg/Library/SmmIoLib/SmmIoLib.inf - SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmRepor= tStatusCodeLib.inf + !ifndef $(PEI_ARCH) + !error "PEI_ARCH must be specified to build this feature!" + !endif + !ifndef $(DXE_ARCH) + !error "DXE_ARCH must be specified to build this feature!" + !endif + + DEFINE BEEP_PEIM_FILENAME =3D b2356504-8ea3-42bd-912a-4b331990644a + DEFINE BEEP_DXE_FILENAME =3D f1211fa9-d83d-4c79-8726-3afaebba1070 + DEFINE BEEP_SMM_FILENAME =3D a82cd452-0f17-4417-b8be-bb8cfdf9fa26 =20 ##########################################################################= ###### # @@ -128,77 +47,60 @@ # Feature PEI Components # =20 -# @todo: Change below line to [Components.$(PEI_ARCH)] after https://bugzi= lla.tianocore.org/show_bug.cgi?id=3D2308 -# is completed. +# +# By default, make the functional control a patcheable in module PCD +# +[PcdsPatchableInModule] + gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep + +[LibraryClasses.Common] + BeepLib|BeepDebugFeaturePkg/Library/BeepLib/BeepLibNull.inf + BeepMapLib|BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf + +[LibraryClasses.PEIM, LibraryClasses.PEI_CORE] + StatusCodeHandlerLib|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLi= b/PeiBeepStatusCodeHandlerLib.inf + +[LibraryClasses.DXE_RUNTIME_DRIVER] + StatusCodeHandlerLib|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLi= b/RuntimeDxeBeepStatusCodeHandlerLib.inf + +[LibraryClasses.DXE_SMM_DRIVER] + StatusCodeHandlerLib|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLi= b/SmmBeepStatusCodeHandlerLib.inf + [Components.IA32] - ##################################### - # Beep Debug Feature Package - ##################################### =20 - # Add library instances here that are not included in package components= and should be tested - # in the package build. - BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/PeiBeepStatusCodeHa= ndlerLib.inf + MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf { + + # + # Many boards already have StatusCodeHandler components built from t= he common core code + # Providing a unique name avoids collisions. Both status code handl= er components will + # install their listeners with the status code routers. + # + FILE_GUID =3D $(BEEP_PEIM_FILENAME) + + NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/PeiBeepSta= tusCodeHandlerLib.inf + } =20 - # The following is an example for used with StatusCodeHandler: -# MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf { -# -# OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/O= emHookStatusCodeLibNull.inf -# SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLib= Null.inf -# BeepLib|BeepDebugFeaturePkg/Library/BeepLib/BeepLibNull.inf -# BeepMapLib|BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf -# NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/PeiBeepSta= tusCodeHandlerLib.inf -# } - - # Add components here that should be included in the package build. - -# -# Feature DXE Components -# - -# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzi= lla.tianocore.org/show_bug.cgi?id=3D2308 -# is completed. [Components.X64] - ##################################### - # Beep Debug Feature Package - ##################################### + MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRun= timeDxe.inf { + + # + # Many boards already have StatusCodeHandler components built from t= he common core code + # Providing a unique name avoids collisions. Both status code handl= er components will + # install their listeners with the status code routers. + # + FILE_GUID =3D $(BEEP_DXE_FILENAME) + + NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeDxe= BeepStatusCodeHandlerLib.inf + } =20 - # Add library instances here that are not included in package components= and should be tested - # in the package build. - BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeDxeBeepStatu= sCodeHandlerLib.inf - BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/SmmBeepStatusCodeHa= ndlerLib.inf - - # The following is an example for used with StatusCodeHandler: -# MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRun= timeDxe.inf { -# -# OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/O= emHookStatusCodeLibNull.inf -# SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLib= Null.inf -# BeepLib|BeepDebugFeaturePkg/Library/BeepLib/BeepLibNull.inf -# BeepMapLib|BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf -# NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeDxe= BeepStatusCodeHandlerLib.inf -# } - -# MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf { -# -# OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/O= emHookStatusCodeLibNull.inf -# SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLib= Null.inf -# BeepLib|BeepDebugFeaturePkg/Library/BeepLib/BeepLibNull.inf -# BeepMapLib|BeepDebugFeaturePkg/Library/BeepMapLib/BeepMapLib.inf -# NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/SmmBeepSta= tusCodeHandlerLib.inf -# } - - # Add components here that should be included in the package build. - -##########################################################################= ######################### -# -# BuildOptions Section - Define the module specific tool chain flags that = should be used as -# the default flags for a module. These flags are a= ppended to any -# standard flags that are defined by the build proc= ess. They can be -# applied for any modules or only those modules wit= h the specific -# module style (EDK or EDKII) specified in [Compone= nts] section. -# -# For advanced features, it is recommended to enabl= e [BuildOptions] in -# the applicable INF file so it does not affect the= whole board package -# build when this DSC file is active. -# -##########################################################################= ######################### -[BuildOptions] + MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf { + + # + # Many boards already have StatusCodeHandler components built from t= he common core code + # Providing a unique name avoids collisions. Both status code handl= er components will + # install their listeners with the status code routers. + # + FILE_GUID =3D $(BEEP_SMM_FILENAME) + + NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/SmmBeepSta= tusCodeHandlerLib.inf + } diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/B= eepLib.h b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/Bee= pLib.h index f768acc557..0b8f71b097 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepLib.h +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/Library/BeepLib.h @@ -15,12 +15,12 @@ Sends the 32-bit value specified by Value to Beep device, and returns Va= lue. Some implementations of this library function may perform I/O operations directly to Beep device. Other implementations may send Value to - ReportStatusCode(), and the status code reporting mechanism will eventua= lly + ReportStatusCode (), and the status code reporting mechanism will eventu= ally display the 32-bit value on the status reporting device. =20 - Beep() must actively prevent recursion. If Beep() is called while + Beep () must actively prevent recursion. If Beep () is called while processing another Post Code Library function, then - Beep() must return Value immediately. + Beep () must return Value immediately. =20 @param Value Beep count. **/ diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PostMemor= y.fdf b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PostMemory.fdf new file mode 100644 index 0000000000..447fb88235 --- /dev/null +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PostMemory.fdf @@ -0,0 +1,14 @@ +## @file +# FDF file for post-memory BeepDebugFeature advanced feature. +# +# This file is intended to be included into another package so advanced f= eatures +# can be conditionally included in the flash image by enabling the respec= tive +# feature via its FeaturePCD. +# +# Copyright (C) 2022 Intel Corporation. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +INF FILE_GUID =3D $(BEEP_DXE_FILENAME) MdeModulePkg/Universal/StatusCodeHa= ndler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf +INF FILE_GUID =3D $(BEEP_SMM_FILENAME) MdeModulePkg/Universal/StatusCodeHa= ndler/Smm/StatusCodeHandlerSmm.inf diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PreMemory= .fdf b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PreMemory.fdf new file mode 100644 index 0000000000..160f5e3ffd --- /dev/null +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Include/PreMemory.fdf @@ -0,0 +1,13 @@ +## @file +# FDF file for pre-memory BeepDebugFeature advanced feature. +# +# This file is intended to be included into another package so advanced f= eatures +# can be conditionally included in the flash image by enabling the respec= tive +# feature via its FeaturePCD. +# +# Copyright (C) 2022 Intel Corporation. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +INF FILE_GUID =3D $(BEEP_PEIM_FILENAME) MdeModulePkg/Universal/StatusCodeH= andler/Pei/StatusCodeHandlerPei.inf diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatu= sCodeHandlerLib/PeiBeepStatusCodeHandlerLib.inf b/Features/Intel/Debugging/= BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/PeiBeepStatusCodeHandl= erLib.inf index 421b246663..5be78a72e8 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHa= ndlerLib/PeiBeepStatusCodeHandlerLib.inf +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHa= ndlerLib/PeiBeepStatusCodeHandlerLib.inf @@ -4,9 +4,6 @@ # Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # -# vendor. This file may not be modified, except as allowed by -# additional terms of your license agreement. -# ## =20 [Defines] @@ -15,7 +12,7 @@ FILE_GUID =3D C4210E71-0A38-4728-8D25-4876348AA380 MODULE_TYPE =3D PEIM CONSTRUCTOR =3D PeiBeepStatusCodeHandlerLibConstructor - LIBRARY_CLASS =3D StatusCodeHandlerLib|SEC PEIM PEI_COR + LIBRARY_CLASS =3D StatusCodeHandlerLib|SEC PEIM PEI_CORE =20 # # The following information is for reference only and not required by the = build tools. diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatu= sCodeHandlerLib/RuntimeDxeBeepStatusCodeHandlerLib.inf b/Features/Intel/Deb= ugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeDxeBeepS= tatusCodeHandlerLib.inf index b9aae39128..2343e35a78 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHa= ndlerLib/RuntimeDxeBeepStatusCodeHandlerLib.inf +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHa= ndlerLib/RuntimeDxeBeepStatusCodeHandlerLib.inf @@ -4,9 +4,6 @@ # Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # -# vendor. This file may not be modified, except as allowed by -# additional terms of your license agreement. -# ## =20 [Defines] diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatu= sCodeHandlerLib/SmmBeepStatusCodeHandlerLib.inf b/Features/Intel/Debugging/= BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/SmmBeepStatusCodeHandl= erLib.inf index caa82264ae..4db1748fe3 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHa= ndlerLib/SmmBeepStatusCodeHandlerLib.inf +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Library/BeepStatusCodeHa= ndlerLib/SmmBeepStatusCodeHandlerLib.inf @@ -4,9 +4,6 @@ # Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # -# vendor. This file may not be modified, except as allowed by -# additional terms of your license agreement. -# ## =20 [Defines] diff --git a/Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md b/Featu= res/Intel/Debugging/BeepDebugFeaturePkg/Readme.md index ee254d0f99..6626c9b764 100644 --- a/Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md +++ b/Features/Intel/Debugging/BeepDebugFeaturePkg/Readme.md @@ -6,25 +6,29 @@ More Information: =20 ## Purpose -The BeepDebugFeaturePkg include some useful beep debug libraries, such as = get beep value from status code and beep. -This is an important capability in firmware development to get and analyze= the early error when there is not serial port. +Very often it is necessary to debug very close to the reset vector or in p= roduction systems that lack serial ports, seven segment displays, or useful= LED that are typically used to output useful debug messages. =20 +The BeepDebugFeaturePkg includes some useful beep focused debug libraries. + +This isn't intended for production use. + +There is not currently seamless integration into the SecCore component tha= t handles the reset vector. In order to debug that early, it will be necess= ary to use the BeepLib directly in SEC code. =20 # High-Level Theory of Operation -It provide a library BeepStatusCodeHandlerLib used by edk2 StatusCodeHandl= er.efi, used to do beep if needed. -It also provide a library of BeepMap lib, it map the status code to beep v= alue. +It provides a library, BeepStatusCodeHandlerLib, used by edk2 StatusCodeHa= ndler.efi, used to do beep if needed. +It also provide a library of BeepMap lib which maps the status code to a b= eep value. A library of Beep lib is needed by platform, and this pkg has a Null imple= mentation. =20 -In the library contstructor function, BeepStatusCodeHandlerLib register th= e call back function for ReportStatusCode. -When called, it call GetBeepFromStatusCode() in BeepMapLib to get beep val= ue from status code, and call Beep() in BeepLib to beep. +In the library contstructor function, BeepStatusCodeHandlerLib registers t= he call back function for ReportStatusCode. When called, it calls GetBeepFr= omStatusCode (); in BeepMapLib to get beep value from status code, and call= s Beep () in BeepLib to beep a speaker. =20 -BeepStatusCodeHandlerLib include 3 libraries for PEI, RuntimeDxe, SMM: +BeepStatusCodeHandlerLib includes three libraries for PEI, RuntimeDxe, and= SMM: * PeiBeepStatusCodeHandlerLib * RuntimeDxeBeepStatusCodeHandlerLib * SmmBeepStatusCodeHandlerLib =20 ## Firmware Volumes -Linked with StatusCodeHandler.efi, and make sure put the StatusCodeHandler= .efi after the ReportStatusCodeRouter.efi. +These libraries need to be linked into StatusCodeHandler components. +Make sure one puts the StatusCodeHandler.efi after the ReportStatusCodeRou= ter.efi. =20 ## Modules * BeepStatusCodeHandlerLib @@ -32,13 +36,17 @@ Linked with StatusCodeHandler.efi, and make sure put th= e StatusCodeHandler.efi a * BeepLibNull =20 ## BeepStatusCodeHandlerLib -This library register the call back function for ReportStatusCode, and get= beep valude from status code, and do beep. +This library registers the callback function for ReportStatusCode, gets be= ep value from status code, and does the beep. =20 ## BeepMapLib -This library provide a function to get beep value from status code. +This library provides a function to get a beep value for a status code. + +## BeepLibNull +This library provide a function to perform the beep. =20 ## Key Functions * In PeiBeepStatusCodeHandlerLib: +``` EFI_STATUS EFIAPI BeepStatusCodeReportWorker ( @@ -49,8 +57,10 @@ This library provide a function to get beep value from s= tatus code. IN CONST EFI_GUID *CallerId, IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL ) +``` =20 * In RuntimeDxeBeepStatusCodeHandlerLib: +``` EFI_STATUS EFIAPI BeepStatusCodeReportWorker ( @@ -60,8 +70,10 @@ This library provide a function to get beep value from s= tatus code. IN EFI_GUID *CallerId, IN EFI_STATUS_CODE_DATA *Data OPTIONAL ) +``` =20 * In SmmBeepStatusCodeHandlerLib: +``` EFI_STATUS EFIAPI BeepStatusCodeReportWorker ( @@ -71,55 +83,72 @@ This library provide a function to get beep value from = status code. IN EFI_GUID *CallerId, IN EFI_STATUS_CODE_DATA *Data OPTIONAL ) +``` =20 * In BeepMapLib: +``` UINT32 EFIAPI GetBeepValueFromStatusCode ( IN EFI_STATUS_CODE_TYPE CodeType, IN EFI_STATUS_CODE_VALUE Value - ) + ) +``` =20 * In BeepLib: +``` VOID EFIAPI Beep ( IN UINT32 Value - ) + ) +``` =20 ## Configuration -* Link the library to StatusCodeHandler.efi. - Example: - MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerR= untimeDxe.inf { - - NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeDxe= BeepStatusCodeHandlerLib.inf - } - Refer to BeepDebugFeature.dsc for other example. -* Config PCD gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep. - In platform .dsc file, need to config the type of gBeepDebugFeaturePkgTo= kenSpaceGuid.PcdStatusCodeUseBeep. - Use PcdsFixedAtBuild to save binary size, and use PcdsDynamic if want to= enable/disable in runtime. -* Implemented platform's special BeepMapLib if needed. -* Provide the platform's special BeepLib. -* Make sure put the StatusCodeHandler.efi after the ReportStatusCodeRouter= .efi. +* Configure PCD gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep. + In board DSC file, the board developer needs to configure the type of gB= eepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep control desired. + [PcdsFixedAtBuild] is the feature default value as this has lowest size. + [PcdsDynamicExDefault] is the most common configuration as it provides d= ynamic control during debugging. +* Implemented board specific BeepMapLib if custom status code to beep code= mapping as needed. +* Provide the board specific BeepLib to perform beeps on the board specifi= c hardware. +```The default library does not cause any hardware to beep``` =20 ## Data Flows Status Code (ReportStatusCode) -> Beep Value (GetBeepValueFromStatusCode). =20 ## Control Flows -ReportStatusCode() -> BeepStatusCodeReportWorker() -> GetBeepValueFromStat= usCode() -> Beep() +ReportStatusCode () -> BeepStatusCodeReportWorker () -> GetBeepValueFromSt= atusCode () -> Beep () =20 ## Build Flows -There is not special build flows. +Standalone build +* build -a IA32 -a X64 -p Debugging\BeepDebugFeaturePkg\BeepDebugFeaturePk= g.dsc =20 +AdvanceFeaturePkg build +* build -a IA32 -a X64 -p AdvancedFeaturePkg/AdvancedFeaturePkg.dsc ## Test Point Results -Verify the post code shown is correct. +None =20 ## Functional Exit Criteria N/A =20 ## Feature Enabling Checklist -* Set the PCD gBeepDebugFeaturePkgTokenSpaceGuid.PcdStatusCodeUseBeep to T= RUE. -* Plug out all the memory, check can here the beep. +* Verify in board DSC file that gBeepDebugFeaturePkgTokenSpaceGuid.PcdBeep= DebugFeatureEnable set to TRUE +* Verify board specific BeepLib implemented and included in board DSC file. +* Verify that the board has a PlatformHookLib instance. There is a null l= ibrary implementation if needed +``` + PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePla= tformHookLibNull.inf +``` +* Verify that your board has the StatusCodeHandler components (PEIM or dri= ver) desired. +``` + Example: + MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerR= untimeDxe.inf { + + NULL|BeepDebugFeaturePkg/Library/BeepStatusCodeHandlerLib/RuntimeDxe= BeepStatusCodeHandlerLib.inf + } + There are default StatusCodeHandlers for PEI, RT, and SMM in BeepDebugFe= aturePkg/Include in PreMemory.fdf and PostMemory.fdf for use. But most boa= rds will already have these components and you will just want to add the ap= propriate *StatusCodeHandlerLib.inf to each component. +``` +* Build +* Remove all the memory from the system and verify audible beep is heard w= hen attempting to boot. =20 ## Common Optimizations -* Implemented platform's special BeepMapLib if needed. +N/A --=20 2.27.0.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 (#85844): https://edk2.groups.io/g/devel/message/85844 Mute This Topic: https://groups.io/mt/88549766/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-