From 98978ffbf63ed054a7b69a2d9c21ce765d988018 Mon Sep 17 00:00:00 2001 From: Guo Mang Date: Thu, 22 Dec 2016 16:16:34 +0800 Subject: IntelFsp2WrapperPkg: Move to new location Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang --- .../FspWrapperNotifyDxe/FspWrapperNotifyDxe.c | 278 --------------------- .../FspWrapperNotifyDxe/FspWrapperNotifyDxe.inf | 67 ----- .../FspWrapperNotifyDxe/LoadBelow4G.c | 152 ----------- 3 files changed, 497 deletions(-) delete mode 100644 IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.c delete mode 100644 IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.inf delete mode 100644 IntelFsp2WrapperPkg/FspWrapperNotifyDxe/LoadBelow4G.c (limited to 'IntelFsp2WrapperPkg/FspWrapperNotifyDxe') diff --git a/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.c b/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.c deleted file mode 100644 index 0797f44a68..0000000000 --- a/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.c +++ /dev/null @@ -1,278 +0,0 @@ -/** @file - This driver will register two callbacks to call fsp's notifies. - - Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- 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 - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -typedef -EFI_STATUS -(EFIAPI * ADD_PERFORMANCE_RECORDS)( - IN CONST VOID *HobStart - ); - -struct _ADD_PERFORMANCE_RECORD_PROTOCOL { - ADD_PERFORMANCE_RECORDS AddPerformanceRecords; -}; - -typedef struct _ADD_PERFORMANCE_RECORD_PROTOCOL ADD_PERFORMANCE_RECORD_PROTOCOL; - -extern EFI_GUID gAddPerfRecordProtocolGuid; -extern EFI_GUID gFspHobGuid; -extern EFI_GUID gFspApiPerformanceGuid; - -EFI_EVENT mExitBootServicesEvent = NULL; - -/** - Relocate this image under 4G memory. - - @param ImageHandle Handle of driver image. - @param SystemTable Pointer to system table. - - @retval EFI_SUCCESS Image successfully relocated. - @retval EFI_ABORTED Failed to relocate image. - -**/ -EFI_STATUS -RelocateImageUnder4GIfNeeded ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ); - -/** - PciEnumerationComplete Protocol notification event handler. - - @param[in] Event Event whose notification function is being invoked. - @param[in] Context Pointer to the notification function's context. -**/ -VOID -EFIAPI -OnPciEnumerationComplete ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - NOTIFY_PHASE_PARAMS NotifyPhaseParams; - EFI_STATUS Status; - VOID *Interface; - - // - // Try to locate it because gEfiPciEnumerationCompleteProtocolGuid will trigger it once when registration. - // Just return if it is not found. - // - Status = gBS->LocateProtocol ( - &gEfiPciEnumerationCompleteProtocolGuid, - NULL, - &Interface - ); - if (EFI_ERROR (Status)) { - return ; - } - - NotifyPhaseParams.Phase = EnumInitPhaseAfterPciEnumeration; - PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, 0x6000); - Status = CallFspNotifyPhase (&NotifyPhaseParams); - PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, 0x607F); - - // - // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status - // - if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { - DEBUG((DEBUG_INFO, "FSP NotifyPhase AfterPciEnumeration requested reset 0x%x\n", Status)); - CallFspWrapperResetSystem ((UINT32)Status); - } - - if (Status != EFI_SUCCESS) { - DEBUG((DEBUG_ERROR, "FSP NotifyPhase AfterPciEnumeration failed, status: 0x%x\n", Status)); - } else { - DEBUG((DEBUG_INFO, "FSP NotifyPhase AfterPciEnumeration Success.\n")); - } -} - -/** - Notification function of EVT_GROUP_READY_TO_BOOT event group. - - This is a notification function registered on EVT_GROUP_READY_TO_BOOT event group. - When the Boot Manager is about to load and execute a boot option, it reclaims variable - storage if free size is below the threshold. - - @param[in] Event Event whose notification function is being invoked. - @param[in] Context Pointer to the notification function's context. - -**/ -VOID -EFIAPI -OnReadyToBoot ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - NOTIFY_PHASE_PARAMS NotifyPhaseParams; - EFI_STATUS Status; - ADD_PERFORMANCE_RECORD_PROTOCOL *AddPerfRecordInterface; - EFI_PEI_HOB_POINTERS Hob; - VOID **FspHobListPtr; - - gBS->CloseEvent (Event); - - NotifyPhaseParams.Phase = EnumInitPhaseReadyToBoot; - PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, 0x4000); - Status = CallFspNotifyPhase (&NotifyPhaseParams); - PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, 0x407F); - - // - // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status - // - if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { - DEBUG((DEBUG_INFO, "FSP NotifyPhase ReadyToBoot requested reset 0x%x\n", Status)); - CallFspWrapperResetSystem ((UINT32)Status); - } - - if (Status != EFI_SUCCESS) { - DEBUG((DEBUG_ERROR, "FSP NotifyPhase ReadyToBoot failed, status: 0x%x\n", Status)); - } else { - DEBUG((DEBUG_INFO, "FSP NotifyPhase ReadyToBoot Success.\n")); - } - - Status = gBS->LocateProtocol ( - &gAddPerfRecordProtocolGuid, - NULL, - (VOID**) &AddPerfRecordInterface - ); - if (EFI_ERROR (Status)) { - DEBUG((DEBUG_INFO, "gAddPerfRecordProtocolGuid - Locate protocol failed\n")); - return; - } else { - Hob.Raw = GetHobList (); - if (Hob.Raw != NULL) { - Hob.Raw = GetNextGuidHob (&gFspHobGuid, Hob.Raw); - FspHobListPtr = GET_GUID_HOB_DATA(Hob.Raw); - AddPerfRecordInterface->AddPerformanceRecords((VOID *)(UINTN)(((UINT32)(UINTN)*FspHobListPtr) & 0xFFFFFFFF)); - } - } -} - -/** - This stage is notified just before the firmware/Preboot environment transfers - management of all system resources to the OS or next level execution environment. - - @param Event Event whose notification function is being invoked. - @param Context Pointer to the notification function's context, which is - always zero in current implementation. - -**/ -VOID -EFIAPI -OnEndOfFirmware ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - NOTIFY_PHASE_PARAMS NotifyPhaseParams; - EFI_STATUS Status; - - gBS->CloseEvent (Event); - - NotifyPhaseParams.Phase = EnumInitPhaseEndOfFirmware; - PERF_START_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, 0x2000); - Status = CallFspNotifyPhase (&NotifyPhaseParams); - PERF_END_EX(&gFspApiPerformanceGuid, "EventRec", NULL, 0, 0x207F); - - // - // Reset the system if FSP API returned FSP_STATUS_RESET_REQUIRED status - // - if ((Status >= FSP_STATUS_RESET_REQUIRED_COLD) && (Status <= FSP_STATUS_RESET_REQUIRED_8)) { - DEBUG((DEBUG_INFO, "FSP NotifyPhase EndOfFirmware requested reset 0x%x\n", Status)); - CallFspWrapperResetSystem ((UINT32)Status); - } - - if (Status != EFI_SUCCESS) { - DEBUG((DEBUG_ERROR, "FSP NotifyPhase EndOfFirmware failed, status: 0x%x\n", Status)); - } else { - DEBUG((DEBUG_INFO, "FSP NotifyPhase EndOfFirmware Success.\n")); - } -} - -/** - Main entry for the FSP DXE module. - - This routine registers two callbacks to call fsp's notifies. - - @param[in] ImageHandle The firmware allocated handle for the EFI image. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The entry point is executed successfully. - @retval other Some error occurs when executing this entry point. - -**/ -EFI_STATUS -EFIAPI -FspWrapperNotifyDxeEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - EFI_EVENT ReadyToBootEvent; - VOID *Registration; - EFI_EVENT ProtocolNotifyEvent; - - // - // Load this driver's image to memory - // - Status = RelocateImageUnder4GIfNeeded (ImageHandle, SystemTable); - if (EFI_ERROR (Status)) { - return EFI_SUCCESS; - } - - ProtocolNotifyEvent = EfiCreateProtocolNotifyEvent ( - &gEfiPciEnumerationCompleteProtocolGuid, - TPL_CALLBACK, - OnPciEnumerationComplete, - NULL, - &Registration - ); - ASSERT (ProtocolNotifyEvent != NULL); - - Status = EfiCreateEventReadyToBootEx ( - TPL_CALLBACK, - OnReadyToBoot, - NULL, - &ReadyToBootEvent - ); - ASSERT_EFI_ERROR (Status); - - Status = gBS->CreateEventEx ( - EVT_NOTIFY_SIGNAL, - TPL_NOTIFY, - OnEndOfFirmware, - NULL, - &gEfiEventExitBootServicesGuid, - &mExitBootServicesEvent - ); - ASSERT_EFI_ERROR (Status); - - return EFI_SUCCESS; -} - diff --git a/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.inf b/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.inf deleted file mode 100644 index f851f6881d..0000000000 --- a/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/FspWrapperNotifyDxe.inf +++ /dev/null @@ -1,67 +0,0 @@ -## @file -# FSP DXE Module -# -# This driver will register two callbacks to call fsp's notifies. -# -# Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
-# -# 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 = FspWrapperNotifyDxe - FILE_GUID = AD61999A-507E-47E6-BA28-79CC609FA1A4 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - ENTRY_POINT = FspWrapperNotifyDxeEntryPoint - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 -# - -[Sources] - FspWrapperNotifyDxe.c - LoadBelow4G.c - -[Packages] - MdePkg/MdePkg.dec - IntelFsp2Pkg/IntelFsp2Pkg.dec - IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dec - -[LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib - DebugLib - BaseMemoryLib - UefiLib - FspWrapperApiLib - PeCoffLib - CacheMaintenanceLib - DxeServicesLib - PerformanceLib - HobLib - FspWrapperPlatformLib - -[Protocols] - gEfiPciEnumerationCompleteProtocolGuid ## CONSUMES - gAddPerfRecordProtocolGuid ## CONSUMES - -[Guids] - gFspApiPerformanceGuid ## CONSUMES ## GUID - gEfiEventExitBootServicesGuid ## CONSUMES ## Event - gFspHobGuid ## CONSUMES ## HOB - -[Pcd] - gIntelFsp2WrapperTokenSpaceGuid.PcdFspsBaseAddress ## CONSUMES - -[Depex] - TRUE diff --git a/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/LoadBelow4G.c b/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/LoadBelow4G.c deleted file mode 100644 index c073703a1b..0000000000 --- a/IntelFsp2WrapperPkg/FspWrapperNotifyDxe/LoadBelow4G.c +++ /dev/null @@ -1,152 +0,0 @@ -/** @file - -Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
- -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 -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - Relocate this image under 4G memory. - - @param ImageHandle Handle of driver image. - @param SystemTable Pointer to system table. - - @retval EFI_SUCCESS Image successfully relocated. - @retval EFI_ABORTED Failed to relocate image. - -**/ -EFI_STATUS -RelocateImageUnder4GIfNeeded ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - UINT8 *Buffer; - UINTN BufferSize; - EFI_HANDLE NewImageHandle; - UINTN Pages; - EFI_PHYSICAL_ADDRESS FfsBuffer; - PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; - VOID *Interface; - - // - // If it is already <4G, no need do relocate - // - if ((UINTN)RelocateImageUnder4GIfNeeded < 0xFFFFFFFF) { - return EFI_SUCCESS; - } - - // - // If locate gEfiCallerIdGuid success, it means 2nd entry. - // - Status = gBS->LocateProtocol (&gEfiCallerIdGuid, NULL, &Interface); - if (!EFI_ERROR (Status)) { - DEBUG ((DEBUG_INFO, "FspNotifyDxe - 2nd entry\n")); - return EFI_SUCCESS; - } - - DEBUG ((DEBUG_INFO, "FspNotifyDxe - 1st entry\n")); - - // - // Here we install a dummy handle - // - NewImageHandle = NULL; - Status = gBS->InstallProtocolInterface ( - &NewImageHandle, - &gEfiCallerIdGuid, - EFI_NATIVE_INTERFACE, - NULL - ); - ASSERT_EFI_ERROR (Status); - - // - // Reload image itself to <4G mem - // - Status = GetSectionFromAnyFv ( - &gEfiCallerIdGuid, - EFI_SECTION_PE32, - 0, - (VOID **) &Buffer, - &BufferSize - ); - ASSERT_EFI_ERROR (Status); - ImageContext.Handle = Buffer; - ImageContext.ImageRead = PeCoffLoaderImageReadFromMemory; - // - // Get information about the image being loaded - // - Status = PeCoffLoaderGetImageInfo (&ImageContext); - ASSERT_EFI_ERROR (Status); - if (ImageContext.SectionAlignment > EFI_PAGE_SIZE) { - Pages = EFI_SIZE_TO_PAGES ((UINTN) (ImageContext.ImageSize + ImageContext.SectionAlignment)); - } else { - Pages = EFI_SIZE_TO_PAGES ((UINTN) ImageContext.ImageSize); - } - FfsBuffer = 0xFFFFFFFF; - Status = gBS->AllocatePages ( - AllocateMaxAddress, - EfiBootServicesCode, - Pages, - &FfsBuffer - ); - ASSERT_EFI_ERROR (Status); - ImageContext.ImageAddress = (PHYSICAL_ADDRESS)(UINTN)FfsBuffer; - // - // Align buffer on section boundry - // - ImageContext.ImageAddress += ImageContext.SectionAlignment - 1; - ImageContext.ImageAddress &= ~((EFI_PHYSICAL_ADDRESS)(ImageContext.SectionAlignment - 1)); - // - // Load the image to our new buffer - // - Status = PeCoffLoaderLoadImage (&ImageContext); - ASSERT_EFI_ERROR (Status); - - // - // Relocate the image in our new buffer - // - Status = PeCoffLoaderRelocateImage (&ImageContext); - ASSERT_EFI_ERROR (Status); - - // - // Free the buffer allocated by ReadSection since the image has been relocated in the new buffer - // - gBS->FreePool (Buffer); - - // - // Flush the instruction cache so the image data is written before we execute it - // - InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize); - - DEBUG ((DEBUG_INFO, "Loading driver at 0x%08x EntryPoint=0x%08x\n", (UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.EntryPoint)); - Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)(ImageContext.EntryPoint)) (NewImageHandle, gST); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "Error: Image at 0x%08x start failed: %r\n", ImageContext.ImageAddress, Status)); - gBS->FreePages (FfsBuffer, Pages); - } - - // - // return error to unload >4G copy, if we already relocate itself to <4G. - // - return EFI_ALREADY_STARTED; -} -- cgit v1.2.3