Re: amd64 + mtrr: only 3.1gb of 8gb are covered, kernel 2.6.30 and earlier.

From: Volker Armin Hemmann
Date: Sat Aug 22 2009 - 14:55:14 EST


On Samstag 22 August 2009, Yinghai Lu wrote:
> On Fri, Aug 21, 2009 at 9:14 AM, Volker Armin
>
> Hemmann<volkerarmin@xxxxxxxxxxxxxx> wrote:
> > Hi,
> >
> > I have an amd64 system with 8GB ram. Of these only 3.1GB are currently
> > covered with mtrr:
> > cat /proc/mtrr
> > reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
> > reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
> > reg02: base=0x0c0000000 ( 3072MB), size= 128MB, count=1: write-back
> >
> > This is with a Phenom II X4. Mobo is an Asrock A770Crossfire with AMD 770
> > chipset. Ram is 1066 ddr2 running at 800.
> >
> > Before that I had a X2 6000 where I had one more mtrr, covering
> > additional 256mb with 6gb ram total.
> >
> > When I use the opensource driver, I get a 'mtrr disabled' message when X
> > starts, nothing like that with fglrx. The results are the same.
> >
> > Is there anything that I can do about it? I already played with mtrr
> > cleanup options - without any results.
> >
> > Except for reiser4 the kernel is 'vanilla', config is attached, dmesg and
> > lspci are folloiwing:
> >
> > dmesg:
> > [ 0.000000] Linux version 2.6.30.5r4 (root@energy) (gcc version 4.4.1
> > (Gentoo 4.4.1 p1.0) ) #1 SMP Tue Aug 18 06:28:18 CEST 2009
> > [ 0.000000] Command line: root=/dev/md1
> > md=3,/dev/sda3,/dev/sdb3,/dev/sdc3 nmi_watchdog=0 mtrr_spare_reg_nr=1
> > [ 0.000000] KERNEL supported cpus:
> > [ 0.000000] Intel GenuineIntel
> > [ 0.000000] AMD AuthenticAMD
> > [ 0.000000] BIOS-provided physical RAM map:
> > [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
> > [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
> > [ 0.000000] BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
> > [ 0.000000] BIOS-e820: 0000000000100000 - 00000000c7eb0000 (usable)
> > [ 0.000000] BIOS-e820: 00000000c7eb0000 - 00000000c7ec0000 (ACPI
> > data) [ 0.000000] BIOS-e820: 00000000c7ec0000 - 00000000c7ef0000
> > (ACPI NVS) [ 0.000000] BIOS-e820: 00000000c7ef0000 - 00000000c7f00000
> > (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000
> > (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000238000000
> > (usable) [ 0.000000] DMI present.
> > [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working
> > around it. [ 0.000000] e820 update range: 0000000000000000 -
> > 0000000000010000 (usable) ==> (reserved)
> > [ 0.000000] last_pfn = 0x238000 max_arch_pfn = 0x100000000
> > [ 0.000000] MTRR default type: uncachable
> > [ 0.000000] MTRR fixed ranges enabled:
> > [ 0.000000] 00000-9FFFF write-back
> > [ 0.000000] A0000-EFFFF uncachable
> > [ 0.000000] F0000-FFFFF write-protect
> > [ 0.000000] MTRR variable ranges enabled:
> > [ 0.000000] 0 base 000000000000 mask FFFF80000000 write-back
> > [ 0.000000] 1 base 000080000000 mask FFFFC0000000 write-back
> > [ 0.000000] 2 base 0000C0000000 mask FFFFF8000000 write-back
> > [ 0.000000] 3 disabled
> > [ 0.000000] 4 disabled
> > [ 0.000000] 5 disabled
> > [ 0.000000] 6 disabled
> > [ 0.000000] 7 disabled
> > [ 0.000000] TOM2: 0000000238000000 aka 9088M
> > [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new
> > 0x7010600070106
> > [ 0.000000] e820 update range: 00000000c8000000 - 0000000100000000
> > (usable) ==> (reserved)
>
> ...
>
> > 02:00.0 VGA compatible controller: ATI Technologies Inc Radeon HD 3870
> > (prog- if 00 [VGA controller])
> > Subsystem: Info-Tek Corp. Device 4070
> > Flags: bus master, fast devsel, latency 0, IRQ 30
> > Memory at d0000000 (64-bit, prefetchable) [size=256M]
> > Memory at fdff0000 (64-bit, non-prefetchable) [size=64K]
> > I/O ports at b000 [size=256]
> > Expansion ROM at fdfc0000 [disabled] [size=128K]
> > Capabilities: [50] Power Management version 3
> > Capabilities: [58] Express Legacy Endpoint, MSI 00
> > Capabilities: [a0] MSI: Mask- 64bit+ Count=1/1 Enable+
> > Capabilities: [100] Vendor Specific Information <?>
> > Kernel driver in use: fglrx_pci
> > Kernel modules: fglrx
>
> after your start X server, how about cat /proc/mtrr?
>
> thought there should be one WC entry about 256M... for graphics card.
>
> YH

running X:

cat /proc/mtrr
reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg02: base=0x0c0000000 ( 3072MB), size= 128MB, count=1: write-back

back with my X2 6000 and 4 and 6gb ram, I indeed got another mtrr with 256mb.
But with the phenom and 8gb I don't get it. Neither with fglrx nor with xorg's
radeon driver. Radeon posts a message to dmesg about disabled mtrr.

Glück Auf,
Volker
--
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/