MdePkg: Removed IPF related code

A previous commit(3cb0a311cb) didn't
clean all IPF contents. So this change removes the rest contents.
https://bugzilla.tianocore.org/show_bug.cgi?id=1560

v2: Withdraw the removal of Mps.h. It is written in Mps.h that
    MPS only was included to support Itanium-based platform power on.
    But we found MPS is not so relevant to Itanium architecture.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Shenglei Zhang 2019-03-27 10:24:08 +08:00 committed by Liming Gao
parent 5a1ca93a1f
commit 4e1daa60f5
10 changed files with 0 additions and 5538 deletions

View File

@ -1,25 +0,0 @@
/** @file
GUIDs used for SAL system table entries in the EFI system table.
SAL System Table contains Itanium-based processor centric information about
the system.
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Revision Reference:
GUIDs defined in UEFI 2.0 spec.
**/
#ifndef __SAL_SYSTEM_TABLE_GUID_H__
#define __SAL_SYSTEM_TABLE_GUID_H__
#define SAL_SYSTEM_TABLE_GUID \
{ \
0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
}
extern EFI_GUID gEfiSalSystemTableGuid;
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,909 +0,0 @@
/** @file
Main SAL API's defined in Intel Itanium Processor Family System Abstraction
Layer Specification Revision 3.2 (December 2003)
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __SAL_API_H__
#define __SAL_API_H__
///
/// SAL return status type
///
typedef INTN EFI_SAL_STATUS;
///
/// Call completed without error.
///
#define EFI_SAL_SUCCESS ((EFI_SAL_STATUS) 0)
///
/// Call completed without error, but some information was lost due to overflow.
///
#define EFI_SAL_OVERFLOW ((EFI_SAL_STATUS) 1)
///
/// Call completed without error; effect a warm boot of the system to complete the update.
///
#define EFI_SAL_WARM_BOOT_NEEDED ((EFI_SAL_STATUS) 2)
///
/// More information is available for retrieval.
///
#define EFI_SAL_MORE_RECORDS ((EFI_SAL_STATUS) 3)
///
/// Not implemented.
///
#define EFI_SAL_NOT_IMPLEMENTED ((EFI_SAL_STATUS) - 1)
///
/// Invalid Argument.
///
#define EFI_SAL_INVALID_ARGUMENT ((EFI_SAL_STATUS) - 2)
///
/// Call completed without error.
///
#define EFI_SAL_ERROR ((EFI_SAL_STATUS) - 3)
///
/// Virtual address not registered.
///
#define EFI_SAL_VIRTUAL_ADDRESS_ERROR ((EFI_SAL_STATUS) - 4)
///
/// No information available.
///
#define EFI_SAL_NO_INFORMATION ((EFI_SAL_STATUS) - 5)
///
/// Scratch buffer required.
///
#define EFI_SAL_NOT_ENOUGH_SCRATCH ((EFI_SAL_STATUS) - 9)
///
/// Return registers from SAL.
///
typedef struct {
///
/// SAL return status value in r8.
///
EFI_SAL_STATUS Status;
///
/// SAL returned value in r9.
///
UINTN r9;
///
/// SAL returned value in r10.
///
UINTN r10;
///
/// SAL returned value in r11.
///
UINTN r11;
} SAL_RETURN_REGS;
/**
Prototype of SAL procedures.
@param FunctionId Functional identifier.
The upper 32 bits are ignored and only the lower 32 bits
are used. The following functional identifiers are defined:
0x01XXXXXX - Architected SAL functional group.
0x02XXXXXX to 0x03XXXXXX - OEM SAL functional group. Each OEM is
allowed to use the entire range in the 0x02XXXXXX to 0x03XXXXXX range.
0x04XXXXXX to 0xFFFFFFFF - Reserved.
@param Arg1 The first parameter of the architected/OEM specific SAL functions.
@param Arg2 The second parameter of the architected/OEM specific SAL functions.
@param Arg3 The third parameter passed to the ESAL function based.
@param Arg4 The fourth parameter passed to the ESAL function based.
@param Arg5 The fifth parameter passed to the ESAL function based.
@param Arg6 The sixth parameter passed to the ESAL function.
@param Arg7 The seventh parameter passed to the ESAL function based.
@return r8 Return status: positive number indicates successful,
negative number indicates failure.
r9 Other return parameter in r9.
r10 Other return parameter in r10.
r11 Other return parameter in r11.
**/
typedef
SAL_RETURN_REGS
(EFIAPI *SAL_PROC)(
IN UINT64 FunctionId,
IN UINT64 Arg1,
IN UINT64 Arg2,
IN UINT64 Arg3,
IN UINT64 Arg4,
IN UINT64 Arg5,
IN UINT64 Arg6,
IN UINT64 Arg7
);
//
// SAL Procedure FunctionId definition
//
///
/// Register software code locations with SAL.
///
#define EFI_SAL_SET_VECTORS 0x01000000
///
/// Return Machine State information obtained by SAL.
///
#define EFI_SAL_GET_STATE_INFO 0x01000001
///
/// Obtain size of Machine State information.
///
#define EFI_SAL_GET_STATE_INFO_SIZE 0x01000002
///
/// Clear Machine State information.
///
#define EFI_SAL_CLEAR_STATE_INFO 0x01000003
///
/// Cause the processor to go into a spin loop within SAL.
///
#define EFI_SAL_MC_RENDEZ 0x01000004
///
/// Register the machine check interface layer with SAL.
///
#define EFI_SAL_MC_SET_PARAMS 0x01000005
///
/// Register the physical addresses of locations needed by SAL.
///
#define EFI_SAL_REGISTER_PHYSICAL_ADDR 0x01000006
///
/// Flush the instruction or data caches.
///
#define EFI_SAL_CACHE_FLUSH 0x01000008
///
/// Initialize the instruction and data caches.
///
#define EFI_SAL_CACHE_INIT 0x01000009
///
/// Read from the PCI configuration space.
///
#define EFI_SAL_PCI_CONFIG_READ 0x01000010
///
/// Write to the PCI configuration space.
///
#define EFI_SAL_PCI_CONFIG_WRITE 0x01000011
///
/// Return the base frequency of the platform.
///
#define EFI_SAL_FREQ_BASE 0x01000012
///
/// Returns information on the physical processor mapping within the platform.
///
#define EFI_SAL_PHYSICAL_ID_INFO 0x01000013
///
/// Update the contents of firmware blocks.
///
#define EFI_SAL_UPDATE_PAL 0x01000020
#define EFI_SAL_FUNCTION_ID_MASK 0x0000ffff
#define EFI_SAL_MAX_SAL_FUNCTION_ID 0x00000021
//
// SAL Procedure parameter definitions
// Not much point in using typedefs or enums because all params
// are UINT64 and the entry point is common
//
//
// Parameter of EFI_SAL_SET_VECTORS
//
// Vector type
//
#define EFI_SAL_SET_MCA_VECTOR 0x0
#define EFI_SAL_SET_INIT_VECTOR 0x1
#define EFI_SAL_SET_BOOT_RENDEZ_VECTOR 0x2
///
/// The format of a length_cs_n argument.
///
typedef struct {
UINT64 Length : 32;
UINT64 ChecksumValid : 1;
UINT64 Reserved1 : 7;
UINT64 ByteChecksum : 8;
UINT64 Reserved2 : 16;
} SAL_SET_VECTORS_CS_N;
//
// Parameter of EFI_SAL_GET_STATE_INFO, EFI_SAL_GET_STATE_INFO_SIZE, and EFI_SAL_CLEAR_STATE_INFO
//
// Type of information
//
#define EFI_SAL_MCA_STATE_INFO 0x0
#define EFI_SAL_INIT_STATE_INFO 0x1
#define EFI_SAL_CMC_STATE_INFO 0x2
#define EFI_SAL_CP_STATE_INFO 0x3
//
// Parameter of EFI_SAL_MC_SET_PARAMS
//
// Unsigned 64-bit integer value for the parameter type of the machine check interface
//
#define EFI_SAL_MC_SET_RENDEZ_PARAM 0x1
#define EFI_SAL_MC_SET_WAKEUP_PARAM 0x2
#define EFI_SAL_MC_SET_CPE_PARAM 0x3
//
// Unsigned 64-bit integer value indicating whether interrupt vector or
// memory address is specified
//
#define EFI_SAL_MC_SET_INTR_PARAM 0x1
#define EFI_SAL_MC_SET_MEM_PARAM 0x2
//
// Parameter of EFI_SAL_REGISTER_PAL_PHYSICAL_ADDR
//
// The encoded value of the entity whose physical address is registered
//
#define EFI_SAL_REGISTER_PAL_ADDR 0x0
//
// Parameter of EFI_SAL_CACHE_FLUSH
//
// Unsigned 64-bit integer denoting type of cache flush operation
//
#define EFI_SAL_FLUSH_I_CACHE 0x01
#define EFI_SAL_FLUSH_D_CACHE 0x02
#define EFI_SAL_FLUSH_BOTH_CACHE 0x03
#define EFI_SAL_FLUSH_MAKE_COHERENT 0x04
//
// Parameter of EFI_SAL_PCI_CONFIG_READ and EFI_SAL_PCI_CONFIG_WRITE
//
// PCI config size
//
#define EFI_SAL_PCI_CONFIG_ONE_BYTE 0x1
#define EFI_SAL_PCI_CONFIG_TWO_BYTES 0x2
#define EFI_SAL_PCI_CONFIG_FOUR_BYTES 0x4
//
// The type of PCI configuration address
//
#define EFI_SAL_PCI_COMPATIBLE_ADDRESS 0x0
#define EFI_SAL_PCI_EXTENDED_REGISTER_ADDRESS 0x1
///
/// The format of PCI Compatible Address.
///
typedef struct {
UINT64 Register : 8;
UINT64 Function : 3;
UINT64 Device : 5;
UINT64 Bus : 8;
UINT64 Segment : 8;
UINT64 Reserved : 32;
} SAL_PCI_ADDRESS;
///
/// The format of Extended Register Address.
///
typedef struct {
UINT64 Register : 8;
UINT64 ExtendedRegister : 4;
UINT64 Function : 3;
UINT64 Device : 5;
UINT64 Bus : 8;
UINT64 Segment : 16;
UINT64 Reserved : 20;
} SAL_PCI_EXTENDED_REGISTER_ADDRESS;
//
// Parameter of EFI_SAL_FREQ_BASE
//
// Unsigned 64-bit integer specifying the type of clock source
//
#define EFI_SAL_CPU_INPUT_FREQ_BASE 0x0
#define EFI_SAL_PLATFORM_IT_FREQ_BASE 0x1
#define EFI_SAL_PLATFORM_RTC_FREQ_BASE 0x2
//
// Parameter and return value of EFI_SAL_UPDATE_PAL
//
// Return parameter provides additional information on the
// failure when the status field contains a value of -3,
// returned in r9.
//
#define EFI_SAL_UPDATE_BAD_PAL_VERSION ((UINT64) -1)
#define EFI_SAL_UPDATE_PAL_AUTH_FAIL ((UINT64) -2)
#define EFI_SAL_UPDATE_PAL_BAD_TYPE ((UINT64) -3)
#define EFI_SAL_UPDATE_PAL_READONLY ((UINT64) -4)
#define EFI_SAL_UPDATE_PAL_WRITE_FAIL ((UINT64) -10)
#define EFI_SAL_UPDATE_PAL_ERASE_FAIL ((UINT64) -11)
#define EFI_SAL_UPDATE_PAL_READ_FAIL ((UINT64) -12)
#define EFI_SAL_UPDATE_PAL_CANT_FIT ((UINT64) -13)
///
/// 64-byte header of update data block.
///
typedef struct {
UINT32 Size;
UINT32 MmddyyyyDate;
UINT16 Version;
UINT8 Type;
UINT8 Reserved[5];
UINT64 FwVendorId;
UINT8 Reserved2[40];
} SAL_UPDATE_PAL_DATA_BLOCK;
///
/// Data structure pointed by the parameter param_buf.
/// It is a 16-byte aligned data structure in memory with a length of 32 bytes
/// that describes the new firmware. This information is organized in the form
/// of a linked list with each element describing one firmware component.
///
typedef struct _SAL_UPDATE_PAL_INFO_BLOCK {
struct _SAL_UPDATE_PAL_INFO_BLOCK *Next;
struct SAL_UPDATE_PAL_DATA_BLOCK *DataBlock;
UINT8 StoreChecksum;
UINT8 Reserved[15];
} SAL_UPDATE_PAL_INFO_BLOCK;
///
/// SAL System Table Definitions.
///
#pragma pack(1)
typedef struct {
///
/// The ASCII string representation of "SST_" that confirms the presence of the table.
///
UINT32 Signature;
///
/// The length of the entire table in bytes, starting from offset zero and including the
/// header and all entries indicated by the EntryCount field.
///
UINT32 Length;
///
/// The revision number of the Itanium Processor Family System Abstraction Layer
/// Specification supported by the SAL implementation, in binary coded decimal (BCD) format.
///
UINT16 SalRevision;
///
/// The number of entries in the variable portion of the table.
///
UINT16 EntryCount;
///
/// A modulo checksum of the entire table and the entries following this table.
///
UINT8 CheckSum;
///
/// Unused, must be zero.
///
UINT8 Reserved[7];
///
/// Version Number of the SAL_A firmware implementation in BCD format.
///
UINT16 SalAVersion;
///
/// Version Number of the SAL_B firmware implementation in BCD format.
///
UINT16 SalBVersion;
///
/// An ASCII identification string which uniquely identifies the manufacturer
/// of the system hardware.
///
UINT8 OemId[32];
///
/// An ASCII identification string which uniquely identifies a family of
/// compatible products from the manufacturer.
///
UINT8 ProductId[32];
///
/// Unused, must be zero.
///
UINT8 Reserved2[8];
} SAL_SYSTEM_TABLE_HEADER;
#define EFI_SAL_ST_HEADER_SIGNATURE "SST_"
#define EFI_SAL_REVISION 0x0320
//
// SAL System Types
//
#define EFI_SAL_ST_ENTRY_POINT 0
#define EFI_SAL_ST_MEMORY_DESCRIPTOR 1
#define EFI_SAL_ST_PLATFORM_FEATURES 2
#define EFI_SAL_ST_TR_USAGE 3
#define EFI_SAL_ST_PTC 4
#define EFI_SAL_ST_AP_WAKEUP 5
//
// SAL System Type Sizes
//
#define EFI_SAL_ST_ENTRY_POINT_SIZE 48
#define EFI_SAL_ST_MEMORY_DESCRIPTOR_SIZE 32
#define EFI_SAL_ST_PLATFORM_FEATURES_SIZE 16
#define EFI_SAL_ST_TR_USAGE_SIZE 32
#define EFI_SAL_ST_PTC_SIZE 16
#define EFI_SAL_ST_AP_WAKEUP_SIZE 16
///
/// Format of Entrypoint Descriptor Entry.
///
typedef struct {
UINT8 Type; ///< Type here should be 0.
UINT8 Reserved[7];
UINT64 PalProcEntry;
UINT64 SalProcEntry;
UINT64 SalGlobalDataPointer;
UINT64 Reserved2[2];
} SAL_ST_ENTRY_POINT_DESCRIPTOR;
///
/// Format of Platform Features Descriptor Entry.
///
typedef struct {
UINT8 Type; ///< Type here should be 2.
UINT8 PlatformFeatures;
UINT8 Reserved[14];
} SAL_ST_PLATFORM_FEATURES;
//
// Value of Platform Feature List
//
#define SAL_PLAT_FEAT_BUS_LOCK 0x01
#define SAL_PLAT_FEAT_PLAT_IPI_HINT 0x02
#define SAL_PLAT_FEAT_PROC_IPI_HINT 0x04
///
/// Format of Translation Register Descriptor Entry.
///
typedef struct {
UINT8 Type; ///< Type here should be 3.
UINT8 TRType;
UINT8 TRNumber;
UINT8 Reserved[5];
UINT64 VirtualAddress;
UINT64 EncodedPageSize;
UINT64 Reserved1;
} SAL_ST_TR_DECRIPTOR;
//
// Type of Translation Register
//
#define EFI_SAL_ST_TR_USAGE_INSTRUCTION 00
#define EFI_SAL_ST_TR_USAGE_DATA 01
///
/// Definition of Coherence Domain Information.
///
typedef struct {
UINT64 NumberOfProcessors;
UINT64 LocalIDRegister;
} SAL_COHERENCE_DOMAIN_INFO;
///
/// Format of Purge Translation Cache Coherence Domain Entry.
///
typedef struct {
UINT8 Type; ///< Type here should be 4.
UINT8 Reserved[3];
UINT32 NumberOfDomains;
SAL_COHERENCE_DOMAIN_INFO *DomainInformation;
} SAL_ST_CACHE_COHERENCE_DECRIPTOR;
///
/// Format of Application Processor Wake-Up Descriptor Entry.
///
typedef struct {
UINT8 Type; ///< Type here should be 5.
UINT8 WakeUpType;
UINT8 Reserved[6];
UINT64 ExternalInterruptVector;
} SAL_ST_AP_WAKEUP_DECRIPTOR;
///
/// Format of Firmware Interface Table (FIT) Entry.
///
typedef struct {
UINT64 Address;
UINT8 Size[3];
UINT8 Reserved;
UINT16 Revision;
UINT8 Type : 7;
UINT8 CheckSumValid : 1;
UINT8 CheckSum;
} EFI_SAL_FIT_ENTRY;
//
// FIT Types
//
#define EFI_SAL_FIT_FIT_HEADER_TYPE 0x00
#define EFI_SAL_FIT_PAL_B_TYPE 0x01
//
// Type from 0x02 to 0x0D is reserved.
//
#define EFI_SAL_FIT_PROCESSOR_SPECIFIC_PAL_A_TYPE 0x0E
#define EFI_SAL_FIT_PAL_A_TYPE 0x0F
//
// OEM-defined type range is from 0x10 to 0x7E.
// Here we defined the PEI_CORE type as 0x10
//
#define EFI_SAL_FIT_PEI_CORE_TYPE 0x10
#define EFI_SAL_FIT_UNUSED_TYPE 0x7F
//
// FIT Entry
//
#define EFI_SAL_FIT_ENTRY_PTR (0x100000000 - 32) // 4GB - 24
#define EFI_SAL_FIT_PALA_ENTRY (0x100000000 - 48) // 4GB - 32
#define EFI_SAL_FIT_PALB_TYPE 01
//
// Following definitions are for Error Record Structure
//
///
/// Format of TimeStamp field in Record Header.
///
typedef struct {
UINT8 Seconds;
UINT8 Minutes;
UINT8 Hours;
UINT8 Reserved;
UINT8 Day;
UINT8 Month;
UINT8 Year;
UINT8 Century;
} SAL_TIME_STAMP;
///
/// Definition of Record Header.
///
typedef struct {
UINT64 RecordId;
UINT16 Revision;
UINT8 ErrorSeverity;
UINT8 ValidationBits;
UINT32 RecordLength;
SAL_TIME_STAMP TimeStamp;
UINT8 OemPlatformId[16];
} SAL_RECORD_HEADER;
///
/// Definition of Section Header.
///
typedef struct {
GUID Guid;
UINT16 Revision;
UINT8 ErrorRecoveryInfo;
UINT8 Reserved;
UINT32 SectionLength;
} SAL_SEC_HEADER;
///
/// GUID of Processor Machine Check Errors.
///
#define SAL_PROCESSOR_ERROR_RECORD_INFO \
{ \
0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
}
//
// Bit masks for valid bits of MOD_ERROR_INFO
//
#define CHECK_INFO_VALID_BIT_MASK 0x1
#define REQUESTOR_ID_VALID_BIT_MASK 0x2
#define RESPONDER_ID_VALID_BIT_MASK 0x4
#define TARGER_ID_VALID_BIT_MASK 0x8
#define PRECISE_IP_VALID_BIT_MASK 0x10
///
/// Definition of MOD_ERROR_INFO_STRUCT.
///
typedef struct {
UINT64 InfoValid : 1;
UINT64 ReqValid : 1;
UINT64 RespValid : 1;
UINT64 TargetValid : 1;
UINT64 IpValid : 1;
UINT64 Reserved : 59;
UINT64 Info;
UINT64 Req;
UINT64 Resp;
UINT64 Target;
UINT64 Ip;
} MOD_ERROR_INFO;
///
/// Definition of CPUID_INFO_STRUCT.
///
typedef struct {
UINT8 CpuidInfo[40];
UINT8 Reserved;
} CPUID_INFO;
typedef struct {
UINT64 FrLow;
UINT64 FrHigh;
} FR_STRUCT;
//
// Bit masks for PSI_STATIC_STRUCT.ValidFieldBits
//
#define MIN_STATE_VALID_BIT_MASK 0x1
#define BR_VALID_BIT_MASK 0x2
#define CR_VALID_BIT_MASK 0x4
#define AR_VALID_BIT_MASK 0x8
#define RR_VALID_BIT_MASK 0x10
#define FR_VALID_BIT_MASK 0x20
///
/// Definition of PSI_STATIC_STRUCT.
///
typedef struct {
UINT64 ValidFieldBits;
UINT8 MinStateInfo[1024];
UINT64 Br[8];
UINT64 Cr[128];
UINT64 Ar[128];
UINT64 Rr[8];
FR_STRUCT Fr[128];
} PSI_STATIC_STRUCT;
//
// Bit masks for SAL_PROCESSOR_ERROR_RECORD.ValidationBits
//
#define PROC_ERROR_MAP_VALID_BIT_MASK 0x1
#define PROC_STATE_PARAMETER_VALID_BIT_MASK 0x2
#define PROC_CR_LID_VALID_BIT_MASK 0x4
#define PROC_STATIC_STRUCT_VALID_BIT_MASK 0x8
#define CPU_INFO_VALID_BIT_MASK 0x1000000
///
/// Definition of Processor Machine Check Error Record.
///
typedef struct {
SAL_SEC_HEADER SectionHeader;
UINT64 ValidationBits;
UINT64 ProcErrorMap;
UINT64 ProcStateParameter;
UINT64 ProcCrLid;
MOD_ERROR_INFO CacheError[15];
MOD_ERROR_INFO TlbError[15];
MOD_ERROR_INFO BusError[15];
MOD_ERROR_INFO RegFileCheck[15];
MOD_ERROR_INFO MsCheck[15];
CPUID_INFO CpuInfo;
PSI_STATIC_STRUCT PsiValidData;
} SAL_PROCESSOR_ERROR_RECORD;
///
/// GUID of Platform Memory Device Error Info.
///
#define SAL_MEMORY_ERROR_RECORD_INFO \
{ \
0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
}
//
// Bit masks for SAL_MEMORY_ERROR_RECORD.ValidationBits
//
#define MEMORY_ERROR_STATUS_VALID_BIT_MASK 0x1
#define MEMORY_PHYSICAL_ADDRESS_VALID_BIT_MASK 0x2
#define MEMORY_ADDR_BIT_MASK 0x4
#define MEMORY_NODE_VALID_BIT_MASK 0x8
#define MEMORY_CARD_VALID_BIT_MASK 0x10
#define MEMORY_MODULE_VALID_BIT_MASK 0x20
#define MEMORY_BANK_VALID_BIT_MASK 0x40
#define MEMORY_DEVICE_VALID_BIT_MASK 0x80
#define MEMORY_ROW_VALID_BIT_MASK 0x100
#define MEMORY_COLUMN_VALID_BIT_MASK 0x200
#define MEMORY_BIT_POSITION_VALID_BIT_MASK 0x400
#define MEMORY_PLATFORM_REQUESTOR_ID_VALID_BIT_MASK 0x800
#define MEMORY_PLATFORM_RESPONDER_ID_VALID_BIT_MASK 0x1000
#define MEMORY_PLATFORM_TARGET_VALID_BIT_MASK 0x2000
#define MEMORY_PLATFORM_BUS_SPECIFIC_DATA_VALID_BIT_MASK 0x4000
#define MEMORY_PLATFORM_OEM_ID_VALID_BIT_MASK 0x8000
#define MEMORY_PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK 0x10000
///
/// Definition of Platform Memory Device Error Info Record.
///
typedef struct {
SAL_SEC_HEADER SectionHeader;
UINT64 ValidationBits;
UINT64 MemErrorStatus;
UINT64 MemPhysicalAddress;
UINT64 MemPhysicalAddressMask;
UINT16 MemNode;
UINT16 MemCard;
UINT16 MemModule;
UINT16 MemBank;
UINT16 MemDevice;
UINT16 MemRow;
UINT16 MemColumn;
UINT16 MemBitPosition;
UINT64 ModRequestorId;
UINT64 ModResponderId;
UINT64 ModTargetId;
UINT64 BusSpecificData;
UINT8 MemPlatformOemId[16];
} SAL_MEMORY_ERROR_RECORD;
///
/// GUID of Platform PCI Bus Error Info.
///
#define SAL_PCI_BUS_ERROR_RECORD_INFO \
{ \
0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
}
//
// Bit masks for SAL_PCI_BUS_ERROR_RECORD.ValidationBits
//
#define PCI_BUS_ERROR_STATUS_VALID_BIT_MASK 0x1
#define PCI_BUS_ERROR_TYPE_VALID_BIT_MASK 0x2
#define PCI_BUS_ID_VALID_BIT_MASK 0x4
#define PCI_BUS_ADDRESS_VALID_BIT_MASK 0x8
#define PCI_BUS_DATA_VALID_BIT_MASK 0x10
#define PCI_BUS_CMD_VALID_BIT_MASK 0x20
#define PCI_BUS_REQUESTOR_ID_VALID_BIT_MASK 0x40
#define PCI_BUS_RESPONDER_ID_VALID_BIT_MASK 0x80
#define PCI_BUS_TARGET_VALID_BIT_MASK 0x100
#define PCI_BUS_OEM_ID_VALID_BIT_MASK 0x200
#define PCI_BUS_OEM_DATA_STRUCT_VALID_BIT_MASK 0x400
///
/// Designated PCI Bus identifier.
///
typedef struct {
UINT8 BusNumber;
UINT8 SegmentNumber;
} PCI_BUS_ID;
///
/// Definition of Platform PCI Bus Error Info Record.
///
typedef struct {
SAL_SEC_HEADER SectionHeader;
UINT64 ValidationBits;
UINT64 PciBusErrorStatus;
UINT16 PciBusErrorType;
PCI_BUS_ID PciBusId;
UINT32 Reserved;
UINT64 PciBusAddress;
UINT64 PciBusData;
UINT64 PciBusCommand;
UINT64 PciBusRequestorId;
UINT64 PciBusResponderId;
UINT64 PciBusTargetId;
UINT8 PciBusOemId[16];
} SAL_PCI_BUS_ERROR_RECORD;
///
/// GUID of Platform PCI Component Error Info.
///
#define SAL_PCI_COMP_ERROR_RECORD_INFO \
{ \
0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
}
//
// Bit masks for SAL_PCI_COMPONENT_ERROR_RECORD.ValidationBits
//
#define PCI_COMP_ERROR_STATUS_VALID_BIT_MASK 0x1
#define PCI_COMP_INFO_VALID_BIT_MASK 0x2
#define PCI_COMP_MEM_NUM_VALID_BIT_MASK 0x4
#define PCI_COMP_IO_NUM_VALID_BIT_MASK 0x8
#define PCI_COMP_REG_DATA_PAIR_VALID_BIT_MASK 0x10
#define PCI_COMP_OEM_DATA_STRUCT_VALID_BIT_MASK 0x20
///
/// Format of PCI Component Information to identify the device.
///
typedef struct {
UINT16 VendorId;
UINT16 DeviceId;
UINT8 ClassCode[3];
UINT8 FunctionNumber;
UINT8 DeviceNumber;
UINT8 BusNumber;
UINT8 SegmentNumber;
UINT8 Reserved[5];
} PCI_COMP_INFO;
///
/// Definition of Platform PCI Component Error Info.
///
typedef struct {
SAL_SEC_HEADER SectionHeader;
UINT64 ValidationBits;
UINT64 PciComponentErrorStatus;
PCI_COMP_INFO PciComponentInfo;
UINT32 PciComponentMemNum;
UINT32 PciComponentIoNum;
UINT8 PciBusOemId[16];
} SAL_PCI_COMPONENT_ERROR_RECORD;
///
/// Platform SEL Device Error Info.
///
#define SAL_SEL_DEVICE_ERROR_RECORD_INFO \
{ \
0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
}
//
// Bit masks for SAL_SEL_DEVICE_ERROR_RECORD.ValidationBits
//
#define SEL_RECORD_ID_VALID_BIT_MASK 0x1;
#define SEL_RECORD_TYPE_VALID_BIT_MASK 0x2;
#define SEL_GENERATOR_ID_VALID_BIT_MASK 0x4;
#define SEL_EVM_REV_VALID_BIT_MASK 0x8;
#define SEL_SENSOR_TYPE_VALID_BIT_MASK 0x10;
#define SEL_SENSOR_NUM_VALID_BIT_MASK 0x20;
#define SEL_EVENT_DIR_TYPE_VALID_BIT_MASK 0x40;
#define SEL_EVENT_DATA1_VALID_BIT_MASK 0x80;
#define SEL_EVENT_DATA2_VALID_BIT_MASK 0x100;
#define SEL_EVENT_DATA3_VALID_BIT_MASK 0x200;
///
/// Definition of Platform SEL Device Error Info Record.
///
typedef struct {
SAL_SEC_HEADER SectionHeader;
UINT64 ValidationBits;
UINT16 SelRecordId;
UINT8 SelRecordType;
UINT32 TimeStamp;
UINT16 GeneratorId;
UINT8 EvmRevision;
UINT8 SensorType;
UINT8 SensorNum;
UINT8 EventDirType;
UINT8 Data1;
UINT8 Data2;
UINT8 Data3;
} SAL_SEL_DEVICE_ERROR_RECORD;
///
/// GUID of Platform SMBIOS Device Error Info.
///
#define SAL_SMBIOS_ERROR_RECORD_INFO \
{ \
0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
}
//
// Bit masks for SAL_SMBIOS_DEVICE_ERROR_RECORD.ValidationBits
//
#define SMBIOS_EVENT_TYPE_VALID_BIT_MASK 0x1
#define SMBIOS_LENGTH_VALID_BIT_MASK 0x2
#define SMBIOS_TIME_STAMP_VALID_BIT_MASK 0x4
#define SMBIOS_DATA_VALID_BIT_MASK 0x8
///
/// Definition of Platform SMBIOS Device Error Info Record.
///
typedef struct {
SAL_SEC_HEADER SectionHeader;
UINT64 ValidationBits;
UINT8 SmbiosEventType;
UINT8 SmbiosLength;
UINT8 SmbiosBcdTimeStamp[6];
} SAL_SMBIOS_DEVICE_ERROR_RECORD;
///
/// GUID of Platform Specific Error Info.
///
#define SAL_PLATFORM_ERROR_RECORD_INFO \
{ \
0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
}
//
// Bit masks for SAL_PLATFORM_SPECIFIC_ERROR_RECORD.ValidationBits
//
#define PLATFORM_ERROR_STATUS_VALID_BIT_MASK 0x1
#define PLATFORM_REQUESTOR_ID_VALID_BIT_MASK 0x2
#define PLATFORM_RESPONDER_ID_VALID_BIT_MASK 0x4
#define PLATFORM_TARGET_VALID_BIT_MASK 0x8
#define PLATFORM_SPECIFIC_DATA_VALID_BIT_MASK 0x10
#define PLATFORM_OEM_ID_VALID_BIT_MASK 0x20
#define PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK 0x40
#define PLATFORM_OEM_DEVICE_PATH_VALID_BIT_MASK 0x80
///
/// Definition of Platform Specific Error Info Record.
///
typedef struct {
SAL_SEC_HEADER SectionHeader;
UINT64 ValidationBits;
UINT64 PlatformErrorStatus;
UINT64 PlatformRequestorId;
UINT64 PlatformResponderId;
UINT64 PlatformTargetId;
UINT64 PlatformBusSpecificData;
UINT8 OemComponentId[16];
} SAL_PLATFORM_SPECIFIC_ERROR_RECORD;
///
/// Union of all the possible SAL Error Record Types.
///
typedef union {
SAL_RECORD_HEADER *RecordHeader;
SAL_PROCESSOR_ERROR_RECORD *SalProcessorRecord;
SAL_PCI_BUS_ERROR_RECORD *SalPciBusRecord;
SAL_PCI_COMPONENT_ERROR_RECORD *SalPciComponentRecord;
SAL_SEL_DEVICE_ERROR_RECORD *ImpiRecord;
SAL_SMBIOS_DEVICE_ERROR_RECORD *SmbiosRecord;
SAL_PLATFORM_SPECIFIC_ERROR_RECORD *PlatformRecord;
SAL_MEMORY_ERROR_RECORD *MemoryRecord;
UINT8 *Raw;
} SAL_ERROR_RECORDS_POINTERS;
#pragma pack()
#endif

View File

@ -1,488 +0,0 @@
/** @file
Library class definition of Extended SAL Library.
Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _EXTENDED_SAL_LIB_H__
#define _EXTENDED_SAL_LIB_H__
#include <IndustryStandard/Sal.h>
/**
Register ESAL Class and its associated global.
This function Registers one or more Extended SAL services in a given
class along with the associated global context.
This function is only available prior to ExitBootServices().
@param ClassGuidLo GUID of function class, lower 64-bits
@param ClassGuidHi GUID of function class, upper 64-bits
@param ModuleGlobal Module global for Function.
@param ... List of Function/FunctionId pairs, ended by NULL
@retval EFI_SUCCESS The Extended SAL services were registered.
@retval EFI_UNSUPPORTED This function was called after ExitBootServices().
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to register one or more of the specified services.
@retval Other ClassGuid could not be installed onto a new handle.
**/
EFI_STATUS
EFIAPI
RegisterEsalClass (
IN CONST UINT64 ClassGuidLo,
IN CONST UINT64 ClassGuidHi,
IN VOID *ModuleGlobal, OPTIONAL
...
);
/**
Calls an Extended SAL Class service that was previously registered with RegisterEsalClass().
This function calls an Extended SAL Class service that was previously registered with RegisterEsalClass().
@param ClassGuidLo GUID of function, lower 64-bits
@param ClassGuidHi GUID of function, upper 64-bits
@param FunctionId Function in ClassGuid to call
@param Arg2 Argument 2 ClassGuid/FunctionId defined
@param Arg3 Argument 3 ClassGuid/FunctionId defined
@param Arg4 Argument 4 ClassGuid/FunctionId defined
@param Arg5 Argument 5 ClassGuid/FunctionId defined
@param Arg6 Argument 6 ClassGuid/FunctionId defined
@param Arg7 Argument 7 ClassGuid/FunctionId defined
@param Arg8 Argument 8 ClassGuid/FunctionId defined
@retval EFI_SAL_ERROR The address of ExtendedSalProc() can not be determined
for the current CPU execution mode.
@retval Other See the return status from ExtendedSalProc() in the
EXTENDED_SAL_BOOT_SERVICE_PROTOCOL.
**/
SAL_RETURN_REGS
EFIAPI
EsalCall (
IN UINT64 ClassGuidLo,
IN UINT64 ClassGuidHi,
IN UINT64 FunctionId,
IN UINT64 Arg2,
IN UINT64 Arg3,
IN UINT64 Arg4,
IN UINT64 Arg5,
IN UINT64 Arg6,
IN UINT64 Arg7,
IN UINT64 Arg8
);
/**
Wrapper for the EsalStallFunctionId service of Extended SAL Stall Services Class.
This function is a wrapper for the EsalStallFunctionId service of Extended SAL
Stall Services Class. See EsalStallFunctionId of Extended SAL Specification.
@param Microseconds The number of microseconds to delay.
@retval EFI_SAL_SUCCESS Call completed without error.
@retval EFI_SAL_INVALID_ARGUMENT Invalid argument.
@retval EFI_SAL_VIRTUAL_ADDRESS_ERROR Virtual address not registered
**/
SAL_RETURN_REGS
EFIAPI
EsalStall (
IN UINTN Microseconds
);
/**
Wrapper for the EsalSetNewPalEntryFunctionId service of Extended SAL PAL Services Services Class.
This function is a wrapper for the EsalSetNewPalEntryFunctionId service of Extended SAL
PAL Services Services Class. See EsalSetNewPalEntryFunctionId of Extended SAL Specification.
@param PhysicalAddress If TRUE, then PalEntryPoint is a physical address.
If FALSE, then PalEntryPoint is a virtual address.
@param PalEntryPoint The PAL Entry Point being set.
@retval EFI_SAL_SUCCESS The PAL Entry Point was set.
@retval EFI_SAL_VIRTUAL_ADDRESS_ERROR This function was called in virtual mode before
virtual mappings for the specified Extended SAL
Procedure are available.
**/
SAL_RETURN_REGS
EFIAPI
EsalSetNewPalEntry (
IN BOOLEAN PhysicalAddress,
IN UINT64 PalEntryPoint
);
/**
Wrapper for the EsalGetNewPalEntryFunctionId service of Extended SAL PAL Services Services Class.
This function is a wrapper for the EsalGetNewPalEntryFunctionId service of Extended SAL
PAL Services Services Class. See EsalGetNewPalEntryFunctionId of Extended SAL Specification.
@param PhysicalAddress If TRUE, then PalEntryPoint is a physical address.
If FALSE, then PalEntryPoint is a virtual address.
@retval EFI_SAL_SUCCESS The PAL Entry Point was retrieved and returned in
SAL_RETURN_REGS.r9.
@retval EFI_SAL_VIRTUAL_ADDRESS_ERROR This function was called in virtual mode before
virtual mappings for the specified Extended SAL
Procedure are available.
@return r9 PAL entry point retrieved.
**/
SAL_RETURN_REGS
EFIAPI
EsalGetNewPalEntry (
IN BOOLEAN PhysicalAddress
);
/**
Wrapper for the EsalGetStateBufferFunctionId service of Extended SAL MCA Log Services Class.
This function is a wrapper for the EsalGetStateBufferFunctionId service of Extended SAL
MCA Log Services Class. See EsalGetStateBufferFunctionId of Extended SAL Specification.
@param McaType See type parameter of SAL Procedure SAL_GET_STATE_INFO.
@param McaBuffer A pointer to the base address of the returned buffer.
Copied from SAL_RETURN_REGS.r9.
@param BufferSize A pointer to the size, in bytes, of the returned buffer.
Copied from SAL_RETURN_REGS.r10.
@retval EFI_SAL_SUCCESS The memory buffer to store error records was returned in r9 and r10.
@retval EFI_OUT_OF_RESOURCES A memory buffer for string error records in not available
@return r9 Base address of the returned buffer
@return r10 Size of the returned buffer in bytes
**/
SAL_RETURN_REGS
EFIAPI
EsalGetStateBuffer (
IN UINT64 McaType,
OUT UINT8 **McaBuffer,
OUT UINTN *BufferSize
);
/**
Wrapper for the EsalSaveStateBufferFunctionId service of Extended SAL MCA Log Services Class.
This function is a wrapper for the EsalSaveStateBufferFunctionId service of Extended SAL
MCA Log Services Class. See EsalSaveStateBufferFunctionId of Extended SAL Specification.
@param McaType See type parameter of SAL Procedure SAL_GET_STATE_INFO.
@retval EFI_SUCCESS The memory buffer containing the error record was written to nonvolatile storage.
**/
SAL_RETURN_REGS
EFIAPI
EsalSaveStateBuffer (
IN UINT64 McaType
);
/**
Wrapper for the EsalGetVectorsFunctionId service of Extended SAL Base Services Class.
This function is a wrapper for the EsalGetVectorsFunctionId service of Extended SAL
Base Services Class. See EsalGetVectorsFunctionId of Extended SAL Specification.
@param VectorType The vector type to retrieve.
0 - MCA, 1 - BSP INIT, 2 - BOOT_RENDEZ, 3 - AP INIT.
@retval EFI_SAL_SUCCESS Call completed without error.
@retval EFI_SAL_INVALID_ARGUMENT Invalid argument.
@retval EFI_SAL_NO_INFORMATION The requested vector has not been registered
with the SAL Procedure SAL_SET_VECTORS.
**/
SAL_RETURN_REGS
EFIAPI
EsalGetVectors (
IN UINT64 VectorType
);
/**
Wrapper for the EsalMcGetParamsFunctionId service of Extended SAL Base Services Class.
This function is a wrapper for the EsalMcGetParamsFunctionId service of Extended SAL
Base Services Class. See EsalMcGetParamsFunctionId of Extended SAL Specification.
@param ParamInfoType The parameter type to retrieve.
1 - rendezvous interrupt
2 - wake up
3 - Corrected Platform Error Vector.
@retval EFI_SAL_SUCCESS Call completed without error.
@retval EFI_SAL_INVALID_ARGUMENT Invalid argument.
@retval EFI_SAL_NO_INFORMATION The requested vector has not been registered
with the SAL Procedure SAL_MC_SET_PARAMS.
**/
SAL_RETURN_REGS
EFIAPI
EsalMcGetParams (
IN UINT64 ParamInfoType
);
/**
Wrapper for the EsalMcGetParamsFunctionId service of Extended SAL Base Services Class.
This function is a wrapper for the EsalMcGetParamsFunctionId service of Extended SAL
Base Services Class. See EsalMcGetParamsFunctionId of Extended SAL Specification.
@retval EFI_SAL_SUCCESS Call completed without error.
@retval EFI_SAL_NO_INFORMATION The requested vector has not been registered
with the SAL Procedure SAL_MC_SET_PARAMS.
**/
SAL_RETURN_REGS
EFIAPI
EsalMcGetMcParams (
VOID
);
/**
Wrapper for the EsalGetMcCheckinFlagsFunctionId service of Extended SAL Base Services Class.
This function is a wrapper for the EsalGetMcCheckinFlagsFunctionId service of Extended SAL
Base Services Class. See EsalGetMcCheckinFlagsFunctionId of Extended SAL Specification.
@param CpuIndex The index of the CPU of set of enabled CPUs to check.
@retval EFI_SAL_SUCCESS The checkin status of the requested CPU was returned.
**/
SAL_RETURN_REGS
EFIAPI
EsalGetMcCheckinFlags (
IN UINT64 CpuIndex
);
/**
Wrapper for the EsalAddCpuDataFunctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalAddCpuDataFunctionId service of Extended SAL
MP Services Class. See EsalAddCpuDataFunctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU being added.
@param Enabled The enable flag for the CPU being added.
TRUE means the CPU is enabled.
FALSE means the CPU is disabled.
@param PalCompatibility The PAL Compatibility value for the CPU being added.
@retval EFI_SAL_SUCCESS The CPU was added to the database.
@retval EFI_SAL_NOT_ENOUGH_SCRATCH There are not enough resource available to add the CPU.
**/
SAL_RETURN_REGS
EFIAPI
EsalAddCpuData (
IN UINT64 CpuGlobalId,
IN BOOLEAN Enabled,
IN UINT64 PalCompatibility
);
/**
Wrapper for the EsalRemoveCpuDataFunctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalRemoveCpuDataFunctionId service of Extended SAL
MP Services Class. See EsalRemoveCpuDataFunctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU being removed.
@retval EFI_SAL_SUCCESS The CPU was removed from the database.
@retval EFI_SAL_NO_INFORMATION The specified CPU is not in the database.
**/
SAL_RETURN_REGS
EFIAPI
EsalRemoveCpuData (
IN UINT64 CpuGlobalId
);
/**
Wrapper for the EsalModifyCpuDataFunctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalModifyCpuDataFunctionId service of Extended SAL
MP Services Class. See EsalModifyCpuDataFunctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU being modified.
@param Enabled The enable flag for the CPU being modified.
TRUE means the CPU is enabled.
FALSE means the CPU is disabled.
@param PalCompatibility The PAL Compatibility value for the CPU being modified.
@retval EFI_SAL_SUCCESS The CPU database was updated.
@retval EFI_SAL_NO_INFORMATION The specified CPU is not in the database.
**/
SAL_RETURN_REGS
EFIAPI
EsalModifyCpuData (
IN UINT64 CpuGlobalId,
IN BOOLEAN Enabled,
IN UINT64 PalCompatibility
);
/**
Wrapper for the EsalGetCpuDataByIdFunctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalGetCpuDataByIdFunctionId service of Extended SAL
MP Services Class. See EsalGetCpuDataByIdFunctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU being looked up.
@param IndexByEnabledCpu If TRUE, then the index of set of enabled CPUs of database is returned.
If FALSE, then the index of set of all CPUs of database is returned.
@retval EFI_SAL_SUCCESS The information on the specified CPU was returned.
@retval EFI_SAL_NO_INFORMATION The specified CPU is not in the database.
**/
SAL_RETURN_REGS
EFIAPI
EsalGetCpuDataById (
IN UINT64 CpuGlobalId,
IN BOOLEAN IndexByEnabledCpu
);
/**
Wrapper for the EsalGetCpuDataByIndexFunctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalGetCpuDataByIndexFunctionId service of Extended SAL
MP Services Class. See EsalGetCpuDataByIndexFunctionId of Extended SAL Specification.
@param Index The Global ID for the CPU being modified.
@param IndexByEnabledCpu If TRUE, then the index of set of enabled CPUs of database is returned.
If FALSE, then the index of set of all CPUs of database is returned.
@retval EFI_SAL_SUCCESS The information on the specified CPU was returned.
@retval EFI_SAL_NO_INFORMATION The specified CPU is not in the database.
**/
SAL_RETURN_REGS
EFIAPI
EsalGetCpuDataByIndex (
IN UINT64 Index,
IN BOOLEAN IndexByEnabledCpu
);
/**
Wrapper for the EsalWhoAmIFunctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalWhoAmIFunctionId service of Extended SAL
MP Services Class. See EsalWhoAmIFunctionId of Extended SAL Specification.
@param IndexByEnabledCpu If TRUE, then the index of set of enabled CPUs of database is returned.
If FALSE, then the index of set of all CPUs of database is returned.
@retval EFI_SAL_SUCCESS The Global ID for the calling CPU was returned.
@retval EFI_SAL_NO_INFORMATION The calling CPU is not in the database.
**/
SAL_RETURN_REGS
EFIAPI
EsalWhoAmI (
IN BOOLEAN IndexByEnabledCpu
);
/**
Wrapper for the EsalNumProcessors service of Extended SAL MP Services Class.
This function is a wrapper for the EsalNumProcessors service of Extended SAL
MP Services Class. See EsalNumProcessors of Extended SAL Specification.
@retval EFI_SAL_SUCCESS The information on the number of CPUs in the platform
was returned.
**/
SAL_RETURN_REGS
EFIAPI
EsalNumProcessors (
VOID
);
/**
Wrapper for the EsalSetMinStateFnctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalSetMinStateFnctionId service of Extended SAL
MP Services Class. See EsalSetMinStateFnctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU whose MINSTATE pointer is being set.
@param MinStatePointer The physical address of the MINSTATE buffer for the CPU
specified by CpuGlobalId.
@retval EFI_SAL_SUCCESS The MINSTATE pointer was set for the specified CPU.
@retval EFI_SAL_NO_INFORMATION The specified CPU is not in the database.
**/
SAL_RETURN_REGS
EFIAPI
EsalSetMinState (
IN UINT64 CpuGlobalId,
IN EFI_PHYSICAL_ADDRESS MinStatePointer
);
/**
Wrapper for the EsalGetMinStateFunctionId service of Extended SAL MP Services Class.
This function is a wrapper for the EsalGetMinStateFunctionId service of Extended SAL
MP Services Class. See EsalGetMinStateFunctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU whose MINSTATE pointer is being retrieved.
@retval EFI_SAL_SUCCESS The MINSTATE pointer for the specified CPU was retrieved.
@retval EFI_SAL_NO_INFORMATION The specified CPU is not in the database.
**/
SAL_RETURN_REGS
EFIAPI
EsalGetMinState (
IN UINT64 CpuGlobalId
);
/**
Wrapper for the EsalMcsGetStateInfoFunctionId service of Extended SAL MCA Services Class.
This function is a wrapper for the EsalMcsGetStateInfoFunctionId service of Extended SAL
MCA Services Class. See EsalMcsGetStateInfoFunctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU whose MCA state buffer is being retrieved.
@param StateBufferPointer A pointer to the returned MCA state buffer.
@param RequiredStateBufferSize A pointer to the size, in bytes, of the returned MCA state buffer.
@retval EFI_SUCCESS MINSTATE successfully got and size calculated.
@retval EFI_SAL_NO_INFORMATION Fail to get MINSTATE.
**/
SAL_RETURN_REGS
EFIAPI
EsalMcaGetStateInfo (
IN UINT64 CpuGlobalId,
OUT EFI_PHYSICAL_ADDRESS *StateBufferPointer,
OUT UINT64 *RequiredStateBufferSize
);
/**
Wrapper for the EsalMcaRegisterCpuFunctionId service of Extended SAL MCA Services Class.
This function is a wrapper for the EsalMcaRegisterCpuFunctionId service of Extended SAL
MCA Services Class. See EsalMcaRegisterCpuFunctionId of Extended SAL Specification.
@param CpuGlobalId The Global ID for the CPU whose MCA state buffer is being set.
@param StateBufferPointer A pointer to the MCA state buffer.
@retval EFI_SAL_NO_INFORMATION Cannot get the processor info with the CpuId
@retval EFI_SUCCESS Save the processor's state info successfully
**/
SAL_RETURN_REGS
EFIAPI
EsalMcaRegisterCpu (
IN UINT64 CpuGlobalId,
IN EFI_PHYSICAL_ADDRESS StateBufferPointer
);
#endif

View File

@ -1,57 +0,0 @@
/** @file
Provides library services to make PAL Calls.
The PAL Library provides a service to make a PAL CALL. This service is identical
in functionality to AsmPalCall() in the functions of the Base Library specific to Intel Itanium architecture.
The only difference is that the PAL Entry Point is not passed in. Implementations
of this library class must manage PAL Entry Point on their own. For example, a PEI
implementation can use a PPI to lookup the PAL Entry Point, and a DXE implementation
can contain a constructor to look up the PAL Entry Point from a HOB. This library class
is only available on Intel Itanium-based platforms.
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __PAL_CALL_LIB_H__
#define __PAL_CALL_LIB_H__
#include <IndustryStandard/Pal.h>
/**
Makes a PAL procedure call.
This is a wrapper function to make a PAL procedure call. Based on the Index value,
this API will make static or stacked PAL call. Architected procedures may be designated
as required or optional. If a PAL procedure is specified as optional, a unique return
code of 0xFFFFFFFFFFFFFFFF is returned in the Status field of the PAL_CALL_RETURN structure.
This indicates that the procedure is not present in this PAL implementation. It is the
caller's responsibility to check for this return code after calling any optional PAL
procedure. No parameter checking is performed on the 4 input parameters, but there are
some common rules that the caller should follow when making a PAL call. Any address
passed to PAL as buffers for return parameters must be 8-byte aligned. Unaligned addresses
may cause undefined results. For those parameters defined as reserved or some fields
defined as reserved must be zero filled or the invalid argument return value may be
returned or undefined result may occur during the execution of the procedure.
This function is only available on Intel Itanium-based platforms.
@param Index The PAL procedure Index number.
@param Arg2 The 2nd parameter for PAL procedure calls.
@param Arg3 The 3rd parameter for PAL procedure calls.
@param Arg4 The 4th parameter for PAL procedure calls.
@return Structure returned from the PAL Call procedure, including the status and return value.
**/
PAL_CALL_RETURN
EFIAPI
PalCall (
IN UINT64 Index,
IN UINT64 Arg2,
IN UINT64 Arg3,
IN UINT64 Arg4
);
#endif

View File

@ -1,53 +0,0 @@
/** @file
Provides library services to make SAL Calls.
Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __SAL_LIB__
#define __SAL_LIB__
#include <IndustryStandard/Sal.h>
/**
Makes a SAL procedure call.
This is a wrapper function to make a SAL procedure call.
No parameter checking is performed on the 8 input parameters,
but there are some common rules that the caller should follow
when making a SAL call. Any address passed to SAL as buffers
for return parameters must be 8-byte aligned. Unaligned
addresses may cause undefined results. For those parameters
defined as reserved or some fields defined as reserved must be
zero filled or the invalid argument return value may be returned
or undefined result may occur during the execution of the procedure.
This function is only available on Intel Itanium-based platforms.
@param Index The SAL procedure Index number
@param Arg2 The 2nd parameter for SAL procedure calls
@param Arg3 The 3rd parameter for SAL procedure calls
@param Arg4 The 4th parameter for SAL procedure calls
@param Arg5 The 5th parameter for SAL procedure calls
@param Arg6 The 6th parameter for SAL procedure calls
@param Arg7 The 7th parameter for SAL procedure calls
@param Arg8 The 8th parameter for SAL procedure calls
@return SAL returned registers.
**/
SAL_RETURN_REGS
EFIAPI
SalCall (
IN UINT64 Index,
IN UINT64 Arg2,
IN UINT64 Arg3,
IN UINT64 Arg4,
IN UINT64 Arg5,
IN UINT64 Arg6,
IN UINT64 Arg7,
IN UINT64 Arg8
);
#endif

View File

@ -1,211 +0,0 @@
/** @file
Definition of Extended SAL Boot Service Protocol
The Extended SAL Boot Service Protocol provides a mechanisms for platform specific
drivers to update the SAL System Table and register Extended SAL Procedures that are
callable in physical or virtual mode using the SAL calling convention.
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Revision Reference:
This Protocol was introduced in PI Specification 1.2.
**/
#ifndef _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_H_
#define _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_H_
#include <IndustryStandard/Sal.h>
#define EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID \
{ 0xde0ee9a4, 0x3c7a, 0x44f2, {0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7 } }
typedef struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL EXTENDED_SAL_BOOT_SERVICE_PROTOCOL;
/**
Adds platform specific information to the to the header of the SAL System Table.
@param This A pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
@param SalAVersion Version of recovery SAL PEIM(s) in BCD format. Higher byte contains
the major revision and the lower byte contains the minor revision.
@param SalBVersion Version of DXE SAL Driver in BCD format. Higher byte contains
the major revision and the lower byte contains the minor revision.
@param OemId A pointer to a Null-terminated ASCII string that contains OEM unique string.
The string cannot be longer than 32 bytes in total length
@param ProductId A pointer to a Null-terminated ASCII string that uniquely identifies a family of
compatible products. The string cannot be longer than 32 bytes in total length.
@retval EFI_SUCCESS The SAL System Table header was updated successfully.
@retval EFI_INVALID_PARAMETER OemId is NULL.
@retval EFI_INVALID_PARAMETER ProductId is NULL.
@retval EFI_INVALID_PARAMETER The length of OemId is greater than 32 characters.
@retval EFI_INVALID_PARAMETER The length of ProductId is greater than 32 characters.
**/
typedef
EFI_STATUS
(EFIAPI *EXTENDED_SAL_ADD_SST_INFO)(
IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
IN UINT16 SalAVersion,
IN UINT16 SalBVersion,
IN CHAR8 *OemId,
IN CHAR8 *ProductId
);
/**
Adds an entry to the SAL System Table.
This function adds the SAL System Table Entry specified by TableEntry and EntrySize
to the SAL System Table.
@param This A pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
@param TableEntry Pointer to a buffer containing a SAL System Table entry that is EntrySize bytes
in length. The first byte of the TableEntry describes the type of entry.
@param EntrySize The size, in bytes, of TableEntry.
@retval EFI_SUCCESSThe SAL System Table was updated successfully.
@retval EFI_INVALID_PARAMETER TableEntry is NULL.
@retval EFI_INVALID_PARAMETER TableEntry specifies an invalid entry type.
@retval EFI_INVALID_PARAMETER EntrySize is not valid for this type of entry.
**/
typedef
EFI_STATUS
(EFIAPI *EXTENDED_SAL_ADD_SST_ENTRY)(
IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
IN UINT8 *TableEntry,
IN UINTN EntrySize
);
/**
Internal ESAL procedures.
This is prototype of internal Extended SAL procedures, which is registerd by
EXTENDED_SAL_REGISTER_INTERNAL_PROC service.
@param FunctionId The Function ID associated with this Extended SAL Procedure.
@param Arg2 Second argument to the Extended SAL procedure.
@param Arg3 Third argument to the Extended SAL procedure.
@param Arg4 Fourth argument to the Extended SAL procedure.
@param Arg5 Fifth argument to the Extended SAL procedure.
@param Arg6 Sixth argument to the Extended SAL procedure.
@param Arg7 Seventh argument to the Extended SAL procedure.
@param Arg8 Eighth argument to the Extended SAL procedure.
@param VirtualMode TRUE if the Extended SAL Procedure is being invoked in virtual mode.
FALSE if the Extended SAL Procedure is being invoked in physical mode.
@param ModuleGlobal A pointer to the global context associated with this Extended SAL Procedure.
@return The result returned from the specified Extended SAL Procedure
**/
typedef
SAL_RETURN_REGS
(EFIAPI *SAL_INTERNAL_EXTENDED_SAL_PROC)(
IN UINT64 FunctionId,
IN UINT64 Arg2,
IN UINT64 Arg3,
IN UINT64 Arg4,
IN UINT64 Arg5,
IN UINT64 Arg6,
IN UINT64 Arg7,
IN UINT64 Arg8,
IN BOOLEAN VirtualMode,
IN VOID *ModuleGlobal OPTIONAL
);
/**
Registers an Extended SAL Procedure.
The Extended SAL Procedure specified by InternalSalProc and named by ClassGuidLo,
ClassGuidHi, and FunctionId is added to the set of available Extended SAL Procedures.
@param This A pointer to the EXTENDED_SAL_BOOT_SERVICE_PROTOCOL instance.
@param ClassGuidLo The lower 64-bits of the class GUID for the Extended SAL Procedure being added.
Each class GUID contains one or more functions specified by a Function ID.
@param ClassGuidHi The upper 64-bits of the class GUID for the Extended SAL Procedure being added.
Each class GUID contains one or more functions specified by a Function ID.
@param FunctionId The Function ID for the Extended SAL Procedure that is being added. This Function
ID is a member of the Extended SAL Procedure class specified by ClassGuidLo
and ClassGuidHi.
@param InternalSalProc A pointer to the Extended SAL Procedure being added.
@param PhysicalModuleGlobal Pointer to a module global structure. This is a physical mode pointer.
This pointer is passed to the Extended SAL Procedure specified by ClassGuidLo,
ClassGuidHi, FunctionId, and InternalSalProc. If the system is in physical mode,
then this pointer is passed unmodified to InternalSalProc. If the system is in
virtual mode, then the virtual address associated with this pointer is passed to
InternalSalProc.
@retval EFI_SUCCESS The Extended SAL Procedure was added.
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to add the Extended SAL Procedure.
**/
typedef
EFI_STATUS
(EFIAPI *EXTENDED_SAL_REGISTER_INTERNAL_PROC)(
IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
IN UINT64 ClassGuidLo,
IN UINT64 ClassGuidHi,
IN UINT64 FunctionId,
IN SAL_INTERNAL_EXTENDED_SAL_PROC InternalSalProc,
IN VOID *PhysicalModuleGlobal OPTIONAL
);
/**
Calls a previously registered Extended SAL Procedure.
This function calls the Extended SAL Procedure specified by ClassGuidLo, ClassGuidHi,
and FunctionId. The set of previously registered Extended SAL Procedures is searched for a
matching ClassGuidLo, ClassGuidHi, and FunctionId. If a match is not found, then
EFI_SAL_NOT_IMPLEMENTED is returned.
@param ClassGuidLo The lower 64-bits of the class GUID for the Extended SAL Procedure
that is being called.
@param ClassGuidHi The upper 64-bits of the class GUID for the Extended SAL Procedure
that is being called.
@param FunctionId Function ID for the Extended SAL Procedure being called.
@param Arg2 Second argument to the Extended SAL procedure.
@param Arg3 Third argument to the Extended SAL procedure.
@param Arg4 Fourth argument to the Extended SAL procedure.
@param Arg5 Fifth argument to the Extended SAL procedure.
@param Arg6 Sixth argument to the Extended SAL procedure.
@param Arg7 Seventh argument to the Extended SAL procedure.
@param Arg8 Eighth argument to the Extended SAL procedure.
@retval EFI_SAL_NOT_IMPLEMENTED The Extended SAL Procedure specified by ClassGuidLo,
ClassGuidHi, and FunctionId has not been registered.
@retval EFI_SAL_VIRTUAL_ADDRESS_ERROR This function was called in virtual mode before virtual mappings
for the specified Extended SAL Procedure are available.
@retval Other The result returned from the specified Extended SAL Procedure
**/
typedef
SAL_RETURN_REGS
(EFIAPI *EXTENDED_SAL_PROC)(
IN UINT64 ClassGuidLo,
IN UINT64 ClassGuidHi,
IN UINT64 FunctionId,
IN UINT64 Arg2,
IN UINT64 Arg3,
IN UINT64 Arg4,
IN UINT64 Arg5,
IN UINT64 Arg6,
IN UINT64 Arg7,
IN UINT64 Arg8
);
///
/// The EXTENDED_SAL_BOOT_SERVICE_PROTOCOL provides a mechanisms for platform specific
/// drivers to update the SAL System Table and register Extended SAL Procedures that are
/// callable in physical or virtual mode using the SAL calling convention.
///
struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL {
EXTENDED_SAL_ADD_SST_INFO AddSalSystemTableInfo;
EXTENDED_SAL_ADD_SST_ENTRY AddSalSystemTableEntry;
EXTENDED_SAL_REGISTER_INTERNAL_PROC RegisterExtendedSalProc;
EXTENDED_SAL_PROC ExtendedSalProc;
};
extern EFI_GUID gEfiExtendedSalBootServiceProtocolGuid;
#endif

View File

@ -1,272 +0,0 @@
/** @file
The standard set of Extended SAL service classes.
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Revision Reference:
This Protocol was introduced in PI Specification 1.2.
**/
#ifndef _EXTENDED_SAL_SERVICE_CLASSES_H_
#define _EXTENDED_SAL_SERVICE_CLASSES_H_
///
/// Extended SAL Base I/O Services Class
///
///@{
#define EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID_LO 0x451531e15aea42b5
#define EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID_HI 0xa6657525d5b831bc
#define EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID \
{ 0x5aea42b5, 0x31e1, 0x4515, {0xbc, 0x31, 0xb8, 0xd5, 0x25, 0x75, 0x65, 0xa6 } }
typedef enum {
IoReadFunctionId,
IoWriteFunctionId,
MemReadFunctionId,
MemWriteFunctionId
} EFI_EXTENDED_SAL_BASE_IO_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Stall Services Class
///
///@{
#define EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID_LO 0x4d8cac2753a58d06
#define EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID_HI 0x704165808af0e9b5
#define EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID \
{ 0x53a58d06, 0xac27, 0x4d8c, {0xb5, 0xe9, 0xf0, 0x8a, 0x80, 0x65, 0x41, 0x70 } }
typedef enum {
StallFunctionId
} EFI_EXTENDED_SAL_STALL_FUNC_ID;
///@}
///
/// Extended SAL Real Time Clock Services Class
///
///@{
#define EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO 0x4d02efdb7e97a470
#define EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI 0x96a27bd29061ce8f
#define EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID \
{ 0x7e97a470, 0xefdb, 0x4d02, {0x8f, 0xce, 0x61, 0x90, 0xd2, 0x7b, 0xa2, 0x96 } }
typedef enum {
GetTimeFunctionId,
SetTimeFunctionId,
GetWakeupTimeFunctionId,
SetWakeupTimeFunctionId,
GetRtcFreqFunctionId,
InitializeThresholdFunctionId,
BumpThresholdCountFunctionId,
GetThresholdCountFunctionId
} EFI_EXTENDED_SAL_RTC_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Variable Services Class
///
///@{
#define EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO 0x4370c6414ecb6c53
#define EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI 0x78836e490e3bb28c
#define EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID \
{ 0x4ecb6c53, 0xc641, 0x4370, {0x8c, 0xb2, 0x3b, 0x0e, 0x49, 0x6e, 0x83, 0x78 } }
typedef enum {
EsalGetVariableFunctionId,
EsalGetNextVariableNameFunctionId,
EsalSetVariableFunctionId,
EsalQueryVariableInfoFunctionId
} EFI_EXTENDED_SAL_VARIABLE_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Monotonic Counter Services Class
///
///@{
#define EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_LO 0x408b75e8899afd18
#define EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_HI 0x54f4cd7e2e6e1aa4
#define EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID \
{ 0x899afd18, 0x75e8, 0x408b, {0xa4, 0x1a, 0x6e, 0x2e, 0x7e, 0xcd, 0xf4, 0x54 } }
typedef enum {
GetNextHighMonotonicCountFunctionId
} EFI_EXTENDED_SAL_MTC_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Reset Services Class
///
///@{
#define EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_LO 0x46f58ce17d019990
#define EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_HI 0xa06a6798513c76a7
#define EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID \
{ 0x7d019990, 0x8ce1, 0x46f5, {0xa7, 0x76, 0x3c, 0x51, 0x98, 0x67, 0x6a, 0xa0 } }
typedef enum {
ResetSystemFunctionId
} EFI_EXTENDED_SAL_RESET_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Status Code Services Class
///
///@{
#define EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID_LO 0x420f55e9dbd91d
#define EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID_HI 0x4fb437849f5e3996
#define EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID \
{ 0xdbd91d, 0x55e9, 0x420f, {0x96, 0x39, 0x5e, 0x9f, 0x84, 0x37, 0xb4, 0x4f } }
typedef enum {
ReportStatusCodeServiceFunctionId
} EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Firmware Volume Block Services Class
///
///@{
#define EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID_LO 0x4f1dbcbba2271df1
#define EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID_HI 0x1a072f17bc06a998
#define EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID \
{ 0xa2271df1, 0xbcbb, 0x4f1d, {0x98, 0xa9, 0x06, 0xbc, 0x17, 0x2f, 0x07, 0x1a } }
typedef enum {
ReadFunctionId,
WriteFunctionId,
EraseBlockFunctionId,
GetVolumeAttributesFunctionId,
SetVolumeAttributesFunctionId,
GetPhysicalAddressFunctionId,
GetBlockSizeFunctionId,
} EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL MP Services Class
///
///@{
#define EFI_EXTENDED_SAL_MP_SERVICES_PROTOCOL_GUID_LO 0x4dc0cf18697d81a2
#define EFI_EXTENDED_SAL_MP_SERVICES_PROTOCOL_GUID_HI 0x3f8a613b11060d9e
#define EFI_EXTENDED_SAL_MP_SERVICES_PROTOCOL_GUID \
{ 0x697d81a2, 0xcf18, 0x4dc0, {0x9e, 0x0d, 0x06, 0x11, 0x3b, 0x61, 0x8a, 0x3f } }
typedef enum {
AddCpuDataFunctionId,
RemoveCpuDataFunctionId,
ModifyCpuDataFunctionId,
GetCpuDataByIDFunctionId,
GetCpuDataByIndexFunctionId,
SendIpiFunctionId,
CurrentProcInfoFunctionId,
NumProcessorsFunctionId,
SetMinStateFunctionId,
GetMinStateFunctionId
} EFI_EXTENDED_SAL_MP_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL PAL Services Class
///
///@{
#define EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID_LO 0x438d0fc2e1cd9d21
#define EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID_HI 0x571e966de6040397
#define EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID \
{ 0xe1cd9d21, 0x0fc2, 0x438d, {0x97, 0x03, 0x04, 0xe6, 0x6d, 0x96, 0x1e, 0x57 } }
typedef enum {
PalProcFunctionId,
SetNewPalEntryFunctionId,
GetNewPalEntryFunctionId,
EsalUpdatePalFunctionId
} EFI_EXTENDED_SAL_PAL_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Base Services Class
///
///@{
#define EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_LO 0x41c30fe0d9e9fa06
#define EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID_HI 0xf894335a4283fb96
#define EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID \
{ 0xd9e9fa06, 0x0fe0, 0x41c3, {0x96, 0xfb, 0x83, 0x42, 0x5a, 0x33, 0x94, 0xf8 } }
typedef enum {
SalSetVectorsFunctionId,
SalMcRendezFunctionId,
SalMcSetParamsFunctionId,
EsalGetVectorsFunctionId,
EsalMcGetParamsFunctionId,
EsalMcGetMcParamsFunctionId,
EsalGetMcCheckinFlagsFunctionId,
EsalGetPlatformBaseFreqFunctionId,
EsalPhysicalIdInfoFunctionId,
EsalRegisterPhysicalAddrFunctionId
} EFI_EXTENDED_SAL_BASE_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL MCA Services Class
///
///@{
#define EFI_EXTENDED_SAL_MCA_SERVICES_PROTOCOL_GUID_LO 0x42b16cc72a591128
#define EFI_EXTENDED_SAL_MCA_SERVICES_PROTOCOL_GUID_HI 0xbb2d683b9358f08a
#define EFI_EXTENDED_SAL_MCA_SERVICES_PROTOCOL_GUID \
{ 0x2a591128, 0x6cc7, 0x42b1, {0x8a, 0xf0, 0x58, 0x93, 0x3b, 0x68, 0x2d, 0xbb } }
typedef enum {
McaGetStateInfoFunctionId,
McaRegisterCpuFunctionId
} EFI_EXTENDED_SAL_MCA_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL PCI Services Class
///
///@{
#define EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_LO 0x4905ad66a46b1a31
#define EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID_HI 0x6330dc59462bf692
#define EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID \
{ 0xa46b1a31, 0xad66, 0x4905, {0x92, 0xf6, 0x2b, 0x46, 0x59, 0xdc, 0x30, 0x63 } }
typedef enum {
SalPciConfigReadFunctionId,
SalPciConfigWriteFunctionId
} EFI_EXTENDED_SAL_PCI_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL Cache Services Class
///
///@{
#define EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_LO 0x4ba52743edc9494
#define EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID_HI 0x88f11352ef0a1888
#define EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID \
{ 0xedc9494, 0x2743, 0x4ba5, { 0x88, 0x18, 0x0a, 0xef, 0x52, 0x13, 0xf1, 0x88 } }
typedef enum {
SalCacheInitFunctionId,
SalCacheFlushFunctionId
} EFI_EXTENDED_SAL_CACHE_SERVICES_FUNC_ID;
///@}
///
/// Extended SAL MCA Log Services Class
///
///@{
#define EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_LO 0x4c0338a3cb3fd86e
#define EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID_HI 0x7aaba2a3cf905c9a
#define EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID \
{ 0xcb3fd86e, 0x38a3, 0x4c03, {0x9a, 0x5c, 0x90, 0xcf, 0xa3, 0xa2, 0xab, 0x7a } }
typedef enum {
SalGetStateInfoFunctionId,
SalGetStateInfoSizeFunctionId,
SalClearStateInfoFunctionId,
EsalGetStateBufferFunctionId,
EsalSaveStateBufferFunctionId
} EFI_EXTENDED_SAL_MCA_LOG_SERVICES_FUNC_ID;
///@}
#endif

View File

@ -1,201 +0,0 @@
/** @file
MCA/PMI/INIT Protocol as defined in PI Specification VOLUME 4.
This protocol provides services to handle Machine Checks (MCA),
Initialization (INIT) events, and Platform Management Interrupt (PMI) events
on an Intel Itanium Processor Family based system.
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __MCA_INIT_PMI_PROTOCOL_H__
#define __MCA_INIT_PMI_PROTOCOL_H__
///
/// Global ID for the MCA/PMI/INIT Protocol.
///
#define EFI_SAL_MCA_INIT_PMI_PROTOCOL_GUID \
{ 0xb60dc6e8, 0x3b6f, 0x11d5, {0xaf, 0x9, 0x0, 0xa0, 0xc9, 0x44, 0xa0, 0x5b} }
///
/// Declare forward reference for the Timer Architectural Protocol
///
typedef struct _EFI_SAL_MCA_INIT_PMI_PROTOCOL EFI_SAL_MCA_INIT_PMI_PROTOCOL;
#pragma pack(1)
///
/// MCA Records Structure
///
typedef struct {
UINT64 First : 1;
UINT64 Last : 1;
UINT64 EntryCount : 16;
UINT64 DispatchedCount : 16;
UINT64 Reserved : 30;
} SAL_MCA_COUNT_STRUCTURE;
#pragma pack()
/**
Prototype of MCA handler.
@param ModuleGlobal The context of MCA Handler
@param ProcessorStateParameters The processor state parameters (PSP)
@param MinstateBase Base address of the min-state
@param RendezvouseStateInformation Rendezvous state information to be passed to
the OS on OS MCA entry
@param CpuIndex Index of the logical processor
@param McaCountStructure Pointer to the MCA records structure
@param CorrectedMachineCheck This flag is set to TRUE is the MCA has been
corrected by the handler or by a previous handler
@retval EFI_SUCCESS Handler successfully returned
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SAL_MCA_HANDLER)(
IN VOID *ModuleGlobal,
IN UINT64 ProcessorStateParameters,
IN EFI_PHYSICAL_ADDRESS MinstateBase,
IN UINT64 RendezvouseStateInformation,
IN UINT64 CpuIndex,
IN SAL_MCA_COUNT_STRUCTURE *McaCountStructure,
OUT BOOLEAN *CorrectedMachineCheck
);
/**
Prototype of INIT handler.
@param ModuleGlobal The context of INIT Handler
@param ProcessorStateParameters The processor state parameters (PSP)
@param MinstateBase Base address of the min-state
@param McaInProgress This flag indicates if an MCA is in progress
@param CpuIndex Index of the logical processor
@param McaCountStructure Pointer to the MCA records structure
@param DumpSwitchPressed This flag indicates the crash dump switch has been pressed
@retval EFI_SUCCESS Handler successfully returned
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SAL_INIT_HANDLER)(
IN VOID *ModuleGlobal,
IN UINT64 ProcessorStateParameters,
IN EFI_PHYSICAL_ADDRESS MinstateBase,
IN BOOLEAN McaInProgress,
IN UINT64 CpuIndex,
IN SAL_MCA_COUNT_STRUCTURE *McaCountStructure,
OUT BOOLEAN *DumpSwitchPressed
);
/**
Prototype of PMI handler
@param ModuleGlobal The context of PMI Handler
@param CpuIndex Index of the logical processor
@param PmiVector The PMI vector number as received from the PALE_PMI exit state (GR24)
@retval EFI_SUCCESS Handler successfully returned
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SAL_PMI_HANDLER)(
IN VOID *ModuleGlobal,
IN UINT64 CpuIndex,
IN UINT64 PmiVector
);
/**
Register a MCA handler with the MCA dispatcher.
@param This The EFI_SAL_MCA_INIT_PMI_PROTOCOL instance
@param McaHandler The MCA handler to register
@param ModuleGlobal The context of MCA Handler
@param MakeFirst This flag specifies the handler should be made first in the list
@param MakeLast This flag specifies the handler should be made last in the list
@retval EFI_SUCCESS MCA Handle was registered
@retval EFI_OUT_OF_RESOURCES No more resources to register an MCA handler
@retval EFI_INVALID_PARAMETER Invalid parameters were passed
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SAL_REGISTER_MCA_HANDLER)(
IN EFI_SAL_MCA_INIT_PMI_PROTOCOL *This,
IN EFI_SAL_MCA_HANDLER McaHandler,
IN VOID *ModuleGlobal,
IN BOOLEAN MakeFirst,
IN BOOLEAN MakeLast
);
/**
Register an INIT handler with the INIT dispatcher.
@param This The EFI_SAL_MCA_INIT_PMI_PROTOCOL instance
@param InitHandler The INIT handler to register
@param ModuleGlobal The context of INIT Handler
@param MakeFirst This flag specifies the handler should be made first in the list
@param MakeLast This flag specifies the handler should be made last in the list
@retval EFI_SUCCESS INIT Handle was registered
@retval EFI_OUT_OF_RESOURCES No more resources to register an INIT handler
@retval EFI_INVALID_PARAMETER Invalid parameters were passed
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SAL_REGISTER_INIT_HANDLER)(
IN EFI_SAL_MCA_INIT_PMI_PROTOCOL *This,
IN EFI_SAL_INIT_HANDLER InitHandler,
IN VOID *ModuleGlobal,
IN BOOLEAN MakeFirst,
IN BOOLEAN MakeLast
);
/**
Register a PMI handler with the PMI dispatcher.
@param This The EFI_SAL_MCA_INIT_PMI_PROTOCOL instance
@param PmiHandler The PMI handler to register
@param ModuleGlobal The context of PMI Handler
@param MakeFirst This flag specifies the handler should be made first in the list
@param MakeLast This flag specifies the handler should be made last in the list
@retval EFI_SUCCESS PMI Handle was registered
@retval EFI_OUT_OF_RESOURCES No more resources to register an PMI handler
@retval EFI_INVALID_PARAMETER Invalid parameters were passed
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SAL_REGISTER_PMI_HANDLER)(
IN EFI_SAL_MCA_INIT_PMI_PROTOCOL *This,
IN EFI_SAL_PMI_HANDLER PmiHandler,
IN VOID *ModuleGlobal,
IN BOOLEAN MakeFirst,
IN BOOLEAN MakeLast
);
///
/// This protocol is used to register MCA, INIT and PMI handlers with their respective dispatcher
///
struct _EFI_SAL_MCA_INIT_PMI_PROTOCOL {
EFI_SAL_REGISTER_MCA_HANDLER RegisterMcaHandler;
EFI_SAL_REGISTER_INIT_HANDLER RegisterInitHandler;
EFI_SAL_REGISTER_PMI_HANDLER RegisterPmiHandler;
BOOLEAN McaInProgress; ///< Whether MCA handler is in progress
BOOLEAN InitInProgress; ///< Whether Init handler is in progress
BOOLEAN PmiInProgress; ///< Whether Pmi handler is in progress
};
extern EFI_GUID gEfiSalMcaInitPmiProtocolGuid;
#endif

View File

@ -324,9 +324,6 @@
## Include/Guid/Mps.h
gEfiMpsTableGuid = { 0xEB9D2D2F, 0x2D88, 0x11D3, { 0x9A, 0x16, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Guid/SalSystemTable.h
gEfiSalSystemTableGuid = { 0xEB9D2D32, 0x2D88, 0x11D3, { 0x9A, 0x16, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/AuthenticationInfo.h
gEfiAuthenticationChapLocalGuid = { 0xC280C73E, 0x15CA, 0x11DA, { 0xB0, 0xCA, 0x00, 0x10, 0x83, 0xFF, 0xCA, 0x4D }}
@ -1122,29 +1119,6 @@
## Include/Protocol/LegacyRegion2.h
gEfiLegacyRegion2ProtocolGuid = {0x70101eaf, 0x85, 0x440c, {0xb3, 0x56, 0x8e, 0xe3, 0x6f, 0xef, 0x24, 0xf0 } }
## Include/Protocol/McaInitPmi.h
gEfiSalMcaInitPmiProtocolGuid = { 0xb60dc6e8, 0x3b6f, 0x11d5, {0xaf, 0x9, 0x0, 0xa0, 0xc9, 0x44, 0xa0, 0x5b } }
## Include/Protocol/ExtendedSalBootService.h
gEfiExtendedSalBootServiceProtocolGuid = { 0xde0ee9a4, 0x3c7a, 0x44f2, {0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7 } }
## Include/Protocol/ExtendedSalServiceClasses.h
gEfiExtendedSalBaseIoServicesProtocolGuid = { 0x5aea42b5, 0x31e1, 0x4515, {0xbc, 0x31, 0xb8, 0xd5, 0x25, 0x75, 0x65, 0xa6 } }
gEfiExtendedSalStallServicesProtocolGuid = { 0x53a58d06, 0xac27, 0x4d8c, {0xb5, 0xe9, 0xf0, 0x8a, 0x80, 0x65, 0x41, 0x70 } }
gEfiExtendedSalRtcServicesProtocolGuid = { 0x7e97a470, 0xefdb, 0x4d02, {0x8f, 0xce, 0x61, 0x90, 0xd2, 0x7b, 0xa2, 0x96 } }
gEfiExtendedSalVariableServicesProtocolGuid = { 0x4ecb6c53, 0xc641, 0x4370, {0x8c, 0xb2, 0x3b, 0x0e, 0x49, 0x6e, 0x83, 0x78 } }
gEfiExtendedSalMtcServicesProtocolGuid = { 0x899afd18, 0x75e8, 0x408b, {0xa4, 0x1a, 0x6e, 0x2e, 0x7e, 0xcd, 0xf4, 0x54 } }
gEfiExtendedSalResetServicesProtocolGuid = { 0x7d019990, 0x8ce1, 0x46f5, {0xa7, 0x76, 0x3c, 0x51, 0x98, 0x67, 0x6a, 0xa0 } }
gEfiExtendedSalStatusCodeServicesProtocolGuid = { 0xdbd91d, 0x55e9, 0x420f, {0x96, 0x39, 0x5e, 0x9f, 0x84, 0x37, 0xb4, 0x4f } }
gEfiExtendedSalFvBlockServicesProtocolGuid = { 0xa2271df1, 0xbcbb, 0x4f1d, {0x98, 0xa9, 0x06, 0xbc, 0x17, 0x2f, 0x07, 0x1a } }
gEfiExtendedSalMpServicesProtocolGuid = { 0x697d81a2, 0xcf18, 0x4dc0, {0x9e, 0x0d, 0x06, 0x11, 0x3b, 0x61, 0x8a, 0x3f } }
gEfiExtendedSalPalServicesProtocolGuid = { 0xe1cd9d21, 0x0fc2, 0x438d, {0x97, 0x03, 0x04, 0xe6, 0x6d, 0x96, 0x1e, 0x57 } }
gEfiExtendedSalBaseServicesProtocolGuid = { 0xd9e9fa06, 0x0fe0, 0x41c3, {0x96, 0xfb, 0x83, 0x42, 0x5a, 0x33, 0x94, 0xf8 } }
gEfiExtendedSalMcaServicesProtocolGuid = { 0x2a591128, 0x6cc7, 0x42b1, {0x8a, 0xf0, 0x58, 0x93, 0x3b, 0x68, 0x2d, 0xbb } }
gEfiExtendedSalPciServicesProtocolGuid = { 0xa46b1a31, 0xad66, 0x4905, {0x92, 0xf6, 0x2b, 0x46, 0x59, 0xdc, 0x30, 0x63 } }
gEfiExtendedSalCacheServicesProtocolGuid = { 0xedc9494, 0x2743, 0x4ba5, { 0x88, 0x18, 0x0a, 0xef, 0x52, 0x13, 0xf1, 0x88 } }
gEfiExtendedSalMcaLogServicesProtocolGuid = { 0xcb3fd86e, 0x38a3, 0x4c03, {0x9a, 0x5c, 0x90, 0xcf, 0xa3, 0xa2, 0xab, 0x7a } }
#
# Protocols defined in PI 1.2.1
#