arm64 memory layout

This commit is contained in:
Cheng Jian
2019-10-27 15:17:53 +08:00
parent b871dab562
commit bf3290848f
3 changed files with 188 additions and 0 deletions
@@ -0,0 +1,75 @@
From 071929dbdd865f779a89ba3f1e06ba8d17dd3743 Mon Sep 17 00:00:00 2001
From: Laura Abbott <labbott@redhat.com>
Date: Tue, 19 Dec 2017 11:28:10 -0800
Subject: [PATCH] arm64: Stop printing the virtual memory layout
Printing kernel addresses should be done in limited circumstances, mostly
for debugging purposes. Printing out the virtual memory layout at every
kernel bootup doesn't really fall into this category so delete the prints.
There are other ways to get the same information.
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Cheng Jian <gatieme@163.com>
---
arch/arm64/mm/init.c | 43 -------------------------------------------
1 file changed, 43 deletions(-)
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 5960bef0170d..672094ed7e07 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -599,49 +599,6 @@ void __init mem_init(void)
mem_init_print_info(NULL);
-#define MLK(b, t) b, t, ((t) - (b)) >> 10
-#define MLM(b, t) b, t, ((t) - (b)) >> 20
-#define MLG(b, t) b, t, ((t) - (b)) >> 30
-#define MLK_ROUNDUP(b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)
-
- pr_notice("Virtual kernel memory layout:\n");
-#ifdef CONFIG_KASAN
- pr_notice(" kasan : 0x%16lx - 0x%16lx (%6ld GB)\n",
- MLG(KASAN_SHADOW_START, KASAN_SHADOW_END));
-#endif
- pr_notice(" modules : 0x%16lx - 0x%16lx (%6ld MB)\n",
- MLM(MODULES_VADDR, MODULES_END));
- pr_notice(" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n",
- MLG(VMALLOC_START, VMALLOC_END));
- pr_notice(" .text : 0x%p" " - 0x%p" " (%6ld KB)\n",
- MLK_ROUNDUP(_text, _etext));
- pr_notice(" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n",
- MLK_ROUNDUP(__start_rodata, __init_begin));
- pr_notice(" .init : 0x%p" " - 0x%p" " (%6ld KB)\n",
- MLK_ROUNDUP(__init_begin, __init_end));
- pr_notice(" .data : 0x%p" " - 0x%p" " (%6ld KB)\n",
- MLK_ROUNDUP(_sdata, _edata));
- pr_notice(" .bss : 0x%p" " - 0x%p" " (%6ld KB)\n",
- MLK_ROUNDUP(__bss_start, __bss_stop));
- pr_notice(" fixed : 0x%16lx - 0x%16lx (%6ld KB)\n",
- MLK(FIXADDR_START, FIXADDR_TOP));
- pr_notice(" PCI I/O : 0x%16lx - 0x%16lx (%6ld MB)\n",
- MLM(PCI_IO_START, PCI_IO_END));
-#ifdef CONFIG_SPARSEMEM_VMEMMAP
- pr_notice(" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n",
- MLG(VMEMMAP_START, VMEMMAP_START + VMEMMAP_SIZE));
- pr_notice(" 0x%16lx - 0x%16lx (%6ld MB actual)\n",
- MLM((unsigned long)phys_to_page(memblock_start_of_DRAM()),
- (unsigned long)virt_to_page(high_memory)));
-#endif
- pr_notice(" memory : 0x%16lx - 0x%16lx (%6ld MB)\n",
- MLM(__phys_to_virt(memblock_start_of_DRAM()),
- (unsigned long)high_memory));
-
-#undef MLK
-#undef MLM
-#undef MLK_ROUNDUP
-
/*
* Check boundaries twice: Some fundamental inconsistencies can be
* detected at build time already.
--
2.17.1
@@ -0,0 +1,14 @@
obj-m := layout.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
make -C $(KERNELDIR) M=$(PWD) modules
clean:
make -C $(KERNELDIR) M=$(PWD) clean
@@ -0,0 +1,99 @@
/*****************************************************************
文件名:mem.c
输入参数:
pid 接收待查询进程的PID
va 接收待查询的虚拟地址
*****************************************************************/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <linux/printk.h>
#include <linux/memblock.h>
#include <linux/kallsyms.h>
MODULE_LICENSE("GPL");
typedef unsigned long (*PFUNC)(void);
#if 0
unsigned long SYMS_FUN(char *name)
{
PFUNC func = (PFUNC)kallsyms_lookup_name(name);
//printk("0x%16lx\n", (unsigned long)func);
return (*func)();
}
#endif
void show_layout(void)
{
#define SYMS_VAL(name) ((unsigned long)kallsyms_lookup_name(name))
#define SYMS_FUN(name) ((*((PFUNC)kallsyms_lookup_name(name)))())
#define MLK(b, t) b, t, ((t) - (b)) >> 10
#define MLM(b, t) b, t, ((t) - (b)) >> 20
#define MLG(b, t) b, t, ((t) - (b)) >> 30
#define MLK_ROUNDUP(b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)
pr_notice("Virtual kernel memory layout:\n");
pr_notice(" memory : 0x%16lx - 0x%16lx (%6ld MB)\n",
MLM((unsigned long)phys_to_virt(SYMS_FUN("memblock_start_of_DRAM")),
(unsigned long)high_memory));
#ifdef CONFIG_KASAN
pr_notice(" kasan : 0x%16lx - 0x%16lx (%6ld GB)\n",
MLG(KASAN_SHADOW_START, KASAN_SHADOW_END));
#endif
pr_notice(" modules : 0x%16lx - 0x%16lx (%6ld MB)\n",
MLM(MODULES_VADDR, MODULES_END));
pr_notice(" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n",
MLG(VMALLOC_START, VMALLOC_END));
pr_notice(" kernel : 0x%16lx - 0x%16lx (%6ld KB)\n",
MLK(SYMS_VAL("_text"), SYMS_VAL("_end")));
pr_notice(" .text : 0x%16lx - 0x%16lx (%6ld KB)\n",
MLK_ROUNDUP(SYMS_VAL("_text"), SYMS_VAL("_etext")));
pr_notice(" .rodata : 0x%16lx - 0x%16lx (%6ld KB)\n",
MLK_ROUNDUP(SYMS_VAL("__start_rodata"), SYMS_VAL("__init_begin")));
pr_notice(" .init : 0x%16lx - 0x%16lx (%6ld KB)\n",
MLK_ROUNDUP(SYMS_VAL("__init_begin"), SYMS_VAL("__init_end")));
pr_notice(" .data : 0x%16lx - 0x%16lx (%6ld KB)\n",
MLK_ROUNDUP(SYMS_VAL("_sdata"), SYMS_VAL("_edata")));
pr_notice(" .bss : 0x%16lx - 0x%16lx (%6ld KB)\n",
MLK_ROUNDUP(SYMS_VAL("__bss_start"), SYMS_VAL("__bss_stop")));
pr_notice(" fixed : 0x%16lx - 0x%16lx (%6ld KB)\n",
MLK(FIXADDR_START, FIXADDR_TOP));
pr_notice(" PCI I/O : 0x%16lx - 0x%16lx (%6ld MB)\n",
MLM(PCI_IO_START, PCI_IO_END));
#ifdef CONFIG_SPARSEMEM_VMEMMAP
pr_notice(" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n",
MLG(VMEMMAP_START, VMEMMAP_START + VMEMMAP_SIZE));
pr_notice(" 0x%16lx - 0x%16lx (%6ld MB actual)\n",
MLM((unsigned long)phys_to_page(SYMS_FUN("memblock_start_of_DRAM")),
(unsigned long)virt_to_page(high_memory)));
#endif
pr_notice("PAGE_OFFSET : 0x%16lx\n", PAGE_OFFSET);
pr_notice("KIMAGE_VADDR: 0x%16lx\n", KIMAGE_VADDR);
#undef MLK
#undef MLM
#undef MLK_ROUNDUP
}
static int __init show_layout_init(void)
{
show_layout();
return 0;
}
static void __exit show_layout_exit(void)
{
printk(KERN_INFO"Goodbye!\n");
}
module_init(show_layout_init);
module_exit(show_layout_exit);