From nobody Mon Dec 23 14:24:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1517553952427588.6843828135733; Thu, 1 Feb 2018 22:45:52 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 62926223AF816; Thu, 1 Feb 2018 22:40:03 -0800 (PST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 0F0822239364B for ; Thu, 1 Feb 2018 22:40:02 -0800 (PST) Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Feb 2018 22:45:40 -0800 Received: from ray-dev.ccr.corp.intel.com ([10.239.9.19]) by fmsmga008.fm.intel.com with ESMTP; 01 Feb 2018 22:45:39 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,447,1511856000"; d="scan'208";a="14900505" From: Ruiyu Ni To: edk2-devel@lists.01.org Date: Fri, 2 Feb 2018 14:45:26 +0800 Message-Id: <20180202064530.407028-7-ruiyu.ni@intel.com> X-Mailer: git-send-email 2.15.1.windows.2 In-Reply-To: <20180202064530.407028-1-ruiyu.ni@intel.com> References: <20180202064530.407028-1-ruiyu.ni@intel.com> Subject: [edk2] [PATCH 06/10] MdeModulePkg: Add ResetSystemLib instances that call core services X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michael D Kinney , Star Zeng , Liming Gao MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Michael D Kinney Add a PEI instance of ResetSystemLib that calls the ResetSystem2() service in the PEI Services Table. Add a DXE instance of ResetSystemLib that calls the ResetSystem() service in the UEFI Runtime Services Table. These 2 library instances should be the default ResetSystemLib mapping for most PEIMs and DXE drivers so all reset system requests go through the core service. Only the implementation of the core servies should use the platform specific instance of the ResetSystemLib that actually performs the hardware actions to reset the platform. Cc: Liming Gao Reviewed-by: Ruiyu Ni Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney --- .../Library/DxeResetSystemLib/DxeResetSystemLib.c | 100 +++++++++++++++++= ++++ .../DxeResetSystemLib/DxeResetSystemLib.inf | 40 +++++++++ .../DxeResetSystemLib/DxeResetSystemLib.uni | 21 +++++ .../Library/PeiResetSystemLib/PeiResetSystemLib.c | 100 +++++++++++++++++= ++++ .../PeiResetSystemLib/PeiResetSystemLib.inf | 40 +++++++++ .../PeiResetSystemLib/PeiResetSystemLib.uni | 21 +++++ 6 files changed, 322 insertions(+) create mode 100644 MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLi= b.c create mode 100644 MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLi= b.inf create mode 100644 MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLi= b.uni create mode 100644 MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLi= b.c create mode 100644 MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLi= b.inf create mode 100644 MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLi= b.uni diff --git a/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.c b/M= deModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.c new file mode 100644 index 0000000000..70ee1175d5 --- /dev/null +++ b/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.c @@ -0,0 +1,100 @@ +/** @file + DXE Reset System Library instance that calls gRT->ResetSystem(). + + Copyright (c) 2017, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e 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 IMP= LIED. + +**/ + +#include + +#include +#include +#include + +/** + This function causes a system-wide reset (cold reset), in which + all circuitry within the system returns to its initial state. This type = of reset=20 + is asynchronous to system operation and operates without regard to + cycle boundaries. + + If this function returns, it means that the system does not support cold= reset.=20 +**/ +VOID +EFIAPI +ResetCold ( + VOID + ) +{ + EfiResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL); +} + +/** + This function causes a system-wide initialization (warm reset), in which= all processors=20 + are set to their initial state. Pending cycles are not corrupted. + + If this function returns, it means that the system does not support warm= reset. +**/ +VOID +EFIAPI +ResetWarm ( + VOID + ) +{ + EfiResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL); +} + +/** + This function causes the system to enter a power state equivalent=20 + to the ACPI G2/S5 or G3 states. + + If this function returns, it means that the system does not support shut= down reset. +**/ +VOID +EFIAPI +ResetShutdown ( + VOID + ) +{ + EfiResetSystem (EfiResetShutdown, EFI_SUCCESS, 0, NULL); +} + +/** + This function causes the system to enter S3 and then wake up immediately. + + If this function returns, it means that the system does not support S3 f= eature. +**/ +VOID +EFIAPI +EnterS3WithImmediateWake ( + VOID + ) +{ +} + +/** + This function causes a systemwide reset. The exact type of the reset is + defined by the EFI_GUID that follows the Null-terminated Unicode string = passed + into ResetData. If the platform does not recognize the EFI_GUID in Reset= Data + the platform must pick a supported reset type to perform.The platform may + optionally log the parameters from any non-normal reset that occurs. + + @param[in] DataSize The size, in bytes, of ResetData. + @param[in] ResetData The data buffer starts with a Null-terminated str= ing, + followed by the EFI_GUID. +**/ +VOID +EFIAPI +ResetPlatformSpecific ( + IN UINTN DataSize, + IN VOID *ResetData + ) +{ + EfiResetSystem (EfiResetPlatformSpecific, EFI_SUCCESS, DataSize, ResetDa= ta); +} diff --git a/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf b= /MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf new file mode 100644 index 0000000000..f2e04cfd00 --- /dev/null +++ b/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf @@ -0,0 +1,40 @@ +## @file +# DXE Reset System Library instance that calls gRT->ResetSystem(). +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may b= e 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 IM= PLIED. +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D DxeResetSystemLib + MODULE_UNI_FILE =3D DxeResetSystemLib.uni + FILE_GUID =3D C2BDE4F6-65EE-440B-87B5-83ABF10EF45B + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D ResetSystemLib|DXE_CORE DXE_DRIVER DX= E_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC +# + +[Sources] + DxeResetSystemLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + DebugLib + UefiRuntimeLib + diff --git a/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.uni b= /MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.uni new file mode 100644 index 0000000000..7c51ce0713 --- /dev/null +++ b/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.uni @@ -0,0 +1,21 @@ +// /** @file +// DXE Reset System Library instance that calls gRT->ResetSystem(). +// +// DXE Reset System Library instance that calls gRT->ResetSystem(). +// +// Copyright (c) 2017, Intel Corporation. All rights reserved.
+// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the B= SD License +// which accompanies this distribution. The full text of the license may b= e 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 IM= PLIED. +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "DXE Reset System = Library instance that calls gRT->ResetSystem()" + +#string STR_MODULE_DESCRIPTION #language en-US "DXE Reset System = Library instance that calls gRT->ResetSystem()." + diff --git a/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.c b/M= deModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.c new file mode 100644 index 0000000000..b7e10110b0 --- /dev/null +++ b/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.c @@ -0,0 +1,100 @@ +/** @file + PEI Reset System Library instance that calls the ResetSystem2() PEI Serv= ice. + + Copyright (c) 2017, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e 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 IMP= LIED. + +**/ + +#include + +#include +#include +#include + +/** + This function causes a system-wide reset (cold reset), in which + all circuitry within the system returns to its initial state. This type = of reset=20 + is asynchronous to system operation and operates without regard to + cycle boundaries. + + If this function returns, it means that the system does not support cold= reset.=20 +**/ +VOID +EFIAPI +ResetCold ( + VOID + ) +{ + PeiServicesResetSystem2 (EfiResetCold, EFI_SUCCESS, 0, NULL); +} + +/** + This function causes a system-wide initialization (warm reset), in which= all processors=20 + are set to their initial state. Pending cycles are not corrupted. + + If this function returns, it means that the system does not support warm= reset. +**/ +VOID +EFIAPI +ResetWarm ( + VOID + ) +{ + PeiServicesResetSystem2 (EfiResetWarm, EFI_SUCCESS, 0, NULL); +} + +/** + This function causes the system to enter a power state equivalent=20 + to the ACPI G2/S5 or G3 states. + + If this function returns, it means that the system does not support shut= down reset. +**/ +VOID +EFIAPI +ResetShutdown ( + VOID + ) +{ + PeiServicesResetSystem2 (EfiResetShutdown, EFI_SUCCESS, 0, NULL); +} + +/** + This function causes the system to enter S3 and then wake up immediately. + + If this function returns, it means that the system does not support S3 f= eature. +**/ +VOID +EFIAPI +EnterS3WithImmediateWake ( + VOID + ) +{ +} + +/** + This function causes a systemwide reset. The exact type of the reset is + defined by the EFI_GUID that follows the Null-terminated Unicode string = passed + into ResetData. If the platform does not recognize the EFI_GUID in Reset= Data + the platform must pick a supported reset type to perform.The platform may + optionally log the parameters from any non-normal reset that occurs. + + @param[in] DataSize The size, in bytes, of ResetData. + @param[in] ResetData The data buffer starts with a Null-terminated str= ing, + followed by the EFI_GUID. +**/ +VOID +EFIAPI +ResetPlatformSpecific ( + IN UINTN DataSize, + IN VOID *ResetData + ) +{ + PeiServicesResetSystem2 (EfiResetPlatformSpecific, EFI_SUCCESS, DataSize= , ResetData); +} diff --git a/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf b= /MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf new file mode 100644 index 0000000000..e82ec6b2b6 --- /dev/null +++ b/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf @@ -0,0 +1,40 @@ +## @file +# PEI Reset System Library instance that calls the ResetSystem2() PEI Ser= vice. +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may b= e 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 IM= PLIED. +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D PeiResetSystemLib + MODULE_UNI_FILE =3D PeiResetSystemLib.uni + FILE_GUID =3D 3198FF36-FC72-42E7-B98A-A080D823AFBF + MODULE_TYPE =3D PEIM + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D ResetSystemLib|PEI_CORE PEIM + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC +# + +[Sources] + PeiResetSystemLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + DebugLib + PeiServicesLib + diff --git a/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.uni b= /MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.uni new file mode 100644 index 0000000000..ac996b3cc8 --- /dev/null +++ b/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.uni @@ -0,0 +1,21 @@ +// /** @file +// PEI Reset System Library instance that calls the ResetSystem2() PEI Ser= vice. +// +// PEI Reset System Library instance that calls the ResetSystem2() PEI Ser= vice. +// +// Copyright (c) 2017, Intel Corporation. All rights reserved.
+// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the B= SD License +// which accompanies this distribution. The full text of the license may b= e 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 IM= PLIED. +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "PEI Reset System = Library instance that calls the ResetSystem2() PEI Service" + +#string STR_MODULE_DESCRIPTION #language en-US "PEI Reset System = Library instance that calls the ResetSystem2() PEI Service." + --=20 2.15.1.windows.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel