arm64: mm: Enhance Virtual kernel memory layout
PATCH 1/1 arm64: mm: Enhance Virtual kernel memory layout
1) Show kernel excetion vector region and bss segment information.
2) Only show modules and PCI I/O with corresponding config enabled.
3) Each line with single pr_cont, or lead to anomalous print in dmesg.
---
With this patch,
[ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffffff8008084800 - 0xffffff8008084f80 ( 1 KB) [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB) [ 0.000000] .rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB) [ 0.000000] .init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB) [ 0.000000] .data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB) [ 0.000000] .bss : 0xffffff8008ba2400 - 0xffffff8008bdf738 ( 245 KB) [ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum) [ 0.000000] 0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual) [ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)
Before,
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB)
[ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB)
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB)
.rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB)
.init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB)
.data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB)
[ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum)
0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual)
[ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB)
[ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB)
[ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)arch/arm64/mm/init.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-)
arch/arm64/mm/init.c +21 -11
@@ -345,6 +345,9 @@ static void __init free_unused_memmap(void)*/ void __init mem_init (void ) { +/* kernel exception vectors, 16 entries and each one with 128bytes */ +extern char vectors[]; +swiotlb_init (1 );set_max_mapnr (pfn_to_page (max_pfn) - mem_map);
@@ -363,34 +366,41 @@ void __init mem_init(void)#define MLK_ROUNDUP (b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)pr_notice ("Virtual kernel memory layout:\n" ); +pr_cont (" vector : 0x%p - 0x%p (%6ld KB)\n" , +MLK (vectors, vectors +0x780 ));#ifdef CONFIG_KASAN pr_cont (" kasan : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (KASAN_SHADOW_START ,KASAN_SHADOW_END ));#endif +#ifdef CONFIG_MODULES pr_cont (" modules : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (MODULES_VADDR ,MODULES_END )); +#endif pr_cont (" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (VMALLOC_START ,VMALLOC_END )); -pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" , -MLK_ROUNDUP (_text, __start_rodata), -MLK_ROUNDUP (__start_rodata, _etext), -MLK_ROUNDUP (__init_begin, __init_end), +pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (_text, __start_rodata)); +pr_cont (" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__start_rodata, _etext)); +pr_cont (" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__init_begin, __init_end)); +pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata)); +pr_cont (" .bss : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__bss_start, __bss_stop));#ifdef CONFIG_SPARSEMEM_VMEMMAP -pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" -" 0x%16lx - 0x%16lx (%6ld MB actual)\n" , -MLG (VMEMMAP_START , -VMEMMAP_START +VMEMMAP_SIZE ), +pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" , +MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE )); +pr_cont (" 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_cont (" fixed : 0x%16lx - 0x%16lx (%6ld KB)\n" ,MLK (FIXADDR_START ,FIXADDR_TOP )); +#ifdef CONFIG_PCI pr_cont (" PCI I/O : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (PCI_IO_START ,PCI_IO_END )); +#endif pr_cont (" memory : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (__phys_to_virt (memblock_start_of_DRAM ()), (unsigned long )high_memory));
Signature · 1 line
2.6.0.GIT
PATCH 1/1 arm64: mm: Enhance Virtual kernel memory layout
Hi,
Quoted 1 line · Kefeng Wang
1) Show kernel excetion vector region and bss segment information.
Nit: exception
Quoted 2 lines
2) Only show modules and PCI I/O with corresponding config enabled.
3) Each line with singlepr_cont, or lead to anomalous print in dmesg.
This commit message is a little confusing, it doesn't mention that this is to do with the dump of the kernel memory layout during boot. I presume the motivation is the missing time stamps when built with CONFIG_PRINTK_TIME.
Why add an entry for the vectors? They live in the text section, so this memory is already covered. Adding it like this means the list is out of order.
It is probably better to put the splitting of pr_cont() into one per line in a separate patch to adding new rows.
Quoted 51 lines
---
With this patch,[ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffffff8008084800 - 0xffffff8008084f80 ( 1 KB) [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB) [ 0.000000] .rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB) [ 0.000000] .init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB) [ 0.000000] .data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB) [ 0.000000] .bss : 0xffffff8008ba2400 - 0xffffff8008bdf738 ( 245 KB) [ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum) [ 0.000000] 0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual) [ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)Before,
[ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB) .rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB) .init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB) .data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB) [ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum) 0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual) [ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)arch/arm64/mm/init.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-)arch/arm64/mm/init.c +3
-0@@ -345,6 +345,9 @@ static void __init free_unused_memmap(void)*/ void __init mem_init (void ) { +/* kernel exception vectors, 16 entries and each one with 128bytes */ +extern char vectors[]; +swiotlb_init (1 );set_max_mapnr (pfn_to_page (max_pfn) - mem_map);
arch/arm64/mm/init.c void __init mem_init(void) · line 370
Quoted 5 lines
arch/arm64/mm/init.c +2
-0@@ -363,34 +366,41 @@ void __init mem_init(void)#define MLK_ROUNDUP (b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)pr_notice ("Virtual kernel memory layout:\n" ); +pr_cont (" vector : 0x%p - 0x%p (%6ld KB)\n" , +MLK (vectors, vectors +0x780 ));
0x780? Shouldn't this be 0x800, or better SZ_2K?
Quoted 38 lines
arch/arm64/mm/init.c +14
-11#ifdef CONFIG_KASAN pr_cont (" kasan : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (KASAN_SHADOW_START ,KASAN_SHADOW_END ));#endif +#ifdef CONFIG_MODULES pr_cont (" modules : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (MODULES_VADDR ,MODULES_END )); +#endif pr_cont (" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (VMALLOC_START ,VMALLOC_END )); -pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" , -MLK_ROUNDUP (_text, __start_rodata), -MLK_ROUNDUP (__start_rodata, _etext), -MLK_ROUNDUP (__init_begin, __init_end), +pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (_text, __start_rodata)); +pr_cont (" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__start_rodata, _etext)); +pr_cont (" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__init_begin, __init_end)); +pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata)); +pr_cont (" .bss : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__bss_start, __bss_stop));#ifdef CONFIG_SPARSEMEM_VMEMMAP -pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" -" 0x%16lx - 0x%16lx (%6ld MB actual)\n" , -MLG (VMEMMAP_START , -VMEMMAP_START +VMEMMAP_SIZE ), +pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" , +MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE )); +pr_cont (" 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)));
arch/arm64/mm/init.c void __init mem_init(void) · line 406
Quoted 10 lines
arch/arm64/mm/init.c +2
-0#endif pr_cont (" fixed : 0x%16lx - 0x%16lx (%6ld KB)\n" ,MLK (FIXADDR_START ,FIXADDR_TOP )); +#ifdef CONFIG_PCI pr_cont (" PCI I/O : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (PCI_IO_START ,PCI_IO_END )); +#endif pr_cont (" memory : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (__phys_to_virt (memblock_start_of_DRAM ()), (unsigned long )high_memory));
Thanks,
James
PATCH 1/1 arm64: mm: Enhance Virtual kernel memory layout
Quoted 8 lines · James Morse
Hi,
Quoted 1 line · Kefeng Wang
1) Show kernel excetion vector region and bss segment information.
Nit: exception
Quoted 6 lines
Quoted 2 lines
2) Only show modules and PCI I/O with corresponding config enabled.
3) Each line with singlepr_cont, or lead to anomalous print in dmesg.This commit message is a little confusing, it doesn't mention that this is to do with the dump of the kernel memory layout during boot. I presume the motivation is the missing time stamps when built with
CONFIG_PRINTK_TIME.
Right, the dmesg is not aligned when PRINTK_TIME enabled, due to the missing time stamps.
Quoted 3 lines
Why add an entry for the vectors? They live in the text section, so this memory is already covered. Adding it like this means the list is out of order.
Ok, the arm64 vectors don't have a fixed address, and it is in text section, seem like it is not needed, not like in arm.
Quoted 3 lines
It is probably better to put the splitting of
pr_cont()into one per line in a separate patch to adding new rows.
OK.
Quoted 55 lines
Quoted 55 lines
---
With this patch,[ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffffff8008084800 - 0xffffff8008084f80 ( 1 KB) [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB) [ 0.000000] .rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB) [ 0.000000] .init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB) [ 0.000000] .data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB) [ 0.000000] .bss : 0xffffff8008ba2400 - 0xffffff8008bdf738 ( 245 KB) [ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum) [ 0.000000] 0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual) [ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)Before,
[ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB) .rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB) .init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB) .data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB) [ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum) 0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual) [ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)arch/arm64/mm/init.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-)arch/arm64/mm/init.c +3
-0@@ -345,6 +345,9 @@ static void __init free_unused_memmap(void)*/ void __init mem_init (void ) { +/* kernel exception vectors, 16 entries and each one with 128bytes */ +extern char vectors[]; +swiotlb_init (1 );set_max_mapnr (pfn_to_page (max_pfn) - mem_map);@@ -363,34 +366,41 @@ void __init mem_init(void)#define MLK_ROUNDUP (b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)
Quoted 5 lines
arch/arm64/mm/init.c void __init mem_init(void) · line 370
Quoted 3 lines
arch/arm64/mm/init.c +2
-0pr_notice ("Virtual kernel memory layout:\n" ); +pr_cont (" vector : 0x%p - 0x%p (%6ld KB)\n" , +MLK (vectors, vectors +0x780 ));
0x780? Shouldn't this be0x800, or betterSZ_2K?
Oh, my mistake, it should be SZ_2K.
Quoted 59 lines
Quoted 40 lines
arch/arm64/mm/init.c +14
-11#ifdef CONFIG_KASAN pr_cont (" kasan : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (KASAN_SHADOW_START ,KASAN_SHADOW_END ));#endif +#ifdef CONFIG_MODULES pr_cont (" modules : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (MODULES_VADDR ,MODULES_END )); +#endif pr_cont (" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (VMALLOC_START ,VMALLOC_END )); -pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" , -MLK_ROUNDUP (_text, __start_rodata), -MLK_ROUNDUP (__start_rodata, _etext), -MLK_ROUNDUP (__init_begin, __init_end), +pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (_text, __start_rodata)); +pr_cont (" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__start_rodata, _etext)); +pr_cont (" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__init_begin, __init_end)); +pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata)); +pr_cont (" .bss : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__bss_start, __bss_stop));#ifdef CONFIG_SPARSEMEM_VMEMMAP -pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" -" 0x%16lx - 0x%16lx (%6ld MB actual)\n" , -MLG (VMEMMAP_START , -VMEMMAP_START +VMEMMAP_SIZE ), +pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" , +MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE )); +pr_cont (" 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)));arch/arm64/mm/init.c void __init mem_init(void) · line 406
Quoted 10 lines
arch/arm64/mm/init.c +2
-0#endif pr_cont (" fixed : 0x%16lx - 0x%16lx (%6ld KB)\n" ,MLK (FIXADDR_START ,FIXADDR_TOP )); +#ifdef CONFIG_PCI pr_cont (" PCI I/O : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (PCI_IO_START ,PCI_IO_END )); +#endif pr_cont (" memory : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (__phys_to_virt (memblock_start_of_DRAM ()), (unsigned long )high_memory));Thanks,
James
.
PATCH 1/1 arm64: mm: Enhance Virtual kernel memory layout
In reply to Kefeng WangHi Kefeng,
Quoted 6 lines · Kefeng Wang
1) Show kernel excetion vector region and bss segment information.
2) Only show modules and PCI I/O with corresponding config enabled.
3) Each line with singlepr_cont, or lead to anomalous print in dmesg.Signed-off-by Kefeng Wang <[email protected]>---
Can you post a new version of this patch addressing James's feedback, please?
Thanks,
Will
PATCH 1/1 arm64: mm: Enhance Virtual kernel memory layout
Quoted 7 lines · Will Deacon
Hi Kefeng,
Quoted 4 lines · Kefeng Wang
1) Show kernel excetion vector region and bss segment information.
2) Only show modules and PCI I/O with corresponding config enabled.
3) Each line with singlepr_cont, or lead to anomalous print in dmesg.
Quoted 5 lines
Quoted 2 lines
Signed-off-by Kefeng Wang <[email protected]>---
Can you post a new version of this patch addressing James's feedback, please?
Sorry for the later response, will do it ASAP.
Brs,
Kefeng
Quoted 7 lines
Thanks,
Will
.
v2 cover arm64: mm: Enhance Virtual kernel memory layout
In reply to Kefeng WangThis is a micro enhance for Virtual kernel memory layout. Show bss info, add restriction for modules and PCI I/O printing, and make each line with single pr_cont().
With this patchset,
[ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008755000 ( 6996 KB) [ 0.000000] .rodata : 0xffffff8008755000 - 0xffffff8008a3d000 ( 2976 KB) [ 0.000000] .init : 0xffffff8008a3d000 - 0xffffff8008b09000 ( 816 KB) [ 0.000000] .data : 0xffffff8008b09000 - 0xffffff8008ba6800 ( 630 KB) [ 0.000000] .bss : 0xffffff8008ba6800 - 0xffffff8008be3738 ( 244 KB) [ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum) [ 0.000000] 0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual) [ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)
Before,
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB)
[ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB)
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB)
.rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB)
.init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB)
.data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB)
[ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum)
0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual)
[ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB)
[ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB)
[ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)Changes since v1:
- Drop vector info and spilt the patch, suggested by James Morse.
Kefeng Wang (3):
arm64: mm: make pr_cont() per line in Virtual kernel memory layout
arm64: mm: Show bss segment in kernel memory layout
arm64: mm: Restrictive printing for modules and PCI I/O in memory
layout
arch/arm64/mm/init.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-)
Signature · 1 line
2.6.0.GIT
PATCH v2 1/3 arm64: mm: make pr_cont() per line in Virtual kernel memory layout
Each line with single pr_cont() in Virtual kernel memory layout, or the dump of the kernel memory layout in dmesg is not aligned when PRINTK_TIME enabled, due to the missing time stamps.
--- arch/arm64/mm/init.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-)
arch/arm64/mm/init.c +10 -11
@@ -371,19 +371,18 @@ void __init mem_init(void) MLM(MODULES_VADDR, MODULES_END));pr_cont (" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (VMALLOC_START ,VMALLOC_END )); -pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" , -MLK_ROUNDUP (_text, __start_rodata), -MLK_ROUNDUP (__start_rodata, _etext), -MLK_ROUNDUP (__init_begin, __init_end), +pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (_text, __start_rodata)); +pr_cont (" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__start_rodata, _etext)); +pr_cont (" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__init_begin, __init_end)); +pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata));#ifdef CONFIG_SPARSEMEM_VMEMMAP -pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" -" 0x%16lx - 0x%16lx (%6ld MB actual)\n" , -MLG (VMEMMAP_START , -VMEMMAP_START +VMEMMAP_SIZE ), +pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" , +MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE )); +pr_cont (" 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
Signature · 1 line
2.6.0.GIT
PATCH v2 1/3 arm64: mm: make pr_cont() per line in Virtual kernel memory layout
Quoted 3 lines · Kefeng Wang
Each line with single
pr_cont()in Virtual kernel memory layout, or the dump of the kernel memory layout in dmesg is not aligned whenPRINTK_TIMEenabled, due to the missing time stamps.
Looks good to me, but I can't reproduce the miss-aligned output on v4.6-rc4, I get:
Quoted 4 lines
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008887000 ( 8220 KB) [ 0.000000] .rodata : 0xffffff8008887000 - 0xffffff8008bdc000 ( 3412 KB) [ 0.000000] .init : 0xffffff8008bdc000 - 0xffffff8008cc3000 ( 924 KB) [ 0.000000] .data : 0xffffff8008cc3000 - 0xffffff8008dd7200 ( 1105 KB)
without this patch, but it evidently happens for you. Do you have any special build options or kernel version? I'd like to understand if there is some kconfig/earlycon option that affects this!
Thanks,
James
PATCH v2 1/3 arm64: mm: make pr_cont() per line in Virtual kernel memory layout
Quoted 6 lines · James Morse
Quoted 3 lines · Kefeng Wang
Each line with single
pr_cont()in Virtual kernel memory layout, or the dump of the kernel memory layout in dmesg is not aligned whenPRINTK_TIMEenabled, due to the missing time stamps.Looks good to me, but I can't reproduce the miss-aligned output on v4.6-rc4, I get:
Quoted 9 lines
Quoted 4 lines
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008887000 ( 8220 KB) [ 0.000000] .rodata : 0xffffff8008887000 - 0xffffff8008bdc000 ( 3412 KB) [ 0.000000] .init : 0xffffff8008bdc000 - 0xffffff8008cc3000 ( 924 KB) [ 0.000000] .data : 0xffffff8008cc3000 - 0xffffff8008dd7200 ( 1105 KB)without this patch, but it evidently happens for you. Do you have any special build options or kernel version? I'd like to understand if there is some kconfig/earlycon option that affects this!
Interestingly, for me it only occurs when running dmesg, and not when observing the output from the console directly.
PATCH v2 1/3 arm64: mm: make pr_cont() per line in Virtual kernel memory layout
Hi Ard,
Quoted 12 lines · Ard Biesheuvel
Quoted 11 lines · James Morse
Quoted 3 lines · Kefeng Wang
Each line with single
pr_cont()in Virtual kernel memory layout, or the dump of the kernel memory layout in dmesg is not aligned whenPRINTK_TIMEenabled, due to the missing time stamps.Looks good to me, but I can't reproduce the miss-aligned output on v4.6-rc4, I get:
Quoted 4 lines
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008887000 ( 8220 KB) [ 0.000000] .rodata : 0xffffff8008887000 - 0xffffff8008bdc000 ( 3412 KB) [ 0.000000] .init : 0xffffff8008bdc000 - 0xffffff8008cc3000 ( 924 KB) [ 0.000000] .data : 0xffffff8008cc3000 - 0xffffff8008dd7200 ( 1105 KB)
Quoted 7 lines
Quoted 4 lines
without this patch, but it evidently happens for you. Do you have any special build options or kernel version? I'd like to understand if there is some kconfig/earlycon option that affects this!
Interestingly, for me it only occurs when running dmesg, and not when observing the output from the console directly.
Hmmm, after some more digging: dmesg on Ubuntu 15.04 miss-aligns this, but Ubuntu 14.04 doesn't....
Regardless, the patch fixes it, (and it looks the same on both ubuntu versions):
Quoted 4 lines
From the comment above '
pr_cont()' ininclude/linux/printk.h:
* LikeKERN_CONT,pr_cont()should only be used when continuing
* a line with no newline ('\n') enclosed. Otherwise it defaults
* back toKERN_DEFAULT.
arm64 is probably confusing dmesg with its use of pr_cont("...\n").
Thanks,
James
15.04: util-linux 2.25.2-4ubuntu3
14.04: util-linux 2.20.1-5.1ubuntu20
PATCH v2 1/3 arm64: mm: make pr_cont() per line in Virtual kernel memory layout
Quoted 20 lines · James Morse
Hi Ard,
Quoted 17 lines · Ard Biesheuvel
Quoted 15 lines · James Morse
Quoted 3 lines · Kefeng Wang
Each line with single
pr_cont()in Virtual kernel memory layout, or the dump of the kernel memory layout in dmesg is not aligned whenPRINTK_TIMEenabled, due to the missing time stamps.Looks good to me, but I can't reproduce the miss-aligned output on v4.6-rc4, I get:
Quoted 4 lines
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008887000 ( 8220 KB) [ 0.000000] .rodata : 0xffffff8008887000 - 0xffffff8008bdc000 ( 3412 KB) [ 0.000000] .init : 0xffffff8008bdc000 - 0xffffff8008cc3000 ( 924 KB) [ 0.000000] .data : 0xffffff8008cc3000 - 0xffffff8008dd7200 ( 1105 KB)without this patch, but it evidently happens for you. Do you have any special build options or kernel version? I'd like to understand if there is some kconfig/earlycon option that affects this!
Quoted 9 lines
Quoted 2 lines
Interestingly, for me it only occurs when running dmesg, and not when observing the output from the console directly.
Hmmm, after some more digging: dmesg on Ubuntu 15.04 miss-aligns this, but Ubuntu 14.04 doesn't....
Regardless, the patch fixes it, (and it looks the same on both ubuntu versions):
Tested-by James Morse <[email protected]>
Thanks :)
Quoted 7 lines
Quoted 5 lines
From the comment above '
pr_cont()' ininclude/linux/printk.h:
* LikeKERN_CONT,pr_cont()should only be used when continuing
* a line with no newline ('\n') enclosed. Otherwise it defaults
* back toKERN_DEFAULT.arm64 is probably confusing dmesg with its use of
pr_cont("...\n").
After check the util-linux, find this commit(b45c3da2e1581 tags/v2.26-rc2~86)
commit b45c3da2e15814ca0c5b2ed2608de34df60af4da
Author: Ingo Br<C3><BC>ckl <[email protected]> Date: Wed Jan 14 19:36:55 2015 +0100
dmesg: Enable proper indent for messages containing line breaks
Messages containing line breaks somehow look broken when additional time, facility or level information is displayed, because they partly appear in time/facility/level column.
Indent them accordingly.
After with this patch, the dmesg shows below,
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB)
[ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB)
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008755000 ( 6996 KB)
.rodata : 0xffffff8008755000 - 0xffffff8008a3d000 ( 2976 KB)
.init : 0xffffff8008a3d000 - 0xffffff8008b09000 ( 816 KB)
.data : 0xffffff8008b09000 - 0xffffff8008ba6800 ( 630 KB)
[ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum)
0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual)
[ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB)
[ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB)
[ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)BRs,
Kefeng
Quoted 12 lines
Thanks,
James
15.04: util-linux 2.25.2-4ubuntu3
14.04: util-linux 2.20.1-5.1ubuntu20.
PATCH v2 2/3 arm64: mm: Show bss segment in kernel memory layout
In reply to Kefeng WangShow the bss segment information as with text and data in Virtual memory kernel layout.
--- arch/arm64/mm/init.c | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/mm/init.c +2 -0
@@ -379,6 +379,8 @@ void __init mem_init(void) MLK_ROUNDUP(__init_begin, __init_end));pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata)); +pr_cont (" .bss : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__bss_start, __bss_stop));#ifdef CONFIG_SPARSEMEM_VMEMMAP pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" ,MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE ));
Signature · 1 line
2.6.0.GIT
PATCH v2 2/3 arm64: mm: Show bss segment in kernel memory layout
Quoted 14 lines · Kefeng Wang
Show the bss segment information as with text and data in Virtual memory kernel layout.
Signed-off-by Kefeng Wang <[email protected]>--- arch/arm64/mm/init.c | 2 ++ 1 file changed, 2 insertions(+)arch/arm64/mm/init.c +0
-0
arch/arm64/mm/init.c void __init mem_init(void) · line 386
Quoted 8 lines
arch/arm64/mm/init.c +2
-0@@ -379,6 +379,8 @@ void __init mem_init(void) MLK_ROUNDUP(__init_begin, __init_end));pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata)); +pr_cont (" .bss : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__bss_start, __bss_stop));#ifdef CONFIG_SPARSEMEM_VMEMMAP pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" ,MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE ));
I think this is useful,
Thanks,
James
PATCH v2 3/3 arm64: mm: Restrictive printing for modules and PCI I/O in memory layout
In reply to Kefeng WangThe modules and PCI I/O informations in Virtual kernel memory layout are inappropriate when corresponding config is not enabled, so don't show them then.
--- arch/arm64/mm/init.c | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/mm/init.c +4 -0
@@ -367,8 +367,10 @@ void __init mem_init(void)pr_cont (" kasan : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (KASAN_SHADOW_START ,KASAN_SHADOW_END ));#endif +#ifdef CONFIG_MODULES pr_cont (" modules : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (MODULES_VADDR ,MODULES_END )); +#endif pr_cont (" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (VMALLOC_START ,VMALLOC_END )); pr_cont(" .text : 0x%p" " - 0x%p" " (%6ld KB)\n",
@@ -390,8 +392,10 @@ void __init mem_init(void)#endif pr_cont (" fixed : 0x%16lx - 0x%16lx (%6ld KB)\n" ,MLK (FIXADDR_START ,FIXADDR_TOP )); +#ifdef CONFIG_PCI pr_cont (" PCI I/O : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (PCI_IO_START ,PCI_IO_END )); +#endif pr_cont (" memory : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (__phys_to_virt (memblock_start_of_DRAM ()), (unsigned long )high_memory));
Signature · 1 line
2.6.0.GIT
PATCH v2 3/3 arm64: mm: Restrictive printing for modules and PCI I/O in memory layout
Quoted 3 lines · Kefeng Wang
The modules and PCI I/O informations in Virtual kernel memory layout are inappropriate when corresponding config is not enabled, so don't show them then.
I'm not sure about this, it looks like these areas are still reserved, so this is still useful debug information. mm/dump.c will still print any mappings in these ranges, its good to be consistent.
Thanks,
James
Quoted 31 lines
--- arch/arm64/mm/init.c | 4 ++++ 1 file changed, 4 insertions(+)arch/arm64/mm/init.c +4
-0@@ -367,8 +367,10 @@ void __init mem_init(void)pr_cont (" kasan : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (KASAN_SHADOW_START ,KASAN_SHADOW_END ));#endif +#ifdef CONFIG_MODULES pr_cont (" modules : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (MODULES_VADDR ,MODULES_END )); +#endif pr_cont (" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (VMALLOC_START ,VMALLOC_END )); pr_cont(" .text : 0x%p" " - 0x%p" " (%6ld KB)\n",@@ -390,8 +392,10 @@ void __init mem_init(void)#endif pr_cont (" fixed : 0x%16lx - 0x%16lx (%6ld KB)\n" ,MLK (FIXADDR_START ,FIXADDR_TOP )); +#ifdef CONFIG_PCI pr_cont (" PCI I/O : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (PCI_IO_START ,PCI_IO_END )); +#endif pr_cont (" memory : 0x%16lx - 0x%16lx (%6ld MB)\n" ,MLM (__phys_to_virt (memblock_start_of_DRAM ()), (unsigned long )high_memory));
PATCH v2 3/3 arm64: mm: Restrictive printing for modules and PCI I/O in memory layout
Quoted 8 lines · James Morse
Quoted 3 lines · Kefeng Wang
The modules and PCI I/O informations in Virtual kernel memory layout are inappropriate when corresponding config is not enabled, so don't show them then.
I'm not sure about this, it looks like these areas are still reserved, so this is still useful debug information.
mm/dump.cwill still print any mappings in these ranges, its good to be consistent.
If the CONFIG is not enabled, I think the areas will not be reserved and not mapped, correct me if I am wrong. so it looks useless, but keeping them is ok for me.
BRs,
Kefeng
Quoted 6 lines
Thanks,
James
v3 cover arm64: mm: Enhance Virtual kernel memory layout
In reply to Kefeng WangThis is a micro enhance for Virtual kernel memory layout. Show bss info, and make each line with single pr_cont().
With this patchset,
[ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008755000 ( 6996 KB) [ 0.000000] .rodata : 0xffffff8008755000 - 0xffffff8008a3d000 ( 2976 KB) [ 0.000000] .init : 0xffffff8008a3d000 - 0xffffff8008b09000 ( 816 KB) [ 0.000000] .data : 0xffffff8008b09000 - 0xffffff8008ba6800 ( 630 KB) [ 0.000000] .bss : 0xffffff8008ba6800 - 0xffffff8008be3738 ( 244 KB) [ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum) [ 0.000000] 0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual) [ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)
Before,
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB)
[ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbdbfff0000 ( 246 GB)
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008753000 ( 6988 KB)
.rodata : 0xffffff8008753000 - 0xffffff8008a3a000 ( 2972 KB)
.init : 0xffffff8008a3a000 - 0xffffff8008b06000 ( 816 KB)
.data : 0xffffff8008b06000 - 0xffffff8008ba2400 ( 625 KB)
[ 0.000000] vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 GB maximum)
0xffffffbdc0000000 - 0xffffffbdc8000000 ( 128 MB actual)
[ 0.000000] fixed : 0xffffffbffe7fd000 - 0xffffffbffec00000 ( 4108 KB)
[ 0.000000] PCI I/O : 0xffffffbffee00000 - 0xffffffbfffe00000 ( 16 MB)
[ 0.000000] memory : 0xffffffc000000000 - 0xffffffc200000000 ( 8192 MB)Changes since v2:
- Add tested/ack by James Morse.
- Remove restrictive printing, keep the same as mm/dump.c.
Changes since v1:
- Drop vector info and spilt the patch, suggested by James Morse.
Kefeng Wang (2):
arm64: mm: make pr_cont() per line in Virtual kernel memory layout
arm64: mm: Show bss segment in kernel memory layout
arch/arm64/mm/init.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)
Signature · 1 line
2.6.0.GIT
PATCH v3 1/2 arm64: mm: make pr_cont() per line in Virtual kernel memory layout
Each line with single pr_cont() in Virtual kernel memory layout, or the dump of the kernel memory layout in dmesg is not aligned when PRINTK_TIME enabled, due to the missing time stamps.
--- arch/arm64/mm/init.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-)
arch/arm64/mm/init.c +10 -11
@@ -371,19 +371,18 @@ void __init mem_init(void) MLM(MODULES_VADDR, MODULES_END));pr_cont (" vmalloc : 0x%16lx - 0x%16lx (%6ld GB)\n" ,MLG (VMALLOC_START ,VMALLOC_END )); -pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" -" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" , -MLK_ROUNDUP (_text, __start_rodata), -MLK_ROUNDUP (__start_rodata, _etext), -MLK_ROUNDUP (__init_begin, __init_end), +pr_cont (" .text : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (_text, __start_rodata)); +pr_cont (" .rodata : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__start_rodata, _etext)); +pr_cont (" .init : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__init_begin, __init_end)); +pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata));#ifdef CONFIG_SPARSEMEM_VMEMMAP -pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" -" 0x%16lx - 0x%16lx (%6ld MB actual)\n" , -MLG (VMEMMAP_START , -VMEMMAP_START +VMEMMAP_SIZE ), +pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" , +MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE )); +pr_cont (" 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
Signature · 1 line
2.6.0.GIT
PATCH v3 2/2 arm64: mm: Show bss segment in kernel memory layout
In reply to Kefeng WangShow the bss segment information as with text and data in Virtual memory kernel layout.
--- arch/arm64/mm/init.c | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/mm/init.c +2 -0
@@ -379,6 +379,8 @@ void __init mem_init(void) MLK_ROUNDUP(__init_begin, __init_end));pr_cont (" .data : 0x%p" " - 0x%p" " (%6ld KB)\n" ,MLK_ROUNDUP (_sdata, _edata)); +pr_cont (" .bss : 0x%p" " - 0x%p" " (%6ld KB)\n" , +MLK_ROUNDUP (__bss_start, __bss_stop));#ifdef CONFIG_SPARSEMEM_VMEMMAP pr_cont (" vmemmap : 0x%16lx - 0x%16lx (%6ld GB maximum)\n" ,MLG (VMEMMAP_START ,VMEMMAP_START +VMEMMAP_SIZE ));
Signature · 1 line
2.6.0.GIT
v3 cover arm64: mm: Enhance Virtual kernel memory layout
In reply to Kefeng WangQuoted 2 lines · Kefeng Wang
This is a micro enhance for Virtual kernel memory layout. Show bss info, and make each line with single
pr_cont().
I already queued[1] the previous version of this after James acked it, so if you want to make further changes, please send incremental patches for review.
Will
[1]
https://git.kernel.org/cgit/linux/kernel/git/arm64/linux.git/commit/?h=for-next/core&id=9974723e31d1fa99e3c0efb2ae6cbbf089c0080c
https://git.kernel.org/cgit/linux/kernel/git/arm64/linux.git/commit/?h=for-next/core&id=d32351c8242b7067b3f3e3a6caf7a387ff43f978
v3 cover arm64: mm: Enhance Virtual kernel memory layout
Quoted 8 lines · Will Deacon
Quoted 2 lines · Kefeng Wang
This is a micro enhance for Virtual kernel memory layout. Show bss info, and make each line with single
pr_cont().I already queued[1] the previous version of this after James acked it, so if you want to make further changes, please send incremental patches for review.
I can't see them before, thanks Will.
BRs,
Kefeng