VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.h@ 85788

Last change on this file since 85788 was 80721, checked in by vboxsync, 5 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

  • Property svn:eol-style set to native
File size: 6.1 KB
Line 
1/** @file
2Include file for SMM CPU Services protocol implementation.
3
4Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
5SPDX-License-Identifier: BSD-2-Clause-Patent
6
7**/
8
9#ifndef _CPU_SERVICE_H_
10#define _CPU_SERVICE_H_
11
12typedef enum {
13 SmmCpuNone,
14 SmmCpuAdd,
15 SmmCpuRemove,
16 SmmCpuSwitchBsp
17} SMM_CPU_OPERATION;
18
19//
20// SMM CPU Service Protocol function prototypes.
21//
22
23/**
24 Gets processor information on the requested processor at the instant this call is made.
25
26 @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance.
27 @param[in] ProcessorNumber The handle number of processor.
28 @param[out] ProcessorInfoBuffer A pointer to the buffer where information for
29 the requested processor is deposited.
30
31 @retval EFI_SUCCESS Processor information was returned.
32 @retval EFI_INVALID_PARAMETER ProcessorInfoBuffer is NULL.
33 @retval EFI_INVALID_PARAMETER ProcessorNumber is invalid.
34 @retval EFI_NOT_FOUND The processor with the handle specified by
35 ProcessorNumber does not exist in the platform.
36
37**/
38EFI_STATUS
39EFIAPI
40SmmGetProcessorInfo (
41 IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,
42 IN UINTN ProcessorNumber,
43 OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
44 );
45
46/**
47 This service switches the requested AP to be the BSP since the next SMI.
48
49 @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance.
50 @param[in] ProcessorNumber The handle number of AP that is to become the new BSP.
51
52 @retval EFI_SUCCESS BSP will be switched in next SMI.
53 @retval EFI_UNSUPPORTED Switching the BSP or a processor to be hot-removed is not supported.
54 @retval EFI_NOT_FOUND The processor with the handle specified by ProcessorNumber does not exist.
55 @retval EFI_INVALID_PARAMETER ProcessorNumber is invalid.
56**/
57EFI_STATUS
58EFIAPI
59SmmSwitchBsp (
60 IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,
61 IN UINTN ProcessorNumber
62 );
63
64/**
65 Notify that a processor was hot-added.
66
67 @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance.
68 @param[in] ProcessorId Local APIC ID of the hot-added processor.
69 @param[out] ProcessorNumber The handle number of the hot-added processor.
70
71 @retval EFI_SUCCESS The hot-addition of the specified processors was successfully notified.
72 @retval EFI_UNSUPPORTED Hot addition of processor is not supported.
73 @retval EFI_NOT_FOUND The processor with the handle specified by ProcessorNumber does not exist.
74 @retval EFI_INVALID_PARAMETER ProcessorNumber is invalid.
75 @retval EFI_ALREADY_STARTED The processor is already online in the system.
76**/
77EFI_STATUS
78EFIAPI
79SmmAddProcessor (
80 IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,
81 IN UINT64 ProcessorId,
82 OUT UINTN *ProcessorNumber
83 );
84
85/**
86 Notify that a processor was hot-removed.
87
88 @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance.
89 @param[in] ProcessorNumber The handle number of the hot-added processor.
90
91 @retval EFI_SUCCESS The hot-removal of the specified processors was successfully notified.
92 @retval EFI_UNSUPPORTED Hot removal of processor is not supported.
93 @retval EFI_UNSUPPORTED Hot removal of BSP is not supported.
94 @retval EFI_UNSUPPORTED Hot removal of a processor with pending hot-plug operation is not supported.
95 @retval EFI_INVALID_PARAMETER ProcessorNumber is invalid.
96**/
97EFI_STATUS
98EFIAPI
99SmmRemoveProcessor (
100 IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,
101 IN UINTN ProcessorNumber
102 );
103
104/**
105 This return the handle number for the calling processor.
106
107 @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance.
108 @param[out] ProcessorNumber The handle number of currently executing processor.
109
110 @retval EFI_SUCCESS The current processor handle number was returned
111 in ProcessorNumber.
112 @retval EFI_INVALID_PARAMETER ProcessorNumber is NULL.
113
114**/
115EFI_STATUS
116EFIAPI
117SmmWhoAmI (
118 IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,
119 OUT UINTN *ProcessorNumber
120 );
121
122/**
123 Register exception handler.
124
125 @param This A pointer to the SMM_CPU_SERVICE_PROTOCOL instance.
126 @param ExceptionType Defines which interrupt or exception to hook. Type EFI_EXCEPTION_TYPE and
127 the valid values for this parameter are defined in EFI_DEBUG_SUPPORT_PROTOCOL
128 of the UEFI 2.0 specification.
129 @param InterruptHandler A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER
130 that is called when a processor interrupt occurs.
131 If this parameter is NULL, then the handler will be uninstalled.
132
133 @retval EFI_SUCCESS The handler for the processor interrupt was successfully installed or uninstalled.
134 @retval EFI_ALREADY_STARTED InterruptHandler is not NULL, and a handler for InterruptType was previously installed.
135 @retval EFI_INVALID_PARAMETER InterruptHandler is NULL, and a handler for InterruptType was not previously installed.
136 @retval EFI_UNSUPPORTED The interrupt specified by InterruptType is not supported.
137
138**/
139EFI_STATUS
140EFIAPI
141SmmRegisterExceptionHandler (
142 IN EFI_SMM_CPU_SERVICE_PROTOCOL *This,
143 IN EFI_EXCEPTION_TYPE ExceptionType,
144 IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler
145 );
146
147//
148// Internal function prototypes
149//
150
151/**
152 Update the SMM CPU list per the pending operation.
153
154 This function is called after return from SMI handlers.
155**/
156VOID
157SmmCpuUpdate (
158 VOID
159 );
160
161/**
162 Initialize SMM CPU Services.
163
164 It installs EFI SMM CPU Services Protocol.
165
166 @param ImageHandle The firmware allocated handle for the EFI image.
167
168 @retval EFI_SUCCESS EFI SMM CPU Services Protocol was installed successfully.
169**/
170EFI_STATUS
171InitializeSmmCpuServices (
172 IN EFI_HANDLE Handle
173 );
174
175#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette