Publish definition of MCA/INIT/PMI Protocol & ESAL, as introduced in PI 1.2.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9616 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		
							
								
								
									
										214
									
								
								MdePkg/Include/Protocol/ExtendedSalBootService.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								MdePkg/Include/Protocol/ExtendedSalBootService.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,214 @@
 | 
			
		||||
/** @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, 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        
 | 
			
		||||
  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.             
 | 
			
		||||
 | 
			
		||||
**/
 | 
			
		||||
 | 
			
		||||
#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
 | 
			
		||||
							
								
								
									
										275
									
								
								MdePkg/Include/Protocol/ExtendedSalServiceClasses.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										275
									
								
								MdePkg/Include/Protocol/ExtendedSalServiceClasses.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,275 @@
 | 
			
		||||
/** @file
 | 
			
		||||
  The standard set of Extended SAL service classes.
 | 
			
		||||
 | 
			
		||||
  Copyright (c) 2009, 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        
 | 
			
		||||
  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.             
 | 
			
		||||
 | 
			
		||||
**/
 | 
			
		||||
 | 
			
		||||
#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
 | 
			
		||||
							
								
								
									
										207
									
								
								MdePkg/Include/Protocol/McaInitPmi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								MdePkg/Include/Protocol/McaInitPmi.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,207 @@
 | 
			
		||||
/** @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, 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        
 | 
			
		||||
  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.
 | 
			
		||||
 | 
			
		||||
**/
 | 
			
		||||
 | 
			
		||||
#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
 | 
			
		||||
 | 
			
		||||
@@ -730,6 +730,29 @@
 | 
			
		||||
  ## 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 UEFI2.1/UEFI2.0/EFI1.1
 | 
			
		||||
  #
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user