diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2012-05-29 18:06:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-29 19:22:20 -0400 |
commit | 91eb0f67c38c7104766faa49c5aaee2b4876511e (patch) | |
tree | 955d743abcee612769aa54699cbf86883c187460 /arch | |
parent | 02602a18c32d76f0e0f50eefa91b2d53c8a3a751 (diff) |
x86: print e820 physical addresses consistently with other parts of kernel
Print physical address info in a style consistent with the %pR style used
elsewhere in the kernel. For example:
-BIOS-provided physical RAM map:
+e820: BIOS-provided physical RAM map:
- BIOS-e820: 0000000000000100 - 000000000009e000 (usable)
+BIOS-e820: [mem 0x0000000000000100-0x000000000009dfff] usable
-Allocating PCI resources starting at 90000000 (gap: 90000000:6ed1c000)
+e820: [mem 0x90000000-0xfed1bfff] available for PCI devices
-reserve RAM buffer: 000000000009e000 - 000000000009ffff
+e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/e820.c | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 62d61e9976eb..41857970517f 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -113,7 +113,9 @@ static void __init __e820_add_region(struct e820map *e820x, u64 start, u64 size, | |||
113 | int x = e820x->nr_map; | 113 | int x = e820x->nr_map; |
114 | 114 | ||
115 | if (x >= ARRAY_SIZE(e820x->map)) { | 115 | if (x >= ARRAY_SIZE(e820x->map)) { |
116 | printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); | 116 | printk(KERN_ERR "e820: too many entries; ignoring [mem %#010llx-%#010llx]\n", |
117 | (unsigned long long) start, | ||
118 | (unsigned long long) (start + size - 1)); | ||
117 | return; | 119 | return; |
118 | } | 120 | } |
119 | 121 | ||
@@ -133,19 +135,19 @@ static void __init e820_print_type(u32 type) | |||
133 | switch (type) { | 135 | switch (type) { |
134 | case E820_RAM: | 136 | case E820_RAM: |
135 | case E820_RESERVED_KERN: | 137 | case E820_RESERVED_KERN: |
136 | printk(KERN_CONT "(usable)"); | 138 | printk(KERN_CONT "usable"); |
137 | break; | 139 | break; |
138 | case E820_RESERVED: | 140 | case E820_RESERVED: |
139 | printk(KERN_CONT "(reserved)"); | 141 | printk(KERN_CONT "reserved"); |
140 | break; | 142 | break; |
141 | case E820_ACPI: | 143 | case E820_ACPI: |
142 | printk(KERN_CONT "(ACPI data)"); | 144 | printk(KERN_CONT "ACPI data"); |
143 | break; | 145 | break; |
144 | case E820_NVS: | 146 | case E820_NVS: |
145 | printk(KERN_CONT "(ACPI NVS)"); | 147 | printk(KERN_CONT "ACPI NVS"); |
146 | break; | 148 | break; |
147 | case E820_UNUSABLE: | 149 | case E820_UNUSABLE: |
148 | printk(KERN_CONT "(unusable)"); | 150 | printk(KERN_CONT "unusable"); |
149 | break; | 151 | break; |
150 | default: | 152 | default: |
151 | printk(KERN_CONT "type %u", type); | 153 | printk(KERN_CONT "type %u", type); |
@@ -158,10 +160,10 @@ void __init e820_print_map(char *who) | |||
158 | int i; | 160 | int i; |
159 | 161 | ||
160 | for (i = 0; i < e820.nr_map; i++) { | 162 | for (i = 0; i < e820.nr_map; i++) { |
161 | printk(KERN_INFO " %s: %016Lx - %016Lx ", who, | 163 | printk(KERN_INFO "%s: [mem %#018Lx-%#018Lx] ", who, |
162 | (unsigned long long) e820.map[i].addr, | 164 | (unsigned long long) e820.map[i].addr, |
163 | (unsigned long long) | 165 | (unsigned long long) |
164 | (e820.map[i].addr + e820.map[i].size)); | 166 | (e820.map[i].addr + e820.map[i].size - 1)); |
165 | e820_print_type(e820.map[i].type); | 167 | e820_print_type(e820.map[i].type); |
166 | printk(KERN_CONT "\n"); | 168 | printk(KERN_CONT "\n"); |
167 | } | 169 | } |
@@ -428,9 +430,8 @@ static u64 __init __e820_update_range(struct e820map *e820x, u64 start, | |||
428 | size = ULLONG_MAX - start; | 430 | size = ULLONG_MAX - start; |
429 | 431 | ||
430 | end = start + size; | 432 | end = start + size; |
431 | printk(KERN_DEBUG "e820 update range: %016Lx - %016Lx ", | 433 | printk(KERN_DEBUG "e820: update [mem %#010Lx-%#010Lx] ", |
432 | (unsigned long long) start, | 434 | (unsigned long long) start, (unsigned long long) (end - 1)); |
433 | (unsigned long long) end); | ||
434 | e820_print_type(old_type); | 435 | e820_print_type(old_type); |
435 | printk(KERN_CONT " ==> "); | 436 | printk(KERN_CONT " ==> "); |
436 | e820_print_type(new_type); | 437 | e820_print_type(new_type); |
@@ -509,9 +510,8 @@ u64 __init e820_remove_range(u64 start, u64 size, unsigned old_type, | |||
509 | size = ULLONG_MAX - start; | 510 | size = ULLONG_MAX - start; |
510 | 511 | ||
511 | end = start + size; | 512 | end = start + size; |
512 | printk(KERN_DEBUG "e820 remove range: %016Lx - %016Lx ", | 513 | printk(KERN_DEBUG "e820: remove [mem %#010Lx-%#010Lx] ", |
513 | (unsigned long long) start, | 514 | (unsigned long long) start, (unsigned long long) (end - 1)); |
514 | (unsigned long long) end); | ||
515 | if (checktype) | 515 | if (checktype) |
516 | e820_print_type(old_type); | 516 | e820_print_type(old_type); |
517 | printk(KERN_CONT "\n"); | 517 | printk(KERN_CONT "\n"); |
@@ -567,7 +567,7 @@ void __init update_e820(void) | |||
567 | if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &nr_map)) | 567 | if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &nr_map)) |
568 | return; | 568 | return; |
569 | e820.nr_map = nr_map; | 569 | e820.nr_map = nr_map; |
570 | printk(KERN_INFO "modified physical RAM map:\n"); | 570 | printk(KERN_INFO "e820: modified physical RAM map:\n"); |
571 | e820_print_map("modified"); | 571 | e820_print_map("modified"); |
572 | } | 572 | } |
573 | static void __init update_e820_saved(void) | 573 | static void __init update_e820_saved(void) |
@@ -637,8 +637,8 @@ __init void e820_setup_gap(void) | |||
637 | if (!found) { | 637 | if (!found) { |
638 | gapstart = (max_pfn << PAGE_SHIFT) + 1024*1024; | 638 | gapstart = (max_pfn << PAGE_SHIFT) + 1024*1024; |
639 | printk(KERN_ERR | 639 | printk(KERN_ERR |
640 | "PCI: Warning: Cannot find a gap in the 32bit address range\n" | 640 | "e820: cannot find a gap in the 32bit address range\n" |
641 | "PCI: Unassigned devices with 32bit resource registers may break!\n"); | 641 | "e820: PCI devices with unassigned 32bit BARs may break!\n"); |
642 | } | 642 | } |
643 | #endif | 643 | #endif |
644 | 644 | ||
@@ -648,8 +648,8 @@ __init void e820_setup_gap(void) | |||
648 | pci_mem_start = gapstart; | 648 | pci_mem_start = gapstart; |
649 | 649 | ||
650 | printk(KERN_INFO | 650 | printk(KERN_INFO |
651 | "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n", | 651 | "e820: [mem %#010lx-%#010lx] available for PCI devices\n", |
652 | pci_mem_start, gapstart, gapsize); | 652 | gapstart, gapstart + gapsize - 1); |
653 | } | 653 | } |
654 | 654 | ||
655 | /** | 655 | /** |
@@ -667,7 +667,7 @@ void __init parse_e820_ext(struct setup_data *sdata) | |||
667 | extmap = (struct e820entry *)(sdata->data); | 667 | extmap = (struct e820entry *)(sdata->data); |
668 | __append_e820_map(extmap, entries); | 668 | __append_e820_map(extmap, entries); |
669 | sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); | 669 | sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); |
670 | printk(KERN_INFO "extended physical RAM map:\n"); | 670 | printk(KERN_INFO "e820: extended physical RAM map:\n"); |
671 | e820_print_map("extended"); | 671 | e820_print_map("extended"); |
672 | } | 672 | } |
673 | 673 | ||
@@ -734,7 +734,7 @@ u64 __init early_reserve_e820(u64 size, u64 align) | |||
734 | addr = __memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ACCESSIBLE); | 734 | addr = __memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ACCESSIBLE); |
735 | if (addr) { | 735 | if (addr) { |
736 | e820_update_range_saved(addr, size, E820_RAM, E820_RESERVED); | 736 | e820_update_range_saved(addr, size, E820_RAM, E820_RESERVED); |
737 | printk(KERN_INFO "update e820_saved for early_reserve_e820\n"); | 737 | printk(KERN_INFO "e820: update e820_saved for early_reserve_e820\n"); |
738 | update_e820_saved(); | 738 | update_e820_saved(); |
739 | } | 739 | } |
740 | 740 | ||
@@ -784,7 +784,7 @@ static unsigned long __init e820_end_pfn(unsigned long limit_pfn, unsigned type) | |||
784 | if (last_pfn > max_arch_pfn) | 784 | if (last_pfn > max_arch_pfn) |
785 | last_pfn = max_arch_pfn; | 785 | last_pfn = max_arch_pfn; |
786 | 786 | ||
787 | printk(KERN_INFO "last_pfn = %#lx max_arch_pfn = %#lx\n", | 787 | printk(KERN_INFO "e820: last_pfn = %#lx max_arch_pfn = %#lx\n", |
788 | last_pfn, max_arch_pfn); | 788 | last_pfn, max_arch_pfn); |
789 | return last_pfn; | 789 | return last_pfn; |
790 | } | 790 | } |
@@ -888,7 +888,7 @@ void __init finish_e820_parsing(void) | |||
888 | early_panic("Invalid user supplied memory map"); | 888 | early_panic("Invalid user supplied memory map"); |
889 | e820.nr_map = nr; | 889 | e820.nr_map = nr; |
890 | 890 | ||
891 | printk(KERN_INFO "user-defined physical RAM map:\n"); | 891 | printk(KERN_INFO "e820: user-defined physical RAM map:\n"); |
892 | e820_print_map("user"); | 892 | e820_print_map("user"); |
893 | } | 893 | } |
894 | } | 894 | } |
@@ -996,8 +996,9 @@ void __init e820_reserve_resources_late(void) | |||
996 | end = MAX_RESOURCE_SIZE; | 996 | end = MAX_RESOURCE_SIZE; |
997 | if (start >= end) | 997 | if (start >= end) |
998 | continue; | 998 | continue; |
999 | printk(KERN_DEBUG "reserve RAM buffer: %016llx - %016llx ", | 999 | printk(KERN_DEBUG |
1000 | start, end); | 1000 | "e820: reserve RAM buffer [mem %#010llx-%#010llx]\n", |
1001 | start, end); | ||
1001 | reserve_region_with_split(&iomem_resource, start, end, | 1002 | reserve_region_with_split(&iomem_resource, start, end, |
1002 | "RAM buffer"); | 1003 | "RAM buffer"); |
1003 | } | 1004 | } |
@@ -1047,7 +1048,7 @@ void __init setup_memory_map(void) | |||
1047 | 1048 | ||
1048 | who = x86_init.resources.memory_setup(); | 1049 | who = x86_init.resources.memory_setup(); |
1049 | memcpy(&e820_saved, &e820, sizeof(struct e820map)); | 1050 | memcpy(&e820_saved, &e820, sizeof(struct e820map)); |
1050 | printk(KERN_INFO "BIOS-provided physical RAM map:\n"); | 1051 | printk(KERN_INFO "e820: BIOS-provided physical RAM map:\n"); |
1051 | e820_print_map(who); | 1052 | e820_print_map(who); |
1052 | } | 1053 | } |
1053 | 1054 | ||