diff options
author | kib <kib@FreeBSD.org> | 2012-05-28 13:55:49 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2012-05-28 13:55:49 +0000 |
commit | 07bc41a97b279543e09a00b202498277a7d09145 (patch) | |
tree | b146e716dc486064ac4f5364853c259a0a972fb6 /sys/dev/drm2 | |
parent | cda9e92421edf4b2c7de3bf1ba2d1e87b223e92b (diff) | |
download | FreeBSD-src-07bc41a97b279543e09a00b202498277a7d09145.zip FreeBSD-src-07bc41a97b279543e09a00b202498277a7d09145.tar.gz |
Fix calculation of the execution buffer end in the mapped pages
when it is spilled into the next page.
MFC after: 1 month
Diffstat (limited to 'sys/dev/drm2')
-rw-r--r-- | sys/dev/drm2/i915/i915_gem_execbuffer.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/drm2/i915/i915_gem_execbuffer.c b/sys/dev/drm2/i915/i915_gem_execbuffer.c index 7143045..cea6970 100644 --- a/sys/dev/drm2/i915/i915_gem_execbuffer.c +++ b/sys/dev/drm2/i915/i915_gem_execbuffer.c @@ -1069,7 +1069,8 @@ i915_gem_fix_mi_batchbuffer_end(struct drm_i915_gem_object *batch_obj, po_r -= 4; mkva = pmap_mapdev_attr(trunc_page(po_r), 2 * PAGE_SIZE, PAT_WRITE_COMBINING); - cmd = *(uint32_t *)(mkva + (po_r & PAGE_MASK)); + po_r &= PAGE_MASK; + cmd = *(uint32_t *)(mkva + po_r); if (cmd != MI_BATCH_BUFFER_END) { /* @@ -1083,8 +1084,7 @@ i915_gem_fix_mi_batchbuffer_end(struct drm_i915_gem_object *batch_obj, po_w = po_r; DRM_DEBUG("batchbuffer does not end by MI_BATCH_BUFFER_END, overwriting last bo cmd !\n"); } - - *(uint32_t *)(mkva + (po_w & PAGE_MASK)) = MI_BATCH_BUFFER_END; + *(uint32_t *)(mkva + po_w) = MI_BATCH_BUFFER_END; } pmap_unmapdev((vm_offset_t)mkva, 2 * PAGE_SIZE); |