Commit 8266e31e authored by Mathias Krause's avatar Mathias Krause Committed by Matt Fleming

x86, ptdump: Add section for EFI runtime services

In commit 3891a04a ("x86-64, espfix: Don't leak bits 31:16 of %esp
returning..") the "ESPFix Area" was added to the page table dump special
sections. That area, though, has a limited amount of entries printed.

The EFI runtime services are, unfortunately, located in-between the
espfix area and the high kernel memory mapping. Due to the enforced
limitation for the espfix area, the EFI mappings won't be printed in the
page table dump.

To make the ESP runtime service mappings visible again, provide them a
dedicated entry.
Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
Acked-by: default avatarBorislav Petkov <bp@suse.de>
Cc: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
parent 243b6754
...@@ -63,6 +63,8 @@ typedef struct { pteval_t pte; } pte_t; ...@@ -63,6 +63,8 @@ typedef struct { pteval_t pte; } pte_t;
#define MODULES_LEN (MODULES_END - MODULES_VADDR) #define MODULES_LEN (MODULES_END - MODULES_VADDR)
#define ESPFIX_PGD_ENTRY _AC(-2, UL) #define ESPFIX_PGD_ENTRY _AC(-2, UL)
#define ESPFIX_BASE_ADDR (ESPFIX_PGD_ENTRY << PGDIR_SHIFT) #define ESPFIX_BASE_ADDR (ESPFIX_PGD_ENTRY << PGDIR_SHIFT)
#define EFI_VA_START ( -4 * (_AC(1, UL) << 30))
#define EFI_VA_END (-68 * (_AC(1, UL) << 30))
#define EARLY_DYNAMIC_PAGE_TABLES 64 #define EARLY_DYNAMIC_PAGE_TABLES 64
......
...@@ -75,6 +75,9 @@ static struct addr_marker address_markers[] = { ...@@ -75,6 +75,9 @@ static struct addr_marker address_markers[] = {
{ VMEMMAP_START, "Vmemmap" }, { VMEMMAP_START, "Vmemmap" },
# ifdef CONFIG_X86_ESPFIX64 # ifdef CONFIG_X86_ESPFIX64
{ ESPFIX_BASE_ADDR, "ESPfix Area", 16 }, { ESPFIX_BASE_ADDR, "ESPfix Area", 16 },
# endif
# ifdef CONFIG_EFI
{ EFI_VA_END, "EFI Runtime Services" },
# endif # endif
{ __START_KERNEL_map, "High Kernel Mapping" }, { __START_KERNEL_map, "High Kernel Mapping" },
{ MODULES_VADDR, "Modules" }, { MODULES_VADDR, "Modules" },
......
...@@ -48,8 +48,7 @@ static unsigned long efi_flags __initdata; ...@@ -48,8 +48,7 @@ static unsigned long efi_flags __initdata;
* We allocate runtime services regions bottom-up, starting from -4G, i.e. * We allocate runtime services regions bottom-up, starting from -4G, i.e.
* 0xffff_ffff_0000_0000 and limit EFI VA mapping space to 64G. * 0xffff_ffff_0000_0000 and limit EFI VA mapping space to 64G.
*/ */
static u64 efi_va = -4 * (1UL << 30); static u64 efi_va = EFI_VA_START;
#define EFI_VA_END (-68 * (1UL << 30))
/* /*
* Scratch space used for switching the pagetable in the EFI stub * Scratch space used for switching the pagetable in the EFI stub
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment