Re: MTRR use in drivers

From: Andy Lutomirski
Date: Sun Jun 23 2013 - 19:09:59 EST

On Sun, Jun 23, 2013 at 1:38 PM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
> On 06/23/2013 01:30 PM, Dave Airlie wrote:
>>>>> Why do you care about performance when PAT is disabled?
>> breaking old boxes just because, is just going to get reverted when I
>> get the first regression report that you broke old boxes.
> Not "just because", but *if* the choice is between breaking old boxes
> and breaking new boxes I'll take the latter.
>> Andy Lutomirski just submitted a bunch of patches to clean up the DRM
>> usage of mtrrs, they are in drm-next, afaik we no longer add them on
>> PAT systems.
> Fantastic news. No issue, then, and no need to break anything.
> The only problem I see with having ioremap_wc() installing an MTRR on
> non-PAT, rather than pushing that into the drivers which is clearly not
> the right thing, is that we will need a hook to uninstall it when the
> mapping is destroyed.

I have trouble believing that this will ever work well -- MTRRs have
crazy alignment requirements and interactions with other MTRRs, and a
few drivers have to jump through hoops to set up the right MTRRs.
There aren't really enough to break down every mapping.

My patches (in dri-next) add functions arch_wc_phys_add and
arch_wc_phys_del that do nothing except on x86 with MTRRs on and PAT
off, in which case they try to add a WC MTRR. That way the handful of
drivers that need WC for performance on old hardware can try (and
possibly fail, depending on the usual vagaries of MTRRs). With my
patches applied, DRM and agpgart no longer touch MTRRs at all with PAT

I didn't get around to excising MTRRs from the non-DRM video drivers
or from the few odd cases like myri10ge.

This stuff is painful to test. The only drivers I can really test are
i915 and radeon. I have a myri10ge device, but it's on a production
server. I also have several mgag200 devices, but they're in a
super-secret-locked-down datacenter a few thousand miles away, and
trying to gauge framebuffer performance over Dell and/or HP's crappy
remoting interface is a lost cause. I'm not sure that my oldest
computer (locked in a basement in another state) is old enough to have
an AGP port.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at