mirror of https://github.com/acidanthera/audk.git
Fix function comment to follows doxygen format.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5499 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e94358a3fe
commit
b1f6a7c636
|
@ -1,6 +1,11 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
This module provide function for ascertaining and updating the boot mode:
|
||||
GetBootMode()
|
||||
SetBootMode()
|
||||
See PI Speicifcation volume I, chapter 9 Boot Paths for addtional information
|
||||
on the boot mode.
|
||||
|
||||
Copyright (c) 2006 - 2008, 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
|
||||
|
@ -9,47 +14,28 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
BootMode.c
|
||||
|
||||
Abstract:
|
||||
|
||||
EFI PEI Core Boot Mode services
|
||||
|
||||
|
||||
|
||||
Revision History
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
/**
|
||||
This service enables PEIMs to ascertain the present value of the boot mode.
|
||||
|
||||
@param PeiServices The PEI core services table.
|
||||
@param BootMode A pointer to contain the value of the boot mode.
|
||||
|
||||
@retval EFI_SUCCESS The boot mode was returned successfully.
|
||||
@retval EFI_INVALID_PARAMETER BootMode is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiGetBootMode (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
OUT EFI_BOOT_MODE *BootMode
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
OUT EFI_BOOT_MODE *BootMode
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This service enables PEIMs to ascertain the present value of the boot mode.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
BootMode - A pointer to contain the value of the boot mode.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - The boot mode was returned successfully.
|
||||
EFI_INVALID_PARAMETER - BootMode is NULL.
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;
|
||||
|
||||
|
||||
|
@ -68,28 +54,22 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
This service enables PEIMs to update the boot mode variable.
|
||||
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param BootMode - The value of the boot mode to set.
|
||||
|
||||
@return EFI_SUCCESS - The value was successfully updated
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiSetBootMode (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_BOOT_MODE BootMode
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This service enables PEIMs to update the boot mode variable.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
BootMode - The value of the boot mode to set.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - The value was successfully updated
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
/** @file
|
||||
PEI Dispatcher Dependency Evaluator
|
||||
|
||||
This routine evaluates a dependency expression (DEPENDENCY_EXPRESSION) to determine
|
||||
if a driver can be scheduled for execution. The criteria for
|
||||
schedulability is that the dependency expression is satisfied.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
|
@ -9,47 +14,30 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
dependency.c
|
||||
|
||||
Abstract:
|
||||
|
||||
PEI Dispatcher Dependency Evaluator
|
||||
|
||||
This routine evaluates a dependency expression (DEPENDENCY_EXPRESSION) to determine
|
||||
if a driver can be scheduled for execution. The criteria for
|
||||
schedulability is that the dependency expression is satisfied.
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
#include "dependency.h"
|
||||
|
||||
STATIC
|
||||
BOOLEAN
|
||||
IsPpiInstalled (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EVAL_STACK_ENTRY *Stack
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
/**
|
||||
|
||||
This routine determines if a PPI has been installed.
|
||||
The truth value of a GUID is determined by if the PPI has
|
||||
been published and can be queried from the PPI database.
|
||||
|
||||
Arguments:
|
||||
PeiServices - The PEI core services table.
|
||||
Stack - Reference to EVAL_STACK_ENTRY that contains PPI GUID to check
|
||||
|
||||
Returns:
|
||||
@param PeiServices The PEI core services table.
|
||||
@param Stack Reference to EVAL_STACK_ENTRY that contains PPI GUID to check
|
||||
|
||||
True if the PPI is already installed.
|
||||
False if the PPI has yet to be installed.
|
||||
@retval TRUE if the PPI is already installed.
|
||||
@retval FALSE if the PPI has yet to be installed.
|
||||
|
||||
--*/
|
||||
**/
|
||||
BOOLEAN
|
||||
IsPpiInstalled (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EVAL_STACK_ENTRY *Stack
|
||||
)
|
||||
{
|
||||
VOID *PeiInstance;
|
||||
EFI_STATUS Status;
|
||||
|
@ -86,15 +74,7 @@ Returns:
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN
|
||||
PeimDispatchReadiness (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN VOID *DependencyExpression
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
/**
|
||||
|
||||
This is the POSTFIX version of the dependency evaluator. When a
|
||||
PUSH [PPI GUID] is encountered, a pointer to the GUID is stored on
|
||||
|
@ -103,22 +83,22 @@ Routine Description:
|
|||
some time savings as not all PPIs must be checked for certain
|
||||
operation types (AND, OR).
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - Calling context.
|
||||
@param PeiServices Calling context.
|
||||
@param DependencyExpression Pointer to a dependency expression. The Grammar adheres to
|
||||
the BNF described above and is stored in postfix notation.
|
||||
|
||||
DependencyExpression - Pointer to a dependency expression. The Grammar adheres to
|
||||
the BNF described above and is stored in postfix notation.
|
||||
Returns:
|
||||
@retval TRUE if it is a well-formed Grammar
|
||||
@retval FALSE if the dependency expression overflows the evaluation stack
|
||||
if the dependency expression underflows the evaluation stack
|
||||
if the dependency expression is not a well-formed Grammar.
|
||||
|
||||
Status = EFI_SUCCESS if it is a well-formed Grammar
|
||||
EFI_INVALID_PARAMETER if the dependency expression overflows
|
||||
the evaluation stack
|
||||
EFI_INVALID_PARAMETER if the dependency expression underflows
|
||||
the evaluation stack
|
||||
EFI_INVALID_PARAMETER if the dependency expression is not a
|
||||
well-formed Grammar.
|
||||
--*/
|
||||
**/
|
||||
BOOLEAN
|
||||
PeimDispatchReadiness (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN VOID *DependencyExpression
|
||||
)
|
||||
{
|
||||
DEPENDENCY_EXPRESSION_OPERAND *Iterator;
|
||||
EVAL_STACK_ENTRY *StackPtr;
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
This module contains data specific to dependency expressions
|
||||
and local function prototypes.
|
||||
|
||||
Copyright (c) 2006 - 2008, 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
|
||||
|
@ -9,15 +11,6 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
dependency.h
|
||||
|
||||
Abstract:
|
||||
|
||||
This module contains data specific to dependency expressions
|
||||
and local function prototypes.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _PEI_DEPENDENCY_H_
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
EFI PEI Core dispatch services
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,23 +10,13 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
Dispatcher.c
|
||||
|
||||
Abstract:
|
||||
|
||||
EFI PEI Core dispatch services
|
||||
|
||||
Revision History
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
//
|
||||
//CAR is filled with this initial value during SEC phase
|
||||
//
|
||||
///
|
||||
/// CAR is filled with this initial value during SEC phase
|
||||
///
|
||||
#define INIT_CAR_VALUE 0x5AA55AA5
|
||||
|
||||
typedef struct {
|
||||
|
@ -33,27 +24,21 @@ typedef struct {
|
|||
EFI_HANDLE Handle;
|
||||
} PEIM_FILE_HANDLE_EXTENDED_DATA;
|
||||
|
||||
/**
|
||||
|
||||
Discover all Peims and optional Apriori file in one FV. There is at most one
|
||||
Apriori file in one FV.
|
||||
|
||||
|
||||
@param Private - Pointer to the private data passed in from caller
|
||||
@param VolumeHandle - Fv handle.
|
||||
|
||||
**/
|
||||
VOID
|
||||
DiscoverPeimsAndOrderWithApriori (
|
||||
IN PEI_CORE_INSTANCE *Private,
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Discover all Peims and optional Apriori file in one FV. There is at most one
|
||||
Apriori file in one FV.
|
||||
|
||||
Arguments:
|
||||
|
||||
Private - Pointer to the private data passed in from caller
|
||||
VolumeHandle - Fv handle.
|
||||
Returns:
|
||||
|
||||
NONE
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_PEI_FV_HANDLE FileHandle;
|
||||
|
@ -187,6 +172,13 @@ Returns:
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Shadow PeiCore module from flash to installed memory.
|
||||
|
||||
@param PeiServices Pointer to PeiService table
|
||||
@param PrivateInMem PeiCore's private data structure
|
||||
|
||||
**/
|
||||
VOID*
|
||||
ShadowPeiCore(
|
||||
EFI_PEI_SERVICES **PeiServices,
|
||||
|
@ -226,32 +218,23 @@ ShadowPeiCore(
|
|||
return (VOID*) ((UINTN) EntryPoint + (UINTN) PeiCore - (UINTN) _ModuleEntryPoint);
|
||||
}
|
||||
|
||||
/**
|
||||
Conduct PEIM dispatch.
|
||||
|
||||
@param SecCoreData Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
@param Private Pointer to the private data passed in from caller
|
||||
|
||||
@retval EFI_SUCCESS - Successfully dispatched PEIM.
|
||||
@retval EFI_NOT_FOUND - The dispatch failed.
|
||||
|
||||
**/
|
||||
VOID
|
||||
PeiDispatcher (
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
|
||||
IN PEI_CORE_INSTANCE *Private
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Conduct PEIM dispatch.
|
||||
|
||||
Arguments:
|
||||
|
||||
SecCoreData - Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
PrivateData - Pointer to the private data passed in from caller
|
||||
DispatchData - Pointer to PEI_CORE_DISPATCH_DATA data.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - Successfully dispatched PEIM.
|
||||
EFI_NOT_FOUND - The dispatch failed.
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT32 Index1;
|
||||
|
@ -674,32 +657,25 @@ Returns:
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Initialize the Dispatcher's data members
|
||||
|
||||
@param PrivateData PeiCore's private data structure
|
||||
@param OldCoreData Old data from SecCore
|
||||
NULL if being run in non-permament memory mode.
|
||||
@param SecCoreData Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
InitializeDispatcherData (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData,
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize the Dispatcher's data members
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
OldCoreData - Pointer to old core data (before switching stack).
|
||||
NULL if being run in non-permament memory mode.
|
||||
SecCoreData - Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
|
||||
Returns:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
{
|
||||
if (OldCoreData == NULL) {
|
||||
PeiInitializeFv (PrivateData, SecCoreData);
|
||||
|
@ -708,29 +684,25 @@ Returns:
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
This routine parses the Dependency Expression, if available, and
|
||||
decides if the module can be executed.
|
||||
|
||||
|
||||
@param Private PeiCore's private data structure
|
||||
@param FileHandle PEIM's file handle
|
||||
@param PeimCount Peim count in all dispatched PEIMs.
|
||||
|
||||
@retval TRUE Can be dispatched
|
||||
@retval FALSE Cannot be dispatched
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
DepexSatisfied (
|
||||
IN PEI_CORE_INSTANCE *Private,
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
IN UINTN PeimCount
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine parses the Dependency Expression, if available, and
|
||||
decides if the module can be executed.
|
||||
|
||||
Arguments:
|
||||
PeiServices - The PEI Service Table
|
||||
CurrentPeimAddress - Address of the PEIM Firmware File under investigation
|
||||
|
||||
Returns:
|
||||
TRUE - Can be dispatched
|
||||
FALSE - Cannot be dispatched
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
VOID *DepexData;
|
||||
|
@ -768,11 +740,11 @@ Returns:
|
|||
This routine enable a PEIM to register itself to shadow when PEI Foundation
|
||||
discovery permanent memory.
|
||||
|
||||
@param FileHandle File handle of a PEIM.
|
||||
@param FileHandle File handle of a PEIM.
|
||||
|
||||
@retval EFI_NOT_FOUND The file handle doesn't point to PEIM itself.
|
||||
@retval EFI_ALREADY_STARTED Indicate that the PEIM has been registered itself.
|
||||
@retval EFI_SUCCESS Successfully to register itself.
|
||||
@retval EFI_NOT_FOUND The file handle doesn't point to PEIM itself.
|
||||
@retval EFI_ALREADY_STARTED Indicate that the PEIM has been registered itself.
|
||||
@retval EFI_SUCCESS Successfully to register itself.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
|
@ -803,18 +775,16 @@ PeiRegisterForShadow (
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Get Fv image from the FV type file, then install FV INFO ppi, Build FV hob.
|
||||
|
||||
@param PeiServices Pointer to the PEI Core Services Table.
|
||||
@param FileHandle File handle of a Fv type file.
|
||||
@param PeiServices Pointer to the PEI Core Services Table.
|
||||
@param FvFileHandle File handle of a Fv type file.
|
||||
@param AuthenticationState Pointer to attestation authentication state of image.
|
||||
|
||||
|
||||
@retval EFI_NOT_FOUND FV image can't be found.
|
||||
@retval EFI_SUCCESS Successfully to process it.
|
||||
@retval EFI_NOT_FOUND FV image can't be found.
|
||||
@retval EFI_SUCCESS Successfully to process it.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
Pei Core Firmware File System service routines.
|
||||
|
||||
Copyright (c) 2006 - 2007, 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
|
||||
|
@ -15,7 +16,7 @@ Module Name:
|
|||
|
||||
Abstract:
|
||||
|
||||
Pei Core Firmware File System service routines.
|
||||
|
||||
|
||||
**/
|
||||
|
||||
|
@ -31,28 +32,22 @@ STATIC EFI_PEI_NOTIFY_DESCRIPTOR mNotifyOnFvInfoList = {
|
|||
#define GET_OCCUPIED_SIZE(ActualSize, Alignment) \
|
||||
(ActualSize) + (((Alignment) - ((ActualSize) & ((Alignment) - 1))) & ((Alignment) - 1))
|
||||
|
||||
STATIC
|
||||
/**
|
||||
Returns the highest bit set of the State field
|
||||
|
||||
|
||||
@param ErasePolarity Erase Polarity as defined by EFI_FVB2_ERASE_POLARITY
|
||||
in the Attributes field.
|
||||
@param FfsHeader Pointer to FFS File Header.
|
||||
|
||||
@return Returns the highest bit in the State field
|
||||
|
||||
**/
|
||||
EFI_FFS_FILE_STATE
|
||||
GetFileState(
|
||||
IN UINT8 ErasePolarity,
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Returns the highest bit set of the State field
|
||||
|
||||
Arguments:
|
||||
|
||||
ErasePolarity - Erase Polarity as defined by EFI_FVB2_ERASE_POLARITY
|
||||
in the Attributes field.
|
||||
FfsHeader - Pointer to FFS File Header.
|
||||
|
||||
Returns:
|
||||
Returns the highest bit in the State field
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_FFS_FILE_STATE FileState;
|
||||
EFI_FFS_FILE_STATE HighestBit;
|
||||
|
@ -71,48 +66,37 @@ Returns:
|
|||
return HighestBit;
|
||||
}
|
||||
|
||||
STATIC
|
||||
/**
|
||||
Calculates the checksum of the header of a file.
|
||||
|
||||
@param FileHeader Pointer to FFS File Header.
|
||||
|
||||
@return Checksum of the header.
|
||||
The header is zero byte checksum.
|
||||
Zero means the header is good.
|
||||
Non-zero means the header is bad.
|
||||
**/
|
||||
UINT8
|
||||
CalculateHeaderChecksum (
|
||||
IN EFI_FFS_FILE_HEADER *FileHeader
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Calculates the checksum of the header of a file.
|
||||
|
||||
Arguments:
|
||||
|
||||
FileHeader - Pointer to FFS File Header.
|
||||
|
||||
Returns:
|
||||
Checksum of the header.
|
||||
|
||||
The header is zero byte checksum.
|
||||
- Zero means the header is good.
|
||||
- Non-zero means the header is bad.
|
||||
|
||||
|
||||
Bugbug: For PEI performance reason, we comments this code at this time.
|
||||
--*/
|
||||
{
|
||||
UINT8 *ptr;
|
||||
UINT8 *Ptr;
|
||||
UINTN Index;
|
||||
UINT8 Sum;
|
||||
|
||||
Sum = 0;
|
||||
ptr = (UINT8 *)FileHeader;
|
||||
Ptr = (UINT8 *)FileHeader;
|
||||
|
||||
for (Index = 0; Index < sizeof(EFI_FFS_FILE_HEADER) - 3; Index += 4) {
|
||||
Sum = (UINT8)(Sum + ptr[Index]);
|
||||
Sum = (UINT8)(Sum + ptr[Index+1]);
|
||||
Sum = (UINT8)(Sum + ptr[Index+2]);
|
||||
Sum = (UINT8)(Sum + ptr[Index+3]);
|
||||
Sum = (UINT8)(Sum + Ptr[Index]);
|
||||
Sum = (UINT8)(Sum + Ptr[Index+1]);
|
||||
Sum = (UINT8)(Sum + Ptr[Index+2]);
|
||||
Sum = (UINT8)(Sum + Ptr[Index+3]);
|
||||
}
|
||||
|
||||
for (; Index < sizeof(EFI_FFS_FILE_HEADER); Index++) {
|
||||
Sum = (UINT8)(Sum + ptr[Index]);
|
||||
Sum = (UINT8)(Sum + Ptr[Index]);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -127,7 +111,15 @@ Bugbug: For PEI performance reason, we comments this code at this time.
|
|||
return Sum;
|
||||
}
|
||||
|
||||
STATIC
|
||||
/**
|
||||
Find FV handler according some FileHandle in that FV.
|
||||
|
||||
@param FileHandle Handle of file image
|
||||
@param VolumeHandle Handle of FV
|
||||
|
||||
@return EDES_TODO: Add description for return value
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
PeiFileHandleToVolume (
|
||||
|
@ -151,7 +143,23 @@ PeiFileHandleToVolume (
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
Given the input file pointer, search for the next matching file in the
|
||||
FFS volume as defined by SearchType. The search starts from FileHeader inside
|
||||
the Firmware Volume defined by FwVolHeader.
|
||||
|
||||
|
||||
@param FvHandle Pointer to the FV header of the volume to search
|
||||
@param FileName File name
|
||||
@param SearchType Filter to find only files of this type.
|
||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||
@param FileHandle This parameter must point to a valid FFS volume.
|
||||
@param AprioriFile Pointer to AprioriFile image in this FV if has
|
||||
|
||||
@return EFI_NOT_FOUND No files matching the search criteria were found
|
||||
@retval EFI_SUCCESS Success to search given file
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
PeiFindFileEx (
|
||||
IN CONST EFI_PEI_FV_HANDLE FvHandle,
|
||||
|
@ -160,28 +168,6 @@ PeiFindFileEx (
|
|||
IN OUT EFI_PEI_FILE_HANDLE *FileHandle,
|
||||
IN OUT EFI_PEI_FV_HANDLE *AprioriFile OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the input file pointer, search for the next matching file in the
|
||||
FFS volume as defined by SearchType. The search starts from FileHeader inside
|
||||
the Firmware Volume defined by FwVolHeader.
|
||||
|
||||
Arguments:
|
||||
PeiServices - Pointer to the PEI Core Services Table.
|
||||
SearchType - Filter to find only files of this type.
|
||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||
FwVolHeader - Pointer to the FV header of the volume to search.
|
||||
This parameter must point to a valid FFS volume.
|
||||
FileHeader - Pointer to the current file from which to begin searching.
|
||||
This pointer will be updated upon return to reflect the file found.
|
||||
Flag - Indicator for if this is for PEI Dispath search
|
||||
|
||||
Returns:
|
||||
EFI_NOT_FOUND - No files matching the search criteria were found
|
||||
EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;
|
||||
EFI_FFS_FILE_HEADER **FileHeader;
|
||||
|
@ -297,25 +283,22 @@ Returns:
|
|||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Initialize PeiCore Fv List.
|
||||
|
||||
|
||||
@param PrivateData - Pointer to PEI_CORE_INSTANCE.
|
||||
@param SecCoreData - Pointer to EFI_SEC_PEI_HAND_OFF.
|
||||
|
||||
@return NONE
|
||||
|
||||
**/
|
||||
VOID
|
||||
PeiInitializeFv (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize PeiCore Fv List.
|
||||
|
||||
Arguments:
|
||||
PrivateData - Pointer to PEI_CORE_INSTANCE.
|
||||
SecCoreData - Pointer to EFI_SEC_PEI_HAND_OFF.
|
||||
|
||||
Returns:
|
||||
NONE
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
//
|
||||
|
@ -340,6 +323,17 @@ Returns:
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Process Firmware Volum Information once FvInfoPPI install.
|
||||
|
||||
|
||||
@param PeiServices - General purpose services available to every PEIM.
|
||||
@param NotifyDescriptor EDES_TODO: Add parameter description
|
||||
@param Ppi EDES_TODO: Add parameter description
|
||||
|
||||
@retval EFI_SUCCESS if the interface could be successfully installed
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FirmwareVolmeInfoPpiNotifyCallback (
|
||||
|
@ -347,22 +341,6 @@ FirmwareVolmeInfoPpiNotifyCallback (
|
|||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Process Firmware Volum Information once FvInfoPPI install.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - General purpose services available to every PEIM.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS if the interface could be successfully
|
||||
installed
|
||||
|
||||
--*/
|
||||
{
|
||||
UINT8 FvCount;
|
||||
EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *Fv;
|
||||
|
@ -434,6 +412,22 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Go through the file to search SectionType section,
|
||||
when meeting an encapsuled section.
|
||||
|
||||
|
||||
@param PeiServices - General purpose services available to every PEIM.
|
||||
SearchType - Filter to find only section of this type.
|
||||
@param SectionType EDES_TODO: Add parameter description
|
||||
@param Section - From where to search.
|
||||
@param SectionSize - The file size to search.
|
||||
@param OutputBuffer - Pointer to the section to search.
|
||||
|
||||
@return EFI_STATUS
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
PeiFfsProcessSection (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
|
@ -442,24 +436,6 @@ PeiFfsProcessSection (
|
|||
IN UINTN SectionSize,
|
||||
OUT VOID **OutputBuffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Go through the file to search SectionType section,
|
||||
when meeting an encapsuled section.
|
||||
|
||||
Arguments:
|
||||
PeiServices - General purpose services available to every PEIM.
|
||||
SearchType - Filter to find only section of this type.
|
||||
Section - From where to search.
|
||||
SectionSize - The file size to search.
|
||||
OutputBuffer - Pointer to the section to search.
|
||||
|
||||
Returns:
|
||||
EFI_STATUS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT32 SectionLength;
|
||||
|
@ -571,6 +547,21 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Given the input file pointer, search for the next matching section in the
|
||||
FFS volume.
|
||||
|
||||
|
||||
@param PeiServices Pointer to the PEI Core Services Table.
|
||||
@param SectionType Filter to find only sections of this type.
|
||||
@param FileHandle Pointer to the current file to search.
|
||||
@param SectionData Pointer to the Section matching SectionType in FfsFileHeader.
|
||||
NULL if section not found
|
||||
|
||||
@retval EFI_NOT_FOUND No files matching the search criteria were found
|
||||
@retval EFI_SUCCESS Success to find section data in given file
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsFindSectionData (
|
||||
|
@ -579,24 +570,6 @@ PeiFfsFindSectionData (
|
|||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
IN OUT VOID **SectionData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the input file pointer, search for the next matching section in the
|
||||
FFS volume.
|
||||
|
||||
Arguments:
|
||||
PeiServices - Pointer to the PEI Core Services Table.
|
||||
SearchType - Filter to find only sections of this type.
|
||||
FfsFileHeader - Pointer to the current file to search.
|
||||
SectionData - Pointer to the Section matching SectionType in FfsFileHeader.
|
||||
- NULL if section not found
|
||||
|
||||
Returns:
|
||||
EFI_NOT_FOUND - No files matching the search criteria were found
|
||||
EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_FFS_FILE_HEADER *FfsFileHeader;
|
||||
UINT32 FileSize;
|
||||
|
@ -622,7 +595,22 @@ Returns:
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
Given the input file pointer, search for the next matching file in the
|
||||
FFS volume as defined by SearchType. The search starts from FileHeader inside
|
||||
the Firmware Volume defined by FwVolHeader.
|
||||
|
||||
|
||||
@param PeiServices Pointer to the PEI Core Services Table.
|
||||
@param SearchType Filter to find only files of this type.
|
||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||
@param VolumeHandle Pointer to the FV header of the volume to search.
|
||||
@param FileHandle Pointer to the current file from which to begin searching.
|
||||
This pointer will be updated upon return to reflect the file found.
|
||||
@retval EFI_NOT_FOUND No files matching the search criteria were found
|
||||
@retval EFI_SUCCESS Success to find next file in given volume
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsFindNextFile (
|
||||
|
@ -631,35 +619,22 @@ PeiFfsFindNextFile (
|
|||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
IN OUT EFI_PEI_FILE_HANDLE *FileHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the input file pointer, search for the next matching file in the
|
||||
FFS volume as defined by SearchType. The search starts from FileHeader inside
|
||||
the Firmware Volume defined by FwVolHeader.
|
||||
|
||||
Arguments:
|
||||
PeiServices - Pointer to the PEI Core Services Table.
|
||||
|
||||
SearchType - Filter to find only files of this type.
|
||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||
|
||||
FwVolHeader - Pointer to the FV header of the volume to search.
|
||||
This parameter must point to a valid FFS volume.
|
||||
|
||||
FileHeader - Pointer to the current file from which to begin searching.
|
||||
This pointer will be updated upon return to reflect the file found.
|
||||
|
||||
Returns:
|
||||
EFI_NOT_FOUND - No files matching the search criteria were found
|
||||
EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
return PeiFindFileEx (VolumeHandle, NULL, SearchType, FileHandle, NULL);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
search the firmware volumes by index
|
||||
|
||||
@param PeiServices The PEI core services table.
|
||||
@param Instance Instance of FV to find
|
||||
@param VolumeHandle Pointer to found Volume.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER FwVolHeader is NULL
|
||||
@retval EFI_SUCCESS Firmware volume instance successfully found.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFvFindNextVolume (
|
||||
|
@ -667,30 +642,6 @@ PeiFvFindNextVolume (
|
|||
IN UINTN Instance,
|
||||
IN OUT EFI_PEI_FV_HANDLE *VolumeHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Return the firmware volumes.
|
||||
|
||||
BugBug -- Move this to the location of this code to where the
|
||||
other FV and FFS support code lives.
|
||||
Also, update to use FindFV for instances #'s >= 1.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
Instance - Instance of FV to find
|
||||
FwVolHeader - Pointer to contain the data to return
|
||||
|
||||
Returns:
|
||||
Pointer to the Firmware Volume instance requested
|
||||
|
||||
EFI_INVALID_PARAMETER - FwVolHeader is NULL
|
||||
|
||||
EFI_SUCCESS - Firmware volume instance successfully found.
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *Private;
|
||||
|
||||
|
@ -709,6 +660,19 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Given the input VolumeHandle, search for the next matching name file.
|
||||
|
||||
|
||||
@param FileName - File name to search.
|
||||
@param VolumeHandle - The current FV to search.
|
||||
@param FileHandle - Pointer to the file matching name in VolumeHandle.
|
||||
- NULL if file not found
|
||||
|
||||
@return EFI_STATUS
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsFindFileByName (
|
||||
|
@ -716,22 +680,6 @@ PeiFfsFindFileByName (
|
|||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
OUT EFI_PEI_FILE_HANDLE *FileHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Given the input VolumeHandle, search for the next matching name file.
|
||||
|
||||
Arguments:
|
||||
|
||||
FileName - File name to search.
|
||||
VolumeHandle - The current FV to search.
|
||||
FileHandle - Pointer to the file matching name in VolumeHandle.
|
||||
- NULL if file not found
|
||||
Returns:
|
||||
EFI_STATUS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
if ((VolumeHandle == NULL) || (FileName == NULL) || (FileHandle == NULL)) {
|
||||
|
@ -744,26 +692,24 @@ Returns:
|
|||
return Status;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Returns information about a specific file.
|
||||
|
||||
|
||||
@param FileHandle - The handle to file.
|
||||
@param FileInfo - Pointer to the file information.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid FileHandle or FileInfo.
|
||||
@retval EFI_SUCCESS Success to collect file info.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsGetFileInfo (
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
OUT EFI_FV_FILE_INFO *FileInfo
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Collect information of given file.
|
||||
|
||||
Arguments:
|
||||
FileHandle - The handle to file.
|
||||
FileInfo - Pointer to the file information.
|
||||
|
||||
Returns:
|
||||
EFI_STATUS
|
||||
|
||||
--*/
|
||||
{
|
||||
UINT8 FileState;
|
||||
UINT8 ErasePolarity;
|
||||
|
@ -811,26 +757,22 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Collect information of given Fv Volume.
|
||||
|
||||
@param VolumeHandle - The handle to Fv Volume.
|
||||
@param VolumeInfo - The pointer to volume information.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER VolumeInfo is NULL
|
||||
@retval EFI_SUCCESS Success to collect fv info.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiFfsGetVolumeInfo (
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
OUT EFI_FV_INFO *VolumeInfo
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Collect information of given Fv Volume.
|
||||
|
||||
Arguments:
|
||||
VolumeHandle - The handle to Fv Volume.
|
||||
VolumeInfo - The pointer to volume information.
|
||||
|
||||
Returns:
|
||||
EFI_STATUS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_FIRMWARE_VOLUME_HEADER FwVolHeader;
|
||||
EFI_FIRMWARE_VOLUME_EXT_HEADER *FwVolExHeaderInfo;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
This module provide Hand-Off Block manupulation.
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,42 +10,29 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
Hob.c
|
||||
|
||||
Abstract:
|
||||
|
||||
EFI PEI Core HOB services
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
/**
|
||||
|
||||
Gets the pointer to the HOB List.
|
||||
|
||||
|
||||
@param PeiServices The PEI core services table.
|
||||
@param HobList Pointer to the HOB List.
|
||||
|
||||
@retval EFI_SUCCESS Get the pointer of HOB List
|
||||
@retval EFI_NOT_AVAILABLE_YET the HOB List is not yet published
|
||||
@retval EFI_INVALID_PARAMETER HobList is NULL (in debug mode)
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiGetHobList (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
IN OUT VOID **HobList
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Gets the pointer to the HOB List.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
HobList - Pointer to the HOB List.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - Get the pointer of HOB List
|
||||
EFI_NOT_AVAILABLE_YET - the HOB List is not yet published
|
||||
EFI_INVALID_PARAMETER - HobList is NULL (in debug mode)
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
|
||||
|
@ -68,6 +56,20 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Add a new HOB to the HOB List.
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param Type - Type of the new HOB.
|
||||
@param Length - Length of the new HOB to allocate.
|
||||
@param Hob - Pointer to the new HOB.
|
||||
|
||||
@return EFI_SUCCESS Success to create hob.
|
||||
@retval EFI_INVALID_PARAMETER if Hob is NULL
|
||||
@retval EFI_NOT_AVAILABLE_YET if HobList is still not available.
|
||||
@retval EFI_OUT_OF_RESOURCES if there is no more memory to grow the Hoblist.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiCreateHob (
|
||||
|
@ -76,27 +78,6 @@ PeiCreateHob (
|
|||
IN UINT16 Length,
|
||||
IN OUT VOID **Hob
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Add a new HOB to the HOB List.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
Type - Type of the new HOB.
|
||||
Length - Length of the new HOB to allocate.
|
||||
Hob - Pointer to the new HOB.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS
|
||||
- EFI_INVALID_PARAMETER if Hob is NULL
|
||||
- EFI_NOT_AVAILABLE_YET if HobList is still not available.
|
||||
- EFI_OUT_OF_RESOURCES if there is no more memory to grow the Hoblist.
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;
|
||||
|
@ -142,29 +123,23 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Builds a Handoff Information Table HOB
|
||||
|
||||
@param BootMode - Current Bootmode
|
||||
@param MemoryBegin - Start Memory Address.
|
||||
@param MemoryLength - Length of Memory.
|
||||
|
||||
@return EFI_SUCCESS Always success to initialize HOB.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
PeiCoreBuildHobHandoffInfoTable (
|
||||
IN EFI_BOOT_MODE BootMode,
|
||||
IN EFI_PHYSICAL_ADDRESS MemoryBegin,
|
||||
IN UINT64 MemoryLength
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Builds a Handoff Information Table HOB
|
||||
|
||||
Arguments:
|
||||
|
||||
BootMode - Current Bootmode
|
||||
MemoryBegin - Start Memory Address.
|
||||
MemoryLength - Length of Memory.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_HOB_HANDOFF_INFO_TABLE *Hob;
|
||||
EFI_HOB_GENERIC_HEADER *HobEnd;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
Pei Core Load Image Support
|
||||
|
||||
Copyright (c) 2006 - 2007, 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
|
||||
|
@ -9,37 +10,25 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
Image.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Pei Core Load Image Support
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
/*++
|
||||
/**
|
||||
Routine for loading file image.
|
||||
|
||||
Routine Description:
|
||||
@param PeiServices The PEI core services table.
|
||||
@param FileHandle Pointer to the FFS file header of the image.
|
||||
@param ImageAddressArg Pointer to PE/TE image.
|
||||
@param ImageSizeArg Size of PE/TE image.
|
||||
@param EntryPoint Pointer to entry point of specified image file for output.
|
||||
@param AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
Support routine for the PE/COFF Loader that reads a buffer from a PE/COFF file
|
||||
|
||||
Arguments:
|
||||
|
||||
FileHandle - The handle to the PE/COFF file
|
||||
FileOffset - The offset, in bytes, into the file to read
|
||||
ReadSize - The number of bytes to read from the file starting at FileOffset
|
||||
Buffer - A pointer to the buffer to read the data into.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - ReadSize bytes of data were read into Buffer from the PE/COFF file starting at FileOffset
|
||||
|
||||
--*/
|
||||
@retval EFI_SUCCESS - Image is successfully loaded.
|
||||
@retval EFI_NOT_FOUND - Fail to locate necessary PPI
|
||||
@retval Others - Fail to load file.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
PeiLoadImageLoadImage (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
|
@ -49,30 +38,21 @@ PeiLoadImageLoadImage (
|
|||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
|
||||
OUT UINT32 *AuthenticationState
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Routine for loading file image.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
FileHandle - Pointer to the FFS file header of the image.
|
||||
ImageAddressArg - Pointer to PE/TE image.
|
||||
ImageSizeArg - Size of PE/TE image.
|
||||
EntryPoint - Pointer to entry point of specified image file for output.
|
||||
AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS - Image is successfully loaded.
|
||||
EFI_NOT_FOUND - Fail to locate necessary PPI
|
||||
Others - Fail to load file.
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
/**
|
||||
The wrapper function of PeiLoadImageLoadImage().
|
||||
|
||||
@param This - Pointer to EFI_PEI_LOAD_FILE_PPI.
|
||||
@param FileHandle - Pointer to the FFS file header of the image.
|
||||
@param ImageAddressArg - Pointer to PE/TE image.
|
||||
@param ImageSizeArg - Size of PE/TE image.
|
||||
@param EntryPoint - Pointer to entry point of specified image file for output.
|
||||
@param AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
@return Status of PeiLoadImageLoadImage().
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiLoadImageLoadImageWrapper (
|
||||
|
@ -83,27 +63,6 @@ PeiLoadImageLoadImageWrapper (
|
|||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
|
||||
OUT UINT32 *AuthenticationState
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
The wrapper function of PeiLoadImageLoadImage().
|
||||
|
||||
Arguments:
|
||||
|
||||
This - Pointer to EFI_PEI_LOAD_FILE_PPI.
|
||||
PeiServices - The PEI core services table.
|
||||
FileHandle - Pointer to the FFS file header of the image.
|
||||
ImageAddressArg - Pointer to PE/TE image.
|
||||
ImageSizeArg - Size of PE/TE image.
|
||||
EntryPoint - Pointer to entry point of specified image file for output.
|
||||
AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_STATUS.
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
STATIC EFI_PEI_LOAD_FILE_PPI mPeiLoadImagePpi = {
|
||||
|
@ -117,6 +76,19 @@ STATIC EFI_PEI_PPI_DESCRIPTOR gPpiLoadFilePpiList = {
|
|||
&mPeiLoadImagePpi
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Support routine for the PE/COFF Loader that reads a buffer from a PE/COFF file
|
||||
|
||||
|
||||
@param FileHandle - The handle to the PE/COFF file
|
||||
@param FileOffset - The offset, in bytes, into the file to read
|
||||
@param ReadSize - The number of bytes to read from the file starting at FileOffset
|
||||
@param Buffer - A pointer to the buffer to read the data into.
|
||||
|
||||
@return EFI_SUCCESS - ReadSize bytes of data were read into Buffer from the PE/COFF file starting at FileOffset
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiImageRead (
|
||||
|
@ -125,24 +97,6 @@ PeiImageRead (
|
|||
IN OUT UINTN *ReadSize,
|
||||
OUT VOID *Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Support routine for the PE/COFF Loader that reads a buffer from a PE/COFF file
|
||||
|
||||
Arguments:
|
||||
|
||||
FileHandle - The handle to the PE/COFF file
|
||||
FileOffset - The offset, in bytes, into the file to read
|
||||
ReadSize - The number of bytes to read from the file starting at FileOffset
|
||||
Buffer - A pointer to the buffer to read the data into.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - ReadSize bytes of data were read into Buffer from the PE/COFF file starting at FileOffset
|
||||
|
||||
--*/
|
||||
{
|
||||
CHAR8 *Destination8;
|
||||
CHAR8 *Source8;
|
||||
|
@ -158,27 +112,19 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Support routine to return the Image Read.
|
||||
|
||||
@param ImageContext - The context of the image being loaded
|
||||
|
||||
@retval EFI_SUCCESS - If Image function location is found
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
GetImageReadFunction (
|
||||
IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Support routine to return the Image Read
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - PEI Services Table
|
||||
|
||||
ImageContext - The context of the image being loaded
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - If Image function location is found
|
||||
|
||||
--*/
|
||||
{
|
||||
VOID* MemoryBuffer;
|
||||
|
||||
|
@ -192,7 +138,20 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
STATIC
|
||||
/**
|
||||
|
||||
Loads and relocates a PE/COFF image into memory.
|
||||
|
||||
|
||||
@param Pe32Data - The base address of the PE/COFF file that is to be loaded and relocated
|
||||
@param ImageAddress - The base address of the relocated PE/COFF image
|
||||
@param ImageSize - The size of the relocated PE/COFF image
|
||||
@param EntryPoint - The entry point of the relocated PE/COFF image
|
||||
|
||||
@retval EFI_SUCCESS The file was loaded and relocated
|
||||
@retval EFI_OUT_OF_RESOURCES There was not enough memory to load and relocate the PE/COFF file
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
LoadAndRelocatePeCoffImage (
|
||||
IN VOID *Pe32Data,
|
||||
|
@ -200,29 +159,6 @@ LoadAndRelocatePeCoffImage (
|
|||
OUT UINT64 *ImageSize,
|
||||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Loads and relocates a PE/COFF image into memory.
|
||||
|
||||
Arguments:
|
||||
|
||||
Pe32Data - The base address of the PE/COFF file that is to be loaded and relocated
|
||||
|
||||
ImageAddress - The base address of the relocated PE/COFF image
|
||||
|
||||
ImageSize - The size of the relocated PE/COFF image
|
||||
|
||||
EntryPoint - The entry point of the relocated PE/COFF image
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - The file was loaded and relocated
|
||||
|
||||
EFI_OUT_OF_RESOURCES - There was not enough memory to load and relocate the PE/COFF file
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;
|
||||
|
@ -286,6 +222,21 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Routine for loading file image.
|
||||
|
||||
@param PeiServices The PEI core services table.
|
||||
@param FileHandle Pointer to the FFS file header of the image.
|
||||
@param ImageAddressArg Pointer to PE/TE image.
|
||||
@param ImageSizeArg Size of PE/TE image.
|
||||
@param EntryPoint Pointer to entry point of specified image file for output.
|
||||
@param AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
@retval EFI_SUCCESS - Image is successfully loaded.
|
||||
@retval EFI_NOT_FOUND - Fail to locate necessary PPI
|
||||
@retval Others - Fail to load file.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
PeiLoadImageLoadImage (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
|
@ -295,28 +246,6 @@ PeiLoadImageLoadImage (
|
|||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
|
||||
OUT UINT32 *AuthenticationState
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Routine for loading file image.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
FileHandle - Pointer to the FFS file header of the image.
|
||||
ImageAddressArg - Pointer to PE/TE image.
|
||||
ImageSizeArg - Size of PE/TE image.
|
||||
EntryPoint - Pointer to entry point of specified image file for output.
|
||||
AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS - Image is successfully loaded.
|
||||
EFI_NOT_FOUND - Fail to locate necessary PPI
|
||||
Others - Fail to load file.
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
VOID *Pe32Data;
|
||||
|
@ -464,6 +393,19 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
The wrapper function of PeiLoadImageLoadImage().
|
||||
|
||||
@param This - Pointer to EFI_PEI_LOAD_FILE_PPI.
|
||||
@param FileHandle - Pointer to the FFS file header of the image.
|
||||
@param ImageAddressArg - Pointer to PE/TE image.
|
||||
@param ImageSizeArg - Size of PE/TE image.
|
||||
@param EntryPoint - Pointer to entry point of specified image file for output.
|
||||
@param AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
@return Status of PeiLoadImageLoadImage().
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiLoadImageLoadImageWrapper (
|
||||
|
@ -474,27 +416,6 @@ PeiLoadImageLoadImageWrapper (
|
|||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
|
||||
OUT UINT32 *AuthenticationState
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
The wrapper function of PeiLoadImageLoadImage().
|
||||
|
||||
Arguments:
|
||||
|
||||
This - Pointer to EFI_PEI_LOAD_FILE_PPI.
|
||||
PeiServices - The PEI core services table.
|
||||
FileHandle - Pointer to the FFS file header of the image.
|
||||
ImageAddressArg - Pointer to PE/TE image.
|
||||
ImageSizeArg - Size of PE/TE image.
|
||||
EntryPoint - Pointer to entry point of specified image file for output.
|
||||
AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_STATUS.
|
||||
|
||||
--*/
|
||||
{
|
||||
return PeiLoadImageLoadImage (
|
||||
GetPeiServicesTablePointer (),
|
||||
|
@ -506,6 +427,21 @@ Returns:
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Routine for load image file.
|
||||
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param FileHandle - Pointer to the FFS file header of the image.
|
||||
@param EntryPoint - Pointer to entry point of specified image file for output.
|
||||
@param AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
@retval EFI_SUCCESS - Image is successfully loaded.
|
||||
@retval EFI_NOT_FOUND - Fail to locate necessary PPI
|
||||
@retval Others - Fail to load file.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
PeiLoadImage (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
|
@ -513,26 +449,6 @@ PeiLoadImage (
|
|||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint,
|
||||
OUT UINT32 *AuthenticationState
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Routine for load image file.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
FileHandle - Pointer to the FFS file header of the image.
|
||||
EntryPoint - Pointer to entry point of specified image file for output.
|
||||
AuthenticationState - Pointer to attestation authentication state of image.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS - Image is successfully loaded.
|
||||
EFI_NOT_FOUND - Fail to locate necessary PPI
|
||||
Others - Fail to load file.
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS PpiStatus;
|
||||
EFI_STATUS Status;
|
||||
|
@ -585,27 +501,20 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Install Pei Load File PPI.
|
||||
|
||||
|
||||
@param PrivateData - Pointer to PEI_CORE_INSTANCE.
|
||||
@param OldCoreData - Pointer to PEI_CORE_INSTANCE.
|
||||
|
||||
**/
|
||||
VOID
|
||||
InitializeImageServices (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Install Pei Load File PPI.
|
||||
|
||||
Arguments:
|
||||
|
||||
PrivateData - Pointer to PEI_CORE_INSTANCE.
|
||||
OldCoreData - Pointer to PEI_CORE_INSTANCE.
|
||||
|
||||
Returns:
|
||||
|
||||
NONE.
|
||||
|
||||
--*/
|
||||
{
|
||||
if (OldCoreData == NULL) {
|
||||
//
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
EFI PEI Core memory services
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,45 +10,29 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
MemoryServices.c
|
||||
|
||||
Abstract:
|
||||
|
||||
EFI PEI Core memory services
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
/**
|
||||
|
||||
Initialize the memory services.
|
||||
|
||||
|
||||
@param PrivateData Add parameter description
|
||||
@param SecCoreData Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
@param OldCoreData Pointer to the PEI Core data.
|
||||
NULL if being run in non-permament memory mode.
|
||||
|
||||
**/
|
||||
VOID
|
||||
InitializeMemoryServices (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize the memory services.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
SecCoreData - Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
|
||||
OldCoreData - Pointer to the PEI Core data.
|
||||
NULL if being run in non-permament memory mode.
|
||||
|
||||
Returns:
|
||||
|
||||
None
|
||||
|
||||
--*/
|
||||
{
|
||||
|
||||
PrivateData->SwitchStackSignal = FALSE;
|
||||
|
@ -85,6 +70,18 @@ Returns:
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Install the permanent memory is now available.
|
||||
Creates HOB (PHIT and Stack).
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param MemoryBegin - Start of memory address.
|
||||
@param MemoryLength - Length of memory.
|
||||
|
||||
@return EFI_SUCCESS Always success.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiInstallPeiMemory (
|
||||
|
@ -92,24 +89,6 @@ PeiInstallPeiMemory (
|
|||
IN EFI_PHYSICAL_ADDRESS MemoryBegin,
|
||||
IN UINT64 MemoryLength
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Install the permanent memory is now available.
|
||||
Creates HOB (PHIT and Stack).
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
MemoryBegin - Start of memory address.
|
||||
MemoryLength - Length of memory.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
|
||||
|
@ -125,6 +104,24 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Memory allocation service on permanent memory,
|
||||
not usable prior to the memory installation.
|
||||
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param MemoryType - Type of memory to allocate.
|
||||
@param Pages - Number of pages to allocate.
|
||||
@param Memory - Pointer of memory allocated.
|
||||
|
||||
@retval EFI_SUCCESS The allocation was successful
|
||||
@retval EFI_INVALID_PARAMETER Only AllocateAnyAddress is supported.
|
||||
@retval EFI_NOT_AVAILABLE_YET Called with permanent memory not available
|
||||
@retval EFI_OUT_OF_RESOURCES There is not enough HOB heap to satisfy the requirement
|
||||
to allocate the number of pages.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiAllocatePages (
|
||||
|
@ -133,29 +130,6 @@ PeiAllocatePages (
|
|||
IN UINTN Pages,
|
||||
OUT EFI_PHYSICAL_ADDRESS *Memory
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Memory allocation service on permanent memory,
|
||||
not usable prior to the memory installation.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
MemoryType - Type of memory to allocate.
|
||||
Pages - Number of pages to allocate.
|
||||
Memory - Pointer of memory allocated.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS The allocation was successful
|
||||
EFI_INVALID_PARAMETER Only AllocateAnyAddress is supported.
|
||||
EFI_NOT_AVAILABLE_YET Called with permanent memory not available
|
||||
EFI_OUT_OF_RESOURCES There is not enough HOB heap to satisfy the requirement
|
||||
to allocate the number of pages.
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
EFI_PEI_HOB_POINTERS Hob;
|
||||
|
@ -232,7 +206,20 @@ Returns:
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Memory allocation service on the CAR.
|
||||
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param Size - Amount of memory required
|
||||
@param Buffer - Address of pointer to the buffer
|
||||
|
||||
@retval EFI_SUCCESS The allocation was successful
|
||||
@retval EFI_OUT_OF_RESOURCES There is not enough heap to satisfy the requirement
|
||||
to allocate the requested size.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiAllocatePool (
|
||||
|
@ -240,27 +227,6 @@ PeiAllocatePool (
|
|||
IN UINTN Size,
|
||||
OUT VOID **Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Memory allocation service on the CAR.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
|
||||
Size - Amount of memory required
|
||||
|
||||
Buffer - Address of pointer to the buffer
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS The allocation was successful
|
||||
EFI_OUT_OF_RESOURCES There is not enough heap to satisfy the requirement
|
||||
to allocate the requested size.
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HOB_MEMORY_POOL *Hob;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
Pei Core Main Entry Point
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,21 +10,11 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
PeiMain.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Pei Core Main Entry Point
|
||||
|
||||
Revision History
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
static EFI_PEI_PPI_DESCRIPTOR mMemoryDiscoveredPpi = {
|
||||
STATIC EFI_PEI_PPI_DESCRIPTOR mMemoryDiscoveredPpi = {
|
||||
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
||||
&gEfiPeiMemoryDiscoveredPpiGuid,
|
||||
NULL
|
||||
|
@ -33,7 +24,7 @@ static EFI_PEI_PPI_DESCRIPTOR mMemoryDiscoveredPpi = {
|
|||
// Pei Core Module Variables
|
||||
//
|
||||
//
|
||||
static EFI_PEI_SERVICES mPS = {
|
||||
STATIC EFI_PEI_SERVICES gPs = {
|
||||
{
|
||||
PEI_SERVICES_SIGNATURE,
|
||||
PEI_SERVICES_REVISION,
|
||||
|
@ -74,6 +65,28 @@ static EFI_PEI_SERVICES mPS = {
|
|||
PeiRegisterForShadow
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
The entry routine to Pei Core, invoked by PeiMain during transition
|
||||
from SEC to PEI. After switching stack in the PEI core, it will restart
|
||||
with the old core data.
|
||||
|
||||
|
||||
@param SecCoreData Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
@param PpiList Points to a list of one or more PPI descriptors to be installed initially by the PEI core.
|
||||
An empty PPI list consists of a single descriptor with the end-tag
|
||||
EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. As part of its initialization
|
||||
phase, the PEI Foundation will add these SEC-hosted PPIs to its PPI database such
|
||||
that both the PEI Foundation and any modules can leverage the associated service
|
||||
calls and/or code in these early PPIs
|
||||
@param Data Pointer to old core data that is used to initialize the
|
||||
core's data areas.
|
||||
|
||||
@retval EFI_NOT_FOUND Never reach
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiCore (
|
||||
|
@ -81,34 +94,6 @@ PeiCore (
|
|||
IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList,
|
||||
IN VOID *Data
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
The entry routine to Pei Core, invoked by PeiMain during transition
|
||||
from SEC to PEI. After switching stack in the PEI core, it will restart
|
||||
with the old core data.
|
||||
|
||||
Arguments:
|
||||
|
||||
SecCoreData - Points to a data structure containing information about the PEI core's operating
|
||||
environment, such as the size and location of temporary RAM, the stack location and
|
||||
the BFV location.
|
||||
PpiList - Points to a list of one or more PPI descriptors to be installed initially by the PEI core.
|
||||
An empty PPI list consists of a single descriptor with the end-tag
|
||||
EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. As part of its initialization
|
||||
phase, the PEI Foundation will add these SEC-hosted PPIs to its PPI database such
|
||||
that both the PEI Foundation and any modules can leverage the associated service
|
||||
calls and/or code in these early PPIs
|
||||
Data - Pointer to old core data that is used to initialize the
|
||||
core's data areas.
|
||||
|
||||
Returns:
|
||||
|
||||
This function never returns
|
||||
EFI_NOT_FOUND - Never reach
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE PrivateData;
|
||||
EFI_STATUS Status;
|
||||
|
@ -144,14 +129,14 @@ Returns:
|
|||
CpuIo = (VOID*)PrivateData.ServiceTableShadow.CpuIo;
|
||||
PciCfg = (VOID*)PrivateData.ServiceTableShadow.PciCfg;
|
||||
|
||||
CopyMem (&PrivateData.ServiceTableShadow, &mPS, sizeof (mPS));
|
||||
CopyMem (&PrivateData.ServiceTableShadow, &gPs, sizeof (gPs));
|
||||
|
||||
PrivateData.ServiceTableShadow.CpuIo = CpuIo;
|
||||
PrivateData.ServiceTableShadow.PciCfg = PciCfg;
|
||||
} else {
|
||||
ZeroMem (&PrivateData, sizeof (PEI_CORE_INSTANCE));
|
||||
PrivateData.Signature = PEI_CORE_HANDLE_SIGNATURE;
|
||||
CopyMem (&PrivateData.ServiceTableShadow, &mPS, sizeof (mPS));
|
||||
CopyMem (&PrivateData.ServiceTableShadow, &gPs, sizeof (gPs));
|
||||
}
|
||||
|
||||
PrivateData.PS = &PrivateData.ServiceTableShadow;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
EFI PEI Core PPI services
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,51 +10,43 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
Ppi.c
|
||||
|
||||
Abstract:
|
||||
|
||||
EFI PEI Core PPI services
|
||||
|
||||
Revision History
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
/**
|
||||
|
||||
Initialize PPI services.
|
||||
|
||||
|
||||
@param PrivateData Pointer to the PEI Core data.
|
||||
@param OldCoreData Pointer to old PEI Core data.
|
||||
NULL if being run in non-permament memory mode.
|
||||
|
||||
**/
|
||||
VOID
|
||||
InitializePpiServices (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize PPI services.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
OldCoreData - Pointer to the PEI Core data.
|
||||
NULL if being run in non-permament memory mode.
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
--*/
|
||||
{
|
||||
if (OldCoreData == NULL) {
|
||||
PrivateData->PpiData.NotifyListEnd = FixedPcdGet32 (PcdPeiCoreMaxPpiSupported)-1;
|
||||
PrivateData->PpiData.DispatchListEnd = FixedPcdGet32 (PcdPeiCoreMaxPpiSupported)-1;
|
||||
PrivateData->PpiData.LastDispatchedNotify = FixedPcdGet32 (PcdPeiCoreMaxPpiSupported)-1;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Migrate the Hob list from the CAR stack to PEI installed memory.
|
||||
|
||||
@param PeiServices The PEI core services table.
|
||||
@param OldCheckingBottom The old checking bottom.
|
||||
@param OldCheckingTop The old checking top.
|
||||
@param NewHandOffHob The new handoff HOB list.
|
||||
|
||||
**/
|
||||
VOID
|
||||
ConvertPpiPointers (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
|
@ -61,22 +54,6 @@ ConvertPpiPointers (
|
|||
IN UINTN OldCheckingTop,
|
||||
IN EFI_HOB_HANDOFF_INFO_TABLE *NewHandOffHob
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Migrate the Hob list from the CAR stack to PEI installed memory.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
OldCheckingBottom - The old checking bottom.
|
||||
OldCheckingTop - The old checking top.
|
||||
NewHandOffHob - The new handoff HOB list.
|
||||
|
||||
Returns:
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
UINT8 Index;
|
||||
|
@ -132,33 +109,25 @@ Returns:
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Install PPI services.
|
||||
|
||||
@param PeiServices - Pointer to the PEI Service Table
|
||||
@param PpiList - Pointer to a list of PEI PPI Descriptors.
|
||||
|
||||
@retval EFI_SUCCESS - if all PPIs in PpiList are successfully installed.
|
||||
@retval EFI_INVALID_PARAMETER - if PpiList is NULL pointer
|
||||
@retval EFI_INVALID_PARAMETER - if any PPI in PpiList is not valid
|
||||
@retval EFI_OUT_OF_RESOURCES - if there is no more memory resource to install PPI
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiInstallPpi (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Install PPI services.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - Pointer to the PEI Service Table
|
||||
PpiList - Pointer to a list of PEI PPI Descriptors.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - if all PPIs in PpiList are successfully installed.
|
||||
EFI_INVALID_PARAMETER - if PpiList is NULL pointer
|
||||
EFI_INVALID_PARAMETER - if any PPI in PpiList is not valid
|
||||
EFI_OUT_OF_RESOURCES - if there is no more memory resource to install PPI
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
INTN Index;
|
||||
|
@ -230,7 +199,20 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Re-Install PPI services.
|
||||
|
||||
@param PeiServices - Pointer to the PEI Service Table
|
||||
@param OldPpi - Pointer to the old PEI PPI Descriptors.
|
||||
@param NewPpi - Pointer to the new PEI PPI Descriptors.
|
||||
|
||||
@retval EFI_SUCCESS - if the operation was successful
|
||||
@retval EFI_INVALID_PARAMETER - if OldPpi or NewPpi is NULL
|
||||
@retval EFI_INVALID_PARAMETER - if NewPpi is not valid
|
||||
@retval EFI_NOT_FOUND - if the PPI was not in the database
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiReInstallPpi (
|
||||
|
@ -238,26 +220,6 @@ PeiReInstallPpi (
|
|||
IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi,
|
||||
IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Re-Install PPI services.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - Pointer to the PEI Service Table
|
||||
OldPpi - Pointer to the old PEI PPI Descriptors.
|
||||
NewPpi - Pointer to the new PEI PPI Descriptors.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - if the operation was successful
|
||||
EFI_INVALID_PARAMETER - if OldPpi or NewPpi is NULL
|
||||
EFI_INVALID_PARAMETER - if NewPpi is not valid
|
||||
EFI_NOT_FOUND - if the PPI was not in the database
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
INTN Index;
|
||||
|
@ -308,7 +270,22 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Locate a given named PPI.
|
||||
|
||||
|
||||
@param PeiServices - Pointer to the PEI Service Table
|
||||
@param Guid - Pointer to GUID of the PPI.
|
||||
@param Instance - Instance Number to discover.
|
||||
@param PpiDescriptor - Pointer to reference the found descriptor. If not NULL,
|
||||
returns a pointer to the descriptor (includes flags, etc)
|
||||
@param Ppi - Pointer to reference the found PPI
|
||||
|
||||
@retval EFI_SUCCESS if the PPI is in the database
|
||||
@retval EFI_NOT_FOUND if the PPI is not in the database
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiLocatePpi (
|
||||
|
@ -318,26 +295,6 @@ PeiLocatePpi (
|
|||
IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,
|
||||
IN OUT VOID **Ppi
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Locate a given named PPI.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - Pointer to the PEI Service Table
|
||||
Guid - Pointer to GUID of the PPI.
|
||||
Instance - Instance Number to discover.
|
||||
PpiDescriptor - Pointer to reference the found descriptor. If not NULL,
|
||||
returns a pointer to the descriptor (includes flags, etc)
|
||||
Ppi - Pointer to reference the found PPI
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS if the PPI is in the database
|
||||
EFI_NOT_FOUND if the PPI is not in the database
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
INTN Index;
|
||||
|
@ -383,31 +340,25 @@ Returns:
|
|||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Install a notification for a given PPI.
|
||||
|
||||
|
||||
@param PeiServices - Pointer to the PEI Service Table
|
||||
@param NotifyList - Pointer to list of Descriptors to notify upon.
|
||||
|
||||
@retval EFI_SUCCESS if successful
|
||||
@retval EFI_OUT_OF_RESOURCES if no space in the database
|
||||
@retval EFI_INVALID_PARAMETER if not a good decriptor
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiNotifyPpi (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices,
|
||||
IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Install a notification for a given PPI.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - Pointer to the PEI Service Table
|
||||
NotifyList - Pointer to list of Descriptors to notify upon.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS if successful
|
||||
EFI_OUT_OF_RESOURCES if no space in the database
|
||||
EFI_INVALID_PARAMETER if not a good decriptor
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
INTN Index;
|
||||
|
@ -507,24 +458,17 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Process the Notify List at dispatch level.
|
||||
|
||||
@param PrivateData PeiCore's private data structure.
|
||||
|
||||
**/
|
||||
VOID
|
||||
ProcessNotifyList (
|
||||
IN PEI_CORE_INSTANCE *PrivateData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Process the Notify List at dispatch level.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - Pointer to the PEI Service Table
|
||||
|
||||
Returns:
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
INTN TempValue;
|
||||
|
||||
|
@ -577,6 +521,18 @@ Returns:
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Dispatch notifications.
|
||||
|
||||
@param PrivateData PeiCore's private data structure
|
||||
@param NotifyType Type of notify to fire.
|
||||
@param InstallStartIndex Install Beginning index.
|
||||
@param InstallStopIndex Install Ending index.
|
||||
@param NotifyStartIndex Notify Beginning index.
|
||||
@param NotifyStopIndex Notify Ending index.
|
||||
|
||||
**/
|
||||
VOID
|
||||
DispatchNotify (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
|
@ -586,25 +542,6 @@ DispatchNotify (
|
|||
IN INTN NotifyStartIndex,
|
||||
IN INTN NotifyStopIndex
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Dispatch notifications.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - Pointer to the PEI Service Table
|
||||
NotifyType - Type of notify to fire.
|
||||
InstallStartIndex - Install Beginning index.
|
||||
InstallStopIndex - Install Ending index.
|
||||
NotifyStartIndex - Notify Beginning index.
|
||||
NotifyStopIndex - Notify Ending index.
|
||||
|
||||
Returns: None
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
INTN Index1;
|
||||
INTN Index2;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
Pei Core Reset System Support
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,43 +10,27 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
Reset.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Pei Core Reset System Support
|
||||
|
||||
Revision History
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
/**
|
||||
|
||||
Core version of the Reset System
|
||||
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
|
||||
@retval EFI_NOT_AVAILABLE_YET PPI not available yet.
|
||||
@retval EFI_DEVICE_ERROR Did not reset system.
|
||||
Otherwise, resets the system.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiResetSystem (
|
||||
IN CONST EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Core version of the Reset System
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_NOT_AVAILABLE_YET. PPI not available yet.
|
||||
- EFI_DEVICE_ERROR. Did not reset system.
|
||||
|
||||
Otherwise, resets the system.
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_PEI_RESET_PPI *ResetPpi;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
EFI PEI Core Security services
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,19 +10,21 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
Security.c
|
||||
|
||||
Abstract:
|
||||
|
||||
EFI PEI Core Security services
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
STATIC
|
||||
/**
|
||||
|
||||
Provide a callback for when the security PPI is installed.
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param NotifyDescriptor - The descriptor for the notification event.
|
||||
@param Ppi - Pointer to the PPI in question.
|
||||
|
||||
@return Always success
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecurityPpiNotifyCallback (
|
||||
|
@ -30,33 +33,27 @@ SecurityPpiNotifyCallback (
|
|||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
static EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList = {
|
||||
STATIC EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList = {
|
||||
EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
|
||||
&gEfiPeiSecurity2PpiGuid,
|
||||
SecurityPpiNotifyCallback
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Initialize the security services.
|
||||
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param OldCoreData - Pointer to the old core data.
|
||||
NULL if being run in non-permament memory mode.
|
||||
|
||||
**/
|
||||
VOID
|
||||
InitializeSecurityServices (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN PEI_CORE_INSTANCE *OldCoreData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize the security services.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
OldCoreData - Pointer to the old core data.
|
||||
NULL if being run in non-permament memory mode.
|
||||
Returns:
|
||||
|
||||
None
|
||||
|
||||
--*/
|
||||
{
|
||||
if (OldCoreData == NULL) {
|
||||
PeiServicesNotifyPpi (&mNotifyList);
|
||||
|
@ -64,7 +61,17 @@ Returns:
|
|||
return;
|
||||
}
|
||||
|
||||
STATIC
|
||||
/**
|
||||
|
||||
Provide a callback for when the security PPI is installed.
|
||||
|
||||
@param PeiServices - The PEI core services table.
|
||||
@param NotifyDescriptor - The descriptor for the notification event.
|
||||
@param Ppi - Pointer to the PPI in question.
|
||||
|
||||
@return Always success
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecurityPpiNotifyCallback (
|
||||
|
@ -72,23 +79,6 @@ SecurityPpiNotifyCallback (
|
|||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Provide a callback for when the security PPI is installed.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
NotifyDescriptor - The descriptor for the notification event.
|
||||
Ppi - Pointer to the PPI in question.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - The function is successfully processed.
|
||||
|
||||
--*/
|
||||
{
|
||||
PEI_CORE_INSTANCE *PrivateData;
|
||||
|
||||
|
@ -106,29 +96,25 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Provide a callout to the security verification service.
|
||||
|
||||
|
||||
@param PrivateData PeiCore's private data structure
|
||||
@param VolumeHandle Handle of FV
|
||||
@param FileHandle Handle of PEIM's ffs
|
||||
|
||||
@retval EFI_SUCCESS Image is OK
|
||||
@retval EFI_SECURITY_VIOLATION Image is illegal
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
VerifyPeim (
|
||||
IN PEI_CORE_INSTANCE *PrivateData,
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Provide a callout to the security verification service.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
CurrentPeimAddress - Pointer to the Firmware File under investigation.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - Image is OK
|
||||
EFI_SECURITY_VIOLATION - Image is illegal
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT32 AuthenticationStatus;
|
||||
|
@ -161,26 +147,19 @@ Returns:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Verify a Firmware volume.
|
||||
|
||||
@param CurrentFvAddress - Pointer to the current Firmware Volume under consideration
|
||||
|
||||
@retval EFI_SUCCESS - Firmware Volume is legal
|
||||
@retval EFI_SECURITY_VIOLATION - Firmware Volume fails integrity test
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
VerifyFv (
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *CurrentFvAddress
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Verify a Firmware volume
|
||||
|
||||
Arguments:
|
||||
|
||||
CurrentFvAddress - Pointer to the current Firmware Volume under consideration
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - Firmware Volume is legal
|
||||
EFI_SECURITY_VIOLATION - Firmware Volume fails integrity test
|
||||
|
||||
--*/
|
||||
{
|
||||
//
|
||||
// Right now just pass the test. Future can authenticate and/or check the
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/** @file
|
||||
|
||||
Pei Core Status Code Support
|
||||
|
||||
Copyright (c) 2006, 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
|
||||
|
@ -9,20 +10,26 @@ 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.
|
||||
|
||||
Module Name:
|
||||
|
||||
StatusCode.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Pei Core Status Code Support
|
||||
|
||||
Revision History
|
||||
|
||||
**/
|
||||
|
||||
#include <PeiMain.h>
|
||||
|
||||
/**
|
||||
|
||||
Core version of the Status Code reporter
|
||||
|
||||
|
||||
@param PeiServices The PEI core services table.
|
||||
@param CodeType Type of Status Code.
|
||||
@param Value Value to output for Status Code.
|
||||
@param Instance Instance Number of this status code.
|
||||
@param CallerId ID of the caller of this status code.
|
||||
@param Data Optional data associated with this status code.
|
||||
|
||||
@retval EFI_SUCCESS if status code is successfully reported
|
||||
@retval EFI_NOT_AVAILABLE_YET if StatusCodePpi has not been installed
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiReportStatusCode (
|
||||
|
@ -33,32 +40,6 @@ PeiReportStatusCode (
|
|||
IN CONST EFI_GUID *CallerId,
|
||||
IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Core version of the Status Code reporter
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - The PEI core services table.
|
||||
|
||||
CodeType - Type of Status Code.
|
||||
|
||||
Value - Value to output for Status Code.
|
||||
|
||||
Instance - Instance Number of this status code.
|
||||
|
||||
CallerId - ID of the caller of this status code.
|
||||
|
||||
Data - Optional data associated with this status code.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS if status code is successfully reported
|
||||
- EFI_NOT_AVAILABLE_YET if StatusCodePpi has not been installed
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_PEI_PROGRESS_CODE_PPI *StatusCodePpi;
|
||||
|
@ -87,7 +68,6 @@ Returns:
|
|||
return Status;
|
||||
}
|
||||
|
||||
|
||||
return EFI_NOT_AVAILABLE_YET;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue