diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2020-12-10 10:13:45 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2020-12-10 10:45:08 +0000 |
commit | c79d4e88f4162905da400360b6fa4940122f3a2c (patch) | |
tree | 33b12d310be20aa3d9de8b977483bc7763547499 /tests | |
parent | 7d87d0f1a22544e6a78dc0920b3f54b64144a029 (diff) |
i915/gem_mmap_gtt: Replace gem_threaded_access_tiled
Concurrent access to a mmap is covered by gem_mmap_gtt/concurrent,
if we add tiled access to it, we make gem_threaded_access_tiled entirely
redundant.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rw-r--r-- | tests/Makefile.sources | 3 | ||||
-rw-r--r-- | tests/i915/gem_mmap_gtt.c | 21 | ||||
-rw-r--r-- | tests/i915/gem_threaded_access_tiled.c | 122 | ||||
-rw-r--r-- | tests/meson.build | 1 |
5 files changed, 15 insertions, 134 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 9f0dda7d..415271ad 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -118,8 +118,6 @@ gem_mmap_wc_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS) gem_mmap_wc_LDADD = $(LDADD) -lpthread gem_sync_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS) gem_sync_LDADD = $(LDADD) -lpthread -gem_threaded_access_tiled_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS) -gem_threaded_access_tiled_LDADD = $(LDADD) -lpthread gem_tiled_swapping_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS) gem_tiled_swapping_LDADD = $(LDADD) -lpthread i915_pm_rc6_residency_LDADD = $(LDADD) $(top_builddir)/lib/libigt_perf.la diff --git a/tests/Makefile.sources b/tests/Makefile.sources index 15fb5604..d9c8f610 100644 --- a/tests/Makefile.sources +++ b/tests/Makefile.sources @@ -422,9 +422,6 @@ gem_streaming_writes_SOURCES = i915/gem_streaming_writes.c TESTS_progs += gem_sync gem_sync_SOURCES = i915/gem_sync.c -TESTS_progs += gem_threaded_access_tiled -gem_threaded_access_tiled_SOURCES = i915/gem_threaded_access_tiled.c - TESTS_progs += gem_tiled_blits gem_tiled_blits_SOURCES = i915/gem_tiled_blits.c diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c index 6ecff12b..61fbc5bc 100644 --- a/tests/i915/gem_mmap_gtt.c +++ b/tests/i915/gem_mmap_gtt.c @@ -72,12 +72,14 @@ mmap_bo(int fd, uint32_t handle, uint64_t size) } static void * -create_pointer_size(int fd, uint64_t size) +create_pointer_size(int fd, uint64_t size, int tiling) { uint32_t handle; void *ptr; handle = gem_create(fd, size); + if (tiling) + gem_set_tiling(fd, handle, tiling, 1024); ptr = mmap_bo(fd, handle, size); @@ -89,7 +91,7 @@ create_pointer_size(int fd, uint64_t size) static void * create_pointer(int fd) { - return create_pointer_size(fd, OBJECT_SIZE); + return create_pointer_size(fd, OBJECT_SIZE, I915_TILING_NONE); } static void @@ -1180,20 +1182,23 @@ thread_fault_concurrent(void *closure) } static void -test_fault_concurrent(int fd) +test_fault_concurrent(int fd, int tiling) { uint32_t *ptr[32]; struct thread_fault_concurrent thread[64]; int *ctl; int n; - ctl = create_pointer_size(fd, 4096); + if (tiling != I915_TILING_NONE) + igt_require(gem_available_fences(fd) > 0); + + ctl = create_pointer_size(fd, 4096, I915_TILING_NONE); *ctl = 1; for (n = 0; n < 32; n++) { uint32_t sz = (n + 1) << 19; /* 512KiB increments */ - ptr[n] = create_pointer_size(fd, sz); + ptr[n] = create_pointer_size(fd, sz, tiling); *ptr[n] = sz / sizeof(uint32_t); /* num_elems for convenience */ } @@ -1301,7 +1306,11 @@ igt_main igt_subtest("basic-write-read-distinct") test_read_write2(fd, READ_AFTER_WRITE); igt_subtest("fault-concurrent") - test_fault_concurrent(fd); + test_fault_concurrent(fd, I915_TILING_NONE); + igt_subtest("fault-concurrent-X") + test_fault_concurrent(fd, I915_TILING_X); + igt_subtest("fault-concurrent-Y") + test_fault_concurrent(fd, I915_TILING_Y); igt_subtest("basic-write-cpu-read-gtt") test_write_cpu_read_gtt(fd); igt_subtest("basic-wc") diff --git a/tests/i915/gem_threaded_access_tiled.c b/tests/i915/gem_threaded_access_tiled.c deleted file mode 100644 index 53b475a4..00000000 --- a/tests/i915/gem_threaded_access_tiled.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2012 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Authors: - * Mika Kuoppala <mika.kuoppala@intel.com> - */ - -#include "igt.h" -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <unistd.h> -#include <pthread.h> - -IGT_TEST_DESCRIPTION("Check parallel access to tiled memory."); - -/* Testcase: check parallel access to tiled memory - * - * Parallel access to tiled memory caused sigbus - */ - -#define NUM_THREADS 2 -#define WIDTH 4096 -#define HEIGHT 4096 - -struct thread_ctx { - struct intel_buf *buf; -}; - -static struct buf_ops *bops; -static struct thread_ctx tctx[NUM_THREADS]; - -static void *copy_fn(void *p) -{ - unsigned char *buf; - struct thread_ctx *c = p; - - buf = malloc(WIDTH * HEIGHT); - if (buf == NULL) - return (void *)1; - - memcpy(buf, c->buf->ptr, WIDTH * HEIGHT); - - free(buf); - return (void *)0; -} - -static int copy_tile_threaded(struct intel_buf *buf) -{ - int i; - int r; - pthread_t thr[NUM_THREADS]; - void *status; - - for (i = 0; i < NUM_THREADS; i++) { - tctx[i].buf = buf; - r = pthread_create(&thr[i], NULL, copy_fn, (void *)&tctx[i]); - igt_assert_eq(r, 0); - } - - for (i = 0; i < NUM_THREADS; i++) { - pthread_join(thr[i], &status); - igt_assert(status == 0); - } - - return 0; -} - -igt_simple_main -{ - int fd; - struct intel_buf *buf; - uint32_t tiling_mode = I915_TILING_Y; - int r; - - fd = drm_open_driver(DRIVER_INTEL); - igt_assert(fd >= 0); - - igt_require(gem_available_fences(fd) > 0); - - bops = buf_ops_create(fd); - - buf = intel_buf_create(bops, WIDTH, HEIGHT, 8, 0, tiling_mode, - I915_COMPRESSION_NONE); - igt_assert(buf); - - buf->ptr = gem_mmap__gtt(fd, buf->handle, buf->surface[0].size, - PROT_WRITE | PROT_READ); - gem_set_domain(fd, buf->handle, - I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); - - r = copy_tile_threaded(buf); - igt_assert(!r); - - r = gem_munmap(buf->ptr, buf->surface[0].size); - buf->ptr = NULL; - igt_assert(!r); - - intel_buf_destroy(buf); - buf_ops_destroy(bops); - - close(fd); -} diff --git a/tests/meson.build b/tests/meson.build index a2decf4a..9d600670 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -207,7 +207,6 @@ i915_progs = [ 'gem_spin_batch', 'gem_streaming_writes', 'gem_sync', - 'gem_threaded_access_tiled', 'gem_tiled_blits', 'gem_tiled_fence_blits', 'gem_tiled_partial_pwrite_pread', |