mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg SecCore: Add SecPerformancePpiCallBack
Add SecPerformancePpiCallBack to get SEC performance data and build HOB to convey the SEC performance data to DXE phase. Cc: Liming Gao <liming.gao@intel.com> Cc: Jeff Fan <jeff.fan@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
9e9ca2100f
commit
f2e7062974
|
@ -71,6 +71,13 @@
|
|||
## SOMETIMES_PRODUCES
|
||||
gEfiSecPlatformInformation2PpiGuid
|
||||
gEfiTemporaryRamDonePpiGuid ## PRODUCES
|
||||
## NOTIFY
|
||||
## SOMETIMES_CONSUMES
|
||||
gPeiSecPerformancePpiGuid
|
||||
|
||||
[Guids]
|
||||
## SOMETIMES_PRODUCES ## HOB
|
||||
gEfiFirmwarePerformanceGuid
|
||||
|
||||
[Pcd]
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdPeiTemporaryRamStackSize ## CONSUMES
|
||||
|
|
|
@ -21,6 +21,14 @@ EFI_PEI_TEMPORARY_RAM_DONE_PPI gSecTemporaryRamDonePpi = {
|
|||
EFI_SEC_PLATFORM_INFORMATION_PPI mSecPlatformInformationPpi = { SecPlatformInformation };
|
||||
|
||||
EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformInformationPpi[] = {
|
||||
{
|
||||
//
|
||||
// SecPerformance PPI notify descriptor.
|
||||
//
|
||||
EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK,
|
||||
&gPeiSecPerformancePpiGuid,
|
||||
(VOID *) (UINTN) SecPerformancePpiCallBack
|
||||
},
|
||||
{
|
||||
EFI_PEI_PPI_DESCRIPTOR_PPI,
|
||||
&gEfiTemporaryRamDonePpiGuid,
|
||||
|
@ -55,6 +63,44 @@ SecStartupPhase2(
|
|||
IN VOID *Context
|
||||
);
|
||||
|
||||
/**
|
||||
Entry point of the notification callback function itself within the PEIM.
|
||||
It is to get SEC performance data and build HOB to convey the SEC performance
|
||||
data to DXE phase.
|
||||
|
||||
@param PeiServices Indirect reference to the PEI Services Table.
|
||||
@param NotifyDescriptor Address of the notification descriptor data structure.
|
||||
@param Ppi Address of the PPI that was installed.
|
||||
|
||||
@return Status of the notification.
|
||||
The status code returned from this function is ignored.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecPerformancePpiCallBack (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
PEI_SEC_PERFORMANCE_PPI *SecPerf;
|
||||
FIRMWARE_SEC_PERFORMANCE Performance;
|
||||
|
||||
SecPerf = (PEI_SEC_PERFORMANCE_PPI *) Ppi;
|
||||
Status = SecPerf->GetPerformance ((CONST EFI_PEI_SERVICES **) PeiServices, SecPerf, &Performance);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
BuildGuidDataHob (
|
||||
&gEfiFirmwarePerformanceGuid,
|
||||
&Performance,
|
||||
sizeof (FIRMWARE_SEC_PERFORMANCE)
|
||||
);
|
||||
DEBUG ((DEBUG_INFO, "FPDT: SEC Performance Hob ResetEnd = %ld\n", Performance.ResetEnd));
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Entry point to the C language phase of SEC. After the SEC assembly
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
Master header file for SecCore.
|
||||
|
||||
Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
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
|
||||
|
@ -20,6 +20,9 @@
|
|||
#include <Ppi/SecPlatformInformation.h>
|
||||
#include <Ppi/SecPlatformInformation2.h>
|
||||
#include <Ppi/TemporaryRamDone.h>
|
||||
#include <Ppi/SecPerformance.h>
|
||||
|
||||
#include <Guid/FirmwarePerformance.h>
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
|
@ -157,4 +160,24 @@ RepublishSecPlatformInformationPpi (
|
|||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Entry point of the notification callback function itself within the PEIM.
|
||||
It is to get SEC performance data and build HOB to convey the SEC performance
|
||||
data to DXE phase.
|
||||
|
||||
@param PeiServices Indirect reference to the PEI Services Table.
|
||||
@param NotifyDescriptor Address of the notification descriptor data structure.
|
||||
@param Ppi Address of the PPI that was installed.
|
||||
|
||||
@return Status of the notification.
|
||||
The status code returned from this function is ignored.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecPerformancePpiCallBack (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
|
||||
IN VOID *Ppi
|
||||
);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue