MTRR control

Richard Gooch (rgooch@atnf.CSIRO.AU)
Sat, 13 Dec 1997 17:54:08 +1100

Hi, all. I'm looking at adding kernel support for manipulating the
MTRRs on the PPro. The main point to this is to enable write-combining
of the linear frame buffer for a SVGA card, which can give a speed-up
of 2.5 - 2.8 when blitting images.

As some of you will know, there already exists a loadable module
(proform-1.0) which allows you to manipulate the MTRRs. Unfortunately,
you have to provide the base address and size of the FB. This is
rather clunky, especially considering that the first time the X server
fires up it may move the FB. So what seems better is to create a
sysctl which allows a process with EUID=0 to create and remove a
region. The X server could then make use of this.

Another problem with proform-1.0 is that it states that it doesn't
work with SMP. Why is this so? Is it simply because the MTRRs of the
CPU which happened to run insmod are modified, but not those of the
other CPU(s)? In that case all that is needed is some mechanism to run
this bit of code for all CPUs.
Or is there some deeper reason why this is hard with SMP?

If all that is needed is to ensure the MTRR-fiddling code is run on
all CPUs, then do people have some suggestions on how to go about

Finally, do people think that this idea is worthwhile? I'll start
coding this if I get some encouraging responses.