blob: 4326d40c1bc3e9ceeb9fe0dedf15d9d0478dd1bb [file] [log] [blame]
/** @file
This file declares Sec Platform Information2 PPI.
This service is the primary handoff state into the PEI Foundation.
This service abstracts platform-specific information for many CPU's.
Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Revision Reference:
This PPI is introduced from PI Version 1.4.
**/
#ifndef __SEC_PLATFORM_INFORMATION2_PPI_H__
#define __SEC_PLATFORM_INFORMATION2_PPI_H__
#include <Ppi/SecPlatformInformation.h>
#define EFI_SEC_PLATFORM_INFORMATION2_GUID \
{ \
0x9e9f374b, 0x8f16, 0x4230, {0x98, 0x24, 0x58, 0x46, 0xee, 0x76, 0x6a, 0x97 } \
}
typedef struct _EFI_SEC_PLATFORM_INFORMATION2_PPI EFI_SEC_PLATFORM_INFORMATION2_PPI;
///
/// EFI_SEC_PLATFORM_INFORMATION_CPU.
///
typedef struct {
UINT32 CpuLocation;
EFI_SEC_PLATFORM_INFORMATION_RECORD InfoRecord;
} EFI_SEC_PLATFORM_INFORMATION_CPU;
///
/// EFI_SEC_PLATFORM_INFORMATION_RECORD2.
///
typedef struct {
///
/// The CPU location would be the local APIC ID
///
UINT32 NumberOfCpus;
EFI_SEC_PLATFORM_INFORMATION_CPU CpuInstance[1];
} EFI_SEC_PLATFORM_INFORMATION_RECORD2;
/**
This interface conveys state information out of the Security (SEC) phase into PEI.
This service is published by the SEC phase.
@param PeiServices The pointer to the PEI Services Table.
@param StructureSize The pointer to the variable describing size of the input buffer.
@param PlatformInformationRecord2 The pointer to the EFI_SEC_PLATFORM_INFORMATION_RECORD2.
@retval EFI_SUCCESS The data was successfully returned.
@retval EFI_BUFFER_TOO_SMALL The buffer was too small. The current buffer size needed to
hold the record is returned in StructureSize.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SEC_PLATFORM_INFORMATION2)(
IN CONST EFI_PEI_SERVICES **PeiServices,
IN OUT UINT64 *StructureSize,
OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2
);
///
/// This service abstracts platform-specific information for many CPU's.
/// It is the multi-processor equivalent of PlatformInformation for
/// implementations that synchronize some, if not all CPU's in the SEC phase.
///
struct _EFI_SEC_PLATFORM_INFORMATION2_PPI {
EFI_SEC_PLATFORM_INFORMATION2 PlatformInformation2;
};
extern EFI_GUID gEfiSecPlatformInformation2PpiGuid;
#endif