/** @file Source code file for Platform Init PEI module Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include #include #include #include #include #include EFI_STATUS EFIAPI PlatformInitEndOfPei ( IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi ); static EFI_PEI_NOTIFY_DESCRIPTOR mEndOfPeiNotifyList = { (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), &gEfiEndOfPeiSignalPpiGuid, (EFI_PEIM_NOTIFY_ENTRY_POINT) PlatformInitEndOfPei }; /** This function handles PlatformInit task at the end of PEI @param[in] PeiServices Pointer to PEI Services Table. @param[in] NotifyDesc Pointer to the descriptor for the Notification event that caused this function to execute. @param[in] Ppi Pointer to the PPI data associated with this function. @retval EFI_SUCCESS The function completes successfully @retval others **/ EFI_STATUS EFIAPI PlatformInitEndOfPei ( IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi ) { EFI_STATUS Status; Status = BoardInitAfterSiliconInit (); ASSERT_EFI_ERROR (Status); TestPointEndOfPeiSystemResourceFunctional (); TestPointEndOfPeiPciBusMasterDisabled (); Status = SetCacheMtrrAfterEndOfPei (); ASSERT_EFI_ERROR (Status); TestPointEndOfPeiMtrrFunctional (); return Status; } /** Platform Init PEI module entry point @param[in] FileHandle Not used. @param[in] PeiServices General purpose services available to every PEIM. @retval EFI_SUCCESS The function completes successfully @retval EFI_OUT_OF_RESOURCES Insufficient resources to create database **/ EFI_STATUS EFIAPI PlatformInitPostMemEntryPoint ( IN EFI_PEI_FILE_HANDLE FileHandle, IN CONST EFI_PEI_SERVICES **PeiServices ) { EFI_STATUS Status; Status = BoardInitBeforeSiliconInit (); ASSERT_EFI_ERROR (Status); // // Performing PlatformInitEndOfPei after EndOfPei PPI produced // Status = PeiServicesNotifyPpi (&mEndOfPeiNotifyList); return Status; }