summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/setup_32.c
diff options
context:
space:
mode:
authorYinghai Lu <yhlu.kernel@gmail.com>2008-06-16 16:11:08 -0700
committerIngo Molnar <mingo@elte.hu>2008-07-08 10:38:19 +0200
commitcc9f7a0ccf000d4db5fbdc7b0ae48eefea102f69 (patch)
tree582125558bf4975446ae76f35b297bf4ce864bc1 /arch/x86/kernel/setup_32.c
parent41c094fd3ca54f1a71233049cf136ff94c91f4ae (diff)
x86: kill bad_ppro
so don't punish all other cpus without that problem when init highmem Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/setup_32.c')
-rw-r--r--arch/x86/kernel/setup_32.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/kernel/setup_32.c b/arch/x86/kernel/setup_32.c
index f3ddba5ed9a..9692aeb8eca 100644
--- a/arch/x86/kernel/setup_32.c
+++ b/arch/x86/kernel/setup_32.c
@@ -68,6 +68,7 @@
#include <asm/cacheflush.h>
#include <asm/processor.h>
#include <asm/efi.h>
+#include <asm/bugs.h>
/* This value is set up by the early boot code to point to the value
immediately after the boot time page tables. It contains a *physical*
@@ -764,6 +765,14 @@ void __init setup_arch(char **cmdline_p)
if (efi_enabled)
efi_init();
+ if (ppro_with_ram_bug()) {
+ e820_update_range(0x70000000ULL, 0x40000ULL, E820_RAM,
+ E820_RESERVED);
+ sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
+ printk(KERN_INFO "fixed physical RAM map:\n");
+ e820_print_map("bad_ppro");
+ }
+
e820_register_active_regions(0, 0, -1UL);
/*
* partially used pages are not usable - thus