/** @file\r
Main file for Mode shell Debug1 function.\r
\r
- Copyright (c) 2010 - 2014, 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 acModeanies 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
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
+ (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
+ Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
-STATIC CONST CHAR16 NameEfiReservedMemoryType[] = L"Reserved";\r
-STATIC CONST CHAR16 NameEfiLoaderCode[] = L"LoaderCode";\r
-STATIC CONST CHAR16 NameEfiLoaderData[] = L"LoaderData";\r
-STATIC CONST CHAR16 NameEfiBootServicesCode[] = L"BS_Code";\r
-STATIC CONST CHAR16 NameEfiBootServicesData[] = L"BS_Data";\r
-STATIC CONST CHAR16 NameEfiRuntimeServicesCode[] = L"RT_Code";\r
-STATIC CONST CHAR16 NameEfiRuntimeServicesData[] = L"RT_Data";\r
-STATIC CONST CHAR16 NameEfiConventionalMemory[] = L"Available";\r
-STATIC CONST CHAR16 NameEfiUnusableMemory[] = L"Unusable";\r
-STATIC CONST CHAR16 NameEfiACPIReclaimMemory[] = L"ACPIRec";\r
-STATIC CONST CHAR16 NameEfiACPIMemoryNVS[] = L"ACPI_NVS";\r
-STATIC CONST CHAR16 NameEfiMemoryMappedIO[] = L"MMIO";\r
-STATIC CONST CHAR16 NameEfiMemoryMappedIOPortSpace[] = L"MMIOPort";\r
-STATIC CONST CHAR16 NameEfiPalCode[] = L"PalCode";\r
+//\r
+// Need full names for Standard-Format Output\r
+//\r
+STATIC CONST CHAR16 NameEfiReservedMemoryType[] = L"Reserved";\r
+STATIC CONST CHAR16 NameEfiLoaderCode[] = L"LoaderCode";\r
+STATIC CONST CHAR16 NameEfiLoaderData[] = L"LoaderData";\r
+STATIC CONST CHAR16 NameEfiBootServicesCode[] = L"BootServiceCode";\r
+STATIC CONST CHAR16 NameEfiBootServicesData[] = L"BootServiceData";\r
+STATIC CONST CHAR16 NameEfiRuntimeServicesCode[] = L"RuntimeCode";\r
+STATIC CONST CHAR16 NameEfiRuntimeServicesData[] = L"RuntimeData";\r
+STATIC CONST CHAR16 NameEfiConventionalMemory[] = L"Available";\r
+STATIC CONST CHAR16 NameEfiPersistentMemory[] = L"Persistent";\r
+STATIC CONST CHAR16 NameEfiUnusableMemory[] = L"UnusableMemory";\r
+STATIC CONST CHAR16 NameEfiACPIReclaimMemory[] = L"ACPIReclaimMemory";\r
+STATIC CONST CHAR16 NameEfiACPIMemoryNVS[] = L"ACPIMemoryNVS";\r
+STATIC CONST CHAR16 NameEfiMemoryMappedIO[] = L"MemoryMappedIO";\r
+STATIC CONST CHAR16 NameEfiMemoryMappedIOPortSpace[] = L"MemoryMappedIOPortSpace";\r
+STATIC CONST CHAR16 NameEfiPalCode[] = L"PalCode";\r
+STATIC CONST CHAR16 NameEfiUnacceptedMemoryType[] = L"Unaccepted";\r
+\r
+//\r
+// Need short names for some memory types\r
+//\r
+STATIC CONST CHAR16 NameEfiBootServicesCodeShort[] = L"BS_Code";\r
+STATIC CONST CHAR16 NameEfiBootServicesDataShort[] = L"BS_Data";\r
+STATIC CONST CHAR16 NameEfiRuntimeServicesCodeShort[] = L"RT_Code";\r
+STATIC CONST CHAR16 NameEfiRuntimeServicesDataShort[] = L"RT_Data";\r
+STATIC CONST CHAR16 NameEfiUnusableMemoryShort[] = L"Unusable";\r
+STATIC CONST CHAR16 NameEfiACPIReclaimMemoryShort[] = L"ACPI_Recl";\r
+STATIC CONST CHAR16 NameEfiACPIMemoryNVSShort[] = L"ACPI_NVS";\r
+STATIC CONST CHAR16 NameEfiMemoryMappedIOShort[] = L"MMIO";\r
+STATIC CONST CHAR16 NameEfiMemoryMappedIOPortSpaceShort[] = L"MMIO_Port";\r
\r
#include "UefiShellDebug1CommandsLib.h"\r
\r
+typedef struct {\r
+ UINT32 Type;\r
+ UINT64 NumberOfPages;\r
+ LIST_ENTRY Link;\r
+} MEMORY_LENGTH_ENTRY;\r
+\r
+/**\r
+ Add the length of the specified type to List.\r
+\r
+ @param List A list to hold all pairs of <Type, NumberOfPages>.\r
+ @param Type Memory type.\r
+ @param NumberOfPages Number of pages.\r
+**/\r
+VOID\r
+AddMemoryLength (\r
+ LIST_ENTRY *List,\r
+ UINT32 Type,\r
+ UINT64 NumberOfPages\r
+ )\r
+{\r
+ MEMORY_LENGTH_ENTRY *Entry;\r
+ MEMORY_LENGTH_ENTRY *NewEntry;\r
+ LIST_ENTRY *Link;\r
+\r
+ Entry = NULL;\r
+ for (Link = GetFirstNode (List); !IsNull (List, Link); Link = GetNextNode (List, Link)) {\r
+ Entry = BASE_CR (Link, MEMORY_LENGTH_ENTRY, Link);\r
+ if (Entry->Type >= Type) {\r
+ break;\r
+ }\r
+ }\r
+\r
+ if ((Entry != NULL) && (Entry->Type == Type)) {\r
+ //\r
+ // The Entry is the one we look for.\r
+ //\r
+ NewEntry = Entry;\r
+ } else {\r
+ //\r
+ // The search operation breaks due to:\r
+ // 1. Type of every entry < Type --> Insert to tail\r
+ // 2. Type of an entry > Type --> Insert to previous of this entry\r
+ //\r
+ NewEntry = AllocatePool (sizeof (*NewEntry));\r
+ if (NewEntry == NULL) {\r
+ return;\r
+ }\r
+\r
+ NewEntry->Type = Type;\r
+ NewEntry->NumberOfPages = 0;\r
+ InsertTailList (Link, &NewEntry->Link);\r
+ }\r
+\r
+ NewEntry->NumberOfPages += NumberOfPages;\r
+}\r
+\r
/**\r
Function for 'memmap' command.\r
\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- LIST_ENTRY *Package;\r
- CHAR16 *ProblemParam;\r
- SHELL_STATUS ShellStatus;\r
- UINTN Size;\r
- EFI_MEMORY_DESCRIPTOR *Buffer;\r
- UINTN MapKey;\r
- UINTN ItemSize;\r
- UINT32 Version;\r
- UINT8 *Walker;\r
- UINT64 ReservedPages;\r
- UINT64 LoadCodePages;\r
- UINT64 LoadDataPages;\r
- UINT64 BSCodePages;\r
- UINT64 BSDataPages;\r
- UINT64 RTDataPages;\r
- UINT64 RTCodePages;\r
- UINT64 AvailPages;\r
- UINT64 TotalPages;\r
- UINT64 ReservedPagesSize;\r
- UINT64 LoadCodePagesSize;\r
- UINT64 LoadDataPagesSize;\r
- UINT64 BSCodePagesSize;\r
- UINT64 BSDataPagesSize;\r
- UINT64 RTDataPagesSize;\r
- UINT64 RTCodePagesSize;\r
- UINT64 AvailPagesSize;\r
- UINT64 TotalPagesSize;\r
- UINT64 AcpiReclaimPages;\r
- UINT64 AcpiNvsPages;\r
- UINT64 MmioSpacePages;\r
- UINT64 AcpiReclaimPagesSize;\r
- UINT64 AcpiNvsPagesSize;\r
- UINT64 MmioSpacePagesSize;\r
- UINT64 MmioPortPages;\r
- UINT64 MmioPortPagesSize;\r
- UINT64 UnusableMemoryPages;\r
- UINT64 UnusableMemoryPagesSize;\r
- UINT64 PalCodePages;\r
- UINT64 PalCodePagesSize;\r
- BOOLEAN Sfo;\r
+ EFI_STATUS Status;\r
+ LIST_ENTRY *Package;\r
+ CHAR16 *ProblemParam;\r
+ SHELL_STATUS ShellStatus;\r
+ UINTN Size;\r
+ EFI_MEMORY_DESCRIPTOR *Descriptors;\r
+ UINTN MapKey;\r
+ UINTN ItemSize;\r
+ UINT32 Version;\r
+ EFI_MEMORY_DESCRIPTOR *Walker;\r
+ UINT64 ReservedPages;\r
+ UINT64 LoadCodePages;\r
+ UINT64 LoadDataPages;\r
+ UINT64 BSCodePages;\r
+ UINT64 BSDataPages;\r
+ UINT64 RTDataPages;\r
+ UINT64 RTCodePages;\r
+ UINT64 AvailPages;\r
+ UINT64 TotalPages;\r
+ UINT64 ReservedPagesSize;\r
+ UINT64 LoadCodePagesSize;\r
+ UINT64 LoadDataPagesSize;\r
+ UINT64 BSCodePagesSize;\r
+ UINT64 BSDataPagesSize;\r
+ UINT64 RTDataPagesSize;\r
+ UINT64 RTCodePagesSize;\r
+ UINT64 AvailPagesSize;\r
+ UINT64 TotalPagesSize;\r
+ UINT64 AcpiReclaimPages;\r
+ UINT64 AcpiNvsPages;\r
+ UINT64 MmioSpacePages;\r
+ UINT64 AcpiReclaimPagesSize;\r
+ UINT64 AcpiNvsPagesSize;\r
+ UINT64 MmioSpacePagesSize;\r
+ UINT64 MmioPortPages;\r
+ UINT64 MmioPortPagesSize;\r
+ UINT64 UnusableMemoryPages;\r
+ UINT64 UnusableMemoryPagesSize;\r
+ UINT64 PalCodePages;\r
+ UINT64 PalCodePagesSize;\r
+ UINT64 UnacceptedPages;\r
+ UINT64 UnacceptedPagesSize;\r
+ UINT64 PersistentPages;\r
+ UINT64 PersistentPagesSize;\r
+ BOOLEAN Sfo;\r
+ LIST_ENTRY MemoryList;\r
+ MEMORY_LENGTH_ENTRY *Entry;\r
+ LIST_ENTRY *Link;\r
\r
AcpiReclaimPages = 0;\r
AcpiNvsPages = 0;\r
MmioPortPages = 0;\r
UnusableMemoryPages = 0;\r
PalCodePages = 0;\r
+ PersistentPages = 0;\r
Size = 0;\r
- Buffer = NULL;\r
+ UnacceptedPages = 0;\r
+ Descriptors = NULL;\r
ShellStatus = SHELL_SUCCESS;\r
Status = EFI_SUCCESS;\r
+ InitializeListHead (&MemoryList);\r
\r
//\r
// initialize the shell lib (we must be in non-auto-init...)\r
//\r
- Status = ShellInitialize();\r
- ASSERT_EFI_ERROR(Status);\r
+ Status = ShellInitialize ();\r
+ ASSERT_EFI_ERROR (Status);\r
\r
- Status = CommandInit();\r
- ASSERT_EFI_ERROR(Status);\r
+ Status = CommandInit ();\r
+ ASSERT_EFI_ERROR (Status);\r
\r
//\r
// parse the command line\r
//\r
Status = ShellCommandLineParse (SfoParamList, &Package, &ProblemParam, TRUE);\r
- if (EFI_ERROR(Status)) {\r
- if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, ProblemParam);\r
- FreePool(ProblemParam);\r
+ if (EFI_ERROR (Status)) {\r
+ if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"memmap", ProblemParam);\r
+ FreePool (ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
}\r
} else {\r
- if (ShellCommandLineGetCount(Package) > 1) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
+ if (ShellCommandLineGetCount (Package) > 1) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"memmap");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);\r
- if (Status == EFI_BUFFER_TOO_SMALL){\r
- Size += SIZE_1KB;\r
- Buffer = AllocateZeroPool(Size);\r
- Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);\r
+ Status = gBS->GetMemoryMap (&Size, Descriptors, &MapKey, &ItemSize, &Version);\r
+ if (Status == EFI_BUFFER_TOO_SMALL) {\r
+ Size += SIZE_1KB;\r
+ Descriptors = AllocateZeroPool (Size);\r
+ Status = gBS->GetMemoryMap (&Size, Descriptors, &MapKey, &ItemSize, &Version);\r
}\r
- if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_GET_FAILED), gShellDebug1HiiHandle, Status);\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_GET_FAILED), gShellDebug1HiiHandle, L"memmap");\r
ShellStatus = SHELL_ACCESS_DENIED;\r
} else {\r
- ASSERT(Version == EFI_MEMORY_DESCRIPTOR_VERSION);\r
- Sfo = ShellCommandLineGetFlag(Package, L"-sfo");\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_HEAD), gShellDebug1HiiHandle);\r
- for (Walker = (UINT8*)Buffer; Walker < (((UINT8*)Buffer)+Size) && Walker != NULL; Walker += ItemSize){\r
- switch (((EFI_MEMORY_DESCRIPTOR*)Walker)->Type) {\r
- case EfiReservedMemoryType:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiReservedMemoryType, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- ReservedPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ASSERT (Version == EFI_MEMORY_DESCRIPTOR_VERSION);\r
+\r
+ Sfo = ShellCommandLineGetFlag (Package, L"-sfo");\r
+ if (!Sfo) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_HEAD), gShellDebug1HiiHandle);\r
+ } else {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_SFO_HEADER), gShellDebug1HiiHandle, L"memmap");\r
+ }\r
+\r
+ for ( Walker = Descriptors\r
+ ; (Walker < (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)Descriptors + Size)) && (Walker != NULL)\r
+ ; Walker = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)Walker + ItemSize)\r
+ )\r
+ {\r
+ switch (Walker->Type) {\r
+ case EfiReservedMemoryType:\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiReservedMemoryType, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ ReservedPages += Walker->NumberOfPages;\r
break;\r
case EfiLoaderCode:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiLoaderCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- LoadCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiLoaderCode, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ LoadCodePages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
break;\r
case EfiLoaderData:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiLoaderData, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- LoadDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiLoaderData, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ LoadDataPages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
break;\r
case EfiBootServicesCode:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiBootServicesCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- BSCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiBootServicesCodeShort : NameEfiBootServicesCode, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ BSCodePages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
break;\r
case EfiBootServicesData:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiBootServicesData, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- BSDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiBootServicesDataShort : NameEfiBootServicesData, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ BSDataPages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
break;\r
case EfiRuntimeServicesCode:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiRuntimeServicesCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- RTCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiRuntimeServicesCodeShort : NameEfiRuntimeServicesCode, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ RTCodePages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
break;\r
case EfiRuntimeServicesData:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiRuntimeServicesData, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- RTDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiRuntimeServicesDataShort : NameEfiRuntimeServicesData, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ RTDataPages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
break;\r
case EfiConventionalMemory:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiConventionalMemory, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- AvailPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiConventionalMemory, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ AvailPages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
+ break;\r
+ case EfiPersistentMemory:\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiPersistentMemory, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ PersistentPages += Walker->NumberOfPages;\r
+ TotalPages += Walker->NumberOfPages;\r
break;\r
case EfiUnusableMemory:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiUnusableMemory, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- UnusableMemoryPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiUnusableMemoryShort : NameEfiUnusableMemory, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ UnusableMemoryPages += Walker->NumberOfPages;\r
break;\r
case EfiACPIReclaimMemory:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiACPIReclaimMemory, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- AcpiReclaimPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiACPIReclaimMemoryShort : NameEfiACPIReclaimMemory, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ TotalPages += Walker->NumberOfPages;\r
+ AcpiReclaimPages += Walker->NumberOfPages;\r
break;\r
case EfiACPIMemoryNVS:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiACPIMemoryNVS, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- AcpiNvsPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiACPIMemoryNVSShort : NameEfiACPIMemoryNVS, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ TotalPages += Walker->NumberOfPages;\r
+ AcpiNvsPages += Walker->NumberOfPages;\r
break;\r
case EfiMemoryMappedIO:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiMemoryMappedIO, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- MmioSpacePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiMemoryMappedIOShort : NameEfiMemoryMappedIO, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ MmioSpacePages += Walker->NumberOfPages;\r
break;\r
case EfiMemoryMappedIOPortSpace:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiMemoryMappedIOPortSpace, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- MmioPortPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo ? NameEfiMemoryMappedIOPortSpaceShort : NameEfiMemoryMappedIOPortSpace, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ MmioPortPages += Walker->NumberOfPages;\r
break;\r
case EfiPalCode:\r
- ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiPalCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);\r
- TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
- PalCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiPalCode, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ TotalPages += Walker->NumberOfPages;\r
+ PalCodePages += Walker->NumberOfPages;\r
+ break;\r
+ case EfiUnacceptedMemoryType:\r
+ ShellPrintHiiEx (-1, -1, NULL, (EFI_STRING_ID)(!Sfo ? STRING_TOKEN (STR_MEMMAP_LIST_ITEM) : STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiUnacceptedMemoryType, Walker->PhysicalStart, Walker->PhysicalStart+MultU64x64 (SIZE_4KB, Walker->NumberOfPages)-1, Walker->NumberOfPages, Walker->Attribute);\r
+ TotalPages += Walker->NumberOfPages;\r
+ UnacceptedPages += Walker->NumberOfPages;\r
break;\r
default:\r
- ASSERT(FALSE);\r
+ //\r
+ // Shell Spec defines the SFO format.\r
+ // Do not print the OEM/OS memory usage in the SFO format, to avoid conflict with Shell Spec.\r
+ //\r
+ if (!Sfo) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_ITEM_OTHER), gShellDebug1HiiHandle, Walker->Type, Walker->PhysicalStart, Walker->PhysicalStart + MultU64x64 (SIZE_4KB, Walker->NumberOfPages) - 1, Walker->NumberOfPages, Walker->Attribute);\r
+ }\r
+\r
+ TotalPages += Walker->NumberOfPages;\r
+ AddMemoryLength (&MemoryList, Walker->Type, Walker->NumberOfPages);\r
+ break;\r
}\r
}\r
+\r
//\r
// print the summary\r
//\r
- ReservedPagesSize = MultU64x64(SIZE_4KB,ReservedPages);\r
- LoadCodePagesSize = MultU64x64(SIZE_4KB,LoadCodePages);\r
- LoadDataPagesSize = MultU64x64(SIZE_4KB,LoadDataPages);\r
- BSCodePagesSize = MultU64x64(SIZE_4KB,BSCodePages);\r
- BSDataPagesSize = MultU64x64(SIZE_4KB,BSDataPages);\r
- RTDataPagesSize = MultU64x64(SIZE_4KB,RTDataPages);\r
- RTCodePagesSize = MultU64x64(SIZE_4KB,RTCodePages);\r
- AvailPagesSize = MultU64x64(SIZE_4KB,AvailPages);\r
- TotalPagesSize = MultU64x64(SIZE_4KB,TotalPages);\r
- AcpiReclaimPagesSize = MultU64x64(SIZE_4KB,AcpiReclaimPages);\r
- AcpiNvsPagesSize = MultU64x64(SIZE_4KB,AcpiNvsPages);\r
- MmioSpacePagesSize = MultU64x64(SIZE_4KB,MmioSpacePages);\r
+ ReservedPagesSize = MultU64x64 (SIZE_4KB, ReservedPages);\r
+ LoadCodePagesSize = MultU64x64 (SIZE_4KB, LoadCodePages);\r
+ LoadDataPagesSize = MultU64x64 (SIZE_4KB, LoadDataPages);\r
+ BSCodePagesSize = MultU64x64 (SIZE_4KB, BSCodePages);\r
+ BSDataPagesSize = MultU64x64 (SIZE_4KB, BSDataPages);\r
+ RTDataPagesSize = MultU64x64 (SIZE_4KB, RTDataPages);\r
+ RTCodePagesSize = MultU64x64 (SIZE_4KB, RTCodePages);\r
+ AvailPagesSize = MultU64x64 (SIZE_4KB, AvailPages);\r
+ TotalPagesSize = MultU64x64 (SIZE_4KB, TotalPages);\r
+ AcpiReclaimPagesSize = MultU64x64 (SIZE_4KB, AcpiReclaimPages);\r
+ AcpiNvsPagesSize = MultU64x64 (SIZE_4KB, AcpiNvsPages);\r
+ MmioSpacePagesSize = MultU64x64 (SIZE_4KB, MmioSpacePages);\r
+ MmioPortPagesSize = MultU64x64 (SIZE_4KB, MmioPortPages);\r
+ PalCodePagesSize = MultU64x64 (SIZE_4KB, PalCodePages);\r
+ UnacceptedPagesSize = MultU64x64 (SIZE_4KB, UnacceptedPages);\r
+ PersistentPagesSize = MultU64x64 (SIZE_4KB, PersistentPages);\r
+ UnusableMemoryPagesSize = MultU64x64 (SIZE_4KB, UnusableMemoryPages);\r
if (!Sfo) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_SUMM), gShellDebug1HiiHandle,\r
- ReservedPages, ReservedPagesSize,\r
- LoadCodePages, LoadCodePagesSize,\r
- LoadDataPages, LoadDataPagesSize,\r
- BSCodePages, BSCodePagesSize,\r
- BSDataPages, BSDataPagesSize,\r
- RTCodePages, RTCodePagesSize,\r
- RTDataPages, RTDataPagesSize,\r
- AcpiReclaimPages, AcpiReclaimPagesSize,\r
- AcpiNvsPages, AcpiNvsPagesSize,\r
- MmioSpacePages, MmioSpacePagesSize,\r
- AvailPages, AvailPagesSize,\r
- DivU64x32(MultU64x64(SIZE_4KB,TotalPages), SIZE_1MB), TotalPagesSize\r
- );\r
- } else {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_MEMMAP_LIST_SUMM),\r
+ gShellDebug1HiiHandle,\r
+ ReservedPages,\r
+ ReservedPagesSize,\r
+ LoadCodePages,\r
+ LoadCodePagesSize,\r
+ LoadDataPages,\r
+ LoadDataPagesSize,\r
+ BSCodePages,\r
+ BSCodePagesSize,\r
+ BSDataPages,\r
+ BSDataPagesSize,\r
+ RTCodePages,\r
+ RTCodePagesSize,\r
+ RTDataPages,\r
+ RTDataPagesSize,\r
+ AcpiReclaimPages,\r
+ AcpiReclaimPagesSize,\r
+ AcpiNvsPages,\r
+ AcpiNvsPagesSize,\r
+ MmioSpacePages,\r
+ MmioSpacePagesSize,\r
+ MmioPortPages,\r
+ MmioPortPagesSize,\r
+ PalCodePages,\r
+ PalCodePagesSize,\r
+ UnacceptedPages,\r
+ UnacceptedPagesSize,\r
+ AvailPages,\r
+ AvailPagesSize,\r
+ PersistentPages,\r
+ PersistentPagesSize\r
+ );\r
+\r
//\r
- // Compute sizes only used for SFO mode\r
+ // Print out the total memory usage for OEM/OS types in the order of type.\r
//\r
- MmioPortPagesSize = MultU64x64(SIZE_4KB, MmioPortPages);\r
- UnusableMemoryPagesSize = MultU64x64(SIZE_4KB, UnusableMemoryPages);\r
- PalCodePagesSize = MultU64x64(SIZE_4KB, PalCodePages);\r
+ for (Link = GetFirstNode (&MemoryList); !IsNull (&MemoryList, Link); Link = GetNextNode (&MemoryList, Link)) {\r
+ Entry = BASE_CR (Link, MEMORY_LENGTH_ENTRY, Link);\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_MEMMAP_LIST_SUMM_OTHER),\r
+ gShellDebug1HiiHandle,\r
+ Entry->Type,\r
+ Entry->NumberOfPages,\r
+ MultU64x64 (SIZE_4KB, Entry->NumberOfPages)\r
+ );\r
+ }\r
\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_MEMMAP_LIST_SUMM_SFO), gShellDebug1HiiHandle,\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_MEMMAP_LIST_SUMM2),\r
+ gShellDebug1HiiHandle,\r
+ DivU64x32 (MultU64x64 (SIZE_4KB, TotalPages), SIZE_1MB),\r
+ TotalPagesSize\r
+ );\r
+ } else {\r
+ ShellPrintHiiEx (\r
+ -1,\r
+ -1,\r
+ NULL,\r
+ STRING_TOKEN (STR_MEMMAP_LIST_SUMM_SFO),\r
+ gShellDebug1HiiHandle,\r
TotalPagesSize,\r
- MultU64x64(SIZE_4KB,ReservedPages),\r
+ ReservedPagesSize,\r
BSCodePagesSize,\r
BSDataPagesSize,\r
RTCodePagesSize,\r
UnusableMemoryPagesSize,\r
AcpiReclaimPagesSize,\r
AcpiNvsPagesSize,\r
- PalCodePagesSize\r
- );\r
+ PalCodePagesSize,\r
+ UnacceptedPagesSize,\r
+ PersistentPagesSize\r
+ );\r
}\r
}\r
}\r
+\r
ShellCommandLineFreeVarList (Package);\r
}\r
\r
- if (Buffer != NULL) {\r
- FreePool(Buffer);\r
+ if (Descriptors != NULL) {\r
+ FreePool (Descriptors);\r
+ }\r
+\r
+ //\r
+ // Free the memory list.\r
+ //\r
+ for (Link = GetFirstNode (&MemoryList); !IsNull (&MemoryList, Link); ) {\r
+ Link = RemoveEntryList (Link);\r
}\r
\r
return (ShellStatus);\r
}\r
-\r