diff options
-rw-r--r-- | arch/x86_64/kernel/e820.c | 33 |
1 files changed, 1 insertions, 32 deletions
diff --git a/arch/x86_64/kernel/e820.c b/arch/x86_64/kernel/e820.c index 164d0b83dc92..e06c2714ecf3 100644 --- a/arch/x86_64/kernel/e820.c +++ b/arch/x86_64/kernel/e820.c | |||
@@ -71,12 +71,7 @@ static inline int bad_addr(unsigned long *addrp, unsigned long size) | |||
71 | return 1; | 71 | return 1; |
72 | } | 72 | } |
73 | #endif | 73 | #endif |
74 | /* kernel code + 640k memory hole (later should not be needed, but | 74 | /* kernel code */ |
75 | be paranoid for now) */ | ||
76 | if (last >= 640*1024 && addr < 1024*1024) { | ||
77 | *addrp = 1024*1024; | ||
78 | return 1; | ||
79 | } | ||
80 | if (last >= __pa_symbol(&_text) && last < __pa_symbol(&_end)) { | 75 | if (last >= __pa_symbol(&_text) && last < __pa_symbol(&_end)) { |
81 | *addrp = __pa_symbol(&_end); | 76 | *addrp = __pa_symbol(&_end); |
82 | return 1; | 77 | return 1; |
@@ -519,13 +514,6 @@ static int __init sanitize_e820_map(struct e820entry * biosmap, char * pnr_map) | |||
519 | * If we're lucky and live on a modern system, the setup code | 514 | * If we're lucky and live on a modern system, the setup code |
520 | * will have given us a memory map that we can use to properly | 515 | * will have given us a memory map that we can use to properly |
521 | * set up memory. If we aren't, we'll fake a memory map. | 516 | * set up memory. If we aren't, we'll fake a memory map. |
522 | * | ||
523 | * We check to see that the memory map contains at least 2 elements | ||
524 | * before we'll use it, because the detection code in setup.S may | ||
525 | * not be perfect and most every PC known to man has two memory | ||
526 | * regions: one from 0 to 640k, and one from 1mb up. (The IBM | ||
527 | * thinkpad 560x, for example, does not cooperate with the memory | ||
528 | * detection code.) | ||
529 | */ | 517 | */ |
530 | static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) | 518 | static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) |
531 | { | 519 | { |
@@ -543,25 +531,6 @@ static int __init copy_e820_map(struct e820entry * biosmap, int nr_map) | |||
543 | if (start > end) | 531 | if (start > end) |
544 | return -1; | 532 | return -1; |
545 | 533 | ||
546 | /* | ||
547 | * Some BIOSes claim RAM in the 640k - 1M region. | ||
548 | * Not right. Fix it up. | ||
549 | * | ||
550 | * This should be removed on Hammer which is supposed to not | ||
551 | * have non e820 covered ISA mappings there, but I had some strange | ||
552 | * problems so it stays for now. -AK | ||
553 | */ | ||
554 | if (type == E820_RAM) { | ||
555 | if (start < 0x100000ULL && end > 0xA0000ULL) { | ||
556 | if (start < 0xA0000ULL) | ||
557 | add_memory_region(start, 0xA0000ULL-start, type); | ||
558 | if (end <= 0x100000ULL) | ||
559 | continue; | ||
560 | start = 0x100000ULL; | ||
561 | size = end - start; | ||
562 | } | ||
563 | } | ||
564 | |||
565 | add_memory_region(start, size, type); | 534 | add_memory_region(start, size, type); |
566 | } while (biosmap++,--nr_map); | 535 | } while (biosmap++,--nr_map); |
567 | return 0; | 536 | return 0; |