/** @file
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 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
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__
///
///
#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
///
#pragma pack(1)
///
/// MCA Records Structure
///
typedef struct {
#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
);
/**
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
);
/**
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
);
/**
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
);
/**
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
);
/**
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
);
///
/// This protocol is used to register MCA, INIT and PMI handlers with their respective dispatcher
///
struct _EFI_SAL_MCA_INIT_PMI_PROTOCOL {
};
#endif