- CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA);\r
- CommBuffer = AllocateZeroPool (CommSize);\r
- if (CommBuffer == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- Print (L"SmramProfile: AllocateZeroPool (0x%x) for comm buffer - %r\n", CommSize, Status);\r
+ MinimalSizeNeeded = sizeof (EFI_GUID) +\r
+ sizeof (UINTN) +\r
+ MAX (sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_INFO),\r
+ sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA_BY_OFFSET));\r
+ MinimalSizeNeeded += MAX (sizeof (MEMORY_PROFILE_CONTEXT),\r
+ MAX (sizeof (MEMORY_PROFILE_DRIVER_INFO),\r
+ MAX (sizeof (MEMORY_PROFILE_ALLOC_INFO),\r
+ MAX (sizeof (MEMORY_PROFILE_DESCRIPTOR),\r
+ MAX (sizeof (MEMORY_PROFILE_FREE_MEMORY),\r
+ sizeof (MEMORY_PROFILE_MEMORY_RANGE))))));\r
+\r
+ Status = EfiGetSystemConfigurationTable (\r
+ &gEdkiiPiSmmCommunicationRegionTableGuid,\r
+ (VOID **) &PiSmmCommunicationRegionTable\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_ERROR, "SmramProfile: Get PiSmmCommunicationRegionTable - %r\n", Status));\r