[igt-dev] [PATCH i-g-t 2/2] i915/treewide: Replace gem_mmap__gtt() by gem_mmap__device_coherent()

Imre Deak imre.deak at intel.com
Wed Jan 15 16:27:40 UTC 2020


Hi,

On Fri, Jan 10, 2020 at 09:36:53PM -0800, Ashutosh Dixit wrote:
> As another step towards supporting GPU's without mappable aperture,
> globally replace gem_mmap__gtt() by gem_mmap__device_coherent(). This
> will not affect GPU's with a mappable aperture but will fix tests on
> GPU's without a mappable aperture through the use of WC mapping,
> unless those tests test actual features available via the aperture.

igt_draw_rect() depends on detiling via the aperture. I'd suggest
converting first only the places that don't depend on this and follow-up
with the rest once we have a way to do the detiling in another way.

--Imre

> 
> Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
> ---
>  benchmarks/gem_busy.c                   |  2 +-
>  benchmarks/gem_mmap.c                   |  4 ++--
>  lib/igt_draw.c                          |  2 +-
>  lib/igt_fb.c                            |  2 +-
>  tests/i915/gem_blits.c                  |  2 +-
>  tests/i915/gem_concurrent_all.c         |  4 ++--
>  tests/i915/gem_create.c                 |  4 ++--
>  tests/i915/gem_ctx_shared.c             | 10 ++++-----
>  tests/i915/gem_ctx_sseu.c               |  2 +-
>  tests/i915/gem_exec_balancer.c          |  2 +-
>  tests/i915/gem_exec_basic.c             |  2 +-
>  tests/i915/gem_exec_flush.c             |  4 ++--
>  tests/i915/gem_exec_gttfill.c           |  4 ++--
>  tests/i915/gem_exec_reloc.c             | 10 ++++-----
>  tests/i915/gem_exec_schedule.c          |  4 ++--
>  tests/i915/gem_fence_thrash.c           |  2 +-
>  tests/i915/gem_fence_upload.c           |  6 +++---
>  tests/i915/gem_gtt_cpu_tlb.c            |  4 ++--
>  tests/i915/gem_gtt_hog.c                |  4 ++--
>  tests/i915/gem_gtt_speed.c              | 12 +++++------
>  tests/i915/gem_largeobject.c            |  2 +-
>  tests/i915/gem_madvise.c                |  4 ++--
>  tests/i915/gem_mmap_gtt.c               | 28 ++++++++++++-------------
>  tests/i915/gem_mmap_offset_exhaustion.c |  2 +-
>  tests/i915/gem_mmap_wc.c                |  2 +-
>  tests/i915/gem_persistent_relocs.c      |  2 +-
>  tests/i915/gem_pread.c                  |  2 +-
>  tests/i915/gem_pwrite.c                 |  2 +-
>  tests/i915/gem_pwrite_pread.c           |  8 +++----
>  tests/i915/gem_reloc_vs_gpu.c           |  2 +-
>  tests/i915/gem_render_copy.c            | 10 ++++-----
>  tests/i915/gem_set_tiling_vs_gtt.c      |  2 +-
>  tests/i915/gem_set_tiling_vs_pwrite.c   |  2 +-
>  tests/i915/gem_shrink.c                 |  2 +-
>  tests/i915/gem_storedw_loop.c           |  2 +-
>  tests/i915/gem_streaming_writes.c       |  4 ++--
>  tests/i915/gem_tiled_fence_blits.c      |  4 ++--
>  tests/i915/gem_tiled_pread_basic.c      |  2 +-
>  tests/i915/gem_tiled_pread_pwrite.c     |  4 ++--
>  tests/i915/gem_tiled_swapping.c         |  6 +++---
>  tests/i915/gem_tiled_wb.c               |  2 +-
>  tests/i915/gem_tiled_wc.c               |  2 +-
>  tests/i915/gem_tiling_max_stride.c      |  2 +-
>  tests/i915/gem_userptr_blits.c          | 10 ++++-----
>  tests/i915/gen3_mixed_blits.c           |  4 ++--
>  tests/i915/gen3_render_mixed_blits.c    |  4 ++--
>  tests/i915/gen3_render_tiledx_blits.c   |  4 ++--
>  tests/i915/gen3_render_tiledy_blits.c   |  4 ++--
>  tests/i915/i915_pm_rpm.c                | 18 ++++++++--------
>  tests/i915/i915_suspend.c               |  6 +++---
>  tests/kms_available_modes_crc.c         |  2 +-
>  tests/kms_fence_pin_leak.c              |  2 +-
>  tests/kms_psr.c                         |  2 +-
>  tests/prime_mmap.c                      |  2 +-
>  tests/prime_mmap_coherency.c            |  2 +-
>  tests/prime_vgem.c                      |  8 +++----
>  tools/intel_dp_compliance.c             | 12 +++++------
>  57 files changed, 132 insertions(+), 132 deletions(-)
> 
> diff --git a/benchmarks/gem_busy.c b/benchmarks/gem_busy.c
> index 2fb1edf98..55db17a7d 100644
> --- a/benchmarks/gem_busy.c
> +++ b/benchmarks/gem_busy.c
> @@ -188,7 +188,7 @@ static int loop(unsigned ring, int reps, int ncpus, unsigned flags)
>  	if (gem_mmap__has_wc(fd))
>  		batch = gem_mmap__wc(fd, obj[1].handle, 0, 4096, PROT_WRITE);
>  	else
> -		batch = gem_mmap__gtt(fd, obj[1].handle, 4096, PROT_WRITE);
> +		batch = gem_mmap__device_coherent(fd, obj[1].handle, 0, 4096, PROT_WRITE);
>  	gem_set_domain(fd, obj[1].handle,
>  			I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	batch[0] = MI_BATCH_BUFFER_END;
> diff --git a/benchmarks/gem_mmap.c b/benchmarks/gem_mmap.c
> index d3d4ad310..518f9fd9b 100644
> --- a/benchmarks/gem_mmap.c
> +++ b/benchmarks/gem_mmap.c
> @@ -122,7 +122,7 @@ int main(int argc, char **argv)
>  		gem_set_domain(fd, handle, I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
>  		break;
>  	case GTT:
> -		ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_WRITE);
> +		ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_WRITE);
>  		gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  		break;
>  	case WC:
> @@ -172,7 +172,7 @@ int main(int argc, char **argv)
>  					ptr = gem_mmap__cpu(fd, handle, 0, OBJECT_SIZE, PROT_WRITE);
>  					break;
>  				case GTT:
> -					ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_WRITE);
> +					ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_WRITE);
>  					break;
>  				case WC:
>  					ptr = gem_mmap__wc(fd, handle, 0, OBJECT_SIZE, PROT_WRITE);
> diff --git a/lib/igt_draw.c b/lib/igt_draw.c
> index 6950bc493..8d23aa58c 100644
> --- a/lib/igt_draw.c
> +++ b/lib/igt_draw.c
> @@ -375,7 +375,7 @@ static void draw_rect_mmap_gtt(int fd, struct buf_data *buf, struct rect *rect,
>  	gem_set_domain(fd, buf->handle, I915_GEM_DOMAIN_GTT,
>  		       I915_GEM_DOMAIN_GTT);
>  
> -	ptr = gem_mmap__gtt(fd, buf->handle, PAGE_ALIGN(buf->size),
> +	ptr = gem_mmap__device_coherent(fd, buf->handle, 0, PAGE_ALIGN(buf->size),
>  			    PROT_READ | PROT_WRITE);
>  
>  	draw_rect_ptr_linear(ptr, buf->stride, rect, color, buf->bpp);
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index c81b9de8e..72bb8c00d 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -2336,7 +2336,7 @@ static void *map_bo(int fd, struct igt_fb *fb)
>  		ptr = kmstest_dumb_map_buffer(fd, fb->gem_handle, fb->size,
>  					      PROT_READ | PROT_WRITE);
>  	else if (is_i915_device(fd))
> -		ptr = gem_mmap__gtt(fd, fb->gem_handle, fb->size,
> +		ptr = gem_mmap__device_coherent(fd, fb->gem_handle, 0, fb->size,
>  				    PROT_READ | PROT_WRITE);
>  	else if (is_vc4_device(fd))
>  		ptr = igt_vc4_mmap_bo(fd, fb->gem_handle, fb->size,
> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
> index f9cb12bb8..2473bb187 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -429,7 +429,7 @@ static void *download(const struct device *device,
>  		break;
>  
>  	case GTT:
> -		src = gem_mmap__gtt(device->fd, buffer->handle,
> +		src = gem_mmap__device_coherent(device->fd, buffer->handle, 0,
>  				   buffer->size,
>  				   PROT_READ);
>  
> diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
> index f1be4a85d..236893f33 100644
> --- a/tests/i915/gem_concurrent_all.c
> +++ b/tests/i915/gem_concurrent_all.c
> @@ -907,8 +907,8 @@ static void gtt_copy_bo(struct buffers *b, drm_intel_bo *dst, drm_intel_bo *src)
>  	gem_set_domain(fd, src->handle, I915_GEM_DOMAIN_GTT, 0);
>  	gem_set_domain(fd, dst->handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  
> -	s = gem_mmap__gtt(fd, src->handle, size, PROT_READ);
> -	d = gem_mmap__gtt(fd, dst->handle, size, PROT_WRITE);
> +	s = gem_mmap__device_coherent(fd, src->handle, 0, size, PROT_READ);
> +	d = gem_mmap__device_coherent(fd, dst->handle, 0, size, PROT_WRITE);
>  
>  	memcpy(d, s, size);
>  
> diff --git a/tests/i915/gem_create.c b/tests/i915/gem_create.c
> index 8fc128dae..32eb65191 100644
> --- a/tests/i915/gem_create.c
> +++ b/tests/i915/gem_create.c
> @@ -219,8 +219,8 @@ static void *thread_clear(void *data)
>  					     0, create.size, PROT_READ);
>  			break;
>  		case GTT:
> -			ptr = __gem_mmap__gtt(i915, create.handle,
> -					      create.size, PROT_READ);
> +			ptr = __gem_mmap__device_coherent(i915, create.handle,
> +					     0, create.size, PROT_READ);
>  			break;
>  		}
>  		/* No set-domains as we are being as naughty as possible */
> diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
> index 30e37c3cc..820b96c1a 100644
> --- a/tests/i915/gem_ctx_shared.c
> +++ b/tests/i915/gem_ctx_shared.c
> @@ -605,7 +605,7 @@ static void independent(int i915, unsigned ring, unsigned flags)
>  	for (int i = 0; i < ARRAY_SIZE(priorities); i++) {
>  		uint32_t *ptr;
>  
> -		ptr = gem_mmap__gtt(i915, handle[i], 4096, PROT_READ);
> +		ptr = gem_mmap__device_coherent(i915, handle[i], 0, 4096, PROT_READ);
>  		gem_set_domain(i915, handle[i], /* no write hazard lies! */
>  			       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  		gem_close(i915, handle[i]);
> @@ -650,7 +650,7 @@ static void reorder(int i915, unsigned ring, unsigned flags)
>  	gem_context_destroy(i915, ctx[LO]);
>  	gem_context_destroy(i915, ctx[HI]);
>  
> -	ptr = gem_mmap__gtt(i915, scratch, 4096, PROT_READ);
> +	ptr = gem_mmap__device_coherent(i915, scratch, 0, 4096, PROT_READ);
>  	gem_set_domain(i915, scratch, /* no write hazard lies! */
>  		       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	gem_close(i915, scratch);
> @@ -705,7 +705,7 @@ static void promotion(int i915, unsigned ring)
>  	gem_context_destroy(i915, ctx[LO]);
>  	gem_context_destroy(i915, ctx[HI]);
>  
> -	ptr = gem_mmap__gtt(i915, dep, 4096, PROT_READ);
> +	ptr = gem_mmap__device_coherent(i915, dep, 0, 4096, PROT_READ);
>  	gem_set_domain(i915, dep, /* no write hazard lies! */
>  			I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	gem_close(i915, dep);
> @@ -713,7 +713,7 @@ static void promotion(int i915, unsigned ring)
>  	igt_assert_eq_u32(ptr[0], ctx[HI]);
>  	munmap(ptr, 4096);
>  
> -	ptr = gem_mmap__gtt(i915, result, 4096, PROT_READ);
> +	ptr = gem_mmap__device_coherent(i915, result, 0, 4096, PROT_READ);
>  	gem_set_domain(i915, result, /* no write hazard lies! */
>  			I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	gem_close(i915, result);
> @@ -768,7 +768,7 @@ static void smoketest(int i915, unsigned ring, unsigned timeout)
>  	}
>  	igt_waitchildren();
>  
> -	ptr = gem_mmap__gtt(i915, scratch, 4096, PROT_READ);
> +	ptr = gem_mmap__device_coherent(i915, scratch, 0, 4096, PROT_READ);
>  	gem_set_domain(i915, scratch, /* no write hazard lies! */
>  			I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	gem_close(i915, scratch);
> diff --git a/tests/i915/gem_ctx_sseu.c b/tests/i915/gem_ctx_sseu.c
> index 48e4411c8..a888dd6c9 100644
> --- a/tests/i915/gem_ctx_sseu.c
> +++ b/tests/i915/gem_ctx_sseu.c
> @@ -375,7 +375,7 @@ test_ggtt_args(int fd)
>  	uint32_t bo;
>  
>  	bo = gem_create(fd, 4096);
> -	arg.value = to_user_pointer(gem_mmap__gtt(fd, bo, 4096,
> +	arg.value = to_user_pointer(gem_mmap__device_coherent(fd, bo, 0, 4096,
>  						  PROT_READ | PROT_WRITE));
>  
>  	igt_assert_eq(__gem_context_get_param(fd, &arg), 0);
> diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
> index f4909a978..5bfea15c4 100644
> --- a/tests/i915/gem_exec_balancer.c
> +++ b/tests/i915/gem_exec_balancer.c
> @@ -278,7 +278,7 @@ static void invalid_balancer(int i915)
>  		igt_assert_eq(__gem_context_set_param(i915, &p), -EFAULT);
>  
>  		handle = gem_create(i915, 4096 * 3);
> -		ptr = gem_mmap__gtt(i915, handle, 4096 * 3, PROT_WRITE);
> +		ptr = gem_mmap__device_coherent(i915, handle, 0, 4096 * 3, PROT_WRITE);
>  		gem_close(i915, handle);
>  
>  		memset(&engines, 0, sizeof(engines));
> diff --git a/tests/i915/gem_exec_basic.c b/tests/i915/gem_exec_basic.c
> index 70dce34b5..5bb0b21a1 100644
> --- a/tests/i915/gem_exec_basic.c
> +++ b/tests/i915/gem_exec_basic.c
> @@ -98,7 +98,7 @@ static void gtt(int fd, uint64_t flags)
>  	handle = gem_create(fd, 4096);
>  
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> -	execbuf = gem_mmap__gtt(fd, handle, 4096, PROT_WRITE);
> +	execbuf = gem_mmap__device_coherent(fd, handle, 0, 4096, PROT_WRITE);
>  	exec = (struct drm_i915_gem_exec_object2 *)(execbuf + 1);
>  	gem_close(fd, handle);
>  
> diff --git a/tests/i915/gem_exec_flush.c b/tests/i915/gem_exec_flush.c
> index 28708460b..69ee000d0 100644
> --- a/tests/i915/gem_exec_flush.c
> +++ b/tests/i915/gem_exec_flush.c
> @@ -154,7 +154,7 @@ static void run(int fd, unsigned ring, int nchild, int timeout,
>  
>  		/* Prepara a mappable binding to prevent pread mighrating */
>  		if (!snoop) {
> -			ptr = gem_mmap__gtt(fd, obj[0].handle, 4096, PROT_READ);
> +			ptr = gem_mmap__device_coherent(fd, obj[0].handle, 0, 4096, PROT_READ);
>  			igt_assert_eq_u32(ptr[0], 0xabcdabcd);
>  			munmap(ptr, 4096);
>  		}
> @@ -418,7 +418,7 @@ static void batch(int fd, unsigned ring, int nchild, int timeout,
>  			break;
>  
>  		case BATCH_GTT:
> -			ptr = gem_mmap__gtt(fd, obj[1].handle, 64<<10,
> +			ptr = gem_mmap__device_coherent(fd, obj[1].handle, 0, 64<<10,
>  					    PROT_WRITE);
>  			break;
>  
> diff --git a/tests/i915/gem_exec_gttfill.c b/tests/i915/gem_exec_gttfill.c
> index f810dafd1..4f54a2805 100644
> --- a/tests/i915/gem_exec_gttfill.c
> +++ b/tests/i915/gem_exec_gttfill.c
> @@ -160,8 +160,8 @@ static void fillgtt(int fd, unsigned ring, int timeout)
>  				       0, BATCH_SIZE, PROT_WRITE);
>  		if (!batches[i].ptr) {
>  			batches[i].ptr =
> -				__gem_mmap__gtt(fd, batches[i].handle,
> -						BATCH_SIZE, PROT_WRITE);
> +				__gem_mmap__device_coherent(fd, batches[i].handle,
> +						    0, BATCH_SIZE, PROT_WRITE);
>  		}
>  		igt_require(batches[i].ptr);
>  	}
> diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
> index ef995a676..78ea6eee1 100644
> --- a/tests/i915/gem_exec_reloc.c
> +++ b/tests/i915/gem_exec_reloc.c
> @@ -129,7 +129,7 @@ static void from_mmap(int fd, uint64_t size, enum mode mode)
>  		break;
>  	case GTT:
>  		reloc_handle = gem_create(fd, size);
> -		relocs = gem_mmap__gtt(fd, reloc_handle, size, PROT_WRITE);
> +		relocs = gem_mmap__device_coherent(fd, reloc_handle, 0, size, PROT_WRITE);
>  		gem_set_domain(fd, reloc_handle,
>  				I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  		gem_close(fd, reloc_handle);
> @@ -418,7 +418,7 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags)
>  			if (before == I915_GEM_DOMAIN_CPU)
>  				wc = gem_mmap__cpu(fd, obj.handle, 0, OBJSZ, PROT_WRITE);
>  			else if (before == I915_GEM_DOMAIN_GTT)
> -				wc = gem_mmap__gtt(fd, obj.handle, OBJSZ, PROT_WRITE);
> +				wc = gem_mmap__device_coherent(fd, obj.handle, 0, OBJSZ, PROT_WRITE);
>  			else if (before == I915_GEM_DOMAIN_WC)
>  				wc = gem_mmap__wc(fd, obj.handle, 0, OBJSZ, PROT_WRITE);
>  			else
> @@ -449,7 +449,7 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags)
>  			if (after == I915_GEM_DOMAIN_CPU)
>  				wc = gem_mmap__cpu(fd, obj.handle, 0, OBJSZ, PROT_READ);
>  			else if (after == I915_GEM_DOMAIN_GTT)
> -				wc = gem_mmap__gtt(fd, obj.handle, OBJSZ, PROT_READ);
> +				wc = gem_mmap__device_coherent(fd, obj.handle, 0, OBJSZ, PROT_READ);
>  			else if (after == I915_GEM_DOMAIN_WC)
>  				wc = gem_mmap__wc(fd, obj.handle, 0, OBJSZ, PROT_READ);
>  			else
> @@ -488,7 +488,7 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags)
>  			if (before == I915_GEM_DOMAIN_CPU)
>  				wc = gem_mmap__cpu(fd, obj.handle, 0, OBJSZ, PROT_WRITE);
>  			else if (before == I915_GEM_DOMAIN_GTT)
> -				wc = gem_mmap__gtt(fd, obj.handle, OBJSZ, PROT_WRITE);
> +				wc = gem_mmap__device_coherent(fd, obj.handle, 0, OBJSZ, PROT_WRITE);
>  			else if (before == I915_GEM_DOMAIN_WC)
>  				wc = gem_mmap__wc(fd, obj.handle, 0, OBJSZ, PROT_WRITE);
>  			else
> @@ -517,7 +517,7 @@ static void basic_reloc(int fd, unsigned before, unsigned after, unsigned flags)
>  			if (after == I915_GEM_DOMAIN_CPU)
>  				wc = gem_mmap__cpu(fd, obj.handle, 0, OBJSZ, PROT_READ);
>  			else if (after == I915_GEM_DOMAIN_GTT)
> -				wc = gem_mmap__gtt(fd, obj.handle, OBJSZ, PROT_READ);
> +				wc = gem_mmap__device_coherent(fd, obj.handle, 0, OBJSZ, PROT_READ);
>  			else if (after == I915_GEM_DOMAIN_WC)
>  				wc = gem_mmap__wc(fd, obj.handle, 0, OBJSZ, PROT_READ);
>  			else
> diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
> index 0b6826fd6..a20985864 100644
> --- a/tests/i915/gem_exec_schedule.c
> +++ b/tests/i915/gem_exec_schedule.c
> @@ -252,7 +252,7 @@ static void independent(int fd, unsigned int engine)
>  	igt_require(engine != 0);
>  
>  	scratch = gem_create(fd, 4096);
> -	ptr = gem_mmap__gtt(fd, scratch, 4096, PROT_READ);
> +	ptr = gem_mmap__device_coherent(fd, scratch, 0, 4096, PROT_READ);
>  	igt_assert_eq(ptr[0], 0);
>  
>  	fence = igt_cork_plug(&cork, fd);
> @@ -1410,7 +1410,7 @@ static void reorder_wide(int fd, unsigned ring)
>  		gem_context_set_priority(fd, execbuf.rsvd1, n);
>  
>  		obj[1].handle = gem_create(fd, sz);
> -		batch = gem_mmap__gtt(fd, obj[1].handle, sz, PROT_WRITE);
> +		batch = gem_mmap__device_coherent(fd, obj[1].handle, 0, sz, PROT_WRITE);
>  		gem_set_domain(fd, obj[1].handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  
>  		for (int m = 0; m < ring_size; m++) {
> diff --git a/tests/i915/gem_fence_thrash.c b/tests/i915/gem_fence_thrash.c
> index 9beada982..7f49c1c4c 100644
> --- a/tests/i915/gem_fence_thrash.c
> +++ b/tests/i915/gem_fence_thrash.c
> @@ -77,7 +77,7 @@ bo_create (int fd, int tiling)
>  
>  	gem_set_tiling(fd, handle, tiling, 1024);
>  
> -	ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	gem_close(fd, handle);
> diff --git a/tests/i915/gem_fence_upload.c b/tests/i915/gem_fence_upload.c
> index 17580aff8..1ba11c6ab 100644
> --- a/tests/i915/gem_fence_upload.c
> +++ b/tests/i915/gem_fence_upload.c
> @@ -66,7 +66,7 @@ static void performance(void)
>  
>  		for (n = 0; n < count; n++) {
>  			handle[n] = gem_create(fd, OBJECT_SIZE);
> -			ptr[n] = gem_mmap__gtt(fd, handle[n], OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +			ptr[n] = gem_mmap__device_coherent(fd, handle[n], 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  		}
>  
>  		gettimeofday(&start, NULL);
> @@ -173,7 +173,7 @@ static void thread_performance(unsigned mask)
>  
>  		for (n = 0; n < count; n++) {
>  			handle[n] = gem_create(fd, OBJECT_SIZE);
> -			ptr[n] = gem_mmap__gtt(fd, handle[n], OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +			ptr[n] = gem_mmap__device_coherent(fd, handle[n], 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  
>  			if (mask & READ) {
>  				readers[n].id = n;
> @@ -253,7 +253,7 @@ static void *no_contention(void *closure)
>  	int n;
>  
>  	for (n = 0; n < t->loops; n++) {
> -		uint32_t *ptr = gem_mmap__gtt(t->fd, t->handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +		uint32_t *ptr = gem_mmap__device_coherent(t->fd, t->handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  		memset(ptr + (rand() % 256) * 4096 / 4, 0, 4096);
>  		munmap(ptr, OBJECT_SIZE);
>  	}
> diff --git a/tests/i915/gem_gtt_cpu_tlb.c b/tests/i915/gem_gtt_cpu_tlb.c
> index 0af6a1c42..9f1cc3e4b 100644
> --- a/tests/i915/gem_gtt_cpu_tlb.c
> +++ b/tests/i915/gem_gtt_cpu_tlb.c
> @@ -59,7 +59,7 @@ create_bo(int fd)
>  	handle = gem_create(fd, OBJ_SIZE);
>  
>  	/* Fill the BO with dwords starting at start_val */
> -	data = gem_mmap__gtt(fd, handle, OBJ_SIZE, PROT_READ | PROT_WRITE);
> +	data = gem_mmap__device_coherent(fd, handle, 0, OBJ_SIZE, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < OBJ_SIZE/4; i++)
>  		data[i] = i;
> @@ -82,7 +82,7 @@ igt_simple_main
>  	handle = gem_create(fd, OBJ_SIZE);
>  
>  	/* touch one page */
> -	ptr = gem_mmap__gtt(fd, handle, OBJ_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJ_SIZE, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	*ptr = 0xdeadbeef;
>  	munmap(ptr, OBJ_SIZE);
> diff --git a/tests/i915/gem_gtt_hog.c b/tests/i915/gem_gtt_hog.c
> index 1ebef7765..da08e3a33 100644
> --- a/tests/i915/gem_gtt_hog.c
> +++ b/tests/i915/gem_gtt_hog.c
> @@ -140,11 +140,11 @@ static void run(data_t *data, int child)
>  	 * set-to-gtt-domain within the fault handler.
>  	 */
>  	if (write) {
> -		ptr = gem_mmap__gtt(data->fd, handle, size,
> +		ptr = gem_mmap__device_coherent(data->fd, handle, 0, size,
>  				    PROT_READ | PROT_WRITE);
>  		ptr[rand() % (size / 4)] = canary;
>  	} else {
> -		ptr = gem_mmap__gtt(data->fd, handle, size, PROT_READ);
> +		ptr = gem_mmap__device_coherent(data->fd, handle, 0, size, PROT_READ);
>  	}
>  	x = ptr[rand() % (size / 4)];
>  	munmap(ptr, size);
> diff --git a/tests/i915/gem_gtt_speed.c b/tests/i915/gem_gtt_speed.c
> index f0c1954fa..16c9378f9 100644
> --- a/tests/i915/gem_gtt_speed.c
> +++ b/tests/i915/gem_gtt_speed.c
> @@ -255,7 +255,7 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
>  
>  		/* prefault into gtt */
>  		{
> -			uint32_t *base = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +			uint32_t *base = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  			volatile uint32_t *ptr = base;
>  			int x = 0;
>  
> @@ -270,7 +270,7 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
>  		/* mmap read */
>  		gettimeofday(&start, NULL);
>  		for (loop = 0; loop < 1000; loop++) {
> -			uint32_t *base = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +			uint32_t *base = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  			volatile uint32_t *ptr = base;
>  			int x = 0;
>  
> @@ -355,7 +355,7 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
>  		/* mmap write */
>  		gettimeofday(&start, NULL);
>  		for (loop = 0; loop < 1000; loop++) {
> -			uint32_t *base = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +			uint32_t *base = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  			volatile uint32_t *ptr = base;
>  
>  			for (i = 0; i < size/sizeof(*ptr); i++)
> @@ -387,7 +387,7 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
>  		/* mmap clear */
>  		gettimeofday(&start, NULL);
>  		for (loop = 0; loop < 1000; loop++) {
> -			uint32_t *base = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +			uint32_t *base = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  			memset(base, 0, size);
>  			munmap(base, size);
>  		}
> @@ -409,7 +409,7 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
>  		}
>  
>  		gettimeofday(&start, NULL);{
> -			uint32_t *base = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +			uint32_t *base = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  			for (loop = 0; loop < 1000; loop++)
>  				memset(base, 0, size);
>  			munmap(base, size);
> @@ -431,7 +431,7 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
>  		/* mmap read */
>  		gettimeofday(&start, NULL);
>  		for (loop = 0; loop < 1000; loop++) {
> -			uint32_t *base = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +			uint32_t *base = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  			volatile uint32_t *ptr = base;
>  			int x = 0;
>  
> diff --git a/tests/i915/gem_largeobject.c b/tests/i915/gem_largeobject.c
> index fc9296cd2..cfb289c53 100644
> --- a/tests/i915/gem_largeobject.c
> +++ b/tests/i915/gem_largeobject.c
> @@ -64,7 +64,7 @@ test_large_object(int fd)
>  	igt_assert(ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create) == 0);
>  
>  	/* prefault */
> -	ptr = gem_mmap__gtt(fd, create.handle, obj_size,
> +	ptr = gem_mmap__device_coherent(fd, create.handle, 0, obj_size,
>  			    PROT_WRITE | PROT_READ);
>  	*ptr = 0;
>  
> diff --git a/tests/i915/gem_madvise.c b/tests/i915/gem_madvise.c
> index 7162a5c3e..56ce91cb4 100644
> --- a/tests/i915/gem_madvise.c
> +++ b/tests/i915/gem_madvise.c
> @@ -63,7 +63,7 @@ dontneed_before_mmap(void)
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
>  	gem_madvise(fd, handle, I915_MADV_DONTNEED);
> -	ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	close(fd);
>  
>  	signal(SIGSEGV, sigtrap);
> @@ -90,7 +90,7 @@ dontneed_after_mmap(void)
>  	char *ptr;
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
> -	ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	igt_assert(ptr);
>  	gem_madvise(fd, handle, I915_MADV_DONTNEED);
>  	close(fd);
> diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
> index af87ebc38..ac697c5bc 100644
> --- a/tests/i915/gem_mmap_gtt.c
> +++ b/tests/i915/gem_mmap_gtt.c
> @@ -61,7 +61,7 @@ mmap_bo(int fd, uint32_t handle, uint64_t size)
>  {
>  	void *ptr;
>  
> -	ptr = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  
>  	return ptr;
>  }
> @@ -199,7 +199,7 @@ test_read_write(int fd, enum test_read_write order)
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
>  
> -	ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  
>  	if (order == READ_BEFORE_WRITE) {
> @@ -223,8 +223,8 @@ test_read_write2(int fd, enum test_read_write order)
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
>  
> -	r = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ);
> -	w = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	r = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ);
> +	w = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  
> @@ -270,7 +270,7 @@ test_wc(int fd)
>  	gem_close(fd, handle);
>  
>  	handle = gem_create(fd, 4096);
> -	gtt = gem_mmap__gtt(fd, handle, 4096, PROT_READ | PROT_WRITE);
> +	gtt = gem_mmap__device_coherent(fd, handle, 0, 4096, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	gem_close(fd, handle);
>  
> @@ -334,7 +334,7 @@ test_pf_nonblock(int i915)
>  
>  	igt_set_timeout(1, "initial pagefaulting did not complete within 1s");
>  
> -	ptr = gem_mmap__gtt(i915, spin->handle, 4096, PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(i915, spin->handle, 0, 4096, PROT_WRITE);
>  	ptr[256] = 0;
>  	munmap(ptr, 4096);
>  
> @@ -525,7 +525,7 @@ test_coherency(int fd)
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
>  
> -	gtt = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	gtt = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	cpu = gem_mmap__cpu(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	set_domain_gtt(fd, handle);
>  
> @@ -555,7 +555,7 @@ test_clflush(int fd)
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
>  
> -	gtt = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	gtt = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	set_domain_gtt(fd, handle);
>  
>  	igt_clflush_range(gtt, OBJECT_SIZE);
> @@ -596,7 +596,7 @@ test_hang(int fd)
>  			handle = gem_create(fd, OBJECT_SIZE);
>  			gem_set_tiling(fd, handle, I915_TILING_X + i, 2048);
>  
> -			gtt[i] = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_WRITE);
> +			gtt[i] = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_WRITE);
>  			set_domain_gtt(fd, handle);
>  			gem_close(fd, handle);
>  		}
> @@ -752,7 +752,7 @@ test_huge_bo(int fd, int huge, int tiling)
>  		igt_require(__gem_set_tiling(fd, bo, tiling, pitch) == 0);
>  	igt_require(known_swizzling(fd, bo));
>  
> -	linear_pattern = gem_mmap__gtt(fd, bo, PAGE_SIZE,
> +	linear_pattern = gem_mmap__device_coherent(fd, bo, 0, PAGE_SIZE,
>  				       PROT_READ | PROT_WRITE);
>  	for (i = 0; i < PAGE_SIZE; i++)
>  		linear_pattern[i] = i;
> @@ -772,7 +772,7 @@ test_huge_bo(int fd, int huge, int tiling)
>  	munmap(ptr, size);
>  
>  	/* Obtain mapping for the object through GTT. */
> -	ptr = __gem_mmap__gtt(fd, bo, size, PROT_READ | PROT_WRITE);
> +	ptr = __gem_mmap__device_coherent(fd, bo, 0, size, PROT_READ | PROT_WRITE);
>  	igt_require_f(ptr, "Huge BO GTT mapping not supported.\n");
>  
>  	set_domain_gtt(fd, bo);
> @@ -845,7 +845,7 @@ test_huge_copy(int fd, int huge, int tiling_a, int tiling_b, int ncpus)
>  			igt_require(__gem_set_tiling(fd, bo[0], abs(tiling_a), min_tile_width(devid, tiling_a)) == 0);
>  			valid_size = rounddown(valid_size, tile_row_size(tiling_a, min_tile_width(devid, tiling_a)));
>  		}
> -		a = __gem_mmap__gtt(fd, bo[0], huge_object_size, PROT_READ | PROT_WRITE);
> +		a = __gem_mmap__device_coherent(fd, bo[0], 0, huge_object_size, PROT_READ | PROT_WRITE);
>  		igt_require(a);
>  
>  		bo[1] = gem_create(fd, huge_object_size);
> @@ -853,7 +853,7 @@ test_huge_copy(int fd, int huge, int tiling_a, int tiling_b, int ncpus)
>  			igt_require(__gem_set_tiling(fd, bo[1], abs(tiling_b), max_tile_width(devid, tiling_b)) == 0);
>  			valid_size = rounddown(valid_size, tile_row_size(tiling_b, max_tile_width(devid, tiling_b)));
>  		}
> -		b = __gem_mmap__gtt(fd, bo[1], huge_object_size, PROT_READ | PROT_WRITE);
> +		b = __gem_mmap__device_coherent(fd, bo[1], 0, huge_object_size, PROT_READ | PROT_WRITE);
>  		igt_require(b);
>  
>  		gem_set_domain(fd, bo[0], I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> @@ -951,7 +951,7 @@ test_write_cpu_read_gtt(int fd)
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
>  
> -	dst = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ);
> +	dst = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ);
>  
>  	src = gem_mmap__cpu(fd, handle, 0, OBJECT_SIZE, PROT_WRITE);
>  
> diff --git a/tests/i915/gem_mmap_offset_exhaustion.c b/tests/i915/gem_mmap_offset_exhaustion.c
> index f243507e5..4e245b12a 100644
> --- a/tests/i915/gem_mmap_offset_exhaustion.c
> +++ b/tests/i915/gem_mmap_offset_exhaustion.c
> @@ -60,7 +60,7 @@ create_and_map_bo(int fd)
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
>  
> -	ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  
>  	/* touch it to force it into the gtt */
>  	*ptr = 0;
> diff --git a/tests/i915/gem_mmap_wc.c b/tests/i915/gem_mmap_wc.c
> index 375a9b505..5aef7a47d 100644
> --- a/tests/i915/gem_mmap_wc.c
> +++ b/tests/i915/gem_mmap_wc.c
> @@ -339,7 +339,7 @@ test_write_gtt_read_wc(int fd)
>  
>  	dst = local_gem_mmap__wc(fd, handle, 0, OBJECT_SIZE, PROT_READ);
>  
> -	src = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_WRITE);
> +	src = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_WRITE);
>  
>  	memset(src, 0xaa, OBJECT_SIZE);
>  	igt_assert(memcmp(dst, src, OBJECT_SIZE) == 0);
> diff --git a/tests/i915/gem_persistent_relocs.c b/tests/i915/gem_persistent_relocs.c
> index 7c831aaaf..d559db575 100644
> --- a/tests/i915/gem_persistent_relocs.c
> +++ b/tests/i915/gem_persistent_relocs.c
> @@ -225,7 +225,7 @@ static void do_test(int fd, bool faulting_reloc)
>  		relocs_bo_handle[i] = gem_create(fd, 4096);
>  		gem_write(fd, relocs_bo_handle[i], 0, reloc, sizeof(reloc));
>  
> -		gtt_relocs_ptr[i] = gem_mmap__gtt(fd, relocs_bo_handle[i], 4096,
> +		gtt_relocs_ptr[i] = gem_mmap__device_coherent(fd, relocs_bo_handle[i], 0, 4096,
>  						  PROT_READ | PROT_WRITE);
>  		gem_set_domain(fd, relocs_bo_handle[i],
>  			       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> diff --git a/tests/i915/gem_pread.c b/tests/i915/gem_pread.c
> index 5b926ab09..f0599a96b 100644
> --- a/tests/i915/gem_pread.c
> +++ b/tests/i915/gem_pread.c
> @@ -47,7 +47,7 @@ static void *wrap_gem_mmap__gtt(int i915, uint32_t handle,
>  				uint64_t offset, uint64_t length,
>  				unsigned int prot)
>  {
> -	return gem_mmap__gtt(i915, handle, length, prot);
> +	return gem_mmap__device_coherent(i915, handle, 0, length, prot);
>  }
>  
>  static void pread_self(int i915)
> diff --git a/tests/i915/gem_pwrite.c b/tests/i915/gem_pwrite.c
> index 69f823d53..2e6d61c41 100644
> --- a/tests/i915/gem_pwrite.c
> +++ b/tests/i915/gem_pwrite.c
> @@ -47,7 +47,7 @@ static void *wrap_gem_mmap__gtt(int i915, uint32_t handle,
>  				uint64_t offset, uint64_t length,
>  				unsigned int prot)
>  {
> -	return gem_mmap__gtt(i915, handle, length, prot);
> +	return gem_mmap__device_coherent(i915, handle, 0, length, prot);
>  }
>  
>  static void pwrite_self(int i915)
> diff --git a/tests/i915/gem_pwrite_pread.c b/tests/i915/gem_pwrite_pread.c
> index 9287c677e..b215c66cd 100644
> --- a/tests/i915/gem_pwrite_pread.c
> +++ b/tests/i915/gem_pwrite_pread.c
> @@ -112,8 +112,8 @@ static void as_gtt_mmap(int fd, uint32_t src, uint32_t dst, void *buf, int len,
>  	uint32_t *src_ptr, *dst_ptr;
>  	BUILD_EXEC;
>  
> -	src_ptr = gem_mmap__gtt(fd, src, OBJECT_SIZE, PROT_WRITE);
> -	dst_ptr = gem_mmap__gtt(fd, dst, OBJECT_SIZE, PROT_READ);
> +	src_ptr = gem_mmap__device_coherent(fd, src, 0, OBJECT_SIZE, PROT_WRITE);
> +	dst_ptr = gem_mmap__device_coherent(fd, dst, 0, OBJECT_SIZE, PROT_READ);
>  
>  	while (loops--) {
>  		gem_set_domain(fd, src,
> @@ -182,8 +182,8 @@ static void test_as_gtt_mmap(int fd, uint32_t src, uint32_t dst, int len)
>  	int i;
>  	BUILD_EXEC;
>  
> -	src_ptr = gem_mmap__gtt(fd, src, OBJECT_SIZE, PROT_WRITE);
> -	dst_ptr = gem_mmap__gtt(fd, dst, OBJECT_SIZE, PROT_READ);
> +	src_ptr = gem_mmap__device_coherent(fd, src, 0, OBJECT_SIZE, PROT_WRITE);
> +	dst_ptr = gem_mmap__device_coherent(fd, dst, 0, OBJECT_SIZE, PROT_READ);
>  
>  	gem_set_domain(fd, src, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < len/4; i++)
> diff --git a/tests/i915/gem_reloc_vs_gpu.c b/tests/i915/gem_reloc_vs_gpu.c
> index ebc71a68c..5423664b4 100644
> --- a/tests/i915/gem_reloc_vs_gpu.c
> +++ b/tests/i915/gem_reloc_vs_gpu.c
> @@ -161,7 +161,7 @@ static void reloc_and_emit(int fd, drm_intel_bo *target_bo, bool faulting_reloc)
>  
>  	handle_relocs = gem_create(fd, 4096);
>  	gem_write(fd, handle_relocs, 0, reloc, sizeof(reloc));
> -	gtt_relocs = gem_mmap__gtt(fd, handle_relocs, 4096,
> +	gtt_relocs = gem_mmap__device_coherent(fd, handle_relocs, 0, 4096,
>  				   PROT_READ | PROT_WRITE);
>  
>  	exec[1].handle = special_bo->handle;
> diff --git a/tests/i915/gem_render_copy.c b/tests/i915/gem_render_copy.c
> index 5abb20367..4c69cfcdb 100644
> --- a/tests/i915/gem_render_copy.c
> +++ b/tests/i915/gem_render_copy.c
> @@ -161,7 +161,7 @@ static void copy_linear_to_gtt(data_t *data, struct igt_buf *buf,
>  	gem_set_domain(data->drm_fd, buf->bo->handle,
>  		       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  
> -	map = gem_mmap__gtt(data->drm_fd, buf->bo->handle,
> +	map = gem_mmap__device_coherent(data->drm_fd, buf->bo->handle, 0,
>  			    buf->bo->size, PROT_READ | PROT_WRITE);
>  
>  	memcpy(map, linear, buf->bo->size);
> @@ -177,7 +177,7 @@ static void copy_gtt_to_linear(data_t *data, struct igt_buf *buf,
>  	gem_set_domain(data->drm_fd, buf->bo->handle,
>  		       I915_GEM_DOMAIN_GTT, 0);
>  
> -	map = gem_mmap__gtt(data->drm_fd, buf->bo->handle,
> +	map = gem_mmap__device_coherent(data->drm_fd, buf->bo->handle, 0,
>  			    buf->bo->size, PROT_READ);
>  
>  	igt_memcpy_from_wc(linear, map, buf->bo->size);
> @@ -278,7 +278,7 @@ static void *linear_copy_aux(data_t *data, struct igt_buf *buf)
>  	gem_set_domain(data->drm_fd, buf->bo->handle,
>  		       I915_GEM_DOMAIN_GTT, 0);
>  
> -	map = gem_mmap__gtt(data->drm_fd, buf->bo->handle,
> +	map = gem_mmap__device_coherent(data->drm_fd, buf->bo->handle, 0,
>  			    buf->bo->size, PROT_READ);
>  
>  	igt_memcpy_from_wc(linear, map + buf->ccs[0].offset, aux_size);
> @@ -391,7 +391,7 @@ scratch_buf_copy(data_t *data,
>  
>  	gem_set_domain(data->drm_fd, dst->bo->handle,
>  		       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> -	linear_dst = gem_mmap__gtt(data->drm_fd, dst->bo->handle,
> +	linear_dst = gem_mmap__device_coherent(data->drm_fd, dst->bo->handle, 0,
>  				   dst->bo->size, PROT_WRITE);
>  
>  	if (src->tiling == I915_TILING_Yf) {
> @@ -419,7 +419,7 @@ scratch_buf_copy(data_t *data,
>  		gem_set_domain(data->drm_fd, src->bo->handle,
>  			       I915_GEM_DOMAIN_GTT, 0);
>  
> -		linear_src = gem_mmap__gtt(data->drm_fd, src->bo->handle,
> +		linear_src = gem_mmap__device_coherent(data->drm_fd, src->bo->handle, 0,
>  					   src->bo->size, PROT_READ);
>  
>  		for (int y = 0; y < h; y++) {
> diff --git a/tests/i915/gem_set_tiling_vs_gtt.c b/tests/i915/gem_set_tiling_vs_gtt.c
> index 618c2d05f..5e2cd2a8a 100644
> --- a/tests/i915/gem_set_tiling_vs_gtt.c
> +++ b/tests/i915/gem_set_tiling_vs_gtt.c
> @@ -64,7 +64,7 @@ igt_simple_main
>  		tile_height = 8;
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
> -	ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  
>  	/* gtt coherency is done with set_domain in libdrm, don't break that */
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> diff --git a/tests/i915/gem_set_tiling_vs_pwrite.c b/tests/i915/gem_set_tiling_vs_pwrite.c
> index 25a28191b..dcc9480ea 100644
> --- a/tests/i915/gem_set_tiling_vs_pwrite.c
> +++ b/tests/i915/gem_set_tiling_vs_pwrite.c
> @@ -60,7 +60,7 @@ igt_simple_main
>  		data[i] = i;
>  
>  	handle = gem_create(fd, OBJECT_SIZE);
> -	ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  
>  	gem_set_tiling(fd, handle, I915_TILING_X, TEST_STRIDE);
>  
> diff --git a/tests/i915/gem_shrink.c b/tests/i915/gem_shrink.c
> index 11aa9efc1..5af812a1b 100644
> --- a/tests/i915/gem_shrink.c
> +++ b/tests/i915/gem_shrink.c
> @@ -73,7 +73,7 @@ static void pread_(int fd, uint64_t alloc)
>  static void mmap_gtt(int fd, uint64_t alloc)
>  {
>  	uint32_t handle = gem_create(fd, alloc);
> -	uint32_t *ptr = gem_mmap__gtt(fd, handle, alloc, PROT_WRITE);
> +	uint32_t *ptr = gem_mmap__device_coherent(fd, handle, 0, alloc, PROT_WRITE);
>  	for (int page = 0; page < alloc>>12; page++)
>  		ptr[page<<10] = 0;
>  	munmap(ptr, alloc);
> diff --git a/tests/i915/gem_storedw_loop.c b/tests/i915/gem_storedw_loop.c
> index bbd640431..09200e83d 100644
> --- a/tests/i915/gem_storedw_loop.c
> +++ b/tests/i915/gem_storedw_loop.c
> @@ -60,7 +60,7 @@ mmap_coherent(int fd, uint32_t handle, int size)
>  		return gem_mmap__wc(fd, handle, 0, size, PROT_WRITE);
>  	} else {
>  		coherent_domain = I915_GEM_DOMAIN_GTT;
> -		return gem_mmap__gtt(fd, handle, size, PROT_WRITE);
> +		return gem_mmap__device_coherent(fd, handle, 0, size, PROT_WRITE);
>  	}
>  }
>  
> diff --git a/tests/i915/gem_streaming_writes.c b/tests/i915/gem_streaming_writes.c
> index e83d69deb..cbcd25c09 100644
> --- a/tests/i915/gem_streaming_writes.c
> +++ b/tests/i915/gem_streaming_writes.c
> @@ -86,7 +86,7 @@ static void test_streaming(int fd, int mode, int sync)
>  				  PROT_READ | PROT_WRITE);
>  		break;
>  	case 1: /* gtt */
> -		s = gem_mmap__gtt(fd, src, OBJECT_SIZE,
> +		s = gem_mmap__device_coherent(fd, src, 0, OBJECT_SIZE,
>  				  PROT_READ | PROT_WRITE);
>  		break;
>  	case 2: /* wc */
> @@ -282,7 +282,7 @@ static void test_batch(int fd, int mode, int reverse)
>  				     PROT_READ | PROT_WRITE);
>  		break;
>  	case 1: /* gtt */
> -		base = gem_mmap__gtt(fd, exec[BATCH].handle, batch_size,
> +		base = gem_mmap__device_coherent(fd, exec[BATCH].handle, 0, batch_size,
>  				     PROT_READ | PROT_WRITE);
>  		break;
>  	case 2: /* wc */
> diff --git a/tests/i915/gem_tiled_fence_blits.c b/tests/i915/gem_tiled_fence_blits.c
> index 93c79dc28..b4c8ef862 100644
> --- a/tests/i915/gem_tiled_fence_blits.c
> +++ b/tests/i915/gem_tiled_fence_blits.c
> @@ -57,7 +57,7 @@ static uint32_t create_bo(int fd, uint32_t start_val)
>  	gem_set_tiling(fd, handle, I915_TILING_X, width * 4);
>  
>  	/* Fill the BO with dwords starting at start_val */
> -	ptr = gem_mmap__gtt(fd, handle, bo_size, PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, bo_size, PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (int i = 0; i < width * height; i++)
>  		ptr[i] = start_val++;
> @@ -70,7 +70,7 @@ static void check_bo(int fd, uint32_t handle, uint32_t start_val)
>  {
>  	uint32_t *ptr;
>  
> -	ptr = gem_mmap__gtt(fd, handle, bo_size, PROT_READ);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, bo_size, PROT_READ);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, 0);
>  	igt_memcpy_from_wc(linear, ptr, bo_size);
>  	munmap(ptr, bo_size);
> diff --git a/tests/i915/gem_tiled_pread_basic.c b/tests/i915/gem_tiled_pread_basic.c
> index 1ac9eccdb..f68bc31a8 100644
> --- a/tests/i915/gem_tiled_pread_basic.c
> +++ b/tests/i915/gem_tiled_pread_basic.c
> @@ -72,7 +72,7 @@ create_bo(int fd)
>  	gem_set_tiling(fd, handle, I915_TILING_X, WIDTH * sizeof(uint32_t));
>  
>  	/* Fill the BO with dwords starting at start_val */
> -	data = gem_mmap__gtt(fd, handle, sizeof(linear),
> +	data = gem_mmap__device_coherent(fd, handle, 0, sizeof(linear),
>  			     PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
> diff --git a/tests/i915/gem_tiled_pread_pwrite.c b/tests/i915/gem_tiled_pread_pwrite.c
> index 0988a4e86..3d0635bae 100644
> --- a/tests/i915/gem_tiled_pread_pwrite.c
> +++ b/tests/i915/gem_tiled_pread_pwrite.c
> @@ -80,7 +80,7 @@ create_bo_and_fill(int fd)
>  	gem_set_tiling(fd, handle, current_tiling_mode, WIDTH * sizeof(uint32_t));
>  
>  	/* Fill the BO with dwords starting at start_val */
> -	data = gem_mmap__gtt(fd, handle, sizeof(linear),
> +	data = gem_mmap__device_coherent(fd, handle, 0, sizeof(linear),
>  			     PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
> @@ -131,7 +131,7 @@ igt_simple_main
>  		gem_write(fd, handle_target, 0, linear, sizeof(linear));
>  
>  		/* Check the target bo's contents. */
> -		data = gem_mmap__gtt(fd, handle_target, sizeof(linear), PROT_READ);
> +		data = gem_mmap__device_coherent(fd, handle_target, 0, sizeof(linear), PROT_READ);
>  		n = 0;
>  		for (int pfn = 0; pfn < sizeof(linear)/PAGE_SIZE; pfn++) {
>  			uint32_t page[PAGE_SIZE/sizeof(uint32_t)];
> diff --git a/tests/i915/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c
> index 9e0540ba9..8a31e70d4 100644
> --- a/tests/i915/gem_tiled_swapping.c
> +++ b/tests/i915/gem_tiled_swapping.c
> @@ -78,7 +78,7 @@ create_bo(int fd)
>  	handle = gem_create(fd, LINEAR_DWORDS);
>  	gem_set_tiling(fd, handle, current_tiling_mode, WIDTH * sizeof(uint32_t));
>  
> -	data = __gem_mmap__gtt(fd, handle, LINEAR_DWORDS, PROT_READ | PROT_WRITE);
> +	data = __gem_mmap__device_coherent(fd, handle, 0, LINEAR_DWORDS, PROT_READ | PROT_WRITE);
>  	if (data == NULL) {
>  		gem_close(fd, handle);
>  		return 0;
> @@ -94,7 +94,7 @@ fill_bo(int fd, uint32_t handle)
>  	uint32_t *data;
>  	int i;
>  
> -	data = gem_mmap__gtt(fd, handle, LINEAR_DWORDS,
> +	data = gem_mmap__device_coherent(fd, handle, 0, LINEAR_DWORDS,
>  			     PROT_READ | PROT_WRITE);
>  
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> @@ -109,7 +109,7 @@ check_bo(int fd, uint32_t handle)
>  	uint32_t *data;
>  	int j;
>  
> -	data = gem_mmap__gtt(fd, handle, LINEAR_DWORDS, PROT_READ);
> +	data = gem_mmap__device_coherent(fd, handle, 0, LINEAR_DWORDS, PROT_READ);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, 0);
>  	j = rand() % (WIDTH * HEIGHT);
>  	igt_assert_f(data[j] == j, "mismatch at %i: %i\n", j, data[j]);
> diff --git a/tests/i915/gem_tiled_wb.c b/tests/i915/gem_tiled_wb.c
> index b7f352fc7..2f48ab3e0 100644
> --- a/tests/i915/gem_tiled_wb.c
> +++ b/tests/i915/gem_tiled_wb.c
> @@ -71,7 +71,7 @@ create_bo(int fd)
>  	/* Write throught the fence to tiled the data.
>  	 * We then manually detile on reading back through the mmap(wc).
>  	 */
> -	data = gem_mmap__gtt(fd, handle, SIZE, PROT_READ | PROT_WRITE);
> +	data = gem_mmap__device_coherent(fd, handle, 0, SIZE, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
>  		data[i] = i;
> diff --git a/tests/i915/gem_tiled_wc.c b/tests/i915/gem_tiled_wc.c
> index 845ec2280..85116b252 100644
> --- a/tests/i915/gem_tiled_wc.c
> +++ b/tests/i915/gem_tiled_wc.c
> @@ -65,7 +65,7 @@ create_bo(int fd)
>  	gem_set_tiling(fd, handle, I915_TILING_X, WIDTH * sizeof(uint32_t));
>  
>  	/* Fill the BO with dwords starting at start_val */
> -	data = gem_mmap__gtt(fd, handle, SIZE, PROT_READ | PROT_WRITE);
> +	data = gem_mmap__device_coherent(fd, handle, 0, SIZE, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
>  		data[i] = i;
> diff --git a/tests/i915/gem_tiling_max_stride.c b/tests/i915/gem_tiling_max_stride.c
> index 0e99d979f..4e166311c 100644
> --- a/tests/i915/gem_tiling_max_stride.c
> +++ b/tests/i915/gem_tiling_max_stride.c
> @@ -99,7 +99,7 @@ igt_simple_main
>  
>  	handle = gem_create(fd, size);
>  
> -	ptr = gem_mmap__gtt(fd, handle, size, PROT_READ | PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(fd, handle, 0, size, PROT_READ | PROT_WRITE);
>  
>  	test_invalid_tiling(fd, handle, 0);
>  	test_invalid_tiling(fd, handle, 64);
> diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
> index a8d3783fb..2a6a03a79 100644
> --- a/tests/i915/gem_userptr_blits.c
> +++ b/tests/i915/gem_userptr_blits.c
> @@ -92,7 +92,7 @@ static bool has_gtt_mmap(int i915)
>  		goto out_ptr;
>  	igt_assert(handle != 0);
>  
> -	map = __gem_mmap__gtt(i915, handle, 4096, PROT_WRITE);
> +	map = __gem_mmap__device_coherent(i915, handle, 0, 4096, PROT_WRITE);
>  	if (map)
>  		munmap(map, 4096);
>  
> @@ -654,7 +654,7 @@ static void test_process_exit(int fd, int flags)
>  		handle = create_userptr_bo(fd, sizeof(linear));
>  
>  		if (flags & PE_GTT_MAP) {
> -			uint32_t *ptr = __gem_mmap__gtt(fd, handle, sizeof(linear), PROT_READ | PROT_WRITE);
> +			uint32_t *ptr = __gem_mmap__device_coherent(fd, handle, 0, sizeof(linear), PROT_READ | PROT_WRITE);
>  			if (ptr)
>  				*ptr = 0;
>  		}
> @@ -883,7 +883,7 @@ static void *umap(int fd, uint32_t handle)
>  	void *ptr;
>  
>  	if (can_gtt_mmap) {
> -		ptr = gem_mmap__gtt(fd, handle, sizeof(linear),
> +		ptr = gem_mmap__device_coherent(fd, handle, 0, sizeof(linear),
>  				    PROT_READ | PROT_WRITE);
>  	} else {
>  		uint32_t tmp = gem_create(fd, sizeof(linear));
> @@ -1252,11 +1252,11 @@ static void test_readonly_mmap(int i915)
>  	igt_clflush_range(pages, sz);
>  	original = g_compute_checksum_for_data(G_CHECKSUM_SHA1, pages, sz);
>  
> -	ptr = __gem_mmap__gtt(i915, handle, sz, PROT_WRITE);
> +	ptr = __gem_mmap__device_coherent(i915, handle, 0, sz, PROT_WRITE);
>  	igt_assert(ptr == NULL);
>  
>  	/* Optional kernel support for GTT mmaps of userptr */
> -	ptr = __gem_mmap__gtt(i915, handle, sz, PROT_READ);
> +	ptr = __gem_mmap__device_coherent(i915, handle, 0, sz, PROT_READ);
>  	gem_close(i915, handle);
>  
>  	if (ptr) { /* Check that a write into the GTT readonly map fails */
> diff --git a/tests/i915/gen3_mixed_blits.c b/tests/i915/gen3_mixed_blits.c
> index 03a289df7..553c65058 100644
> --- a/tests/i915/gen3_mixed_blits.c
> +++ b/tests/i915/gen3_mixed_blits.c
> @@ -414,7 +414,7 @@ create_bo(int fd, uint32_t val, int tiling)
>  	gem_set_tiling(fd, handle, tiling, WIDTH*4);
>  
>  	/* Fill the BO with dwords starting at val */
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4,
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4,
>  			  PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
> @@ -430,7 +430,7 @@ check_bo(int fd, uint32_t handle, uint32_t val)
>  	uint32_t *v;
>  	int i;
>  
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4, PROT_READ);
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4, PROT_READ);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, 0);
>  	for (i = 0; i < WIDTH*HEIGHT; i++) {
>  		igt_assert_f(v[i] == val,
> diff --git a/tests/i915/gen3_render_mixed_blits.c b/tests/i915/gen3_render_mixed_blits.c
> index 15895c217..b72dab826 100644
> --- a/tests/i915/gen3_render_mixed_blits.c
> +++ b/tests/i915/gen3_render_mixed_blits.c
> @@ -308,7 +308,7 @@ create_bo(int fd, uint32_t val, int tiling)
>  	gem_set_tiling(fd, handle, tiling, WIDTH*4);
>  
>  	/* Fill the BO with dwords starting at val */
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4,
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4,
>  			  PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
> @@ -324,7 +324,7 @@ check_bo(int fd, uint32_t handle, uint32_t val)
>  	uint32_t *v;
>  	int i;
>  
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4, PROT_READ);
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4, PROT_READ);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, 0);
>  	for (i = 0; i < WIDTH*HEIGHT; i++) {
>  		igt_assert_f(v[i] == val,
> diff --git a/tests/i915/gen3_render_tiledx_blits.c b/tests/i915/gen3_render_tiledx_blits.c
> index f1a17714b..613fa2509 100644
> --- a/tests/i915/gen3_render_tiledx_blits.c
> +++ b/tests/i915/gen3_render_tiledx_blits.c
> @@ -295,7 +295,7 @@ create_bo(int fd, uint32_t val)
>  	gem_set_tiling(fd, handle, I915_TILING_X, WIDTH*4);
>  
>  	/* Fill the BO with dwords starting at val */
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4,
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4,
>  			  PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
> @@ -311,7 +311,7 @@ check_bo(int fd, uint32_t handle, uint32_t val)
>  	uint32_t *v;
>  	int i;
>  
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4, PROT_READ);
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4, PROT_READ);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, 0);
>  	for (i = 0; i < WIDTH*HEIGHT; i++) {
>  		igt_assert_f(v[i] == val,
> diff --git a/tests/i915/gen3_render_tiledy_blits.c b/tests/i915/gen3_render_tiledy_blits.c
> index 94127b62c..742ffc93b 100644
> --- a/tests/i915/gen3_render_tiledy_blits.c
> +++ b/tests/i915/gen3_render_tiledy_blits.c
> @@ -295,7 +295,7 @@ create_bo(int fd, uint32_t val)
>  	gem_set_tiling(fd, handle, I915_TILING_Y, WIDTH*4);
>  
>  	/* Fill the BO with dwords starting at val */
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4,
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4,
>  			  PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < WIDTH*HEIGHT; i++)
> @@ -311,7 +311,7 @@ check_bo(int fd, uint32_t handle, uint32_t val)
>  	uint32_t *v;
>  	int i;
>  
> -	v = gem_mmap__gtt(fd, handle, WIDTH * HEIGHT * 4, PROT_READ);
> +	v = gem_mmap__device_coherent(fd, handle, 0, WIDTH * HEIGHT * 4, PROT_READ);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, 0);
>  	for (i = 0; i < WIDTH*HEIGHT; i++) {
>  		igt_assert_f(v[i] == val,
> diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c
> index f5f813c3d..26e1cbf8a 100644
> --- a/tests/i915/i915_pm_rpm.c
> +++ b/tests/i915/i915_pm_rpm.c
> @@ -1020,7 +1020,7 @@ static void gem_mmap_subtest(bool gtt_mmap)
>  	handle = gem_create(drm_fd, buf_size);
>  
>  	if (gtt_mmap) {
> -		gem_buf = gem_mmap__gtt(drm_fd, handle, buf_size,
> +		gem_buf = gem_mmap__device_coherent(drm_fd, handle, 0, buf_size,
>  					PROT_READ | PROT_WRITE);
>  	}
>  	else {
> @@ -1057,7 +1057,7 @@ static void gem_mmap_subtest(bool gtt_mmap)
>  	disable_all_screens_and_wait(&ms_data);
>  
>  	if (gtt_mmap) {
> -		gem_buf = gem_mmap__gtt(drm_fd, handle, buf_size,
> +		gem_buf = gem_mmap__device_coherent(drm_fd, handle, 0, buf_size,
>  					PROT_READ | PROT_WRITE);
>  	}
>  	else {
> @@ -1392,8 +1392,8 @@ static void gem_evict_pwrite_subtest(void)
>  
>  	for (n = 0; n < num_trash_bos; n++) {
>  		trash_bos[n].handle = gem_create(drm_fd, 1024*1024);
> -		trash_bos[n].ptr = gem_mmap__gtt(drm_fd, trash_bos[n].handle,
> -						 1024*1024, PROT_WRITE);
> +		trash_bos[n].ptr = gem_mmap__device_coherent(drm_fd, trash_bos[n].handle,
> +						  0, 1024*1024, PROT_WRITE);
>  		*trash_bos[n].ptr = 0;
>  	}
>  
> @@ -1535,7 +1535,7 @@ static void fill_igt_fb(struct igt_fb *fb, uint32_t color)
>  	int i;
>  	uint32_t *ptr;
>  
> -	ptr = gem_mmap__gtt(drm_fd, fb->gem_handle, fb->size, PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(drm_fd, fb->gem_handle, 0, fb->size, PROT_WRITE);
>  	for (i = 0; i < fb->size/sizeof(uint32_t); i++)
>  		ptr[i] = color;
>  	igt_assert(munmap(ptr, fb->size) == 0);
> @@ -1827,8 +1827,8 @@ static void pm_test_tiling(void)
>  		for (j = 0, k = 1 << off_bit;
>  		     k <= gtt_obj_max_size; k <<= 1, j++) {
>  			handles[j] = gem_create(drm_fd, k);
> -			gem_bufs[j] = gem_mmap__gtt(drm_fd, handles[j],
> -						    k, PROT_WRITE);
> +			gem_bufs[j] = gem_mmap__device_coherent(drm_fd, handles[j],
> +						    0, k, PROT_WRITE);
>  			memset(gem_bufs[j], 0x0, k);
>  		}
>  
> @@ -1872,7 +1872,7 @@ static void pm_test_caching(void)
>  
>  	handle = gem_create(drm_fd, gtt_obj_max_size);
>  	default_cache_level = gem_get_caching(drm_fd, handle);
> -	gem_buf = gem_mmap__gtt(drm_fd, handle, gtt_obj_max_size, PROT_WRITE);
> +	gem_buf = gem_mmap__device_coherent(drm_fd, handle, 0, gtt_obj_max_size, PROT_WRITE);
>  
>  	for (i = 0; i < ARRAY_SIZE(cache_levels); i++) {
>  		igt_assert(wait_for_suspended());
> @@ -1918,7 +1918,7 @@ static void fences_subtest(bool dpms)
>  	gem_get_tiling(drm_fd, params.fb.gem_handle, &tiling, &swizzle);
>  	igt_assert(tiling);
>  
> -	buf_ptr = gem_mmap__gtt(drm_fd, params.fb.gem_handle, params.fb.size,
> +	buf_ptr = gem_mmap__device_coherent(drm_fd, params.fb.gem_handle, 0, params.fb.size,
>  				PROT_WRITE | PROT_READ);
>  	for (i = 0; i < params.fb.size/sizeof(uint32_t); i++)
>  		buf_ptr[i] = i;
> diff --git a/tests/i915/i915_suspend.c b/tests/i915/i915_suspend.c
> index 5a2ec7669..8f0dc37ea 100644
> --- a/tests/i915/i915_suspend.c
> +++ b/tests/i915/i915_suspend.c
> @@ -57,12 +57,12 @@ test_fence_restore(int fd, bool tiled2untiled, bool hibernate)
>  	handle_tiled = gem_create(fd, OBJECT_SIZE);
>  
>  	/* Access the buffer objects in the order we want to have the laid out. */
> -	ptr1 = gem_mmap__gtt(fd, handle1, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr1 = gem_mmap__device_coherent(fd, handle1, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle1, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < OBJECT_SIZE/sizeof(uint32_t); i++)
>  		ptr1[i] = i;
>  
> -	ptr_tiled = gem_mmap__gtt(fd, handle_tiled, OBJECT_SIZE,
> +	ptr_tiled = gem_mmap__device_coherent(fd, handle_tiled, 0, OBJECT_SIZE,
>  				  PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle_tiled,
>  		       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> @@ -71,7 +71,7 @@ test_fence_restore(int fd, bool tiled2untiled, bool hibernate)
>  	for (i = 0; i < OBJECT_SIZE/sizeof(uint32_t); i++)
>  		ptr_tiled[i] = i;
>  
> -	ptr2 = gem_mmap__gtt(fd, handle2, OBJECT_SIZE, PROT_READ | PROT_WRITE);
> +	ptr2 = gem_mmap__device_coherent(fd, handle2, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, handle2, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	for (i = 0; i < OBJECT_SIZE/sizeof(uint32_t); i++)
>  		ptr2[i] = i;
> diff --git a/tests/kms_available_modes_crc.c b/tests/kms_available_modes_crc.c
> index d1b7b5170..b7ae0a60f 100644
> --- a/tests/kms_available_modes_crc.c
> +++ b/tests/kms_available_modes_crc.c
> @@ -61,7 +61,7 @@ static void do_write(int fd, int handle, void *buf, int size)
>  {	void *screenbuf;
>  
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
> -	screenbuf = gem_mmap__gtt(fd, handle, size, PROT_WRITE);
> +	screenbuf = gem_mmap__device_coherent(fd, handle, 0, size, PROT_WRITE);
>  	memcpy(screenbuf, buf, size);
>  	gem_munmap(screenbuf, size);
>  	gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> diff --git a/tests/kms_fence_pin_leak.c b/tests/kms_fence_pin_leak.c
> index 8c9e10a56..627f8d89d 100644
> --- a/tests/kms_fence_pin_leak.c
> +++ b/tests/kms_fence_pin_leak.c
> @@ -89,7 +89,7 @@ static void touch_fences(data_t *data)
>  		uint32_t handle = data->bos[i]->handle;
>  		void *ptr;
>  
> -		ptr = gem_mmap__gtt(data->drm_fd, handle, 4096, PROT_WRITE);
> +		ptr = gem_mmap__device_coherent(data->drm_fd, handle, 0, 4096, PROT_WRITE);
>  		gem_set_domain(data->drm_fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  		memset(ptr, 0, 4);
>  		munmap(ptr, 4096);
> diff --git a/tests/kms_psr.c b/tests/kms_psr.c
> index d9be87d92..fe6801bab 100644
> --- a/tests/kms_psr.c
> +++ b/tests/kms_psr.c
> @@ -270,7 +270,7 @@ static void run_test(data_t *data)
>  		expected = "GREEN";
>  		break;
>  	case MMAP_GTT:
> -		ptr = gem_mmap__gtt(data->drm_fd, handle, data->mod_size,
> +		ptr = gem_mmap__device_coherent(data->drm_fd, handle, 0, data->mod_size,
>  				    PROT_WRITE);
>  		gem_set_domain(data->drm_fd, handle,
>  			       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> diff --git a/tests/prime_mmap.c b/tests/prime_mmap.c
> index fc9857844..b8c2400b0 100644
> --- a/tests/prime_mmap.c
> +++ b/tests/prime_mmap.c
> @@ -86,7 +86,7 @@ test_correct(void)
>  	igt_assert(errno == 0);
>  
>  	/* Check correctness vs GEM_MMAP_GTT */
> -	ptr1 = gem_mmap__gtt(fd, handle, BO_SIZE, PROT_READ);
> +	ptr1 = gem_mmap__device_coherent(fd, handle, 0, BO_SIZE, PROT_READ);
>  	ptr2 = mmap(NULL, BO_SIZE, PROT_READ, MAP_SHARED, dma_buf_fd, 0);
>  	igt_assert(ptr1 != MAP_FAILED);
>  	igt_assert(ptr2 != MAP_FAILED);
> diff --git a/tests/prime_mmap_coherency.c b/tests/prime_mmap_coherency.c
> index 39538767c..32d78ee1a 100644
> --- a/tests/prime_mmap_coherency.c
> +++ b/tests/prime_mmap_coherency.c
> @@ -69,7 +69,7 @@ static int test_read_flush(void)
>  
>  	/* STEP #3: write 0x11 into BO 1. */
>  	bo_2 = drm_intel_bo_alloc(bufmgr, "BO 2", width * height * 4, 4096);
> -	ptr_gtt = gem_mmap__gtt(fd, bo_2->handle, width * height, PROT_READ | PROT_WRITE);
> +	ptr_gtt = gem_mmap__device_coherent(fd, bo_2->handle, 0, width * height, PROT_READ | PROT_WRITE);
>  	gem_set_domain(fd, bo_2->handle,
>  		       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
>  	memset(ptr_gtt, 0xc5, width * height);
> diff --git a/tests/prime_vgem.c b/tests/prime_vgem.c
> index 6595818c1..6096a35a6 100644
> --- a/tests/prime_vgem.c
> +++ b/tests/prime_vgem.c
> @@ -145,7 +145,7 @@ static void test_fence_mmap(int i915, int vgem)
>  	igt_fork(child, 1) {
>  		close(master[0]);
>  		close(slave[1]);
> -		ptr = gem_mmap__gtt(i915, handle, 4096*1024, PROT_READ);
> +		ptr = gem_mmap__device_coherent(i915, handle, 0, 4096*1024, PROT_READ);
>  
>  		gem_set_domain(i915, handle, I915_GEM_DOMAIN_GTT, 0);
>  		for (i = 0; i < 1024; i++)
> @@ -225,7 +225,7 @@ static void test_gtt(int vgem, int i915)
>  	handle = prime_fd_to_handle(i915, dmabuf);
>  	close(dmabuf);
>  
> -	ptr = gem_mmap__gtt(i915, handle, scratch.size, PROT_WRITE);
> +	ptr = gem_mmap__device_coherent(i915, handle, 0, scratch.size, PROT_WRITE);
>  	for (i = 0; i < 1024; i++)
>  		ptr[1024*i] = i;
>  	munmap(ptr, scratch.size);
> @@ -237,7 +237,7 @@ static void test_gtt(int vgem, int i915)
>  	}
>  	munmap(ptr, scratch.size);
>  
> -	ptr = gem_mmap__gtt(i915, handle, scratch.size, PROT_READ);
> +	ptr = gem_mmap__device_coherent(i915, handle, 0, scratch.size, PROT_READ);
>  	for (i = 0; i < 1024; i++)
>  		igt_assert_eq(ptr[1024*i], ~i);
>  	munmap(ptr, scratch.size);
> @@ -312,7 +312,7 @@ static void test_gtt_interleaved(int vgem, int i915)
>  	 * not know about the shortcommings...
>  	 */
>  	ptr = vgem_mmap(vgem, &scratch, PROT_WRITE);
> -	gtt = gem_mmap__gtt(i915, handle, scratch.size, PROT_WRITE);
> +	gtt = gem_mmap__device_coherent(i915, handle, 0, scratch.size, PROT_WRITE);
>  	for (i = 0; i < 1024; i++) {
>  		gtt[1024*i] = i;
>  		/* The read from WC should act as a flush for the GTT wcb */
> diff --git a/tools/intel_dp_compliance.c b/tools/intel_dp_compliance.c
> index 5cc3d37a7..09942935b 100644
> --- a/tools/intel_dp_compliance.c
> +++ b/tools/intel_dp_compliance.c
> @@ -451,8 +451,8 @@ static int setup_framebuffers(struct connector *dp_conn)
>  	igt_assert(dp_conn->fb);
>  
>  	/* Map the mapping of GEM object into the virtual address space */
> -	dp_conn->pixmap = gem_mmap__gtt(drm_fd,
> -					dp_conn->fb_video_pattern.gem_handle,
> +	dp_conn->pixmap = gem_mmap__device_coherent(drm_fd,
> +					dp_conn->fb_video_pattern.gem_handle, 0,
>  					dp_conn->fb_video_pattern.size,
>  					PROT_READ | PROT_WRITE);
>  	if (dp_conn->pixmap == NULL)
> @@ -481,8 +481,8 @@ static int setup_failsafe_framebuffer(struct connector *dp_conn)
>  	igt_assert(dp_conn->failsafe_fb);
>  
>  	/* Map the mapping of GEM object into the virtual address space */
> -	dp_conn->failsafe_pixmap = gem_mmap__gtt(drm_fd,
> -						 dp_conn->fb_failsafe_pattern.gem_handle,
> +	dp_conn->failsafe_pixmap = gem_mmap__device_coherent(drm_fd,
> +						 dp_conn->fb_failsafe_pattern.gem_handle, 0,
>  						 dp_conn->fb_failsafe_pattern.size,
>  						 PROT_READ | PROT_WRITE);
>  	if (dp_conn->failsafe_pixmap == NULL)
> @@ -518,8 +518,8 @@ static int setup_video_pattern_framebuffer(struct connector *dp_conn)
>  	igt_assert(dp_conn->test_pattern.fb);
>  
>  	/* Map the mapping of GEM object into the virtual address space */
> -	dp_conn->test_pattern.pixmap = gem_mmap__gtt(drm_fd,
> -						     dp_conn->test_pattern.fb_pattern.gem_handle,
> +	dp_conn->test_pattern.pixmap = gem_mmap__device_coherent(drm_fd,
> +						     dp_conn->test_pattern.fb_pattern.gem_handle, 0,
>  						     dp_conn->test_pattern.fb_pattern.size,
>  						     PROT_READ | PROT_WRITE);
>  	if (dp_conn->test_pattern.pixmap == NULL)
> -- 
> 2.24.1
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev


More information about the igt-dev mailing list