Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/stand/efiboot Add a "mem" command to print the EFI memor...



details:   https://anonhg.NetBSD.org/src/rev/02f7e3ee4e40
branches:  trunk
changeset: 836721:02f7e3ee4e40
user:      jmcneill <jmcneill%NetBSD.org@localhost>
date:      Fri Nov 02 01:22:39 2018 +0000

description:
Add a "mem" command to print the EFI memory map.

diffstat:

 sys/stand/efiboot/boot.c   |  44 +++++++++++++++++++++++++++++++++++++++++++-
 sys/stand/efiboot/efifdt.c |   8 +-------
 2 files changed, 44 insertions(+), 8 deletions(-)

diffs (101 lines):

diff -r 715b74f8d592 -r 02f7e3ee4e40 sys/stand/efiboot/boot.c
--- a/sys/stand/efiboot/boot.c  Thu Nov 01 20:34:49 2018 +0000
+++ b/sys/stand/efiboot/boot.c  Fri Nov 02 01:22:39 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: boot.c,v 1.12 2018/10/29 05:15:21 mrg Exp $    */
+/*     $NetBSD: boot.c,v 1.13 2018/11/02 01:22:39 jmcneill Exp $       */
 
 /*-
  * Copyright (c) 2016 Kimihiro Nonaka <nonaka%netbsd.org@localhost>
@@ -51,6 +51,24 @@
 
 #define NUMNAMES       __arraycount(names)
 
+static const char *efi_memory_type[] = {
+        [EfiReservedMemoryType]         = "Reserved Memory Type",
+        [EfiLoaderCode]                 = "Loader Code",
+        [EfiLoaderData]                 = "Loader Data",
+        [EfiBootServicesCode]           = "Boot Services Code",
+        [EfiBootServicesData]           = "Boot Services Data",
+        [EfiRuntimeServicesCode]        = "Runtime Services Code",
+        [EfiRuntimeServicesData]        = "Runtime Services Data",
+        [EfiConventionalMemory]         = "Conventional Memory",
+        [EfiUnusableMemory]             = "Unusable Memory",
+        [EfiACPIReclaimMemory]          = "ACPI Reclaim Memory",
+        [EfiACPIMemoryNVS]              = "ACPI Memory NVS",
+        [EfiMemoryMappedIO]             = "MMIO",
+        [EfiMemoryMappedIOPortSpace]    = "MMIO (Port Space)",
+        [EfiPalCode]                    = "Pal Code",
+        [EfiPersistentMemory]           = "Persistent Memory",
+};
+
 static char default_device[32];
 static char initrd_path[255];
 static char dtb_path[255];
@@ -66,6 +84,7 @@
 void   command_dtb(char *);
 void   command_initrd(char *);
 void   command_ls(char *);
+void   command_mem(char *);
 void   command_printenv(char *);
 void   command_setenv(char *);
 void   command_clearenv(char *);
@@ -80,6 +99,7 @@
        { "dtb",        command_dtb,            "dtb [dev:][filename]" },
        { "initrd",     command_initrd,         "initrd [dev:][filename]" },
        { "ls",         command_ls,             "ls [hdNn:/path]" },
+       { "mem",        command_mem,            "mem" },
        { "printenv",   command_printenv,       "printenv [key]" },
        { "setenv",     command_setenv,         "setenv <key> <value>" },
        { "clearenv",   command_clearenv,       "clearenv <key>" },
@@ -154,6 +174,28 @@
 }
 
 void
+command_mem(char *arg)
+{
+       EFI_MEMORY_DESCRIPTOR *md, *memmap;
+       UINTN nentries, mapkey, descsize;
+       UINT32 descver;
+       int n;
+
+       printf("Type                    Start             End               Attributes\n");
+       printf("----------------------  ----------------  ----------------  ----------------\n");
+       memmap = LibMemoryMap(&nentries, &mapkey, &descsize, &descver);
+       for (n = 0, md = memmap; n < nentries; n++, md = NextMemoryDescriptor(md, descsize)) {
+               const char *mem_type = "<unknown>";
+               if (md->Type < __arraycount(efi_memory_type))
+                       mem_type = efi_memory_type[md->Type];
+
+               printf("%-22s  %016" PRIx64 "  %016" PRIx64 "  %016" PRIx64 "\n",
+                   mem_type, md->PhysicalStart, md->PhysicalStart + (md->NumberOfPages * EFI_PAGE_SIZE) - 1,
+                   md->Attribute);
+       }
+}
+
+void
 command_printenv(char *arg)
 {
        char *val;
diff -r 715b74f8d592 -r 02f7e3ee4e40 sys/stand/efiboot/efifdt.c
--- a/sys/stand/efiboot/efifdt.c        Thu Nov 01 20:34:49 2018 +0000
+++ b/sys/stand/efiboot/efifdt.c        Fri Nov 02 01:22:39 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: efifdt.c,v 1.12 2018/11/01 00:43:38 jmcneill Exp $ */
+/* $NetBSD: efifdt.c,v 1.13 2018/11/02 01:22:39 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -152,12 +152,6 @@
 
        memmap = LibMemoryMap(&nentries, &mapkey, &descsize, &descver);
        for (n = 0, md = memmap; n < nentries; n++, md = NextMemoryDescriptor(md, descsize)) {
-#ifdef EFI_MEMORY_DEBUG
-               printf("MEM: %u: Type 0x%x Attr 0x%lx Phys 0x%lx Virt 0x%lx Size 0x%lx\n",
-                   n, md->Type, md->Attribute,
-                   md->PhysicalStart, md->VirtualStart,
-                   (u_long)md->NumberOfPages * EFI_PAGE_SIZE);
-#endif
                if ((md->Attribute & EFI_MEMORY_RUNTIME) != 0)
                        continue;
                if ((md->Attribute & EFI_MEMORY_WB) == 0)



Home | Main Index | Thread Index | Old Index