TianoCore EDK2 master
Loading...
Searching...
No Matches
SmmCpuService.h
Go to the documentation of this file.
1
9#ifndef _SMM_CPU_SERVICE_PROTOCOL_H_
10#define _SMM_CPU_SERVICE_PROTOCOL_H_
11
12//
13// Share some definitions with MP Services and CPU Arch Protocol
14//
15#include <Protocol/MpService.h>
16#include <Protocol/Cpu.h>
17
18#define EFI_SMM_CPU_SERVICE_PROTOCOL_GUID \
19 { \
20 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 } \
21 }
22
24
25//
26// Protocol functions
27//
28
45typedef
49 IN UINTN ProcessorNumber,
50 OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
51 );
52
83typedef
85(EFIAPI *EFI_SMM_SWITCH_BSP)(
87 IN UINTN ProcessorNumber
88 );
89
107typedef
109(EFIAPI *EFI_SMM_ADD_PROCESSOR)(
111 IN UINT64 ProcessorId,
112 OUT UINTN *ProcessorNumber
113 );
114
129typedef
133 IN UINTN ProcessorNumber
134 );
135
157typedef
159(EFIAPI *EFI_SMM_WHOAMI)(
161 OUT UINTN *ProcessorNumber
162 );
163
181typedef
185 IN EFI_EXCEPTION_TYPE ExceptionType,
186 IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler
187 );
188
189//
190// This protocol provides CPU services from SMM.
191//
193 EFI_SMM_GET_PROCESSOR_INFO GetProcessorInfo;
194 EFI_SMM_SWITCH_BSP SwitchBsp;
195 EFI_SMM_ADD_PROCESSOR AddProcessor;
196 EFI_SMM_REMOVE_PROCESSOR RemoveProcessor;
197 EFI_SMM_WHOAMI WhoAmI;
198 EFI_SMM_REGISTER_EXCEPTION_HANDLER RegisterExceptionHandler;
199};
200
201extern EFI_GUID gEfiSmmCpuServiceProtocolGuid;
202
203//
204// EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL provide SMM CPU
205// rendezvous service support.
206//
207#define EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL_GUID \
208 { \
209 0xaa00d50b, 0x4911, 0x428f, { 0xb9, 0x1a, 0xa5, 0x9d, 0xdb, 0x13, 0xe2, 0x4c } \
210 }
211
213
224typedef
228 IN BOOLEAN BlockingMode
229 );
230
232 EDKII_WAIT_FOR_ALL_PROCESSOR WaitForAllProcessor;
233};
234
235extern EFI_GUID gEdkiiSmmCpuRendezvousProtocolGuid;
236
237#endif
UINT64 UINTN
VOID(EFIAPI * EFI_CPU_INTERRUPT_HANDLER)(IN CONST EFI_EXCEPTION_TYPE InterruptType, IN CONST EFI_SYSTEM_CONTEXT SystemContext)
Definition: Cpu.h:52
#define CONST
Definition: Base.h:259
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
INTN EFI_EXCEPTION_TYPE
Definition: DebugSupport.h:35
EFI_STATUS(EFIAPI * EFI_SMM_GET_PROCESSOR_INFO)(IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINTN ProcessorNumber, OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer)
Definition: SmmCpuService.h:47
EFI_STATUS(EFIAPI * EFI_SMM_SWITCH_BSP)(IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINTN ProcessorNumber)
Definition: SmmCpuService.h:85
EFI_STATUS(EFIAPI * EFI_SMM_WHOAMI)(IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, OUT UINTN *ProcessorNumber)
EFI_STATUS(EFIAPI * EFI_SMM_REMOVE_PROCESSOR)(IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINTN ProcessorNumber)
EFI_STATUS(EFIAPI * EFI_SMM_ADD_PROCESSOR)(IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINT64 ProcessorId, OUT UINTN *ProcessorNumber)
EFI_STATUS(EFIAPI * EDKII_WAIT_FOR_ALL_PROCESSOR)(IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This, IN BOOLEAN BlockingMode)
EFI_STATUS(EFIAPI * EFI_SMM_REGISTER_EXCEPTION_HANDLER)(IN EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN EFI_EXCEPTION_TYPE ExceptionType, IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler)
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
Definition: Base.h:213