This came up in a discussion about importing virtio dma-buf, which are themselves plain shmemfs objects and so not only backed by struct pages, but wrappable by userptr. vgem share the same properties and so should serve as a useful proxy for testing. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: "Graunke, Kenneth W" <kenneth.w.graunke@xxxxxxxxx>, Cc: "Lahtinen, Joonas" <joonas.lahtinen@xxxxxxxxx> Cc: "Kondapally, Kalyan" <kalyan.kondapally@xxxxxxxxx> --- v2: Reuse the imported vgem as the batch, to truly test whether we acquire the right pages. --- tests/intel-ci/fast-feedback.testlist | 1 + tests/prime_vgem.c | 29 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist index aa2eb3295..982d25834 100644 --- a/tests/intel-ci/fast-feedback.testlist +++ b/tests/intel-ci/fast-feedback.testlist @@ -143,6 +143,7 @@ igt@prime_vgem@basic-fence-read igt@prime_vgem@basic-gtt igt@prime_vgem@basic-read igt@prime_vgem@basic-write +igt@prime_vgem@basic-userptr igt@vgem_basic@setversion igt@vgem_basic@create igt@vgem_basic@debugfs diff --git a/tests/prime_vgem.c b/tests/prime_vgem.c index 38e2026aa..3a39657e4 100644 --- a/tests/prime_vgem.c +++ b/tests/prime_vgem.c @@ -287,6 +287,32 @@ static void test_write(int vgem, int i915) munmap(ptr, scratch.size); } +static void test_userptr(int vgem, int i915) +{ + struct vgem_bo scratch; + struct drm_i915_gem_exec_object2 obj = {}; + struct drm_i915_gem_execbuffer2 execbuf = { + .buffers_ptr = to_user_pointer(&obj), + .buffer_count = 1, + }; + uint32_t *ptr; + + scratch.width = 1024; + scratch.height = 1024; + scratch.bpp = 32; + vgem_create(vgem, &scratch); + + ptr = vgem_mmap(vgem, &scratch, PROT_WRITE); + gem_close(vgem, scratch.handle); + *ptr = MI_BATCH_BUFFER_END; + + gem_userptr(i915, ptr, scratch.size, 0, 0, &obj.handle); + gem_execbuf(i915, &execbuf); + gem_close(i915, obj.handle); + + munmap(ptr, scratch.size); +} + static void test_gtt(int vgem, int i915) { struct vgem_bo scratch; @@ -1038,6 +1064,9 @@ igt_main igt_subtest("basic-write") test_write(vgem, i915); + igt_subtest("basic-userptr") + test_userptr(vgem, i915); + igt_subtest("basic-gtt") { gem_require_mappable_ggtt(i915); test_gtt(vgem, i915); -- 2.28.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx