Import the following (likely nonstandard) protocol definitions: - SMM_CPU_SYNC_PROTOCOL - SMM_CPU_SYNC2_PROTOCOL - EFI_SMM_CPU_SERVICE_PROTOCOL
All of these are needed by PiSmmCpuDxeSmm. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <ler...@redhat.com> --- OvmfPkg/QuarkPort/Include/Protocol/SmmCpuService.h | 231 ++++++++++++++++++++ OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync.h | 131 +++++++++++ OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync2.h | 224 +++++++++++++++++++ OvmfPkg/OvmfPkg.dec | 6 + 4 files changed, 592 insertions(+) diff --git a/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuService.h b/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuService.h new file mode 100644 index 0000000..ce2600d --- /dev/null +++ b/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuService.h @@ -0,0 +1,231 @@ +/** @file + + + Smm CPU Service protocol definition. + +Copyright (c) 2013-2015 Intel Corporation. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +* Neither the name of Intel Corporation nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +#ifndef _SMM_CPU_SERVICE_PROTOCOL_H_ +#define _SMM_CPU_SERVICE_PROTOCOL_H_ + +// +// Share some definitions with MP Services and CPU Arch Protocol +// +#include <Protocol/MpService.h> +#include <Protocol/Cpu.h> + +#define EFI_SMM_CPU_SERVICE_PROTOCOL_GUID \ + { \ + 0x1d202cab, 0xc8ab, 0x4d5c, { 0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35 } \ + } + +typedef struct _EFI_SMM_CPU_SERVICE_PROTOCOL EFI_SMM_CPU_SERVICE_PROTOCOL; + +// +// Protocol functions +// + +/** + Gets processor information on the requested processor at the + instant this call is made. This service may only be called from the BSP. + + @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL + instance. + @param[in] ProcessorNumber The handle number of processor. + @param[out] ProcessorInfoBuffer A pointer to the buffer where information for + the requested processor is deposited. + + @retval EFI_SUCCESS Processor information was returned. + @retval EFI_DEVICE_ERROR The calling processor is an AP. + @retval EFI_INVALID_PARAMETER ProcessorInfoBuffer is NULL. + @retval EFI_NOT_FOUND The processor with the handle specified by + ProcessorNumber does not exist in the platform. +**/ +typedef +EFI_STATUS +(EFIAPI * EFI_SMM_GET_PROCESSOR_INFO) ( + IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, + IN UINTN ProcessorNumber, + OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer + ); + +/** + This service switches the requested AP to be the BSP from that point onward. + This service changes the BSP for all purposes. This call can only be performed + by the current BSP. + + This service switches the requested AP to be the BSP from that point onward. + This service changes the BSP for all purposes. The new BSP can take over the + execution of the old BSP and continue seamlessly from where the old one left + off. + + If the BSP cannot be switched prior to the return from this service, then + EFI_UNSUPPORTED must be returned. + + @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. + @param[in] ProcessorNumber The handle number of AP that is to become the new + BSP. The range is from 0 to the total number of + logical processors minus 1. + + @retval EFI_SUCCESS BSP successfully switched. + @retval EFI_UNSUPPORTED Switching the BSP cannot be completed prior to + this service returning. + @retval EFI_UNSUPPORTED Switching the BSP is not supported. + @retval EFI_SUCCESS The calling processor is an AP. + @retval EFI_NOT_FOUND The processor with the handle specified by + ProcessorNumber does not exist. + @retval EFI_INVALID_PARAMETER ProcessorNumber specifies the current BSP or + a disabled AP. + @retval EFI_NOT_READY The specified AP is busy. + +**/ +typedef +EFI_STATUS +(EFIAPI * EFI_SMM_SWITCH_BSP) ( + IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, + IN UINTN ProcessorNumber + ); + +/** + Notify that a new processor has been added to the system. + + The SMM CPU driver should add the processor to the SMM CPU list. + + If the processor is disabled it won't participate any SMI handler during subsequent SMIs. + + @param This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. + @param ProcessorId The hardware ID of the processor. + @param ProcessorNumber The handle number of processor. + @param ProcessorResource A pointer to EFI_SMM_PROCESSOR_RESOURCE which holds the assigned resources. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_ALREADY_STARTED Processor already present. + @retval EFI_NOT_READY Space for a new handle could not be allocated. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_ADD_PROCESSOR) ( + IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, + IN UINT64 ProcessorId, + OUT UINTN *ProcessorNumber + ); + +/** + Notify that a processor is hot-removed. + + Remove a processor from the CPU list of the SMM CPU driver. After this API is called, the removed processor + must not respond to SMIs in the coherence domain. + + @param This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. + @param ProcessorId The hardware ID of the processor. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_FOUND Processor with the hardware ID specified by ProcessorId does not exist. + @retval EFI_NOT_READY Specified AP is busy. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_REMOVE_PROCESSOR) ( + IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, + IN UINTN ProcessorNumber + ); + +/** + This return the handle number for the calling processor. This service may be + called from the BSP and APs. + + This service returns the processor handle number for the calling processor. + The returned value is in the range from 0 to the total number of logical + processors minus 1. This service may be called from the BSP and APs. + If ProcessorNumber is NULL, then EFI_INVALID_PARAMETER + is returned. Otherwise, the current processors handle number is returned in + ProcessorNumber, and EFI_SUCCESS is returned. + + @param[in] This A pointer to the EFI_SMM_CPU_SERVICE_PROTOCOL instance. + @param[in] ProcessorNumber The handle number of AP that is to become the new + BSP. The range is from 0 to the total number of + logical processors minus 1. + + @retval EFI_SUCCESS The current processor handle number was returned + in ProcessorNumber. + @retval EFI_INVALID_PARAMETER ProcessorNumber is NULL. + +**/ +typedef +EFI_STATUS +(EFIAPI * EFI_SMM_WHOAMI) ( + IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This, + OUT UINTN *ProcessorNumber + ); + +/** + Register exception handler. + + @param This A pointer to the SMM_CPU_SERVICE_PROTOCOL instance. + @param 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. + @param 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. + + @retval EFI_SUCCESS The handler for the processor interrupt was successfully installed or uninstalled. + @retval EFI_ALREADY_STARTED InterruptHandler is not NULL, and a handler for InterruptType was previously installed. + @retval EFI_INVALID_PARAMETER InterruptHandler is NULL, and a handler for InterruptType was not previously installed. + @retval EFI_UNSUPPORTED The interrupt specified by InterruptType is not supported. + +**/ +typedef +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 + ); + +// +// This protocol provides CPU services from SMM. +// +struct _EFI_SMM_CPU_SERVICE_PROTOCOL { + EFI_SMM_GET_PROCESSOR_INFO GetProcessorInfo; + EFI_SMM_SWITCH_BSP SwitchBsp; + EFI_SMM_ADD_PROCESSOR AddProcessor; + EFI_SMM_REMOVE_PROCESSOR RemoveProcessor; + EFI_SMM_WHOAMI WhoAmI; + EFI_SMM_REGISTER_EXCEPTION_HANDLER RegisterExceptionHandler; +}; + +extern EFI_GUID gEfiSmmCpuServiceProtocolGuid; + +#endif + diff --git a/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync.h b/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync.h new file mode 100644 index 0000000..18b8429 --- /dev/null +++ b/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync.h @@ -0,0 +1,131 @@ +/** @file + + + Smm CPU Sync protocol definition. + +Copyright (c) 2013-2015 Intel Corporation. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +* Neither the name of Intel Corporation nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +#ifndef _SMM_CPU_SYNC_PROTOCOL_H_ +#define _SMM_CPU_SYNC_PROTOCOL_H_ + +#define SMM_CPU_SYNC_PROTOCOL_GUID \ + { \ + 0xd5950985, 0x8be3, 0x4b1c, { 0xb6, 0x3f, 0x95, 0xd1, 0x5a, 0xb3, 0xb6, 0x5f } \ + } + +typedef struct _SMM_CPU_SYNC_PROTOCOL SMM_CPU_SYNC_PROTOCOL; + +// +// Data structures +// + +typedef enum { + SmmCpuSyncModeTradition, + SmmCpuSyncModeRelaxedAp, + SmmCpuSyncModeMax +} SMM_CPU_SYNC_MODE; + +// +// Protocol functions +// + +/** + Given timeout constraint, wait for all APs to arrive, and insure if this function returns EFI_SUCCESS, then + no AP will execute normal mode code before entering SMM, so it is safe to access shared hardware resource + between SMM and normal mode. Note if there are SMI disabled APs, this function will return EFI_NOT_READY. + + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + + @retval EFI_SUCCESS No AP will execute normal mode code before entering SMM, so it is safe to access + shared hardware resource between SMM and normal mode + @retval EFI_NOT_READY One or more CPUs may still execute normal mode code + @retval EFI_DEVICE_ERROR Error occured in obtaining CPU status. + +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC_CHECK_AP_ARRIVAL)( + IN SMM_CPU_SYNC_PROTOCOL *This + ); + + +/** + Set SMM synchronization mode starting from the next SMI run. + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + @param SyncMode The SMM synchronization mode to be set and effective from the next SMI run. + + @retval EFI_SUCCESS The function completes successfully. + @retval EFI_INVALID_PARAMETER SynMode is not valid. + +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC_SET_MODE) ( + IN SMM_CPU_SYNC_PROTOCOL *This, + IN SMM_CPU_SYNC_MODE SyncMode + ); + + +/** + Get current effective SMM synchronization mode. + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + @param SyncMode Output parameter. The current effective SMM synchronization mode. + + @retval EFI_SUCCESS The SMM synchronization mode has been retrieved successfully. + @retval EFI_INVALID_PARAMETER SyncMode is NULL. + +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC_GET_MODE) ( + IN SMM_CPU_SYNC_PROTOCOL *This, + OUT SMM_CPU_SYNC_MODE *SyncMode + ); + +/** + This protocol provides services on SMM CPU syncrhonization related status and controls +**/ +struct _SMM_CPU_SYNC_PROTOCOL { + SMM_CPU_SYNC_CHECK_AP_ARRIVAL CheckApArrival; + SMM_CPU_SYNC_SET_MODE SetMode; + SMM_CPU_SYNC_GET_MODE GetMode; +}; + +// +// Extern the GUID for protocol users. +// +extern EFI_GUID gSmmCpuSyncProtocolGuid; + + +#endif diff --git a/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync2.h b/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync2.h new file mode 100644 index 0000000..f8d0df9 --- /dev/null +++ b/OvmfPkg/QuarkPort/Include/Protocol/SmmCpuSync2.h @@ -0,0 +1,224 @@ +/** @file + + + Smm CPU Sync2 protocol definition. + +Copyright (c) 2013-2015 Intel Corporation. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +* Neither the name of Intel Corporation nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +#ifndef _SMM_CPU_SYNC2_PROTOCOL_H_ +#define _SMM_CPU_SYNC2_PROTOCOL_H_ + +#include "SmmCpuSync.h" + +#define SMM_CPU_SYNC2_PROTOCOL_GUID \ + { \ + 0x9db72e22, 0x9262, 0x4a18, { 0x8f, 0xe0, 0x85, 0xe0, 0x3d, 0xfa, 0x96, 0x73 } \ + } + +typedef struct _SMM_CPU_SYNC2_PROTOCOL SMM_CPU_SYNC2_PROTOCOL; + +typedef enum { + SmmCpuSync2StateNormal, + SmmCpuSync2StateDelayed, + SmmCpuSync2StateBlocked, + SmmCpuSync2StateDisabled, + SmmCpuSync2StateMax +} SMM_CPU_SYNC2_CPU_STATE; + +// +// Protocol functions +// + +/** + Given timeout constraint, wait for all APs to arrive, and insure if this function returns EFI_SUCCESS, then + no AP will execute normal mode code before entering SMM, so it is safe to access shared hardware resource + between SMM and normal mode. Note if there are SMI disabled APs, this function will return EFI_NOT_READY. + + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + + @retval EFI_SUCCESS No AP will execute normal mode code before entering SMM, so it is safe to access + shared hardware resource between SMM and normal mode + @retval EFI_NOT_READY One or more CPUs may still execute normal mode code + @retval EFI_DEVICE_ERROR Error occured in obtaining CPU status. + +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC2_CHECK_AP_ARRIVAL)( + IN SMM_CPU_SYNC2_PROTOCOL *This + ); + + +/** + Set SMM synchronization mode starting from the next SMI run. + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + @param SyncMode The SMM synchronization mode to be set and effective from the next SMI run. + + @retval EFI_SUCCESS The function completes successfully. + @retval EFI_INVALID_PARAMETER SynMode is not valid. + +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC2_SET_MODE) ( + IN SMM_CPU_SYNC2_PROTOCOL *This, + IN SMM_CPU_SYNC_MODE SyncMode + ); + + +/** + Get current effective SMM synchronization mode. + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + @param SyncMode Output parameter. The current effective SMM synchronization mode. + + @retval EFI_SUCCESS The SMM synchronization mode has been retrieved successfully. + @retval EFI_INVALID_PARAMETER SyncMode is NULL. + +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC2_GET_MODE) ( + IN SMM_CPU_SYNC2_PROTOCOL *This, + OUT SMM_CPU_SYNC_MODE *SyncMode + ); + + +/** + Checks CPU SMM synchronization state + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + + @param CpuIndex Index of the CPU for which the state is to be retrieved. + + @param CpuState The state of the CPU + + @retval EFI_SUCCESS Returns EFI_SUCCESS if the CPU's state is retrieved. + + @retval EFI_INVALID_PARAMETER Returns EFI_INVALID_PARAMETER if CpuIndex is invalid or CpuState is NULL + + @retval EFI_DEVICE_ERROR Error occured in obtaining CPU status. +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC2_CHECK_CPU_STATE)( + IN SMM_CPU_SYNC2_PROTOCOL *This, + IN UINTN CpuIndex, + OUT SMM_CPU_SYNC2_CPU_STATE *CpuState + ); + + +/** + Change CPU's SMM enabling state. + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + + @param CpuIndex Index of the CPU to enable / disable SMM + + @param Enable If TRUE, enable SMM; if FALSE disable SMM + + @retval EFI_SUCCESS The CPU's SMM enabling state is changed. + + @retval EFI_INVALID_PARAMETER Returns EFI_INVALID_PARAMETER if CpuIndex is invalid + + @retval EFI_UNSUPPORTED Returns EFI_UNSUPPORTED the CPU does not support dynamically enabling / disabling SMI + + @retval EFI_DEVICE_ERROR Error occured in changing SMM enabling state. +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC2_CHANGE_SMM_ENABLING)( + IN SMM_CPU_SYNC2_PROTOCOL *This, + IN UINTN CpuIndex, + IN BOOLEAN Enable + ); + + +/** + Send SMI IPI to a specific CPU + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + + @param CpuIndex Index of the CPU to send SMI to. "-1" means all-exclude-self. + + @retval EFI_SUCCESS The SMI IPI is sent successfully. + + @retval EFI_INVALID_PARAMETER Returns EFI_INVALID_PARAMETER if CpuIndex is invalid + + @retval EFI_DEVICE_ERROR Error occured in sending SMI IPI. +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC2_SEND_SMI)( + IN SMM_CPU_SYNC2_PROTOCOL *This, + IN UINTN CpuIndex + ); + + +/** + Send SMI IPI to all CPUs excluding self + + @param This A pointer to the SMM_CPU_SYNC_PROTOCOL instance. + + @retval EFI_SUCCESS The SMI IPI is sent successfully. + + @retval EFI_INVALID_PARAMETER Returns EFI_INVALID_PARAMETER if CpuIndex is invalid + + @retval EFI_DEVICE_ERROR Error occured in sending SMI IPI. +**/ +typedef +EFI_STATUS +(EFIAPI *SMM_CPU_SYNC2_SEND_SMI_ALL_EXCLUDING_SELF)( + IN SMM_CPU_SYNC2_PROTOCOL *This + ); + +/** + This protocol provides services on SMM CPU syncrhonization related status and controls +**/ +struct _SMM_CPU_SYNC2_PROTOCOL { + SMM_CPU_SYNC2_CHECK_AP_ARRIVAL CheckApArrival; + SMM_CPU_SYNC2_SET_MODE SetMode; + SMM_CPU_SYNC2_GET_MODE GetMode; + SMM_CPU_SYNC2_CHECK_CPU_STATE CheckCpuState; + SMM_CPU_SYNC2_CHANGE_SMM_ENABLING ChangeSmmEnabling; + SMM_CPU_SYNC2_SEND_SMI SendSmi; + SMM_CPU_SYNC2_SEND_SMI_ALL_EXCLUDING_SELF SendSmiAllExcludingSelf; +}; + +// +// Extern the GUID for protocol users. +// +extern EFI_GUID gSmmCpuSync2ProtocolGuid; + + +#endif diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec index 36cc474..2283416 100644 --- a/OvmfPkg/OvmfPkg.dec +++ b/OvmfPkg/OvmfPkg.dec @@ -90,6 +90,12 @@ [Protocols] gXenBusProtocolGuid = {0x3d3ca290, 0xb9a5, 0x11e3, {0xb7, 0x5d, 0xb8, 0xac, 0x6f, 0x7d, 0x65, 0xe6}} gXenIoProtocolGuid = {0x6efac84f, 0x0ab0, 0x4747, {0x81, 0xbe, 0x85, 0x55, 0x62, 0x59, 0x04, 0x49}} + ## Protocols imported from + # "Quark_EDKII_v1.1.0/IA32FamilyCpuBasePkg/IA32FamilyCpuBasePkg.dec" follow. + gSmmCpuSyncProtocolGuid = {0xd5950985, 0x8be3, 0x4b1c, {0xb6, 0x3f, 0x95, 0xd1, 0x5a, 0xb3, 0xb6, 0x5f}} + gSmmCpuSync2ProtocolGuid = {0x9db72e22, 0x9262, 0x4a18, {0x8f, 0xe0, 0x85, 0xe0, 0x3d, 0xfa, 0x96, 0x73}} + gEfiSmmCpuServiceProtocolGuid = {0x1d202cab, 0xc8ab, 0x4d5c, {0x94, 0xf7, 0x3c, 0xfc, 0xc0, 0xd3, 0xd3, 0x35}} + [PcdsFixedAtBuild] gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|0x0|UINT32|0 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize|0x0|UINT32|1 -- 1.8.3.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel