1*f334afcfSToomas Soome /** @file 2*f334afcfSToomas Soome Include file matches things in PI for multiple module types. 3*f334afcfSToomas Soome 4*f334afcfSToomas Soome Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 5*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent 6*f334afcfSToomas Soome 7*f334afcfSToomas Soome @par Revision Reference: 8*f334afcfSToomas Soome These elements are defined in UEFI Platform Initialization Specification 1.2. 9*f334afcfSToomas Soome 10*f334afcfSToomas Soome **/ 11*f334afcfSToomas Soome 12*f334afcfSToomas Soome #ifndef __PI_MULTIPHASE_H__ 13*f334afcfSToomas Soome #define __PI_MULTIPHASE_H__ 14*f334afcfSToomas Soome 15*f334afcfSToomas Soome #include <Pi/PiFirmwareVolume.h> 16*f334afcfSToomas Soome #include <Pi/PiFirmwareFile.h> 17*f334afcfSToomas Soome #include <Pi/PiBootMode.h> 18*f334afcfSToomas Soome #include <Pi/PiHob.h> 19*f334afcfSToomas Soome #include <Pi/PiDependency.h> 20*f334afcfSToomas Soome #include <Pi/PiStatusCode.h> 21*f334afcfSToomas Soome #include <Pi/PiS3BootScript.h> 22*f334afcfSToomas Soome 23*f334afcfSToomas Soome /** 24*f334afcfSToomas Soome Produces an error code in the range reserved for use by the Platform Initialization 25*f334afcfSToomas Soome Architecture Specification. 26*f334afcfSToomas Soome 27*f334afcfSToomas Soome The supported 32-bit range is 0xA0000000-0xBFFFFFFF 28*f334afcfSToomas Soome The supported 64-bit range is 0xA000000000000000-0xBFFFFFFFFFFFFFFF 29*f334afcfSToomas Soome 30*f334afcfSToomas Soome @param StatusCode The status code value to convert into a warning code. 31*f334afcfSToomas Soome StatusCode must be in the range 0x00000000..0x1FFFFFFF. 32*f334afcfSToomas Soome 33*f334afcfSToomas Soome @return The value specified by StatusCode in the PI reserved range. 34*f334afcfSToomas Soome 35*f334afcfSToomas Soome **/ 36*f334afcfSToomas Soome #define DXE_ERROR(StatusCode) (MAX_BIT | (MAX_BIT >> 2) | StatusCode) 37*f334afcfSToomas Soome 38*f334afcfSToomas Soome /// 39*f334afcfSToomas Soome /// If this value is returned by an EFI image, then the image should be unloaded. 40*f334afcfSToomas Soome /// 41*f334afcfSToomas Soome #define EFI_REQUEST_UNLOAD_IMAGE DXE_ERROR (1) 42*f334afcfSToomas Soome 43*f334afcfSToomas Soome /// 44*f334afcfSToomas Soome /// If this value is returned by an API, it means the capability is not yet 45*f334afcfSToomas Soome /// installed/available/ready to use. 46*f334afcfSToomas Soome /// 47*f334afcfSToomas Soome #define EFI_NOT_AVAILABLE_YET DXE_ERROR (2) 48*f334afcfSToomas Soome 49*f334afcfSToomas Soome /// 50*f334afcfSToomas Soome /// Success and warning codes reserved for use by PI. 51*f334afcfSToomas Soome /// Supported 32-bit range is 0x20000000-0x3fffffff. 52*f334afcfSToomas Soome /// Supported 64-bit range is 0x2000000000000000-0x3fffffffffffffff. 53*f334afcfSToomas Soome /// 54*f334afcfSToomas Soome #define PI_ENCODE_WARNING(a) ((MAX_BIT >> 2) | (a)) 55*f334afcfSToomas Soome 56*f334afcfSToomas Soome /// 57*f334afcfSToomas Soome /// Error codes reserved for use by PI. 58*f334afcfSToomas Soome /// Supported 32-bit range is 0xa0000000-0xbfffffff. 59*f334afcfSToomas Soome /// Supported 64-bit range is 0xa000000000000000-0xbfffffffffffffff. 60*f334afcfSToomas Soome /// 61*f334afcfSToomas Soome #define PI_ENCODE_ERROR(a) (MAX_BIT | (MAX_BIT >> 2) | (a)) 62*f334afcfSToomas Soome 63*f334afcfSToomas Soome /// 64*f334afcfSToomas Soome /// Return status codes defined in SMM CIS. 65*f334afcfSToomas Soome /// 66*f334afcfSToomas Soome #define EFI_INTERRUPT_PENDING PI_ENCODE_ERROR (0) 67*f334afcfSToomas Soome 68*f334afcfSToomas Soome #define EFI_WARN_INTERRUPT_SOURCE_PENDING PI_ENCODE_WARNING (0) 69*f334afcfSToomas Soome #define EFI_WARN_INTERRUPT_SOURCE_QUIESCED PI_ENCODE_WARNING (1) 70*f334afcfSToomas Soome 71*f334afcfSToomas Soome /// 72*f334afcfSToomas Soome /// Bitmask of values for Authentication Status. 73*f334afcfSToomas Soome /// Authentication Status is returned from EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL 74*f334afcfSToomas Soome /// and the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI 75*f334afcfSToomas Soome /// 76*f334afcfSToomas Soome /// xx00 Image was not signed. 77*f334afcfSToomas Soome /// xxx1 Platform security policy override. Assumes the same meaning as 0010 (the image was signed, the 78*f334afcfSToomas Soome /// signature was tested, and the signature passed authentication test). 79*f334afcfSToomas Soome /// 0010 Image was signed, the signature was tested, and the signature passed authentication test. 80*f334afcfSToomas Soome /// 0110 Image was signed and the signature was not tested. 81*f334afcfSToomas Soome /// 1010 Image was signed, the signature was tested, and the signature failed the authentication test. 82*f334afcfSToomas Soome /// 83*f334afcfSToomas Soome ///@{ 84*f334afcfSToomas Soome #define EFI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01 85*f334afcfSToomas Soome #define EFI_AUTH_STATUS_IMAGE_SIGNED 0x02 86*f334afcfSToomas Soome #define EFI_AUTH_STATUS_NOT_TESTED 0x04 87*f334afcfSToomas Soome #define EFI_AUTH_STATUS_TEST_FAILED 0x08 88*f334afcfSToomas Soome #define EFI_AUTH_STATUS_ALL 0x0f 89*f334afcfSToomas Soome ///@} 90*f334afcfSToomas Soome 91*f334afcfSToomas Soome /// 92*f334afcfSToomas Soome /// MMRAM states and capabilities 93*f334afcfSToomas Soome /// 94*f334afcfSToomas Soome #define EFI_MMRAM_OPEN 0x00000001 95*f334afcfSToomas Soome #define EFI_MMRAM_CLOSED 0x00000002 96*f334afcfSToomas Soome #define EFI_MMRAM_LOCKED 0x00000004 97*f334afcfSToomas Soome #define EFI_CACHEABLE 0x00000008 98*f334afcfSToomas Soome #define EFI_ALLOCATED 0x00000010 99*f334afcfSToomas Soome #define EFI_NEEDS_TESTING 0x00000020 100*f334afcfSToomas Soome #define EFI_NEEDS_ECC_INITIALIZATION 0x00000040 101*f334afcfSToomas Soome 102*f334afcfSToomas Soome #define EFI_SMRAM_OPEN EFI_MMRAM_OPEN 103*f334afcfSToomas Soome #define EFI_SMRAM_CLOSED EFI_MMRAM_CLOSED 104*f334afcfSToomas Soome #define EFI_SMRAM_LOCKED EFI_MMRAM_LOCKED 105*f334afcfSToomas Soome 106*f334afcfSToomas Soome /// 107*f334afcfSToomas Soome /// Structure describing a MMRAM region and its accessibility attributes. 108*f334afcfSToomas Soome /// 109*f334afcfSToomas Soome typedef struct { 110*f334afcfSToomas Soome /// 111*f334afcfSToomas Soome /// Designates the physical address of the MMRAM in memory. This view of memory is 112*f334afcfSToomas Soome /// the same as seen by I/O-based agents, for example, but it may not be the address seen 113*f334afcfSToomas Soome /// by the processors. 114*f334afcfSToomas Soome /// 115*f334afcfSToomas Soome EFI_PHYSICAL_ADDRESS PhysicalStart; 116*f334afcfSToomas Soome /// 117*f334afcfSToomas Soome /// Designates the address of the MMRAM, as seen by software executing on the 118*f334afcfSToomas Soome /// processors. This address may or may not match PhysicalStart. 119*f334afcfSToomas Soome /// 120*f334afcfSToomas Soome EFI_PHYSICAL_ADDRESS CpuStart; 121*f334afcfSToomas Soome /// 122*f334afcfSToomas Soome /// Describes the number of bytes in the MMRAM region. 123*f334afcfSToomas Soome /// 124*f334afcfSToomas Soome UINT64 PhysicalSize; 125*f334afcfSToomas Soome /// 126*f334afcfSToomas Soome /// Describes the accessibility attributes of the MMRAM. These attributes include the 127*f334afcfSToomas Soome /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical 128*f334afcfSToomas Soome /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC 129*f334afcfSToomas Soome /// initialization). 130*f334afcfSToomas Soome /// 131*f334afcfSToomas Soome UINT64 RegionState; 132*f334afcfSToomas Soome } EFI_MMRAM_DESCRIPTOR; 133*f334afcfSToomas Soome 134*f334afcfSToomas Soome typedef EFI_MMRAM_DESCRIPTOR EFI_SMRAM_DESCRIPTOR; 135*f334afcfSToomas Soome 136*f334afcfSToomas Soome /// 137*f334afcfSToomas Soome /// Structure describing a MMRAM region which cannot be used for the MMRAM heap. 138*f334afcfSToomas Soome /// 139*f334afcfSToomas Soome typedef struct _EFI_MM_RESERVED_MMRAM_REGION { 140*f334afcfSToomas Soome /// 141*f334afcfSToomas Soome /// Starting address of the reserved MMRAM area, as it appears while MMRAM is open. 142*f334afcfSToomas Soome /// Ignored if MmramReservedSize is 0. 143*f334afcfSToomas Soome /// 144*f334afcfSToomas Soome EFI_PHYSICAL_ADDRESS MmramReservedStart; 145*f334afcfSToomas Soome /// 146*f334afcfSToomas Soome /// Number of bytes occupied by the reserved MMRAM area. A size of zero indicates the 147*f334afcfSToomas Soome /// last MMRAM area. 148*f334afcfSToomas Soome /// 149*f334afcfSToomas Soome UINT64 MmramReservedSize; 150*f334afcfSToomas Soome } EFI_MM_RESERVED_MMRAM_REGION; 151*f334afcfSToomas Soome 152*f334afcfSToomas Soome typedef enum { 153*f334afcfSToomas Soome EFI_PCD_TYPE_8, 154*f334afcfSToomas Soome EFI_PCD_TYPE_16, 155*f334afcfSToomas Soome EFI_PCD_TYPE_32, 156*f334afcfSToomas Soome EFI_PCD_TYPE_64, 157*f334afcfSToomas Soome EFI_PCD_TYPE_BOOL, 158*f334afcfSToomas Soome EFI_PCD_TYPE_PTR 159*f334afcfSToomas Soome } EFI_PCD_TYPE; 160*f334afcfSToomas Soome 161*f334afcfSToomas Soome typedef struct { 162*f334afcfSToomas Soome /// 163*f334afcfSToomas Soome /// The returned information associated with the requested TokenNumber. If 164*f334afcfSToomas Soome /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8. 165*f334afcfSToomas Soome /// 166*f334afcfSToomas Soome EFI_PCD_TYPE PcdType; 167*f334afcfSToomas Soome /// 168*f334afcfSToomas Soome /// The size of the data in bytes associated with the TokenNumber specified. If 169*f334afcfSToomas Soome /// TokenNumber is 0, then PcdSize is set 0. 170*f334afcfSToomas Soome /// 171*f334afcfSToomas Soome UINTN PcdSize; 172*f334afcfSToomas Soome /// 173*f334afcfSToomas Soome /// The null-terminated ASCII string associated with a given token. If the 174*f334afcfSToomas Soome /// TokenNumber specified was 0, then this field corresponds to the null-terminated 175*f334afcfSToomas Soome /// ASCII string associated with the token's namespace Guid. If NULL, there is no 176*f334afcfSToomas Soome /// name associated with this request. 177*f334afcfSToomas Soome /// 178*f334afcfSToomas Soome CHAR8 *PcdName; 179*f334afcfSToomas Soome } EFI_PCD_INFO; 180*f334afcfSToomas Soome 181*f334afcfSToomas Soome /** 182*f334afcfSToomas Soome The function prototype for invoking a function on an Application Processor. 183*f334afcfSToomas Soome 184*f334afcfSToomas Soome This definition is used by the UEFI MP Serices Protocol, and the 185*f334afcfSToomas Soome PI SMM System Table. 186*f334afcfSToomas Soome 187*f334afcfSToomas Soome @param[in,out] Buffer The pointer to private data buffer. 188*f334afcfSToomas Soome **/ 189*f334afcfSToomas Soome typedef 190*f334afcfSToomas Soome VOID 191*f334afcfSToomas Soome (EFIAPI *EFI_AP_PROCEDURE)( 192*f334afcfSToomas Soome IN OUT VOID *Buffer 193*f334afcfSToomas Soome ); 194*f334afcfSToomas Soome 195*f334afcfSToomas Soome /** 196*f334afcfSToomas Soome The function prototype for invoking a function on an Application Processor. 197*f334afcfSToomas Soome 198*f334afcfSToomas Soome This definition is used by the UEFI MM MP Serices Protocol. 199*f334afcfSToomas Soome 200*f334afcfSToomas Soome @param[in] ProcedureArgument The pointer to private data buffer. 201*f334afcfSToomas Soome 202*f334afcfSToomas Soome @retval EFI_SUCCESS Excutive the procedure successfully 203*f334afcfSToomas Soome 204*f334afcfSToomas Soome **/ 205*f334afcfSToomas Soome typedef 206*f334afcfSToomas Soome EFI_STATUS 207*f334afcfSToomas Soome (EFIAPI *EFI_AP_PROCEDURE2)( 208*f334afcfSToomas Soome IN VOID *ProcedureArgument 209*f334afcfSToomas Soome ); 210*f334afcfSToomas Soome 211*f334afcfSToomas Soome #endif 212