]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Ppi/SmmControl.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Include / Ppi / SmmControl.h
CommitLineData
3e4df77f 1/** @file\r
2 EFI SMM Control PPI definition.\r
3\r
4 This PPI is used to initiate SMI/PMI activations. This protocol could be published by either:\r
5 - A processor driver to abstract the SMI/PMI IPI\r
6 - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an\r
7 Intel chipset\r
8 Because of the possibility of performing SMI or PMI IPI transactions, the ability to generate this\r
9 event from a platform chipset agent is an optional capability for both IA-32 and Itanium-based\r
10 systems.\r
11\r
d1102dba 12 Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
3e4df77f 13\r
9d510e61 14 SPDX-License-Identifier: BSD-2-Clause-Patent\r
3e4df77f 15\r
16**/\r
17\r
3e4df77f 18#ifndef _SMM_CONTROL_PPI_H_\r
19#define _SMM_CONTROL_PPI_H_\r
20\r
21#define PEI_SMM_CONTROL_PPI_GUID \\r
22 { 0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5 }\r
23\r
1436aea4 24typedef struct _PEI_SMM_CONTROL_PPI PEI_SMM_CONTROL_PPI;\r
3e4df77f 25\r
26/**\r
27 Invokes SMI activation from either the preboot or runtime environment.\r
28\r
29 @param PeiServices General purpose services available to every PEIM.\r
30 @param This The PEI_SMM_CONTROL_PPI instance.\r
31 @param ArgumentBuffer The optional sized data to pass into the protocol activation.\r
32 @param ArgumentBufferSize The optional size of the data.\r
33 @param Periodic An optional mechanism to periodically repeat activation.\r
34 @param ActivationInterval An optional parameter to repeat at this period one\r
35 time or, if the Periodic Boolean is set, periodically.\r
36\r
37 @retval EFI_SUCCESS The SMI/PMI has been engendered.\r
38 @retval EFI_DEVICE_ERROR The timing is unsupported.\r
39 @retval EFI_INVALID_PARAMETER The activation period is unsupported.\r
40 @retval EFI_NOT_STARTED The SMM base service has not been initialized.\r
41\r
42**/\r
43typedef\r
44EFI_STATUS\r
1436aea4 45(EFIAPI *PEI_SMM_ACTIVATE)(\r
3e4df77f 46 IN EFI_PEI_SERVICES **PeiServices,\r
1436aea4 47 IN PEI_SMM_CONTROL_PPI *This,\r
3e4df77f 48 IN OUT INT8 *ArgumentBuffer OPTIONAL,\r
49 IN OUT UINTN *ArgumentBufferSize OPTIONAL,\r
50 IN BOOLEAN Periodic OPTIONAL,\r
51 IN UINTN ActivationInterval OPTIONAL\r
52 );\r
53\r
54/**\r
55 Clears any system state that was created in response to the Active call.\r
56\r
57 @param PeiServices General purpose services available to every PEIM.\r
58 @param This The PEI_SMM_CONTROL_PPI instance.\r
d1102dba 59 @param Periodic Optional parameter to repeat at this period one\r
3e4df77f 60 time or, if the Periodic Boolean is set, periodically.\r
61\r
62 @retval EFI_SUCCESS The SMI/PMI has been engendered.\r
63 @retval EFI_DEVICE_ERROR The source could not be cleared.\r
64 @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument.\r
65\r
66**/\r
67typedef\r
68EFI_STATUS\r
1436aea4 69(EFIAPI *PEI_SMM_DEACTIVATE)(\r
3e4df77f 70 IN EFI_PEI_SERVICES **PeiServices,\r
1436aea4 71 IN PEI_SMM_CONTROL_PPI *This,\r
3e4df77f 72 IN BOOLEAN Periodic OPTIONAL\r
73 );\r
74\r
75///\r
76/// PEI SMM Control PPI is used to initiate SMI/PMI activations. This protocol could be published by either:\r
77/// - A processor driver to abstract the SMI/PMI IPI\r
78/// - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an\r
79/// Intel chipset\r
d1102dba 80///\r
3e4df77f 81struct _PEI_SMM_CONTROL_PPI {\r
1436aea4
MK
82 PEI_SMM_ACTIVATE Trigger;\r
83 PEI_SMM_DEACTIVATE Clear;\r
3e4df77f 84};\r
85\r
1436aea4 86extern EFI_GUID gPeiSmmControlPpiGuid;\r
3e4df77f 87\r
88#endif\r