aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h')
-rw-r--r--src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h207
1 files changed, 207 insertions, 0 deletions
diff --git a/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h b/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h
new file mode 100644
index 0000000000..c0c66147ea
--- /dev/null
+++ b/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h
@@ -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 - 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
+ 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
+