summaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/cpu/mtrr/main.c
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-11-15 20:56:07 -0500
committerJeff Garzik <jgarzik@pobox.com>2005-11-15 20:56:07 -0500
commit77ed78e5cf32be1c3fae5c477cc1d78e2e3f17db (patch)
tree805db8c5c180ee7ee85b3c484461100c91f6c781 /arch/i386/kernel/cpu/mtrr/main.c
parent68bdbdf0b32566e1ebd41415bde9a7c43b47bf48 (diff)
parentf6ff56cd56b83d8edf4b3cffc5c53c56b37a5081 (diff)
downloadblackbird-op-linux-77ed78e5cf32be1c3fae5c477cc1d78e2e3f17db.tar.gz
blackbird-op-linux-77ed78e5cf32be1c3fae5c477cc1d78e2e3f17db.zip
Merge branch 'master'
Diffstat (limited to 'arch/i386/kernel/cpu/mtrr/main.c')
-rw-r--r--arch/i386/kernel/cpu/mtrr/main.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/i386/kernel/cpu/mtrr/main.c b/arch/i386/kernel/cpu/mtrr/main.c
index dd4ebd6af7e4..1e9db198c440 100644
--- a/arch/i386/kernel/cpu/mtrr/main.c
+++ b/arch/i386/kernel/cpu/mtrr/main.c
@@ -626,6 +626,14 @@ void __init mtrr_bp_init(void)
if (cpuid_eax(0x80000000) >= 0x80000008) {
u32 phys_addr;
phys_addr = cpuid_eax(0x80000008) & 0xff;
+ /* CPUID workaround for Intel 0F33/0F34 CPU */
+ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &&
+ boot_cpu_data.x86 == 0xF &&
+ boot_cpu_data.x86_model == 0x3 &&
+ (boot_cpu_data.x86_mask == 0x3 ||
+ boot_cpu_data.x86_mask == 0x4))
+ phys_addr = 36;
+
size_or_mask = ~((1 << (phys_addr - PAGE_SHIFT)) - 1);
size_and_mask = ~size_or_mask & 0xfff00000;
} else if (boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR &&
OpenPOWER on IntegriCloud