From 8b9f28994a1b5702ce33e62e55d1595b1a056892 Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Thu, 25 Jan 2018 10:50:39 +0530 Subject: vendorcode/intel: Add UDK2017 support This patch includes (edk2/UDK2017) all required headers for UDK2017 from EDK2 github project using below command >> git clone https://github.com/tianocore/edk2.git vUDK2017 commit hash: 66833b2a87d98be8d81d1337c193bcbf0de47d47 Change-Id: If0d5a3fef016c67e9eed6aed9b698b3b13b930c4 Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/23425 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Furquan Shaikh --- .../UDK2017/MdePkg/Include/Protocol/McaInitPmi.h | 207 +++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h (limited to 'src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/McaInitPmi.h') 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.
+ 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 + -- cgit v1.2.3