aboutsummaryrefslogtreecommitdiff
path: root/src/interface
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2020-09-22 13:59:37 +0100
committerMichael Brown <mcb30@ipxe.org>2020-09-22 13:59:37 +0100
commitfe69934191ca46c4948a71f416c21dcc5a29e63a (patch)
tree55251ec8db4edf485675323c9f123d1e14705b11 /src/interface
parente08ad61bf78b5b9c8448ce0eac58001d617327b5 (diff)
downloadipxe-fe69934191ca46c4948a71f416c21dcc5a29e63a.zip
ipxe-fe69934191ca46c4948a71f416c21dcc5a29e63a.tar.gz
ipxe-fe69934191ca46c4948a71f416c21dcc5a29e63a.tar.bz2
[efi] Show memory map returned by wrapped calls to GetMemoryMap
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface')
-rw-r--r--src/interface/efi/efi_wrap.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/interface/efi/efi_wrap.c b/src/interface/efi/efi_wrap.c
index ce830fe..66d2d29 100644
--- a/src/interface/efi/efi_wrap.c
+++ b/src/interface/efi/efi_wrap.c
@@ -282,18 +282,36 @@ efi_get_memory_map_wrapper ( UINTN *memory_map_size,
UINT32 *descriptor_version ) {
EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
void *retaddr = __builtin_return_address ( 0 );
+ EFI_MEMORY_DESCRIPTOR *desc;
+ size_t remaining;
EFI_STATUS efirc;
DBGC ( colour, "GetMemoryMap ( %#llx, %p ) ",
( ( unsigned long long ) *memory_map_size ), memory_map );
efirc = bs->GetMemoryMap ( memory_map_size, memory_map, map_key,
descriptor_size, descriptor_version );
- DBGC ( colour, "= %s ( %#llx, %#llx, %#llx, v%d ) -> %p\n",
+ DBGC ( colour, "= %s ( %#llx, %#llx, %#llx, v%d",
efi_status ( efirc ),
( ( unsigned long long ) *memory_map_size ),
( ( unsigned long long ) *map_key ),
( ( unsigned long long ) *descriptor_size ),
- *descriptor_version, retaddr );
+ *descriptor_version );
+ if ( DBG_EXTRA && ( efirc == 0 ) ) {
+ DBGC2 ( colour, ",\n" );
+ for ( desc = memory_map, remaining = *memory_map_size ;
+ remaining >= *descriptor_size ;
+ desc = ( ( ( void * ) desc ) + *descriptor_size ),
+ remaining -= *descriptor_size ) {
+ DBGC2 ( colour, "%#016llx+%#08llx %#016llx "
+ "%s\n", desc->PhysicalStart,
+ ( desc->NumberOfPages * EFI_PAGE_SIZE ),
+ desc->Attribute,
+ efi_memory_type ( desc->Type ) );
+ }
+ } else {
+ DBGC ( colour, " " );
+ }
+ DBGC ( colour, ") -> %p\n", retaddr );
return efirc;
}