diff options
author | Owain Ainsworth <oga@cvs.openbsd.org> | 2010-04-29 15:23:29 +0000 |
---|---|---|
committer | Owain Ainsworth <oga@cvs.openbsd.org> | 2010-04-29 15:23:29 +0000 |
commit | 398eaca004223f0f2bf8d34801cc18081da10576 (patch) | |
tree | 87aeb41b4963d9869af9e4ae2c66e36cb5e485a7 /sys/dev | |
parent | c7b050978fab8c91a1bde44d92174f74e6ac7121 (diff) |
use BUS_SPACE_MAP_PREFETCHABLE on maps that should be WC (soon this will
actually do so).
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/pci/drm/drm_memory.c | 3 | ||||
-rw-r--r-- | sys/dev/pci/drm/i915_dma.c | 7 | ||||
-rw-r--r-- | sys/dev/pci/drm/i915_drv.c | 9 |
3 files changed, 9 insertions, 10 deletions
diff --git a/sys/dev/pci/drm/drm_memory.c b/sys/dev/pci/drm/drm_memory.c index 19fea19d38d..cdc3781b173 100644 --- a/sys/dev/pci/drm/drm_memory.c +++ b/sys/dev/pci/drm/drm_memory.c @@ -94,7 +94,8 @@ drm_core_ioremap(struct drm_local_map *map, struct drm_device *dev) DRM_DEBUG("AGP map\n"); map->bst = dev->bst; if (bus_space_map(map->bst, map->offset, - map->size, BUS_SPACE_MAP_LINEAR, &map->bsh)) { + map->size, BUS_SPACE_MAP_LINEAR | + BUS_SPACE_MAP_PREFETCHABLE, &map->bsh)) { DRM_ERROR("ioremap fail\n"); return; } diff --git a/sys/dev/pci/drm/i915_dma.c b/sys/dev/pci/drm/i915_dma.c index a221dfb4768..5e80c387bce 100644 --- a/sys/dev/pci/drm/i915_dma.c +++ b/sys/dev/pci/drm/i915_dma.c @@ -131,7 +131,8 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init) dev_priv->ring.size = init->ring_size; if ((ret = bus_space_map(dev_priv->bst, init->ring_start, - init->ring_size, 0, &dev_priv->ring.bsh)) != 0) { + init->ring_size, BUS_SPACE_MAP_PREFETCHABLE, + &dev_priv->ring.bsh)) != 0) { DRM_INFO("can't map ringbuffer\n"); i915_dma_cleanup(dev); return (ret); @@ -678,8 +679,8 @@ int i915_set_status_page(struct drm_device *dev, void *data, dev_priv->hws_map.size = 4*1024; if ((ret = bus_space_map(dev_priv->bst, dev_priv->hws_map.offset, - dev_priv->hws_map.size, BUS_SPACE_MAP_LINEAR, - &dev_priv->hws_map.bsh)) != 0) { + dev_priv->hws_map.size, BUS_SPACE_MAP_LINEAR | + BUS_SPACE_MAP_PREFETCHABLE, &dev_priv->hws_map.bsh)) != 0) { DRM_INFO("can't hws page\n"); i915_dma_cleanup(dev); dev_priv->status_gfx_addr = 0; diff --git a/sys/dev/pci/drm/i915_drv.c b/sys/dev/pci/drm/i915_drv.c index b3e2b61add3..53f6cce666e 100644 --- a/sys/dev/pci/drm/i915_drv.c +++ b/sys/dev/pci/drm/i915_drv.c @@ -469,10 +469,9 @@ inteldrm_attach(struct device *parent, struct device *self, void *aux) /* array of vm pages that physload introduced. */ dev_priv->pgs = PHYS_TO_VM_PAGE(dev->agp->base); KASSERT(dev_priv->pgs != NULL); - /* XXX wc and do earlier */ if (bus_space_map(dev_priv->bst, dev->agp->base, - dev->agp->info.ai_aperture_size, BUS_SPACE_MAP_LINEAR, - &dev_priv->aperture_bsh) != 0) + dev->agp->info.ai_aperture_size, BUS_SPACE_MAP_LINEAR | + BUS_SPACE_MAP_PREFETCHABLE, &dev_priv->aperture_bsh) != 0) panic("can't map aperture"); #endif /* INTELDRM_GEM */ } @@ -2326,8 +2325,7 @@ inteldrm_fault(struct drm_obj *obj, struct uvm_faultinfo *ufi, off_t offset, UVMHIST_LOG(maphist, " MAPPING: device: pm=%p, va=0x%lx, pa=0x%lx, at=%ld", ufi->orig_map->pmap, vaddr, (u_long)paddr, mapprot); - /* XXX writecombining */ - if (pmap_enter(ufi->orig_map->pmap, vaddr, paddr | PMAP_NOCACHE, + if (pmap_enter(ufi->orig_map->pmap, vaddr, paddr, mapprot, PMAP_CANFAIL | mapprot) != 0) { drm_unhold_object(obj); uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, @@ -3833,7 +3831,6 @@ i915_gem_init_ringbuffer(struct drm_i915_private *dev_priv) /* Set up the kernel mapping for the ring. */ dev_priv->ring.size = obj->size; - /* XXX WC */ if ((ret = bus_space_subregion(dev_priv->bst, dev_priv->aperture_bsh, obj_priv->gtt_offset, obj->size, &dev_priv->ring.bsh)) != 0) { DRM_INFO("can't map ringbuffer\n"); |