Commit dbf9272e863bf4b17ee8e3c66c26682b2061d40d

Authored by Andi Kleen
Committed by Andi Kleen
1 parent f704cb9350

[PATCH] Don't force reserve the 640k-1MB range

From i386 x86-64 inherited code to force reserve the 640k-1MB area.
That was needed on some old systems.

But we generally trust the e820 map to be correct on 64bit systems
and mark all areas that are not memory correctly.

This patch will allow to use the real memory in there.

Or rather the only way to find out if it's still needed is to
try. So far I'm optimistic.

Signed-off-by: Andi Kleen <ak@suse.de>

Showing 1 changed file with 1 additions and 32 deletions Side-by-side Diff

arch/x86_64/kernel/e820.c
... ... @@ -71,12 +71,7 @@
71 71 return 1;
72 72 }
73 73 #endif
74   - /* kernel code + 640k memory hole (later should not be needed, but
75   - be paranoid for now) */
76   - if (last >= 640*1024 && addr < 1024*1024) {
77   - *addrp = 1024*1024;
78   - return 1;
79   - }
  74 + /* kernel code */
80 75 if (last >= __pa_symbol(&_text) && last < __pa_symbol(&_end)) {
81 76 *addrp = __pa_symbol(&_end);
82 77 return 1;
... ... @@ -519,13 +514,6 @@
519 514 * If we're lucky and live on a modern system, the setup code
520 515 * will have given us a memory map that we can use to properly
521 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 518 static int __init copy_e820_map(struct e820entry * biosmap, int nr_map)
531 519 {
... ... @@ -542,25 +530,6 @@
542 530 /* Overflow in 64 bits? Ignore the memory map. */
543 531 if (start > end)
544 532 return -1;
545   -
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 533  
565 534 add_memory_region(start, size, type);
566 535 } while (biosmap++,--nr_map);