Memory profile data structure.\r
\r
Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
//\r
\r
typedef struct {\r
- UINT32 Signature;\r
- UINT16 Length;\r
- UINT16 Revision;\r
+ UINT32 Signature;\r
+ UINT16 Length;\r
+ UINT16 Revision;\r
} MEMORY_PROFILE_COMMON_HEADER;\r
\r
-#define MEMORY_PROFILE_CONTEXT_SIGNATURE SIGNATURE_32 ('M','P','C','T')\r
-#define MEMORY_PROFILE_CONTEXT_REVISION 0x0002\r
+#define MEMORY_PROFILE_CONTEXT_SIGNATURE SIGNATURE_32 ('M','P','C','T')\r
+#define MEMORY_PROFILE_CONTEXT_REVISION 0x0002\r
\r
typedef struct {\r
- MEMORY_PROFILE_COMMON_HEADER Header;\r
- UINT64 CurrentTotalUsage;\r
- UINT64 PeakTotalUsage;\r
- UINT64 CurrentTotalUsageByType[EfiMaxMemoryType + 2];\r
- UINT64 PeakTotalUsageByType[EfiMaxMemoryType + 2];\r
- UINT64 TotalImageSize;\r
- UINT32 ImageCount;\r
- UINT32 SequenceCount;\r
+ MEMORY_PROFILE_COMMON_HEADER Header;\r
+ UINT64 CurrentTotalUsage;\r
+ UINT64 PeakTotalUsage;\r
+ UINT64 CurrentTotalUsageByType[EfiMaxMemoryType + 2];\r
+ UINT64 PeakTotalUsageByType[EfiMaxMemoryType + 2];\r
+ UINT64 TotalImageSize;\r
+ UINT32 ImageCount;\r
+ UINT32 SequenceCount;\r
} MEMORY_PROFILE_CONTEXT;\r
\r
-#define MEMORY_PROFILE_DRIVER_INFO_SIGNATURE SIGNATURE_32 ('M','P','D','I')\r
-#define MEMORY_PROFILE_DRIVER_INFO_REVISION 0x0003\r
+#define MEMORY_PROFILE_DRIVER_INFO_SIGNATURE SIGNATURE_32 ('M','P','D','I')\r
+#define MEMORY_PROFILE_DRIVER_INFO_REVISION 0x0003\r
\r
typedef struct {\r
- MEMORY_PROFILE_COMMON_HEADER Header;\r
- EFI_GUID FileName;\r
- PHYSICAL_ADDRESS ImageBase;\r
- UINT64 ImageSize;\r
- PHYSICAL_ADDRESS EntryPoint;\r
- UINT16 ImageSubsystem;\r
- EFI_FV_FILETYPE FileType;\r
- UINT8 Reserved[1];\r
- UINT32 AllocRecordCount;\r
- UINT64 CurrentUsage;\r
- UINT64 PeakUsage;\r
- UINT64 CurrentUsageByType[EfiMaxMemoryType + 2];\r
- UINT64 PeakUsageByType[EfiMaxMemoryType + 2];\r
- UINT16 PdbStringOffset;\r
- UINT8 Reserved2[6];\r
-//CHAR8 PdbString[];\r
+ MEMORY_PROFILE_COMMON_HEADER Header;\r
+ EFI_GUID FileName;\r
+ PHYSICAL_ADDRESS ImageBase;\r
+ UINT64 ImageSize;\r
+ PHYSICAL_ADDRESS EntryPoint;\r
+ UINT16 ImageSubsystem;\r
+ EFI_FV_FILETYPE FileType;\r
+ UINT8 Reserved[1];\r
+ UINT32 AllocRecordCount;\r
+ UINT64 CurrentUsage;\r
+ UINT64 PeakUsage;\r
+ UINT64 CurrentUsageByType[EfiMaxMemoryType + 2];\r
+ UINT64 PeakUsageByType[EfiMaxMemoryType + 2];\r
+ UINT16 PdbStringOffset;\r
+ UINT8 Reserved2[6];\r
+ // CHAR8 PdbString[];\r
} MEMORY_PROFILE_DRIVER_INFO;\r
\r
typedef enum {\r
MemoryProfileActionAllocatePages = 1,\r
- MemoryProfileActionFreePages = 2,\r
- MemoryProfileActionAllocatePool = 3,\r
- MemoryProfileActionFreePool = 4,\r
+ MemoryProfileActionFreePages = 2,\r
+ MemoryProfileActionAllocatePool = 3,\r
+ MemoryProfileActionFreePool = 4,\r
} MEMORY_PROFILE_ACTION;\r
\r
//\r
// 3 : AllocatePool\r
// 4 : FreePool\r
//\r
-#define MEMORY_PROFILE_ACTION_BASIC_MASK 0xF\r
+#define MEMORY_PROFILE_ACTION_BASIC_MASK 0xF\r
\r
//\r
// Extension\r
//\r
// Extension (used by memory allocation lib)\r
//\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_PAGES 0x8001\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_PAGES 0x8011\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_PAGES 0x8021\r
-#define MEMORY_PROFILE_ACTION_LIB_FREE_PAGES 0x8002\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_PAGES 0x8041\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_RUNTIME_PAGES 0x8051\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_RESERVED_PAGES 0x8061\r
-#define MEMORY_PROFILE_ACTION_LIB_FREE_ALIGNED_PAGES 0x8042\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_POOL 0x8003\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_POOL 0x8013\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_POOL 0x8023\r
-#define MEMORY_PROFILE_ACTION_LIB_FREE_POOL 0x8004\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ZERO_POOL 0x8083\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_ZERO_POOL 0x8093\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_ZERO_POOL 0x80a3\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_COPY_POOL 0x8103\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_COPY_POOL 0x8113\r
-#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_COPY_POOL 0x8123\r
-#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_POOL 0x8203\r
-#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_RUNTIME_POOL 0x8213\r
-#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_RESERVED_POOL 0x8223\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_PAGES 0x8001\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_PAGES 0x8011\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_PAGES 0x8021\r
+#define MEMORY_PROFILE_ACTION_LIB_FREE_PAGES 0x8002\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_PAGES 0x8041\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_RUNTIME_PAGES 0x8051\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ALIGNED_RESERVED_PAGES 0x8061\r
+#define MEMORY_PROFILE_ACTION_LIB_FREE_ALIGNED_PAGES 0x8042\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_POOL 0x8003\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_POOL 0x8013\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_POOL 0x8023\r
+#define MEMORY_PROFILE_ACTION_LIB_FREE_POOL 0x8004\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_ZERO_POOL 0x8083\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_ZERO_POOL 0x8093\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_ZERO_POOL 0x80a3\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_COPY_POOL 0x8103\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RUNTIME_COPY_POOL 0x8113\r
+#define MEMORY_PROFILE_ACTION_LIB_ALLOCATE_RESERVED_COPY_POOL 0x8123\r
+#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_POOL 0x8203\r
+#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_RUNTIME_POOL 0x8213\r
+#define MEMORY_PROFILE_ACTION_LIB_REALLOCATE_RESERVED_POOL 0x8223\r
\r
//\r
// User defined: 0x80000000~0xFFFFFFFF\r
// and the type is pages (can be freed partially)\r
// or pool (cannot be freed partially).\r
//\r
-#define MEMORY_PROFILE_ACTION_USER_DEFINED_MASK 0x80000000\r
+#define MEMORY_PROFILE_ACTION_USER_DEFINED_MASK 0x80000000\r
\r
-#define MEMORY_PROFILE_ALLOC_INFO_SIGNATURE SIGNATURE_32 ('M','P','A','I')\r
-#define MEMORY_PROFILE_ALLOC_INFO_REVISION 0x0002\r
+#define MEMORY_PROFILE_ALLOC_INFO_SIGNATURE SIGNATURE_32 ('M','P','A','I')\r
+#define MEMORY_PROFILE_ALLOC_INFO_REVISION 0x0002\r
\r
typedef struct {\r
- MEMORY_PROFILE_COMMON_HEADER Header;\r
- PHYSICAL_ADDRESS CallerAddress;\r
- UINT32 SequenceId;\r
- UINT8 Reserved[2];\r
- UINT16 ActionStringOffset;\r
- MEMORY_PROFILE_ACTION Action;\r
- EFI_MEMORY_TYPE MemoryType;\r
- PHYSICAL_ADDRESS Buffer;\r
- UINT64 Size;\r
-//CHAR8 ActionString[];\r
+ MEMORY_PROFILE_COMMON_HEADER Header;\r
+ PHYSICAL_ADDRESS CallerAddress;\r
+ UINT32 SequenceId;\r
+ UINT8 Reserved[2];\r
+ UINT16 ActionStringOffset;\r
+ MEMORY_PROFILE_ACTION Action;\r
+ EFI_MEMORY_TYPE MemoryType;\r
+ PHYSICAL_ADDRESS Buffer;\r
+ UINT64 Size;\r
+ // CHAR8 ActionString[];\r
} MEMORY_PROFILE_ALLOC_INFO;\r
\r
-#define MEMORY_PROFILE_DESCRIPTOR_SIGNATURE SIGNATURE_32 ('M','P','D','R')\r
-#define MEMORY_PROFILE_DESCRIPTOR_REVISION 0x0001\r
+#define MEMORY_PROFILE_DESCRIPTOR_SIGNATURE SIGNATURE_32 ('M','P','D','R')\r
+#define MEMORY_PROFILE_DESCRIPTOR_REVISION 0x0001\r
\r
typedef struct {\r
- MEMORY_PROFILE_COMMON_HEADER Header;\r
- PHYSICAL_ADDRESS Address;\r
- UINT64 Size;\r
+ MEMORY_PROFILE_COMMON_HEADER Header;\r
+ PHYSICAL_ADDRESS Address;\r
+ UINT64 Size;\r
} MEMORY_PROFILE_DESCRIPTOR;\r
\r
-#define MEMORY_PROFILE_FREE_MEMORY_SIGNATURE SIGNATURE_32 ('M','P','R','M')\r
-#define MEMORY_PROFILE_FREE_MEMORY_REVISION 0x0001\r
+#define MEMORY_PROFILE_FREE_MEMORY_SIGNATURE SIGNATURE_32 ('M','P','R','M')\r
+#define MEMORY_PROFILE_FREE_MEMORY_REVISION 0x0001\r
\r
typedef struct {\r
- MEMORY_PROFILE_COMMON_HEADER Header;\r
- UINT64 TotalFreeMemoryPages;\r
- UINT32 FreeMemoryEntryCount;\r
- UINT8 Reserved[4];\r
- //MEMORY_PROFILE_DESCRIPTOR MemoryDescriptor[FreeMemoryEntryCount];\r
+ MEMORY_PROFILE_COMMON_HEADER Header;\r
+ UINT64 TotalFreeMemoryPages;\r
+ UINT32 FreeMemoryEntryCount;\r
+ UINT8 Reserved[4];\r
+ // MEMORY_PROFILE_DESCRIPTOR MemoryDescriptor[FreeMemoryEntryCount];\r
} MEMORY_PROFILE_FREE_MEMORY;\r
\r
-#define MEMORY_PROFILE_MEMORY_RANGE_SIGNATURE SIGNATURE_32 ('M','P','M','R')\r
-#define MEMORY_PROFILE_MEMORY_RANGE_REVISION 0x0001\r
+#define MEMORY_PROFILE_MEMORY_RANGE_SIGNATURE SIGNATURE_32 ('M','P','M','R')\r
+#define MEMORY_PROFILE_MEMORY_RANGE_REVISION 0x0001\r
\r
typedef struct {\r
- MEMORY_PROFILE_COMMON_HEADER Header;\r
- UINT32 MemoryRangeCount;\r
- UINT8 Reserved[4];\r
- //MEMORY_PROFILE_DESCRIPTOR MemoryDescriptor[MemoryRangeCount];\r
+ MEMORY_PROFILE_COMMON_HEADER Header;\r
+ UINT32 MemoryRangeCount;\r
+ UINT8 Reserved[4];\r
+ // MEMORY_PROFILE_DESCRIPTOR MemoryDescriptor[MemoryRangeCount];\r
} MEMORY_PROFILE_MEMORY_RANGE;\r
\r
//\r
(EFIAPI *EDKII_MEMORY_PROFILE_GET_DATA)(\r
IN EDKII_MEMORY_PROFILE_PROTOCOL *This,\r
IN OUT UINT64 *ProfileSize,\r
- OUT VOID *ProfileBuffer\r
+ OUT VOID *ProfileBuffer\r
);\r
\r
/**\r
IN UINT64 ImageSize\r
);\r
\r
-#define MEMORY_PROFILE_RECORDING_ENABLE TRUE\r
-#define MEMORY_PROFILE_RECORDING_DISABLE FALSE\r
+#define MEMORY_PROFILE_RECORDING_ENABLE TRUE\r
+#define MEMORY_PROFILE_RECORDING_DISABLE FALSE\r
\r
/**\r
Get memory profile recording state.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EDKII_MEMORY_PROFILE_GET_RECORDING_STATE) (\r
+(EFIAPI *EDKII_MEMORY_PROFILE_GET_RECORDING_STATE)(\r
IN EDKII_MEMORY_PROFILE_PROTOCOL *This,\r
OUT BOOLEAN *RecordingState\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EDKII_MEMORY_PROFILE_SET_RECORDING_STATE) (\r
+(EFIAPI *EDKII_MEMORY_PROFILE_SET_RECORDING_STATE)(\r
IN EDKII_MEMORY_PROFILE_PROTOCOL *This,\r
IN BOOLEAN RecordingState\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EDKII_MEMORY_PROFILE_RECORD) (\r
+(EFIAPI *EDKII_MEMORY_PROFILE_RECORD)(\r
IN EDKII_MEMORY_PROFILE_PROTOCOL *This,\r
IN PHYSICAL_ADDRESS CallerAddress,\r
IN MEMORY_PROFILE_ACTION Action,\r
);\r
\r
struct _EDKII_MEMORY_PROFILE_PROTOCOL {\r
- EDKII_MEMORY_PROFILE_GET_DATA GetData;\r
- EDKII_MEMORY_PROFILE_REGISTER_IMAGE RegisterImage;\r
- EDKII_MEMORY_PROFILE_UNREGISTER_IMAGE UnregisterImage;\r
- EDKII_MEMORY_PROFILE_GET_RECORDING_STATE GetRecordingState;\r
- EDKII_MEMORY_PROFILE_SET_RECORDING_STATE SetRecordingState;\r
- EDKII_MEMORY_PROFILE_RECORD Record;\r
+ EDKII_MEMORY_PROFILE_GET_DATA GetData;\r
+ EDKII_MEMORY_PROFILE_REGISTER_IMAGE RegisterImage;\r
+ EDKII_MEMORY_PROFILE_UNREGISTER_IMAGE UnregisterImage;\r
+ EDKII_MEMORY_PROFILE_GET_RECORDING_STATE GetRecordingState;\r
+ EDKII_MEMORY_PROFILE_SET_RECORDING_STATE SetRecordingState;\r
+ EDKII_MEMORY_PROFILE_RECORD Record;\r
};\r
\r
//\r
//\r
// SMRAM profile command\r
//\r
-#define SMRAM_PROFILE_COMMAND_GET_PROFILE_INFO 0x1\r
-#define SMRAM_PROFILE_COMMAND_GET_PROFILE_DATA 0x2\r
+#define SMRAM_PROFILE_COMMAND_GET_PROFILE_INFO 0x1\r
+#define SMRAM_PROFILE_COMMAND_GET_PROFILE_DATA 0x2\r
//\r
-// Below 2 commands are now used by ECP only and only valid before SmmReadyToLock\r
+// Below 2 commands have been deprecated. They may not be re-used.\r
//\r
-#define SMRAM_PROFILE_COMMAND_REGISTER_IMAGE 0x3\r
-#define SMRAM_PROFILE_COMMAND_UNREGISTER_IMAGE 0x4\r
+#define SMRAM_PROFILE_COMMAND_DEPRECATED1 0x3\r
+#define SMRAM_PROFILE_COMMAND_DEPRECATED2 0x4\r
\r
-#define SMRAM_PROFILE_COMMAND_GET_PROFILE_DATA_BY_OFFSET 0x5\r
-#define SMRAM_PROFILE_COMMAND_GET_RECORDING_STATE 0x6\r
-#define SMRAM_PROFILE_COMMAND_SET_RECORDING_STATE 0x7\r
+#define SMRAM_PROFILE_COMMAND_GET_PROFILE_DATA_BY_OFFSET 0x5\r
+#define SMRAM_PROFILE_COMMAND_GET_RECORDING_STATE 0x6\r
+#define SMRAM_PROFILE_COMMAND_SET_RECORDING_STATE 0x7\r
\r
typedef struct {\r
- UINT32 Command;\r
- UINT32 DataLength;\r
- UINT64 ReturnStatus;\r
+ UINT32 Command;\r
+ UINT32 DataLength;\r
+ UINT64 ReturnStatus;\r
} SMRAM_PROFILE_PARAMETER_HEADER;\r
\r
typedef struct {\r
UINT64 NumberOfPage;\r
} SMRAM_PROFILE_PARAMETER_UNREGISTER_IMAGE;\r
\r
-\r
-#define EDKII_MEMORY_PROFILE_GUID { \\r
+#define EDKII_MEMORY_PROFILE_GUID {\\r
0x821c9a09, 0x541a, 0x40f6, { 0x9f, 0x43, 0xa, 0xd1, 0x93, 0xa1, 0x2c, 0xfe } \\r
}\r
\r
-extern EFI_GUID gEdkiiMemoryProfileGuid;\r
+extern EFI_GUID gEdkiiMemoryProfileGuid;\r
\r
typedef EDKII_MEMORY_PROFILE_PROTOCOL EDKII_SMM_MEMORY_PROFILE_PROTOCOL;\r
\r
-#define EDKII_SMM_MEMORY_PROFILE_GUID { \\r
+#define EDKII_SMM_MEMORY_PROFILE_GUID {\\r
0xe22bbcca, 0x516a, 0x46a8, { 0x80, 0xe2, 0x67, 0x45, 0xe8, 0x36, 0x93, 0xbd } \\r
}\r
\r
-extern EFI_GUID gEdkiiSmmMemoryProfileGuid;\r
+extern EFI_GUID gEdkiiSmmMemoryProfileGuid;\r
\r
#endif\r
-\r