[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: mtrr funnies



Nifty Fedora Mitch wrote:
On Tue, Oct 07, 2008 at 10:59:02AM -0700, Wolfgang S. Rupprecht wrote:
I've got a motherboard with a fairly new chipset (Asus M3A78T
w. AMD/ATI 790GX) and I'm seeing a funny MTRR setting.  I have 8GB
memory and am running a 64-bit kernel, but I'm only seeing ~4GB
mentioned in the MTRR's.  Is this a bug?  Do I need to add the upper
4+GB by hand?

    $ cat /proc/mtrr
    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=0xd0000000 (3328MB), size= 256MB: write-combining, count=1

It does seem like the kernel sees the whole memory, at least at times,
but it isn't clear if that high memory is being cached the right way.

    Oct  7 10:54:30 poblano kernel: Memory: 7678940k/8650752k available (2699k kernel code, 184672k reserved, 1485k data, 980k init)


What does /proc/meminfo report.

If I understand MTRR registers the important point is that they do not
conflict with mapping that the kernel or a device driver might require. In
this case the memory above MTRR#03 has no restrictions so the kernel is
able to setup the page tables any way it needs to.
The kernel will not assign coherency atributes to a page that risks
data corruption.  If a region of memory has an existing MTRR mapping anything
the kernel does must be correct from a coherency point of view.

Just curious, what device is mapped at 3.3GB? Is it a graphics card, which one? Write-combining is an interesting mapping... the driver must manage coherency with care but the driver can gain a near ten fold speedup for some IO devices.

For what it is worth WindoZ uses per page atributes (PAT) and can ignore MTRR mapping
once booted. Thus many system BIOS setup IO regions too conservativly which causes Linux IO to suffer. The kernel will respect MTRR mappings as it
should...

The 2.6.27 kernel should be able to handle that. I built 2.6.27-rc7-git5 (or so) with PAT enabled. However, I'm having problems with networking I didn't see in the non-PAT kernel, that's under investigation at the moment.

--
Bill Davidsen <davidsen tmr com>
  "We have more to fear from the bungling of the incompetent than from
the machinations of the wicked."  - from Slashdot


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]