From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.93; helo=mga11.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 CACC222361E45 for ; Thu, 8 Feb 2018 18:54:50 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Feb 2018 19:00:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,481,1511856000"; d="scan'208";a="16774392" Received: from ray-dev.ccr.corp.intel.com (HELO [10.239.9.37]) ([10.239.9.37]) by orsmga008.jf.intel.com with ESMTP; 08 Feb 2018 19:00:34 -0800 To: "Zeng, Star" , edk2-devel@lists.01.org Cc: Michael D Kinney , Liming Gao References: <20180202064530.407028-1-ruiyu.ni@intel.com> <20180202064530.407028-7-ruiyu.ni@intel.com> <1e4b5376-b2ad-0187-00b7-d45ac0ca4472@intel.com> From: "Ni, Ruiyu" Message-ID: Date: Fri, 9 Feb 2018 11:00:33 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <1e4b5376-b2ad-0187-00b7-d45ac0ca4472@intel.com> Subject: Re: [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: , X-List-Received-Date: Fri, 09 Feb 2018 02:54:51 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit On 2/7/2018 8:20 PM, Zeng, Star wrote: > On 2018/2/2 14:45, Ruiyu Ni wrote: >> 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 > > Could we remove DebugLib in *.inf and #include in > *.c as the code seems not using any DebugLib interface at all? Yes you are correct. I will remove DebugLib and inclusion of DebugLib.h from both library instances. > > > Thanks, > Star > >> --- >>   .../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/DxeResetSystemLib.c >>   create mode 100644 >> MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf >>   create mode 100644 >> MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.uni >>   create mode 100644 >> MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.c >>   create mode 100644 >> MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf >>   create mode 100644 >> MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.uni >> >> diff --git >> a/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.c >> b/MdeModulePkg/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 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 >> + >> +/** >> +  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 >> +  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. >> +**/ >> +VOID >> +EFIAPI >> +ResetCold ( >> +  VOID >> +  ) >> +{ >> +  EfiResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL); >> +} >> + >> +/** >> +  This function causes a system-wide initialization (warm reset), in >> which all processors >> +  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 >> +  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 feature. >> +**/ >> +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 >> ResetData >> +  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 string, >> +                         followed by the EFI_GUID. >> +**/ >> +VOID >> +EFIAPI >> +ResetPlatformSpecific ( >> +  IN UINTN   DataSize, >> +  IN VOID    *ResetData >> +  ) >> +{ >> +  EfiResetSystem (EfiResetPlatformSpecific, EFI_SUCCESS, DataSize, >> ResetData); >> +} >> 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 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                      = DxeResetSystemLib >> +  MODULE_UNI_FILE                = DxeResetSystemLib.uni >> +  FILE_GUID                      = C2BDE4F6-65EE-440B-87B5-83ABF10EF45B >> +  MODULE_TYPE                    = DXE_DRIVER >> +  VERSION_STRING                 = 1.0 >> +  LIBRARY_CLASS                  = ResetSystemLib|DXE_CORE DXE_DRIVER >> DXE_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           = 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 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 "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/MdeModulePkg/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 >> Service. >> + >> +  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 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 >> + >> +/** >> +  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 >> +  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. >> +**/ >> +VOID >> +EFIAPI >> +ResetCold ( >> +  VOID >> +  ) >> +{ >> +  PeiServicesResetSystem2 (EfiResetCold, EFI_SUCCESS, 0, NULL); >> +} >> + >> +/** >> +  This function causes a system-wide initialization (warm reset), in >> which all processors >> +  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 >> +  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 feature. >> +**/ >> +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 >> ResetData >> +  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 string, >> +                         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 Service. >> +# >> +#  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 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                      = PeiResetSystemLib >> +  MODULE_UNI_FILE                = PeiResetSystemLib.uni >> +  FILE_GUID                      = 3198FF36-FC72-42E7-B98A-A080D823AFBF >> +  MODULE_TYPE                    = PEIM >> +  VERSION_STRING                 = 1.0 >> +  LIBRARY_CLASS                  = ResetSystemLib|PEI_CORE PEIM >> + >> +# >> +# The following information is for reference only and not required by >> the build tools. >> +# >> +#  VALID_ARCHITECTURES           = 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 Service. >> +// >> +// PEI Reset System Library instance that calls the ResetSystem2() >> PEI Service. >> +// >> +// 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 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 "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." >> + >> > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel -- Thanks, Ray