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