]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Protocol/MmConfiguration.h
MdePkg/Include/Protocol/Tls.h: pack structures from the TLS RFC
[mirror_edk2.git] / MdePkg / Include / Protocol / MmConfiguration.h
1 /** @file
2 EFI MM Configuration Protocol as defined in the PI 1.5 specification.
3
4 This protocol is used to:
5 1) report the portions of MMRAM regions which cannot be used for the MMRAM heap.
6 2) register the MM Foundation entry point with the processor code. The entry
7 point will be invoked by the MM processor entry code.
8
9 Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
10 This program and the accompanying materials
11 are licensed and made available under the terms and conditions of the BSD License
12 which accompanies this distribution. The full text of the license may be found at
13 http://opensource.org/licenses/bsd-license.php
14
15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17
18 **/
19
20 #ifndef _MM_CONFIGURATION_H_
21 #define _MM_CONFIGURATION_H_
22
23 #include <Pi/PiMmCis.h>
24
25 #define EFI_MM_CONFIGURATION_PROTOCOL_GUID \
26 { \
27 0x26eeb3de, 0xb689, 0x492e, {0x80, 0xf0, 0xbe, 0x8b, 0xd7, 0xda, 0x4b, 0xa7 } \
28 }
29
30 ///
31 /// Structure describing a MMRAM region which cannot be used for the MMRAM heap.
32 ///
33 typedef struct _EFI_MM_RESERVED_MMRAM_REGION {
34 ///
35 /// Starting address of the reserved MMRAM area, as it appears while MMRAM is open.
36 /// Ignored if MmramReservedSize is 0.
37 ///
38 EFI_PHYSICAL_ADDRESS MmramReservedStart;
39 ///
40 /// Number of bytes occupied by the reserved MMRAM area. A size of zero indicates the
41 /// last MMRAM area.
42 ///
43 UINT64 MmramReservedSize;
44 } EFI_MM_RESERVED_MMRAM_REGION;
45
46 typedef struct _EFI_MM_CONFIGURATION_PROTOCOL EFI_MM_CONFIGURATION_PROTOCOL;
47
48 /**
49 Register the MM Foundation entry point.
50
51 This function registers the MM Foundation entry point with the processor code. This entry point
52 will be invoked by the MM Processor entry code.
53
54 @param[in] This The EFI_MM_CONFIGURATION_PROTOCOL instance.
55 @param[in] MmEntryPoint MM Foundation entry point.
56
57 @retval EFI_SUCCESS Success to register MM Entry Point.
58 @retval EFI_INVALID_PARAMETER MmEntryPoint is NULL.
59 **/
60 typedef
61 EFI_STATUS
62 (EFIAPI *EFI_MM_REGISTER_MM_ENTRY)(
63 IN CONST EFI_MM_CONFIGURATION_PROTOCOL *This,
64 IN EFI_MM_ENTRY_POINT MmEntryPoint
65 );
66
67 ///
68 /// The EFI MM Configuration Protocol is a mandatory protocol published by a DXE CPU driver to
69 /// indicate which areas within MMRAM are reserved for use by the CPU for any purpose,
70 /// such as stack, save state or MM entry point.
71 ///
72 /// The RegistermmEntry() function allows the MM IPL DXE driver to register the MM
73 /// Foundation entry point with the MM entry vector code.
74 ///
75 struct _EFI_MM_CONFIGURATION_PROTOCOL {
76 ///
77 /// A pointer to an array MMRAM ranges used by the initial MM entry code.
78 ///
79 EFI_MM_RESERVED_MMRAM_REGION *MmramReservedRegions;
80 EFI_MM_REGISTER_MM_ENTRY RegisterMmEntry;
81 };
82
83 extern EFI_GUID gEfiMmConfigurationProtocolGuid;
84
85 #endif
86