From e2b0046ba118954f99c12d150eb0fca9f57a813d Mon Sep 17 00:00:00 2001 From: gallatin Date: Tue, 5 Jun 2007 15:02:14 +0000 Subject: Use pmap_change_attr() to setup a write combine attribute for our device memory, rather than relying on the less reliable MTRR method used by mem_range_attr_set(). Glanced at by: jhb --- sys/dev/mxge/if_mxge.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'sys/dev/mxge') diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c index 93c55a1..2feaaf6 100644 --- a/sys/dev/mxge/if_mxge.c +++ b/sys/dev/mxge/if_mxge.c @@ -80,6 +80,10 @@ __FBSDID("$FreeBSD$"); #include /* for pmap_mapdev() */ #include +#if defined(__i386) || defined(__amd64) +#include +#endif + #include #include #include @@ -146,8 +150,17 @@ mxge_enable_wc(mxge_softc_t *sc) vm_offset_t len; int err, action; - pa = rman_get_start(sc->mem_res); len = rman_get_size(sc->mem_res); +#if defined(__i386) || defined(__amd64) + err = pmap_change_attr((vm_offset_t) sc->sram, + len, PAT_WRITE_COMBINING); + if (err == 0) + return; + else + device_printf(sc->dev, "pmap_change_attr failed, %d\n", + err); +#endif + pa = rman_get_start(sc->mem_res); mrdesc.mr_base = pa; mrdesc.mr_len = len; mrdesc.mr_flags = MDF_WRITECOMBINE; -- cgit v1.1