Re: [PATCH 2/2] x86: mtrr_cleanup try gran_size to less than 1M

From: D. Hugh Redelmeier
Date: Fri Oct 03 2008 - 10:58:36 EST


| From: H. Peter Anvin <hpa@xxxxxxxxx>

| Ingo Molnar wrote:
| > * J.A. MagallÃn <jamagallon@xxxxxxx> wrote:

| > > +++ arch/x86/kernel/cpu/mtrr/if.c 2008-10-03 00:22:34.000000000 +0200
| > > @@ -16,7 +16,7 @@
| > > static const char *const mtrr_strings[MTRR_NUM_TYPES] =
| > > {
| > > "uncachable", /* 0 */
| > > - "write-combining", /* 1 */
| > > + "write-combine", /* 1 */
| >
| > hm, maybe this bit could confuse versions of Xorg that modifies /proc/mtrr -
| > i.e. this could be part of the ABI towards user-space. We'll see.
| >
|
| This *IS* part of the ABI toward userspace, although I think Xorg uses the
| ioctl() interface.

My mtrr-uncover program uses this interface.

One reason is that the ioctl interface is broken. See
http://lkml.org/lkml/2008/8/5/62

I too understand that Xorg drivers uses the ioctl interface. Since
they only use it on video device buffers, and those buffers always
seem to start and end below 4GiB, the ioctl bugs probably don't affect
Xorg.

The ioctl bugs do mean that Xorg drivers cannot even see the MTRR
nesting problems let alone address them.

The ib_path driver apparently uses MTRRs in a way analogous to Xorg
drivers. There is a script that is part of Fedora that uses the
/proc/mtrr interface to attempt to fix nested MTRRs:
http://cvs.fedora.redhat.com/viewvc/devel/rdma/rdma-fixup-mtrr.awk

There may well be other users of this API. Or is it an ABI. I'm not sure.

It would be useful to know what code exists that uses the
MTRR-changing interfaces. I only know about the ones I've mentioned
above. Does anyone know of others?