/** @file\r
Pei Core Reset System Support\r
- \r
-Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
EFI_STATUS\r
EFIAPI\r
PeiResetSystem (\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_PEI_RESET_PPI *ResetPpi;\r
+ EFI_STATUS Status;\r
+ EFI_PEI_RESET_PPI *ResetPpi;\r
\r
- Status = PeiServicesLocatePpi (\r
- &gEfiPeiResetPpiGuid, \r
- 0, \r
- NULL, \r
- (VOID **)&ResetPpi \r
- );\r
+ //\r
+ // Attempt to use newer ResetSystem2(). If this returns, then ResetSystem2()\r
+ // is not available.\r
+ //\r
+ PeiResetSystem2 (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
\r
//\r
- // LocatePpi returns EFI_NOT_FOUND on error\r
+ // Look for PEI Reset System PPI\r
//\r
+ Status = PeiServicesLocatePpi (\r
+ &gEfiPeiResetPpiGuid,\r
+ 0,\r
+ NULL,\r
+ (VOID **)&ResetPpi\r
+ );\r
if (!EFI_ERROR (Status)) {\r
return ResetPpi->ResetSystem (PeiServices);\r
- } \r
+ }\r
+\r
//\r
- // Report Status Code that Reset PPI is not available\r
+ // Report Status Code that Reset PPI is not available.\r
//\r
REPORT_STATUS_CODE (\r
EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
(EFI_SOFTWARE_PEI_CORE | EFI_SW_PS_EC_RESET_NOT_AVAILABLE)\r
);\r
+\r
+ //\r
+ // No reset PPIs are available yet.\r
+ //\r
return EFI_NOT_AVAILABLE_YET;\r
}\r
\r
\r
@param[in] ResetType The type of reset to perform.\r
@param[in] ResetStatus The status code for the reset.\r
- @param[in] DataSize The size, in bytes, of WatchdogData.\r
+ @param[in] DataSize The size, in bytes, of ResetData.\r
@param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or EfiResetShutdown\r
the data buffer starts with a Null-terminated string, optionally\r
followed by additional binary data. The string is a description\r
VOID\r
EFIAPI\r
PeiResetSystem2 (\r
- IN EFI_RESET_TYPE ResetType,\r
- IN EFI_STATUS ResetStatus,\r
- IN UINTN DataSize,\r
- IN VOID *ResetData OPTIONAL\r
+ IN EFI_RESET_TYPE ResetType,\r
+ IN EFI_STATUS ResetStatus,\r
+ IN UINTN DataSize,\r
+ IN VOID *ResetData OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_PEI_RESET2_PPI *Reset2Ppi;\r
+ EFI_STATUS Status;\r
+ EFI_PEI_RESET2_PPI *Reset2Ppi;\r
\r
+ //\r
+ // Look for PEI Reset System 2 PPI\r
+ //\r
Status = PeiServicesLocatePpi (\r
&gEfiPeiReset2PpiGuid,\r
0,\r
NULL,\r
(VOID **)&Reset2Ppi\r
);\r
-\r
if (!EFI_ERROR (Status)) {\r
Reset2Ppi->ResetSystem (ResetType, ResetStatus, DataSize, ResetData);\r
return;\r
(EFI_SOFTWARE_PEI_CORE | EFI_SW_PS_EC_RESET_NOT_AVAILABLE)\r
);\r
}\r
-\r