diff options
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/kernel/e820.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/arch/x86_64/kernel/e820.c b/arch/x86_64/kernel/e820.c index e06c2714ecf3..5d1275a93658 100644 --- a/arch/x86_64/kernel/e820.c +++ b/arch/x86_64/kernel/e820.c | |||
@@ -536,10 +536,14 @@ static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) | |||
536 | return 0; | 536 | return 0; |
537 | } | 537 | } |
538 | 538 | ||
539 | void __init setup_memory_region(void) | 539 | void early_panic(char *msg) |
540 | { | 540 | { |
541 | char *who = "BIOS-e820"; | 541 | early_printk(msg); |
542 | panic(msg); | ||
543 | } | ||
542 | 544 | ||
545 | void __init setup_memory_region(void) | ||
546 | { | ||
543 | /* | 547 | /* |
544 | * Try to copy the BIOS-supplied E820-map. | 548 | * Try to copy the BIOS-supplied E820-map. |
545 | * | 549 | * |
@@ -547,24 +551,10 @@ void __init setup_memory_region(void) | |||
547 | * the next section from 1mb->appropriate_mem_k | 551 | * the next section from 1mb->appropriate_mem_k |
548 | */ | 552 | */ |
549 | sanitize_e820_map(E820_MAP, &E820_MAP_NR); | 553 | sanitize_e820_map(E820_MAP, &E820_MAP_NR); |
550 | if (copy_e820_map(E820_MAP, E820_MAP_NR) < 0) { | 554 | if (copy_e820_map(E820_MAP, E820_MAP_NR) < 0) |
551 | unsigned long mem_size; | 555 | early_panic("Cannot find a valid memory map"); |
552 | |||
553 | /* compare results from other methods and take the greater */ | ||
554 | if (ALT_MEM_K < EXT_MEM_K) { | ||
555 | mem_size = EXT_MEM_K; | ||
556 | who = "BIOS-88"; | ||
557 | } else { | ||
558 | mem_size = ALT_MEM_K; | ||
559 | who = "BIOS-e801"; | ||
560 | } | ||
561 | |||
562 | e820.nr_map = 0; | ||
563 | add_memory_region(0, LOWMEMSIZE(), E820_RAM); | ||
564 | add_memory_region(HIGH_MEMORY, mem_size << 10, E820_RAM); | ||
565 | } | ||
566 | printk(KERN_INFO "BIOS-provided physical RAM map:\n"); | 556 | printk(KERN_INFO "BIOS-provided physical RAM map:\n"); |
567 | e820_print_map(who); | 557 | e820_print_map("BIOS-e820"); |
568 | } | 558 | } |
569 | 559 | ||
570 | static int __init parse_memopt(char *p) | 560 | static int __init parse_memopt(char *p) |