/** @file Reset scheduling library services Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include #include /** 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; }