cmd: map addresses to sysmem in efidebug memmap
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 14 Mar 2020 07:44:07 +0000 (08:44 +0100)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 17 Mar 2020 07:29:52 +0000 (08:29 +0100)
Addresses in the sandbox's device tree are in the sandbox's virtual address
space. If we want to compare memory reservations in the device-tree with
the output of 'efidebug memmap', we need to convert back to this address
space.

Adjust the output of the 'efidebug memmap' command.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
cmd/efidebug.c

index 8c3681c37d979d5e6403fac07954e11687eaebd4..bb7c13d6a1ce7e636548aff1b64268a986b72b9d 100644 (file)
@@ -12,6 +12,7 @@
 #include <exports.h>
 #include <hexdump.h>
 #include <malloc.h>
+#include <mapmem.h>
 #include <search.h>
 #include <linux/ctype.h>
 
@@ -488,9 +489,10 @@ static int do_efi_show_memmap(cmd_tbl_t *cmdtp, int flag,
 
                printf("%-16s %.*llx-%.*llx", type,
                       EFI_PHYS_ADDR_WIDTH,
-                      map->physical_start,
+                      (u64)map_to_sysmem((void *)map->physical_start),
                       EFI_PHYS_ADDR_WIDTH,
-                      map->physical_start + map->num_pages * EFI_PAGE_SIZE);
+                      (u64)map_to_sysmem((void *)map->physical_start +
+                                         map->num_pages * EFI_PAGE_SIZE));
 
                print_memory_attributes(map->attribute);
                putc('\n');