X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdePkg%2FInclude%2FPi%2FPiSmmCis.h;h=bf5b580c324518e413af9818e89c1e04fdf07613;hb=2f88bd3a1296c522317f1c21377876de63de5be7;hp=2fa83afc6ec962e787ac5f6bc120c337efaca23c;hpb=9df063a06aef048c042498e2f542fb693e93493a;p=mirror_edk2.git
diff --git a/MdePkg/Include/Pi/PiSmmCis.h b/MdePkg/Include/Pi/PiSmmCis.h
index 2fa83afc6e..bf5b580c32 100644
--- a/MdePkg/Include/Pi/PiSmmCis.h
+++ b/MdePkg/Include/Pi/PiSmmCis.h
@@ -1,34 +1,26 @@
/** @file
- Common definitions in the Platform Initialization Specification version 1.2
+ Common definitions in the Platform Initialization Specification version 1.4a
VOLUME 4 System Management Mode Core Interface version.
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _PI_SMMCIS_H_
#define _PI_SMMCIS_H_
-#include
+#include
#include
-typedef struct _EFI_SMM_SYSTEM_TABLE2 EFI_SMM_SYSTEM_TABLE2;
-
-///
-/// The System Management System Table (SMST) signature
-///
-#define SMM_SMST_SIGNATURE SIGNATURE_32 ('S', 'M', 'S', 'T')
-///
-/// The System Management System Table (SMST) revision is 1.0
-///
-#define EFI_SMM_SYSTEM_TABLE2_REVISION ((1 << 16) | (0x00))
+typedef struct _EFI_SMM_SYSTEM_TABLE2 EFI_SMM_SYSTEM_TABLE2;
+//
+// Define new MM related definition introduced by PI 1.5.
+//
+#define SMM_SMST_SIGNATURE MM_MMST_SIGNATURE
+#define SMM_SPECIFICATION_MAJOR_REVISION MM_SPECIFICATION_MAJOR_REVISION
+#define SMM_SPECIFICATION_MINOR_REVISION MM_SPECIFICATION_MINOR_REVISION
+#define EFI_SMM_SYSTEM_TABLE2_REVISION EFI_MM_SYSTEM_TABLE_REVISION
/**
Adds, updates, or removes a configuration table entry from the System Management System Table.
@@ -51,185 +43,47 @@ typedef struct _EFI_SMM_SYSTEM_TABLE2 EFI_SMM_SYSTEM_TABLE2;
typedef
EFI_STATUS
(EFIAPI *EFI_SMM_INSTALL_CONFIGURATION_TABLE2)(
- IN CONST EFI_SMM_SYSTEM_TABLE2 *SystemTable,
- IN CONST EFI_GUID *Guid,
- IN VOID *Table,
- IN UINTN TableSize
- );
-
-/**
- The SmmStartupThisAp() lets the caller to get one distinct application processor
- (AP) in the enabled processor pool to execute a caller-provided code stream
- while in SMM. It runs the given code on this processor and reports the status.
- It must be noted that the supplied code stream will be run only on an enabled
- processor which has also entered SMM.
-
- @param[in] Procedure A pointer to the code stream to be run on the designated AP of the system.
- @param[in] CpuNumber The zero-based index of the processor number of the AP on which the code stream is supposed to run.
- @param[in,out] ProcArguments Allow the caller to pass a list of parameters to the code that is run by the AP.
-
- @retval EFI_SUCCESS The call was successful and the return parameters are valid.
- @retval EFI_INVALID_PARAMETER The input arguments are out of range.
- @retval EFI_INVALID_PARAMETER The CPU requested is not available on this SMI invocation.
- @retval EFI_INVALID_PARAMETER The CPU cannot support an additional service invocation.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SMM_STARTUP_THIS_AP)(
- IN EFI_AP_PROCEDURE Procedure,
- IN UINTN CpuNumber,
- IN OUT VOID *ProcArguments OPTIONAL
- );
-
-/**
- Function prototype for protocol install notification.
-
- @param[in] Protocol Points to the protocol's unique identifier.
- @param[in] Interface Points to the interface instance.
- @param[in] Handle The handle on which the interface was installed.
-
- @return Status Code
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SMM_NOTIFY_FN)(
- IN CONST EFI_GUID *Protocol,
- IN VOID *Interface,
- IN EFI_HANDLE Handle
- );
-
-/**
- Register a callback function be called when a particular protocol interface is installed.
-
- The SmmRegisterProtocolNotify() function creates a registration Function that is to be
- called whenever a protocol interface is installed for Protocol by
- SmmInstallProtocolInterface().
-
- @param[in] Protocol The unique ID of the protocol for which the event is to be registered.
- @param[in] Function Points to the notification function.
- @param[out] Registration A pointer to a memory location to receive the registration value.
-
- @retval EFI_SUCCESS Successfully returned the registration record that has been added.
- @retval EFI_INVALID_PARAMETER One or more of Protocol, Function and Registration is NULL.
- @retval EFI_OUT_OF_RESOURCES Not enough memory resource to finish the request.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SMM_REGISTER_PROTOCOL_NOTIFY)(
- IN CONST EFI_GUID *Protocol,
- IN EFI_SMM_NOTIFY_FN Function,
- OUT VOID **Registration
+ IN CONST EFI_SMM_SYSTEM_TABLE2 *SystemTable,
+ IN CONST EFI_GUID *Guid,
+ IN VOID *Table,
+ IN UINTN TableSize
);
-/**
- Manage SMI of a particular type.
-
- @param[in] HandlerType Points to the handler type or NULL for root SMI handlers.
- @param[in] Context Points to an optional context buffer.
- @param[in,out] CommBuffer Points to the optional communication buffer.
- @param[in,out] CommBufferSize Points to the size of the optional communication buffer.
-
- @retval EFI_SUCCESS Interrupt source was processed successfully but not quiesced.
- @retval EFI_INTERRUPT_PENDING One or more SMI sources could not be quiesced.
- @retval EFI_WARN_INTERRUPT_SOURCE_PENDING Interrupt source was not handled or quiesced.
- @retval EFI_WARN_INTERRUPT_SOURCE_QUIESCED Interrupt source was handled and quiesced.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SMM_INTERRUPT_MANAGE)(
- IN CONST EFI_GUID *HandlerType,
- IN CONST VOID *Context OPTIONAL,
- IN OUT VOID *CommBuffer OPTIONAL,
- IN OUT UINTN *CommBufferSize OPTIONAL
- );
-
-/**
- Main entry point for an SMM handler dispatch or communicate-based callback.
-
- @param[in] DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister().
- @param[in] Context Points to an optional handler context which was specified when the
- handler was registered.
- @param[in,out] CommBuffer A pointer to a collection of data in memory that will
- be conveyed from a non-SMM environment into an SMM environment.
- @param[in,out] CommBufferSize The size of the CommBuffer.
-
- @retval EFI_SUCCESS The interrupt was handled and quiesced. No other handlers
- should still be called.
- @retval EFI_WARN_INTERRUPT_SOURCE_QUIESCED The interrupt has been quiesced but other handlers should
- still be called.
- @retval EFI_WARN_INTERRUPT_SOURCE_PENDING The interrupt is still pending and other handlers should still
- be called.
- @retval EFI_INTERRUPT_PENDING The interrupt could not be quiesced.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SMM_HANDLER_ENTRY_POINT2)(
- IN EFI_HANDLE DispatchHandle,
- IN CONST VOID *Context OPTIONAL,
- IN OUT VOID *CommBuffer OPTIONAL,
- IN OUT UINTN *CommBufferSize OPTIONAL
- );
-
-/**
- Registers a handler to execute within SMM.
-
- @param[in] Handler Handler service funtion pointer.
- @param[in] HandlerType Points to the handler type or NULL for root SMI handlers.
- @param[out] DispatchHandle On return, contains a unique handle which can be used to later
- unregister the handler function.
-
- @retval EFI_SUCCESS SMI handler added successfully.
- @retval EFI_INVALID_PARAMETER Handler is NULL or DispatchHandle is NULL.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SMM_INTERRUPT_REGISTER)(
- IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler,
- IN CONST EFI_GUID *HandlerType OPTIONAL,
- OUT EFI_HANDLE *DispatchHandle
- );
-
-/**
- Unregister a handler in SMM.
-
- @param[in] DispatchHandle The handle that was specified when the handler was registered.
-
- @retval EFI_SUCCESS Handler function was successfully unregistered.
- @retval EFI_INVALID_PARAMETER DispatchHandle does not refer to a valid handle.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SMM_INTERRUPT_UNREGISTER)(
- IN EFI_HANDLE DispatchHandle
- );
+typedef EFI_MM_STARTUP_THIS_AP EFI_SMM_STARTUP_THIS_AP;
+typedef EFI_MM_NOTIFY_FN EFI_SMM_NOTIFY_FN;
+typedef EFI_MM_REGISTER_PROTOCOL_NOTIFY EFI_SMM_REGISTER_PROTOCOL_NOTIFY;
+typedef EFI_MM_INTERRUPT_MANAGE EFI_SMM_INTERRUPT_MANAGE;
+typedef EFI_MM_HANDLER_ENTRY_POINT EFI_SMM_HANDLER_ENTRY_POINT2;
+typedef EFI_MM_INTERRUPT_REGISTER EFI_SMM_INTERRUPT_REGISTER;
+typedef EFI_MM_INTERRUPT_UNREGISTER EFI_SMM_INTERRUPT_UNREGISTER;
///
/// Processor information and functionality needed by SMM Foundation.
///
typedef struct _EFI_SMM_ENTRY_CONTEXT {
- EFI_SMM_STARTUP_THIS_AP SmmStartupThisAp;
+ EFI_SMM_STARTUP_THIS_AP SmmStartupThisAp;
///
- /// A number between zero and the NumberOfCpus field. This field designates which
+ /// A number between zero and the NumberOfCpus field. This field designates which
/// processor is executing the SMM Foundation.
///
- UINTN CurrentlyExecutingCpu;
+ UINTN CurrentlyExecutingCpu;
///
- /// The number of current operational processors in the platform. This is a 1 based
+ /// The number of possible processors in the platform. This is a 1 based
/// counter. This does not indicate the number of processors that entered SMM.
///
- UINTN NumberOfCpus;
+ UINTN NumberOfCpus;
///
- /// Points to an array, where each element describes the number of bytes in the
- /// corresponding save state specified by CpuSaveState. There are always
- /// NumberOfCpus entries in the array.
+ /// Points to an array, where each element describes the number of bytes in the
+ /// corresponding save state specified by CpuSaveState. There are always
+ /// NumberOfCpus entries in the array.
///
- UINTN *CpuSaveStateSize;
+ UINTN *CpuSaveStateSize;
///
- /// Points to an array, where each element is a pointer to a CPU save state. The
- /// corresponding element in CpuSaveStateSize specifies the number of bytes in the
+ /// Points to an array, where each element is a pointer to a CPU save state. The
+ /// corresponding element in CpuSaveStateSize specifies the number of bytes in the
/// save state area. There are always NumberOfCpus entries in the array.
///
- VOID **CpuSaveState;
+ VOID **CpuSaveState;
} EFI_SMM_ENTRY_CONTEXT;
/**
@@ -246,70 +100,70 @@ VOID
///
/// System Management System Table (SMST)
///
-/// The System Management System Table (SMST) is a table that contains a collection of common
-/// services for managing SMRAM allocation and providing basic I/O services. These services are
+/// The System Management System Table (SMST) is a table that contains a collection of common
+/// services for managing SMRAM allocation and providing basic I/O services. These services are
/// intended for both preboot and runtime usage.
///
struct _EFI_SMM_SYSTEM_TABLE2 {
///
/// The table header for the SMST.
///
- EFI_TABLE_HEADER Hdr;
+ EFI_TABLE_HEADER Hdr;
///
/// A pointer to a NULL-terminated Unicode string containing the vendor name.
/// It is permissible for this pointer to be NULL.
///
- CHAR16 *SmmFirmwareVendor;
+ CHAR16 *SmmFirmwareVendor;
///
/// The particular revision of the firmware.
///
- UINT32 SmmFirmwareRevision;
+ UINT32 SmmFirmwareRevision;
- EFI_SMM_INSTALL_CONFIGURATION_TABLE2 SmmInstallConfigurationTable;
+ EFI_SMM_INSTALL_CONFIGURATION_TABLE2 SmmInstallConfigurationTable;
///
/// I/O Service
///
- EFI_SMM_CPU_IO2_PROTOCOL SmmIo;
+ EFI_SMM_CPU_IO2_PROTOCOL SmmIo;
///
/// Runtime memory services
///
- EFI_ALLOCATE_POOL SmmAllocatePool;
- EFI_FREE_POOL SmmFreePool;
- EFI_ALLOCATE_PAGES SmmAllocatePages;
- EFI_FREE_PAGES SmmFreePages;
+ EFI_ALLOCATE_POOL SmmAllocatePool;
+ EFI_FREE_POOL SmmFreePool;
+ EFI_ALLOCATE_PAGES SmmAllocatePages;
+ EFI_FREE_PAGES SmmFreePages;
///
/// MP service
///
- EFI_SMM_STARTUP_THIS_AP SmmStartupThisAp;
+ EFI_SMM_STARTUP_THIS_AP SmmStartupThisAp;
///
/// CPU information records
///
///
- /// A number between zero and and the NumberOfCpus field. This field designates
+ /// A number between zero and and the NumberOfCpus field. This field designates
/// which processor is executing the SMM infrastructure.
///
- UINTN CurrentlyExecutingCpu;
+ UINTN CurrentlyExecutingCpu;
///
- /// The number of current operational processors in the platform. This is a 1 based counter.
+ /// The number of possible processors in the platform. This is a 1 based counter.
///
- UINTN NumberOfCpus;
+ UINTN NumberOfCpus;
///
- /// Points to an array, where each element describes the number of bytes in the
- /// corresponding save state specified by CpuSaveState. There are always
- /// NumberOfCpus entries in the array.
+ /// Points to an array, where each element describes the number of bytes in the
+ /// corresponding save state specified by CpuSaveState. There are always
+ /// NumberOfCpus entries in the array.
///
- UINTN *CpuSaveStateSize;
+ UINTN *CpuSaveStateSize;
///
- /// Points to an array, where each element is a pointer to a CPU save state. The
- /// corresponding element in CpuSaveStateSize specifies the number of bytes in the
+ /// Points to an array, where each element is a pointer to a CPU save state. The
+ /// corresponding element in CpuSaveStateSize specifies the number of bytes in the
/// save state area. There are always NumberOfCpus entries in the array.
///
- VOID **CpuSaveState;
+ VOID **CpuSaveState;
///
/// Extensibility table
@@ -318,29 +172,29 @@ struct _EFI_SMM_SYSTEM_TABLE2 {
///
/// The number of UEFI Configuration Tables in the buffer SmmConfigurationTable.
///
- UINTN NumberOfTableEntries;
+ UINTN NumberOfTableEntries;
///
- /// A pointer to the UEFI Configuration Tables. The number of entries in the table is
- /// NumberOfTableEntries.
+ /// A pointer to the UEFI Configuration Tables. The number of entries in the table is
+ /// NumberOfTableEntries.
///
- EFI_CONFIGURATION_TABLE *SmmConfigurationTable;
+ EFI_CONFIGURATION_TABLE *SmmConfigurationTable;
///
/// Protocol services
///
- EFI_INSTALL_PROTOCOL_INTERFACE SmmInstallProtocolInterface;
- EFI_UNINSTALL_PROTOCOL_INTERFACE SmmUninstallProtocolInterface;
- EFI_HANDLE_PROTOCOL SmmHandleProtocol;
- EFI_SMM_REGISTER_PROTOCOL_NOTIFY SmmRegisterProtocolNotify;
- EFI_LOCATE_HANDLE SmmLocateHandle;
- EFI_LOCATE_PROTOCOL SmmLocateProtocol;
+ EFI_INSTALL_PROTOCOL_INTERFACE SmmInstallProtocolInterface;
+ EFI_UNINSTALL_PROTOCOL_INTERFACE SmmUninstallProtocolInterface;
+ EFI_HANDLE_PROTOCOL SmmHandleProtocol;
+ EFI_SMM_REGISTER_PROTOCOL_NOTIFY SmmRegisterProtocolNotify;
+ EFI_LOCATE_HANDLE SmmLocateHandle;
+ EFI_LOCATE_PROTOCOL SmmLocateProtocol;
///
/// SMI Management functions
///
- EFI_SMM_INTERRUPT_MANAGE SmiManage;
- EFI_SMM_INTERRUPT_REGISTER SmiHandlerRegister;
- EFI_SMM_INTERRUPT_UNREGISTER SmiHandlerUnRegister;
+ EFI_SMM_INTERRUPT_MANAGE SmiManage;
+ EFI_SMM_INTERRUPT_REGISTER SmiHandlerRegister;
+ EFI_SMM_INTERRUPT_UNREGISTER SmiHandlerUnRegister;
};
#endif