Re: PAGE_CACHE_WC strikes again

From: Jesse Barnes
Date: Tue Mar 31 2009 - 20:15:20 EST


On Tue, 31 Mar 2009 17:10:47 -0700
Eric Anholt <eric@xxxxxxxxxx> wrote:

> I just tracked down what was cutting performance 10x on one of my
> systems on a microbenchmark I'd just written:
>
> --- a/drivers/gpu/drm/drm_gem.c
> +++ b/drivers/gpu/drm/drm_gem.c
> @@ -540,7 +540,7 @@ int drm_gem_mmap(struct file *filp, struct
> vm_area_struct *vma)
> /* FIXME: use pgprot_writecombine when available */
> prot = pgprot_val(vma->vm_page_prot);
> #ifdef CONFIG_X86
> - prot |= _PAGE_CACHE_WC;
> + /*prot |= _PAGE_CACHE_WC;*/
> #endif
> vma->vm_page_prot = __pgprot(prot);
>
> Turns out that setting PAGE_CACHE_WC disables the WC effect of the
> MTRR on my non-PAT (disabled due to CPU errata) 945GM system, and this
> workaround took GTT-mapped writes from 120MB/s to 1180MB/s.

What the... There's a pgprot_writecombine now, but it basically does
the same thing. Why is WC so broken? Venki is the fix for this
covered in your last patchset?

--
Jesse Barnes, Intel Open Source Technology Center
--
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/