diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2020-08-10 11:00:34 +0200 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2020-08-11 13:47:02 +0200 |
commit | 39e9aa1032a4e60f776f34b3ccf4fb728abbfe5c (patch) | |
tree | c1c771d5351490f9fb8e50fae7acd997ef44ce61 /tests/i915/gem_exec_reloc.c | |
parent | fc9f95086fc23f7f2226f7603241fbad3a214ee1 (diff) |
tests/i915: Remove subtests that rely on async relocation behavior
These tests are no longer valid, as they require behavior that
was never accepted upstream; it assumes that relocations don't
block synchronously, and the reservation_object lock is only
held at the end of command submission to install the fences.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'tests/i915/gem_exec_reloc.c')
-rw-r--r-- | tests/i915/gem_exec_reloc.c | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c index d50a8b69..85df3da7 100644 --- a/tests/i915/gem_exec_reloc.c +++ b/tests/i915/gem_exec_reloc.c @@ -424,76 +424,6 @@ static void many_active(int i915, unsigned engine) } } -static void __wide_active(int i915, unsigned engine, unsigned long count) -{ - struct drm_i915_gem_relocation_entry *reloc = - calloc(count, sizeof(*reloc)); - struct drm_i915_gem_exec_object2 *obj = - calloc(count + 1, sizeof(*obj)); - struct drm_i915_gem_execbuffer2 execbuf = { - .buffers_ptr = to_user_pointer(obj), - .buffer_count = count + 1, - .flags = engine | I915_EXEC_HANDLE_LUT, - }; - igt_spin_t *spin; - - for (unsigned long i = 0; i < count; i++) { - obj[i].handle = gem_create(i915, 4096); - obj[i].flags = EXEC_OBJECT_WRITE; - obj[i].flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS; - } - - spin = __igt_spin_new(i915, - .engine = engine, - .flags = (IGT_SPIN_FENCE_OUT | - IGT_SPIN_NO_PREEMPTION)); - obj[count] = spin->obj[1]; - gem_execbuf(i915, &execbuf); /* mark all the objects as active */ - - for (unsigned long i = 0; i < count; i++) { - reloc[i].target_handle = i; - reloc[i].presumed_offset = ~0ull; - obj[i].relocs_ptr = to_user_pointer(&reloc[i]); - obj[i].relocation_count = 1; - } - gem_execbuf(i915, &execbuf); /* relocation onto active objects */ - - igt_assert_eq(sync_fence_status(spin->out_fence), 0); - igt_spin_free(i915, spin); - - for (unsigned long i = 0; i < count; i++) { - uint64_t addr; - - gem_read(i915, obj[i].handle, 0, &addr, sizeof(addr)); - igt_assert_eq_u64(addr, obj[i].offset); - - gem_close(i915, obj[i].handle); - } - free(obj); - free(reloc); -} - -static void wide_active(int i915, unsigned engine) -{ - const uint64_t max = gem_aperture_size(i915) / 4096 / 2; - unsigned long count = 256; - - igt_until_timeout(2) { - uint64_t required, total; - - if (!__intel_check_memory(count, 4096, CHECK_RAM, - &required, &total)) - break; - - igt_debug("Testing count:%lu\n", count); - __wide_active(i915, engine, count); - - count <<= 1; - if (count >= max) - break; - } -} - static unsigned int offset_in_page(void *addr) { return (uintptr_t)addr & 4095; @@ -937,145 +867,6 @@ static void basic_softpin(int fd) gem_close(fd, obj[1].handle); } -static struct drm_i915_gem_relocation_entry * -parallel_relocs(int count, unsigned long *out) -{ - struct drm_i915_gem_relocation_entry *reloc; - unsigned long sz; - int i; - - sz = count * sizeof(*reloc); - sz = ALIGN(sz, 4096); - - reloc = mmap(0, sz, PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); - igt_assert(reloc != MAP_FAILED); - for (i = 0; i < count; i++) { - reloc[i].target_handle = 0; - reloc[i].presumed_offset = ~0ull; - reloc[i].offset = 8 * i; - reloc[i].delta = i; - reloc[i].read_domains = I915_GEM_DOMAIN_INSTRUCTION; - reloc[i].write_domain = 0; - } - mprotect(reloc, sz, PROT_READ); - - *out = sz; - return reloc; -} - -static int __execbuf(int i915, struct drm_i915_gem_execbuffer2 *execbuf) -{ - int err; - - err = 0; - if (ioctl(i915, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf)) { - err = -errno; - igt_assume(err); - } - - errno = 0; - return err; -} - -static int stop; -static void sighandler(int sig) -{ - stop = 1; -} - -static void parallel_child(int i915, - const struct intel_execution_engine2 *engine, - struct drm_i915_gem_relocation_entry *reloc, - uint32_t common) -{ - igt_spin_t *spin = __igt_spin_new(i915, .engine = engine->flags); - struct drm_i915_gem_exec_object2 reloc_target = { - .handle = gem_create(i915, 32 * 1024 * 8), - .relocation_count = 32 * 1024, - .relocs_ptr = to_user_pointer(reloc), - }; - struct drm_i915_gem_exec_object2 obj[3] = { - reloc_target, - { .handle = common }, - spin->obj[1], - }; - struct drm_i915_gem_execbuffer2 execbuf = { - .buffers_ptr = to_user_pointer(obj), - .buffer_count = ARRAY_SIZE(obj), - .flags = engine->flags | I915_EXEC_HANDLE_LUT, - }; - struct sigaction act = { - .sa_handler = sighandler, - }; - unsigned long count = 0; - - sigaction(SIGINT, &act, NULL); - while (!READ_ONCE(stop)) { - int err = __execbuf(i915, &execbuf); - if (err == -EINTR) - break; - - igt_assert_eq(err, 0); - count++; - } - - igt_info("%s: count %lu\n", engine->name, count); - igt_spin_free(i915, spin); -} - -static void kill_children(int sig) -{ - signal(sig, SIG_IGN); - kill(-getpgrp(), SIGINT); - signal(sig, SIG_DFL); -} - -static void parallel(int i915) -{ - const struct intel_execution_engine2 *e; - struct drm_i915_gem_relocation_entry *reloc; - uint32_t common = gem_create(i915, 4096); - uint32_t batch = batch_create(i915); - unsigned long reloc_sz; - - reloc = parallel_relocs(32 * 1024, &reloc_sz); - - stop = 0; - __for_each_physical_engine(i915, e) { - igt_fork(child, 1) - parallel_child(i915, e, reloc, common); - } - sleep(2); - - if (gem_scheduler_has_preemption(i915)) { - uint32_t ctx = gem_context_clone_with_engines(i915, 0); - - __for_each_physical_engine(i915, e) { - struct drm_i915_gem_exec_object2 obj[2] = { - { .handle = common }, - { .handle = batch }, - }; - struct drm_i915_gem_execbuffer2 execbuf = { - .buffers_ptr = to_user_pointer(obj), - .buffer_count = ARRAY_SIZE(obj), - .flags = e->flags, - .rsvd1 = ctx, - }; - gem_execbuf(i915, &execbuf); - } - - gem_context_destroy(i915, ctx); - } - gem_sync(i915, batch); - gem_close(i915, batch); - - kill_children(SIGINT); - igt_waitchildren(); - - gem_close(i915, common); - munmap(reloc, reloc_sz); -} - #define CONCURRENT 1024 static uint64_t concurrent_relocs(int i915, int idx, int count) @@ -1487,16 +1278,6 @@ igt_main } } - igt_subtest_with_dynamic("basic-wide-active") { - __for_each_physical_engine(fd, e) { - igt_dynamic_f("%s", e->name) - wide_active(fd, e->flags); - } - } - - igt_subtest("basic-parallel") - parallel(fd); - igt_subtest("basic-concurrent0") concurrent(fd, 0); igt_subtest("basic-concurrent16") |