[edk2] [PATCH 06/10] MdeModulePkg: Add ResetSystemLib instances that call core services

Ruiyu Ni posted 10 patches 6 years, 9 months ago
There is a newer version of this series
[edk2] [PATCH 06/10] MdeModulePkg: Add ResetSystemLib instances that call core services
Posted by Ruiyu Ni 6 years, 9 months ago
From: Michael D Kinney <michael.d.kinney@intel.com>

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 <liming.gao@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 .../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.<BR>
+  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 <PiDxe.h>
+
+#include <Library/ResetSystemLib.h>
+#include <Library/DebugLib.h>
+#include <Library/UefiRuntimeLib.h>
+
+/**
+  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.<BR>
+#
+#  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.<BR>
+//
+// 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.<BR>
+  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 <PiPei.h>
+
+#include <Library/ResetSystemLib.h>
+#include <Library/DebugLib.h>
+#include <Library/PeiServicesLib.h>
+
+/**
+  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.<BR>
+#
+#  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.<BR>
+//
+// 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."
+
-- 
2.15.1.windows.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH 06/10] MdeModulePkg: Add ResetSystemLib instances that call core services
Posted by Zeng, Star 6 years, 8 months ago
On 2018/2/2 14:45, Ruiyu Ni wrote:
> From: Michael D Kinney <michael.d.kinney@intel.com>
> 
> 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 <liming.gao@intel.com>
> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
> Cc: Star Zeng <star.zeng@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>

Could we remove DebugLib in *.inf and #include <Library/DebugLib.h> in 
*.c as the code seems not using any DebugLib interface at all?


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.<BR>
> +  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 <PiDxe.h>
> +
> +#include <Library/ResetSystemLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/UefiRuntimeLib.h>
> +
> +/**
> +  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.<BR>
> +#
> +#  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.<BR>
> +//
> +// 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.<BR>
> +  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 <PiPei.h>
> +
> +#include <Library/ResetSystemLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/PeiServicesLib.h>
> +
> +/**
> +  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.<BR>
> +#
> +#  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.<BR>
> +//
> +// 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
Re: [edk2] [PATCH 06/10] MdeModulePkg: Add ResetSystemLib instances that call core services
Posted by Ni, Ruiyu 6 years, 8 months ago
On 2/7/2018 8:20 PM, Zeng, Star wrote:
> On 2018/2/2 14:45, Ruiyu Ni wrote:
>> From: Michael D Kinney <michael.d.kinney@intel.com>
>>
>> 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 <liming.gao@intel.com>
>> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
>> Cc: Star Zeng <star.zeng@intel.com>
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> 
> Could we remove DebugLib in *.inf and #include <Library/DebugLib.h> 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.<BR>
>> +  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 <PiDxe.h>
>> +
>> +#include <Library/ResetSystemLib.h>
>> +#include <Library/DebugLib.h>
>> +#include <Library/UefiRuntimeLib.h>
>> +
>> +/**
>> +  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.<BR>
>> +#
>> +#  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.<BR>
>> +//
>> +// 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.<BR>
>> +  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 <PiPei.h>
>> +
>> +#include <Library/ResetSystemLib.h>
>> +#include <Library/DebugLib.h>
>> +#include <Library/PeiServicesLib.h>
>> +
>> +/**
>> +  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.<BR>
>> +#
>> +#  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.<BR>
>> +//
>> +// 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
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel