Re: x86_64 ten times slower than i386

From: H. Peter Anvin
Date: Mon Nov 05 2007 - 14:11:40 EST


Bo Brantén wrote:
On Mon, 5 Nov 2007, H. Peter Anvin wrote:

reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x80000000 (2048MB), size=1024MB: write-back, count=1
reg02: base=0xc0000000 (3072MB), size= 256MB: write-back, count=1
reg03: base=0xcf800000 (3320MB), size= 8MB: uncachable, count=1
reg04: base=0xcf700000 (3319MB), size= 1MB: uncachable, count=1
reg05: base=0x100000000 (4096MB), size= 512MB: write-back, count=1
reg06: base=0x120000000 (4608MB), size= 128MB: write-back, count=1

What does your e820 map look like?

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000008f000 (usable)
BIOS-e820: 000000000008f000 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cf561000 (usable)
BIOS-e820: 00000000cf561000 - 00000000cf56e000 (reserved)
BIOS-e820: 00000000cf56e000 - 00000000cf637000 (usable)
BIOS-e820: 00000000cf637000 - 00000000cf6e9000 (ACPI NVS)
BIOS-e820: 00000000cf6e9000 - 00000000cf6ed000 (usable)
BIOS-e820: 00000000cf6ed000 - 00000000cf6f2000 (ACPI data)
BIOS-e820: 00000000cf6f2000 - 00000000cf6f3000 (usable)
BIOS-e820: 00000000cf6f3000 - 00000000cf6ff000 (ACPI data)
BIOS-e820: 00000000cf6ff000 - 00000000cf700000 (usable)
BIOS-e820: 00000000cf700000 - 00000000d0000000 (reserved)
BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 000000012c000000 (usable)


Okay, the bug is that the range 4736MB to 4800MB is marked USABLE in the map, but isn't covered by any MTRR. Your BIOS is still buggy.

echo 'base=0x128000000 size=0x4000000 type=write-back' > /proc/mtrr

... should fix it since you still have an unused MTRR. It might make X unhappy, though, since it may want an MTRR to mark the framebuffer write-combining.

-hpa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/