12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /** @file
- Reset scheduling library services
- Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <Library/DebugLib.h>
- #include <Uefi/UefiBaseType.h>
- #include <Uefi.h>
- #include <Pi/PiMultiPhase.h>
- #include <Pi/PiPeiCis.h>
- #include <Library/PeiServicesTablePointerLib.h>
- #include <Library/HobLib.h>
- #include <Private/Library/SiScheduleResetLib.h>
- #include <Private/SiScheduleResetHob.h>
- /**
- This function returns SiScheduleResetHob for library use
- **/
- SI_SCHEDULE_RESET_HOB *
- SiScheduleGetResetData (
- VOID
- );
- /**
- This function performs reset based on SiScheduleResetHob
- @retval BOOLEAN The function returns FALSE if no reset is required
- **/
- BOOLEAN
- SiScheduleResetPerformReset (
- VOID
- )
- {
- UINTN DataSize;
- SI_SCHEDULE_RESET_HOB *SiScheduleResetHob;
- if (!SiScheduleResetIsRequired ()) {
- return FALSE;
- }
- SiScheduleResetHob = SiScheduleGetResetData ();
- if (SiScheduleResetHob == NULL) {
- return TRUE;
- }
- DEBUG ((DEBUG_INFO, "SiScheduleResetPerformReset : Reset Type = 0x%x\n", SiScheduleResetHob->ResetType));
- if (SiScheduleResetHob->ResetType == EfiResetPlatformSpecific) {
- DataSize = sizeof (PCH_RESET_DATA);
- (*GetPeiServicesTablePointer ())->ResetSystem2 (SiScheduleResetHob->ResetType, EFI_SUCCESS, DataSize, &SiScheduleResetHob->ResetData);
- } else {
- (*GetPeiServicesTablePointer ())->ResetSystem2 (SiScheduleResetHob->ResetType, EFI_SUCCESS, 0, NULL);
- }
- //
- // Code should never reach here
- //
- ASSERT (FALSE);
- return TRUE;
- }
|