diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-11-15 20:56:07 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-11-15 20:56:07 -0500 |
commit | 77ed78e5cf32be1c3fae5c477cc1d78e2e3f17db (patch) | |
tree | 805db8c5c180ee7ee85b3c484461100c91f6c781 /arch/i386/kernel/cpu/mtrr/main.c | |
parent | 68bdbdf0b32566e1ebd41415bde9a7c43b47bf48 (diff) | |
parent | f6ff56cd56b83d8edf4b3cffc5c53c56b37a5081 (diff) | |
download | blackbird-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.c | 8 |
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 && |