TianoCore EDK2 master
|
#include "PiSmmCpuCommon.h"
Go to the source code of this file.
Functions | |
EFI_STATUS EFIAPI | SmmGetProcessorInfo (IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINTN ProcessorNumber, OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer) |
EFI_STATUS EFIAPI | SmmSwitchBsp (IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINTN ProcessorNumber) |
EFI_STATUS EFIAPI | SmmAddProcessor (IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINT64 ProcessorId, OUT UINTN *ProcessorNumber) |
EFI_STATUS EFIAPI | SmmRemoveProcessor (IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN UINTN ProcessorNumber) |
EFI_STATUS EFIAPI | SmmWhoAmI (IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, OUT UINTN *ProcessorNumber) |
VOID | SmmCpuUpdate (VOID) |
EFI_STATUS EFIAPI | SmmRegisterExceptionHandler (IN EFI_SMM_CPU_SERVICE_PROTOCOL *This, IN EFI_EXCEPTION_TYPE ExceptionType, IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler) |
EFI_STATUS | InitializeSmmCpuServices (IN EFI_HANDLE Handle) |
EFI_STATUS EFIAPI | SmmCpuRendezvous (IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL *This, IN BOOLEAN BlockingMode) |
Variables | |
EFI_SMM_CPU_SERVICE_PROTOCOL | mSmmCpuService |
EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL | mSmmCpuRendezvousService |
Implementation of SMM CPU Services Protocol.
Copyright (c) 2011 - 2024, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file CpuService.c.
EFI_STATUS InitializeSmmCpuServices | ( | IN EFI_HANDLE | Handle | ) |
Initialize SMM CPU Services.
It installs EFI SMM CPU Services Protocol.
ImageHandle | The firmware allocated handle for the EFI image. |
EFI_SUCCESS | EFI SMM CPU Services Protocol was installed successfully. |
OTHER | Fail to install Protocol. |
Definition at line 373 of file CpuService.c.
EFI_STATUS EFIAPI SmmAddProcessor | ( | IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL * | This, |
IN UINT64 | ProcessorId, | ||
OUT UINTN * | ProcessorNumber | ||
) |
Notify that a processor was hot-added.
[in] | This | A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. |
[in] | ProcessorId | Local APIC ID of the hot-added processor. |
[out] | ProcessorNumber | The handle number of the hot-added processor. |
EFI_SUCCESS | The hot-addition of the specified processors was successfully notified. |
EFI_UNSUPPORTED | Hot addition of processor is not supported. |
EFI_NOT_FOUND | The processor with the handle specified by ProcessorNumber does not exist. |
EFI_INVALID_PARAMETER | ProcessorNumber is invalid. |
EFI_ALREADY_STARTED | The processor is already online in the system. |
Definition at line 128 of file CpuService.c.
EFI_STATUS EFIAPI SmmCpuRendezvous | ( | IN EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL * | This, |
IN BOOLEAN | BlockingMode | ||
) |
Wait for all processors enterring SMM until all CPUs are already synchronized or not.
If BlockingMode is False, timeout value is zero.
This | A pointer to the EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL instance. |
BlockingMode | Blocking mode or non-blocking mode. |
EFI_SUCCESS | All avaiable APs arrived. |
EFI_TIMEOUT | Wait for all APs until timeout. |
Definition at line 414 of file CpuService.c.
VOID SmmCpuUpdate | ( | VOID | ) |
Update the SMM CPU list per the pending operation.
This function is called after return from SMI handlers.
Definition at line 296 of file CpuService.c.
EFI_STATUS EFIAPI SmmGetProcessorInfo | ( | IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL * | This, |
IN UINTN | ProcessorNumber, | ||
OUT EFI_PROCESSOR_INFORMATION * | ProcessorInfoBuffer | ||
) |
Gets processor information on the requested processor at the instant this call is made.
[in] | This | A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. |
[in] | ProcessorNumber | The handle number of processor. |
[out] | ProcessorInfoBuffer | A pointer to the buffer where information for the requested processor is deposited. |
EFI_SUCCESS | Processor information was returned. |
EFI_INVALID_PARAMETER | ProcessorInfoBuffer is NULL. |
EFI_INVALID_PARAMETER | ProcessorNumber is invalid. |
EFI_NOT_FOUND | The processor with the handle specified by ProcessorNumber does not exist in the platform. |
Definition at line 47 of file CpuService.c.
EFI_STATUS EFIAPI SmmRegisterExceptionHandler | ( | IN EFI_SMM_CPU_SERVICE_PROTOCOL * | This, |
IN EFI_EXCEPTION_TYPE | ExceptionType, | ||
IN EFI_CPU_INTERRUPT_HANDLER | InterruptHandler | ||
) |
Register exception handler.
This | A pointer to the SMM_CPU_SERVICE_PROTOCOL instance. |
ExceptionType | Defines which interrupt or exception to hook. Type EFI_EXCEPTION_TYPE and the valid values for this parameter are defined in EFI_DEBUG_SUPPORT_PROTOCOL of the UEFI 2.0 specification. |
InterruptHandler | A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called when a processor interrupt occurs. If this parameter is NULL, then the handler will be uninstalled. |
EFI_SUCCESS | The handler for the processor interrupt was successfully installed or uninstalled. |
EFI_ALREADY_STARTED | InterruptHandler is not NULL, and a handler for InterruptType was previously installed. |
EFI_INVALID_PARAMETER | InterruptHandler is NULL, and a handler for InterruptType was not previously installed. |
EFI_UNSUPPORTED | The interrupt specified by InterruptType is not supported. |
Definition at line 353 of file CpuService.c.
EFI_STATUS EFIAPI SmmRemoveProcessor | ( | IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL * | This, |
IN UINTN | ProcessorNumber | ||
) |
Notify that a processor was hot-removed.
[in] | This | A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. |
[in] | ProcessorNumber | The handle number of the hot-added processor. |
EFI_SUCCESS | The hot-removal of the specified processors was successfully notified. |
EFI_UNSUPPORTED | Hot removal of processor is not supported. |
EFI_UNSUPPORTED | Hot removal of BSP is not supported. |
EFI_UNSUPPORTED | Hot removal of a processor with pending hot-plug operation is not supported. |
EFI_INVALID_PARAMETER | ProcessorNumber is invalid. |
Definition at line 207 of file CpuService.c.
EFI_STATUS EFIAPI SmmSwitchBsp | ( | IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL * | This, |
IN UINTN | ProcessorNumber | ||
) |
This service switches the requested AP to be the BSP since the next SMI.
[in] | This | A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. |
[in] | ProcessorNumber | The handle number of AP that is to become the new BSP. |
EFI_SUCCESS | BSP will be switched in next SMI. |
EFI_UNSUPPORTED | Switching the BSP or a processor to be hot-removed is not supported. |
EFI_NOT_FOUND | The processor with the handle specified by ProcessorNumber does not exist. |
EFI_INVALID_PARAMETER | ProcessorNumber is invalid. |
Definition at line 84 of file CpuService.c.
EFI_STATUS EFIAPI SmmWhoAmI | ( | IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL * | This, |
OUT UINTN * | ProcessorNumber | ||
) |
This return the handle number for the calling processor.
[in] | This | A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. |
[out] | ProcessorNumber | The handle number of currently executing processor. |
EFI_SUCCESS | The current processor handle number was returned in ProcessorNumber. |
EFI_INVALID_PARAMETER | ProcessorNumber is NULL. |
Definition at line 259 of file CpuService.c.
EDKII_SMM_CPU_RENDEZVOUS_PROTOCOL mSmmCpuRendezvousService |
Definition at line 26 of file CpuService.c.
EFI_SMM_CPU_SERVICE_PROTOCOL mSmmCpuService |
Definition at line 14 of file CpuService.c.