From 9da591867c0bad1abbe17a321dc5b16d95226c6a Mon Sep 17 00:00:00 2001 From: "Yao, Jiewen" Date: Thu, 23 Apr 2015 08:52:21 +0000 Subject: Update IntelFspPkg to support FSP1.1 -- Add BootLoaderTolumSize support -- Extend FspApiCallingCheck with ApiParam for BootLoaderTolumSize -- Rename all Bootloader to BootLoader as official name -- Rename Ucode to Microcode -- Remove FspSelfCheck API, because it is merged into SecPlatformInit -- Add GetFspVpdDataPointer() in FspCommonLib.h -- Document FspSecPlatformLib.h -- Reorg FSP_PLAT_DATA data structure to let it match FSP spec. -- Move helper function in FspSecCore to reduce platform enabling effort -- Fix LibraryClasses declaration in DEC file. -- Enhance PatchFv to check if it is valid FSP bin. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" Reviewed-by: "Ma, Maurice" Reviewed-by: "Rangarajan, Ravi P" Reviewed-by: "Mudusuru, Giri P" git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17196 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFspPkg/Include/Library/FspCommonLib.h | 15 ++++- IntelFspPkg/Include/Library/FspPlatformLib.h | 8 +-- IntelFspPkg/Include/Library/FspSecPlatformLib.h | 74 +++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 IntelFspPkg/Include/Library/FspSecPlatformLib.h (limited to 'IntelFspPkg/Include/Library') diff --git a/IntelFspPkg/Include/Library/FspCommonLib.h b/IntelFspPkg/Include/Library/FspCommonLib.h index e7d7b0271a..22db27708d 100644 --- a/IntelFspPkg/Include/Library/FspCommonLib.h +++ b/IntelFspPkg/Include/Library/FspCommonLib.h @@ -76,7 +76,7 @@ SetFspContinuationFuncParameter ( ); /** - This function changes the Bootloader return address in stack. + This function changes the BootLoader return address in stack. @param[in] ReturnAddress Address to return. @@ -88,7 +88,7 @@ SetFspApiReturnAddress ( ); /** - This function set the API status code returned to the bootloader. + This function set the API status code returned to the BootLoader. @param[in] ReturnStatus Status code to return. @@ -181,6 +181,17 @@ GetFspInfoHeader ( VOID ); +/** + This function gets the VPD data pointer. + + @return VpdDataRgnPtr VPD data pointer. +**/ +VOID * +EFIAPI +GetFspVpdDataPointer ( + VOID + ); + /** This function gets FSP API calling mode. diff --git a/IntelFspPkg/Include/Library/FspPlatformLib.h b/IntelFspPkg/Include/Library/FspPlatformLib.h index 51d296835e..23460983ec 100644 --- a/IntelFspPkg/Include/Library/FspPlatformLib.h +++ b/IntelFspPkg/Include/Library/FspPlatformLib.h @@ -28,7 +28,7 @@ FspGetSystemMemorySize ( ); /** - Migrate bootloader data before destroying CAR. + Migrate BootLoader data before destroying CAR. **/ VOID @@ -49,7 +49,7 @@ FspSetNewStackFrame ( /** This function transfer control to the ContinuationFunc passed in by the - bootloader. + BootLoader. **/ VOID @@ -59,8 +59,8 @@ FspInitDone ( ); /** - This function handle NotifyPhase API call from the bootloader. - It gives control back to the bootloader after it is handled. If the + This function handle NotifyPhase API call from the BootLoader. + It gives control back to the BootLoader after it is handled. If the Notification code is a ReadyToBoot event, this function will return and FSP continues the remaining execution until it reaches the DxeIpl. diff --git a/IntelFspPkg/Include/Library/FspSecPlatformLib.h b/IntelFspPkg/Include/Library/FspSecPlatformLib.h new file mode 100644 index 0000000000..c6ed43001d --- /dev/null +++ b/IntelFspPkg/Include/Library/FspSecPlatformLib.h @@ -0,0 +1,74 @@ +/** @file + + Copyright (c) 2015, 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. + +**/ + +#ifndef _FSP_SEC_PLATFORM_LIB_H_ +#define _FSP_SEC_PLATFORM_LIB_H_ + +/** + This function performs platform level initialization. + + This function must be in ASM file, because stack is not established yet. + This function is optional. If a library instance does not provide this function, the default empty one will be used. + + The callee should not use XMM6/XMM7. + The return address is saved in MM7. + + @retval in saved in EAX - 0 means platform initialization success. + other means platform initialization fail. +**/ +UINT32 +EFIAPI +SecPlatformInit ( + VOID + ); + +/** + This function loads Microcode. + + This function must be in ASM file, because stack is not established yet. + This function is optional. If a library instance does not provide this function, the default one will be used. + + The callee should not use XMM6/XMM7. + The return address is saved in MM7. + + @param TempRamInitParamPtr A data structure to hold microcode parameter. It is saved in ESP. + + @retval in saved in EAX - 0 means Microcode is loaded successfully. + other means Microcode is not loaded successfully. +**/ +UINT32 +EFIAPI +LoadMicrocode ( + IN FSP_TEMP_RAM_INIT_PARAMS *TempRamInitParamPtr + ); + +/** + This function initializes the CAR. + + This function must be in ASM file, because stack is not established yet. + + The callee should not use XMM6/XMM7. + The return address is saved in MM7. + + @param TempRamInitParamPtr A data structure to hold microcode parameter. It is saved in ESP. + + @retval in saved in EAX - 0 means CAR initialization success. + other means CAR initialization fail. +**/ +UINT32 +EFIAPI +SecCarInit ( + IN FSP_TEMP_RAM_INIT_PARAMS *TempRamInitParamPtr + ); + +#endif -- cgit v1.2.3