From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.65; helo=mga03.intel.com; envelope-from=zhichao.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DD3DD211DE8FA for ; Thu, 14 Mar 2019 22:18:35 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Mar 2019 22:18:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,481,1544515200"; d="scan'208";a="152540207" Received: from gaozhic-mobl.ccr.corp.intel.com ([10.239.196.107]) by fmsmga004.fm.intel.com with ESMTP; 14 Mar 2019 22:18:34 -0700 From: Zhichao Gao To: edk2-devel@lists.01.org Cc: Jian J Wang , Hao Wu , Ray Ni , Star Zeng , Liming Gao , Sean Brogan , Michael Turner , Bret Barkelew Date: Fri, 15 Mar 2019 13:17:47 +0800 Message-Id: <20190315051749.6564-16-zhichao.gao@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: <20190315051749.6564-1-zhichao.gao@intel.com> References: <20190315051749.6564-1-zhichao.gao@intel.com> Subject: [PATCH V2 15/17] MdeModulePkg: Add a PEIM to install Debug PPI X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Mar 2019 05:18:36 -0000 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1395 Add a PEIM to install Debug PPI so that PEI debug library instance can locate gEdkiiDebugPpiGuid to implement the debug functions. Using this PPI can reduce the size of PEIMs which consume the debug library. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Zhichao Gao Cc: Jian J Wang Cc: Hao Wu Cc: Ray Ni Cc: Star Zeng Cc: Liming Gao Cc: Sean Brogan Cc: Michael Turner Cc: Bret Barkelew --- .../Universal/DebugServicePei/DebugService.c | 68 ++++++++++++++++++++++ .../Universal/DebugServicePei/DebugService.h | 64 ++++++++++++++++++++ .../Universal/DebugServicePei/DebugServicePei.c | 54 +++++++++++++++++ .../Universal/DebugServicePei/DebugServicePei.inf | 51 ++++++++++++++++ .../Universal/DebugServicePei/DebugServicePei.uni | 20 +++++++ 5 files changed, 257 insertions(+) create mode 100644 MdeModulePkg/Universal/DebugServicePei/DebugService.c create mode 100644 MdeModulePkg/Universal/DebugServicePei/DebugService.h create mode 100644 MdeModulePkg/Universal/DebugServicePei/DebugServicePei.c create mode 100644 MdeModulePkg/Universal/DebugServicePei/DebugServicePei.inf create mode 100644 MdeModulePkg/Universal/DebugServicePei/DebugServicePei.uni diff --git a/MdeModulePkg/Universal/DebugServicePei/DebugService.c b/MdeModulePkg/Universal/DebugServicePei/DebugService.c new file mode 100644 index 0000000000..24bc2df797 --- /dev/null +++ b/MdeModulePkg/Universal/DebugServicePei/DebugService.c @@ -0,0 +1,68 @@ +/** @file + Debug services instances for PEI phase. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include + +/** + Print a debug message to debug output device if the specified error level + is enabled. + + @param[in] PeiServices The pointer to the PEI Services Table. + @param[in] This The pointer to this instance of EDKII_DEBUG_PPI + @param[in] ErrorLevel The error level of the debug message. + @param[in] Format Format string for the debug message to print. + @param[in] VaListMarker VA_LIST marker for the variable argument list. + +**/ +VOID +EFIAPI +PeiDebugVPrint( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EDKII_DEBUG_PPI *This, + IN UINTN ErrorLevel, + IN CONST CHAR8 *Format, + IN VA_LIST Marker + ) +{ + DebugVPrint(ErrorLevel, Format, Marker); +} + +/** + Print an assert message containing a filename, line number, and description. + This may be followed by a breakpoint or a dead loop. + + @param[in] PeiServices The pointer to the PEI Services Table. + @param[in] This The pointer to this instance of EDKII_DEBUG_PPI + @param[in] FileName The pointer to the name of the source file that + generated the assert condition. + @param[in] LineNumber The line number in the source file that generated + the assert condition + @param[in] Description The pointer to the description of the assert condition. + +**/ +VOID +EFIAPI +PeiDebugAssert( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EDKII_DEBUG_PPI *This, + IN CONST CHAR8 *FileName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description + ) +{ + DebugAssert(FileName, LineNumber, Description); +} + diff --git a/MdeModulePkg/Universal/DebugServicePei/DebugService.h b/MdeModulePkg/Universal/DebugServicePei/DebugService.h new file mode 100644 index 0000000000..f7a5c4320c --- /dev/null +++ b/MdeModulePkg/Universal/DebugServicePei/DebugService.h @@ -0,0 +1,64 @@ +/** @file + Header file of Debug services instances. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ +#ifndef __DEBUG_SERVICE_H__ +#define __DEBUG_SERVICE_H__ + +#include + +/** + Print a debug message to debug output device if the specified error level + is enabled. + + @param[in] PeiServices The pointer to the PEI Services Table. + @param[in] This The pointer to this instance of EDKII_DEBUG_PPI + @param[in] ErrorLevel The error level of the debug message. + @param[in] Format Format string for the debug message to print. + @param[in] VaListMarker VA_LIST marker for the variable argument list. + +**/ +VOID +EFIAPI +PeiDebugVPrint( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EDKII_DEBUG_PPI *This, + IN UINTN ErrorLevel, + IN CONST CHAR8 *Format, + IN VA_LIST Marker + ); + +/** + Prints an assert message containing a filename, line number, and description. + This may be followed by a breakpoint or a dead loop. + + @param[in] PeiServices The pointer to the PEI Services Table. + @param[in] This The pointer to this instance of EDKII_DEBUG_PPI + @param[in] FileName The pointer to the name of the source file that + generated the assert condition. + @param[in] LineNumber The line number in the source file that generated + the assert condition + @param[in] Description The pointer to the description of the assert condition. + +**/ +VOID +EFIAPI +PeiDebugAssert( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EDKII_DEBUG_PPI *This, + IN CONST CHAR8 *FileName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description + ); + +#endif diff --git a/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.c b/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.c new file mode 100644 index 0000000000..9c6f89faef --- /dev/null +++ b/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.c @@ -0,0 +1,54 @@ +/** @file + This driver installs gEdkiiPeiDebugLibDebugGuid PPI to provide + debug services for PEIMs. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include "DebugService.h" + +EDKII_DEBUG_PPI mDebugPpi = { + PeiDebugVPrint, + PeiDebugAssert +}; + +EFI_PEI_PPI_DESCRIPTOR mDebugServicePpi = { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gEdkiiDebugPpiGuid, + (VOID *)&mDebugPpi +}; + +/** + Entry point of Debug Service PEIM + + This funciton installs EDKII DEBUG PPI + + @param FileHandle Handle of the file being invoked. + @param PeiServices Describes the list of possible PEI Services. + + @retval EFI_SUCESS The entry point of Debug Service PEIM executes successfully. + @retval Others Some error occurs during the execution of this function. + +**/ +EFI_STATUS +EFIAPI +DebugSerivceInitialize ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + return PeiServicesInstallPpi (&mDebugServicePpi); +} + diff --git a/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.inf b/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.inf new file mode 100644 index 0000000000..f9563ed1b3 --- /dev/null +++ b/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.inf @@ -0,0 +1,51 @@ +## @file +# Debug services for PEI phase +# +# This module installs gEdkiiFaultTolerantWriteGuid PPI to inform the check for FTW last write data has been done. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = DebugServicePei + MODULE_UNI_FILE = DebugServicePei.uni + FILE_GUID = B73F81B9-1DFC-487C-824C-0509EE2B0128 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + + ENTRY_POINT = DebugSerivceInitialize + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + DebugServicePei.c + DebugService.c + DebugService.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + PeimEntryPoint + PeiServicesLib + DebugLib + +[Ppis] + gEdkiiDebugPpiGuid ## PRODUCE + +[Depex] + TRUE + diff --git a/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.uni b/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.uni new file mode 100644 index 0000000000..2ac1d997d0 --- /dev/null +++ b/MdeModulePkg/Universal/DebugServicePei/DebugServicePei.uni @@ -0,0 +1,20 @@ +///** @file +// This driver installs gEdkiiPeiDebugLibDebugGuid PPI to provide +// debug services for PEIMs. +// +// Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
+// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +//**/ + +#string STR_MODULE_ABSTRACT #language en-US "Provide debug services at PEI phase." + +#string STR_MODULE_DESCRIPTION #language en-US "It produces gEdkiiPeiDebugLibDebugGuid to print message to debug output device" + -- 2.16.2.windows.1