diff mbox

arm64: mm: Enhance Virtual kernel memory layout

Message ID 1460533772-13314-1-git-send-email-wangkefeng.wang@huawei.com
State New
Headers show

Commit Message

Kefeng Wang April 13, 2016, 7:49 a.m. UTC
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.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>

---
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(-)

-- 
2.6.0.GIT


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Comments

Kefeng Wang April 14, 2016, 6:57 a.m. UTC | #1
On 2016/4/13 17:26, James Morse wrote:
> Hi,

> 

> On 13/04/16 08:49, Kefeng Wang wrote:

>> 1) Show kernel excetion vector region and bss segment information.

> 

> Nit: exception

> 

> 

>> 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.

> 

> 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.

> 

> 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.

> 

> It is probably better to put the splitting of pr_cont() into one per line in a

> separate patch to adding new rows.


OK.

> 

> 

>> ---

>> 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(-)

>>

>> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c

>> index ea989d8..c6bcaa7 100644

>> --- a/arch/arm64/mm/init.c

>> +++ b/arch/arm64/mm/init.c

>> @@ -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));

> 

> 0x780? Shouldn't this be 0x800, or better SZ_2K?


Oh, my mistake, it should be SZ_2K.

> 

> 

>>  #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));

>>

> 

> 

> Thanks,

> 

> James

> 

> 

> .

> 



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Will Deacon April 15, 2016, 5:20 p.m. UTC | #2
Hi Kefeng,

On Wed, Apr 13, 2016 at 03:49:32PM +0800, Kefeng Wang wrote:
> 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.

> 

> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>

> ---


Can you post a new version of this patch addressing James's feedback,
please?

Thanks,

Will

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Kefeng Wang April 18, 2016, 2:05 a.m. UTC | #3
On 2016/4/16 1:20, Will Deacon wrote:
> Hi Kefeng,

> 

> On Wed, Apr 13, 2016 at 03:49:32PM +0800, Kefeng Wang wrote:

>> 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.

>>

>> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>

>> ---

> 

> 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

> 

> Thanks,

> 

> Will

> 

> .

> 



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Kefeng Wang April 18, 2016, 3:09 a.m. UTC | #4
This 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(-)

-- 
2.6.0.GIT


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Kefeng Wang May 12, 2016, 12:16 p.m. UTC | #5
This 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(-)

-- 
2.6.0.GIT


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Will Deacon May 12, 2016, 1:36 p.m. UTC | #6
On Thu, May 12, 2016 at 08:16:25PM +0800, Kefeng Wang wrote:
> 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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Kefeng Wang May 13, 2016, 1:21 a.m. UTC | #7
On 2016/5/12 21:36, Will Deacon wrote:
> On Thu, May 12, 2016 at 08:16:25PM +0800, Kefeng Wang wrote:

>> 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


> 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

> 

> .

> 



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff mbox

Patch

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index ea989d8..c6bcaa7 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -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));