MemMap.c revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
199767f8919635c4928607450d9e0abb932109ceToomas Soome Main file for Mode shell Debug1 function.
199767f8919635c4928607450d9e0abb932109ceToomas Soome Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
199767f8919635c4928607450d9e0abb932109ceToomas Soome This program and the acModeanying materials
199767f8919635c4928607450d9e0abb932109ceToomas Soome are licensed and made available under the terms and conditions of the BSD License
199767f8919635c4928607450d9e0abb932109ceToomas Soome which acModeanies this distribution. The full text of the license may be found at
199767f8919635c4928607450d9e0abb932109ceToomas Soome THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
199767f8919635c4928607450d9e0abb932109ceToomas Soome WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiReservedMemoryType[] = L"Reserved";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiLoaderCode[] = L"LoaderCode";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiLoaderData[] = L"LoaderData";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiBootServicesCode[] = L"BS_Code";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiBootServicesData[] = L"BS_Data";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiRuntimeServicesCode[] = L"RT_Code";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiRuntimeServicesData[] = L"RT_Data";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiConventionalMemory[] = L"Available";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiUnusableMemory[] = L"Unusable";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiACPIReclaimMemory[] = L"ACPIRec";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiACPIMemoryNVS[] = L"ACPI_NVS";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiMemoryMappedIO[] = L"MMIO";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiMemoryMappedIOPortSpace[] = L"MMIOPort";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiPalCode[] = L"PalCode";
199767f8919635c4928607450d9e0abb932109ceToomas Soome Function for 'memmap' command.
199767f8919635c4928607450d9e0abb932109ceToomas Soome @param[in] ImageHandle Handle to the Image (NULL if Internal).
199767f8919635c4928607450d9e0abb932109ceToomas Soome @param[in] SystemTable Pointer to the System Table (NULL if Internal).
199767f8919635c4928607450d9e0abb932109ceToomas Soome // initialize the shell lib (we must be in non-auto-init...)
199767f8919635c4928607450d9e0abb932109ceToomas Soome // parse the command line
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = ShellCommandLineParse (SfoParamList, &Package, &ProblemParam, TRUE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, ProblemParam);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_GET_FAILED), gShellDebug1HiiHandle, Status);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT(Version == EFI_MEMORY_DESCRIPTOR_VERSION);
199767f8919635c4928607450d9e0abb932109ceToomas Soome Sfo = ShellCommandLineGetFlag(Package, L"-sfo");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_HEAD), gShellDebug1HiiHandle);
199767f8919635c4928607450d9e0abb932109ceToomas Soome for (Walker = (UINT8*)Buffer; Walker < (((UINT8*)Buffer)+Size) && Walker != NULL; Walker += ItemSize){
199767f8919635c4928607450d9e0abb932109ceToomas Soome switch (((EFI_MEMORY_DESCRIPTOR*)Walker)->Type) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome // replaced ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages) with 0000
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ReservedPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AvailPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiReclaimPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiNvsPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MmioSpacePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome 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);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome // print the summary
199767f8919635c4928607450d9e0abb932109ceToomas Soome ReservedPagesSize = MultU64x64(SIZE_4KB,ReservedPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadCodePagesSize = MultU64x64(SIZE_4KB,LoadCodePages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadDataPagesSize = MultU64x64(SIZE_4KB,LoadDataPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSCodePagesSize = MultU64x64(SIZE_4KB,BSCodePages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSDataPagesSize = MultU64x64(SIZE_4KB,BSDataPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTDataPagesSize = MultU64x64(SIZE_4KB,RTDataPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTCodePagesSize = MultU64x64(SIZE_4KB,RTCodePages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AvailPagesSize = MultU64x64(SIZE_4KB,AvailPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPagesSize = MultU64x64(SIZE_4KB,TotalPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiReclaimPagesSize = MultU64x64(SIZE_4KB,AcpiReclaimPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiNvsPagesSize = MultU64x64(SIZE_4KB,AcpiNvsPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome MmioSpacePagesSize = MultU64x64(SIZE_4KB,MmioSpacePages);
if (!Sfo) {
return (ShellStatus);