]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Guid/MemoryProfile.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Include / Guid / MemoryProfile.h
index 777f950db79a88b94b207981c48c3d57f4467d12..8194b063304752d5bd234a0e22888ba7c577326e 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   Memory profile data structure.\r
 \r
-  Copyright (c) 2014 - 2016, 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
+  Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>\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
@@ -88,7 +82,7 @@ typedef enum {
 //      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
@@ -107,27 +101,27 @@ typedef enum {
 //\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
@@ -137,52 +131,52 @@ typedef enum {
 //       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
@@ -213,10 +207,10 @@ typedef struct _EDKII_MEMORY_PROFILE_PROTOCOL EDKII_MEMORY_PROFILE_PROTOCOL;
   @param[in, out] ProfileSize       On entry, points to the size in bytes of the ProfileBuffer.\r
                                     On return, points to the size of the data returned in ProfileBuffer.\r
   @param[out]     ProfileBuffer     Profile buffer.\r
-                      \r
+\r
   @return EFI_SUCCESS               Get the memory profile data successfully.\r
   @return EFI_UNSUPPORTED           Memory profile is unsupported.\r
-  @return EFI_BUFFER_TO_SMALL       The ProfileSize is too small for the resulting data. \r
+  @return EFI_BUFFER_TO_SMALL       The ProfileSize is too small for the resulting data.\r
                                     ProfileSize is updated with the size required.\r
 \r
 **/\r
@@ -225,7 +219,7 @@ EFI_STATUS
 (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
@@ -276,8 +270,8 @@ EFI_STATUS
   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
@@ -292,7 +286,7 @@ EFI_STATUS
 **/\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
@@ -309,7 +303,7 @@ EFI_STATUS
 **/\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
@@ -339,7 +333,7 @@ EFI_STATUS
 **/\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
@@ -350,12 +344,12 @@ EFI_STATUS
   );\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
@@ -392,22 +386,22 @@ struct _EDKII_MEMORY_PROFILE_PROTOCOL {
 //\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
@@ -455,20 +449,18 @@ typedef struct {
   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