From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1448910E7A1 for ; Fri, 2 Sep 2022 07:53:12 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= To: igt-dev@lists.freedesktop.org Date: Fri, 2 Sep 2022 09:52:26 +0200 Message-Id: <20220902075227.50690-12-zbigniew.kempczynski@intel.com> In-Reply-To: <20220902075227.50690-1-zbigniew.kempczynski@intel.com> References: <20220902075227.50690-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [igt-dev] [PATCH i-g-t v2 11/12] i915/gem_mmap_offset: Exercise close race against all types/regions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: From: Chris Wilson Iterate over all mmmap types and memory regions looking for races against closing the object. Signed-off-by: Chris Wilson Signed-off-by: Zbigniew KempczyƄski Cc: Kamil Konieczny --- tests/i915/gem_mmap_offset.c | 41 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/tests/i915/gem_mmap_offset.c b/tests/i915/gem_mmap_offset.c index 281ab2303c..ce911255dd 100644 --- a/tests/i915/gem_mmap_offset.c +++ b/tests/i915/gem_mmap_offset.c @@ -491,29 +491,30 @@ static void close_race(int i915, int timeout) igt_fork(child, ncpus + 1) { do { - struct drm_i915_gem_mmap_offset mmap_arg = {}; - const int i = 1 + random() % ncpus; - uint32_t old; - - mmap_arg.handle = gem_create(i915, 4096); - mmap_arg.flags = I915_MMAP_OFFSET_WB; - old = atomic_exchange(&handles[i], mmap_arg.handle); - ioctl(i915, DRM_IOCTL_GEM_CLOSE, &old); - - if (ioctl(i915, - DRM_IOCTL_I915_GEM_MMAP_OFFSET, - &mmap_arg) != -1) { - void *ptr; - - ptr = mmap64(0, 4096, - PROT_WRITE, MAP_SHARED, i915, - mmap_arg.offset); - if (ptr != MAP_FAILED) { + for_each_memory_region(r, i915) { + const int i = 1 + random() % ncpus; + uint64_t size = 4096; + uint32_t bo, old; + + igt_assert_eq(__gem_create_in_memory_region_list(i915, &bo, &size, 0, &r->ci, 1), 0); + make_resident(i915, 0, bo); + + old = atomic_exchange(&handles[i], bo); + ioctl(i915, DRM_IOCTL_GEM_CLOSE, &old); + + for_each_mmap_offset_type(i915, t) { + void *ptr; + + ptr = __mmap_offset(i915, bo, 0, size, + PROT_READ | PROT_WRITE, + t->type); + if (!ptr) + continue; + *(volatile uint32_t *)ptr = 0; - munmap(ptr, 4096); + munmap(ptr, size); } } - } while (!READ_ONCE(handles[0])); } -- 2.34.1