summaryrefslogtreecommitdiff
path: root/tests/prime_vgem.c
AgeCommit message (Collapse)Author
2022-06-28tests/prime_vgem : Add subtests descriptionJanga Rahul Kumar
Add test description to all the available subtests and corrected a little old descriptions. v2 : Add description to all subtests. v3 : Modified subtest description. v4 : Minor corrections. Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com> Signed-off-by: Janga Rahul Kumar <janga.rahul.kumar@intel.com> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
2021-10-04tests/prime_vgem: use device_coherent mmapPriyanka Dandamudi
Update mmap__wc with mmap__device_coherent, as it works on discrete platforms, while still using an explicit WC mmap on integrated platforms. Signed-off-by: Priyanka Dandamudi <priyanka.dandamudi@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> Cc: Ashutosh Dixit <ashutosh.dixit@intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com>
2021-08-10lib/intel_batchbuffer: Add allocator support in blitter src copyZbigniew Kempczyński
Adjust igt_fb library + prime_vgem test as they are blitter src copy users. Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> Cc: Petri Latvala <petri.latvala@intel.com> Cc: Ashutosh Dixit <ashutosh.dixit@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
2021-07-15Nuke local versions of DRM_FORMAT and DRM_MODELucas De Marchi
Use the definition from kernel headers. Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
2021-07-08tests/prime_vgem: Convert to intel_ctx_t (v2)Jason Ekstrand
v2 (Jason Ekstrand): - Pass intel_ctx_0() to work() instead of 0 Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2021-05-27lib/i915/gem_create: Add gem_create_extAndrzej Turko
Add a wrapper for gem_create_ext ioctl (a version of gem_create that accepts extensions). In preparation for the driver change implementing it, a local definition of its id and necessary structs have been added, which are to be erased as soon as those definitions appear in the i915_drm.h file. The new ioctl wrapper is added to a separate file. For consistency the wrapper of the old ioctl, gem_create is moved from ioctl_wrappers to gem_create. Signed-off-by: Andrzej Turko <andrzej.turko@linux.intel.com> Cc: Zbigniew Kempczynski <zbigniew.kempczynski@intel.com> Cc: Dominik Grzegorzek <dominik.grzegorzek@intel.com> Cc: Petri Latvala <petri.latvala@intel.com> Cc: Chris P Wilson <chris.p.wilson@intel.com> Signed-off-by: Matthew Auld <matthew.auld@intel.com> Acked-by: Petri Latvala <petri.latvala@intel.com>
2020-10-09prime_vgem: Check that we wrap the vgem mmap with userptrChris Wilson
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@chris-wilson.co.uk> Cc: "Graunke, Kenneth W" <kenneth.w.graunke@intel.com>, Cc: "Lahtinen, Joonas" <joonas.lahtinen@linux.intel.com> Cc: "Kondapally, Kalyan" <kalyan.kondapally@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
2020-05-07lib/i915: Split igt_require_gem() into i915/Chris Wilson
igt_require_gem() is a pecularity of i915/, move it out of the core. Similar opportunistic move of gem_reopen_driver() and gem_quiescent_gpu(). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2020-04-03prime_vgem: Dynamic active engine testsChris Wilson
Use igt_subtest_with_dynamic for the flexible approach to engine dependent test discovery. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2020-02-11tests/prime_vgem: Examine blitter access pathJanusz Krzysztofik
On future hardware with missing GGTT BAR we won't be able to exercise dma-buf access via that path. An alternative to basic-gtt subtest for testing dma-buf access is required, as well as basic-fence-mmap and coherency-gtt subtest alternatives for testing WC coherency. Access to the dma sg list feature exposed by dma-buf can be tested through blitter. Unfortunately we don't have any equivalently simple tests that use blitter. Provide them. XY_SRC_COPY_BLT method implemented by igt_blitter_src_copy() IGT library helper has been chosen. v2: As fast copy is not supported on platforms older than Gen 9, use XY_SRC_COPY instead (Chris), - add subtest descriptions. v3: Don't calculate the pitch, use scratch.pitch returned by vgem_create() (Chris), - replace constants with values from respective fields of scratch (Chris), - use _u32 variant of igt_assert_eq() for better readability of possible error messages (Chris), - sleep a bit to emphasize that the only thing stopping the blitter is the fence (Chris), - use prime_sync_start/end() as the recommended practice for inter-device sync, not gem_sync() (Chris), - update the name of used XY_SRC_COPY_BLT helper to match the name of its library version just merged. Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2020-02-07tests/prime_vgem: Skip fence and gtt specific testsRamalingam C
In the absence of the mappable aperture, skip GTT and fence specific tests. v2: requirement check is moved to subtest start [Zbigniew] Signed-off-by: Ramalingam C <ramalingam.c@intel.com> Reviewed-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
2020-01-16tests/prime_vgem: Give meaningful messages on SKIPJanusz Krzysztofik
Messages displayed on SKIPs introduced by commit 92caadb4e551 ("tests/prime_vgem: Skip basic-read/write subtests if not supported") don't inform clearly enough that those SKIPs are expected behavior. Fix it. Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> Reviewed-by: Ewelina Musial <ewelina.musial@intel.com>
2019-11-28tests/prime_vgem: Skip basic-read/write subtests if not supportedJanusz Krzysztofik
As we've agreed that using I915_GEM_PREAD/PWRITE IOCTLs on dma-buf objects doesn't make much sense, we are not going to extend their handlers in the i915 driver with new processing paths required for them to work correctly with dma-buf objects on future hardware with no mappable aperture. When running on that kind of hardware, just skip subtests which use those IOCTLs. v2: Examine pread/pwrite ABI, not mmap ABI (Chris) v3: Don't use "no mappable GGTT" wording in commit message (Chris) Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-11-15lib/i915: Add query to detect if engine accepts only ro batchesKuoppala, Mika
If cmd parser is mandatory, batch can't be modified post execbuf. Some tests rely on modifying batch post execbuf. Give those tests a method to query if those modifications ever reach the actual engine command stream. v2: pull in the test changes, doh v3: class based query v4: rebase Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-10-26lib/i915: Use explicit iterator names in for_each_engine()Chris Wilson
Provide the iterator name as an explicit macro parameter so that it is known to the caller, and allows for them to properly nest loops over all engines. Fixes: ../tests/i915/gem_exec_schedule.c: In function ‘semaphore_noskip’: ../lib/igt_gt.h:84:44: warning: declaration of ‘e__’ shadows a previous local [-Wshadow] for (const struct intel_execution_engine *e__ = intel_execution_engines;\ ^~~ ../tests/i915/gem_exec_schedule.c:653:2: note: in expansion of macro ‘for_each_physical_engine’ for_each_physical_engine(i915, other) { ^~~~~~~~~~~~~~~~~~~~~~~~ ../lib/igt_gt.h:84:44: note: shadowed declaration is here for (const struct intel_execution_engine *e__ = intel_execution_engines;\ ^~~ ../tests/i915/gem_exec_schedule.c:652:2: note: in expansion of macro ‘for_each_physical_engine’ for_each_physical_engine(i915, engine) { ^~~~~~~~~~~~~~~~~~~~~~~~ ../tests/i915/gem_exec_schedule.c: In function ‘measure_semaphore_power’: ../lib/igt_gt.h:84:44: warning: declaration of ‘e__’ shadows a previous local [-Wshadow] for (const struct intel_execution_engine *e__ = intel_execution_engines;\ ^~~ ../tests/i915/gem_exec_schedule.c:1740:3: note: in expansion of macro ‘for_each_physical_engine’ for_each_physical_engine(i915, engine) { ^~~~~~~~~~~~~~~~~~~~~~~~ ../lib/igt_gt.h:84:44: note: shadowed declaration is here for (const struct intel_execution_engine *e__ = intel_execution_engines;\ ^~~ ../tests/i915/gem_exec_schedule.c:1719:2: note: in expansion of macro ‘for_each_physical_engine’ for_each_physical_engine(i915, signaler) { ^~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Andi Shyti <andi.shyti@intel.com>
2019-07-11tests/prime_vgem: Fix broken handling of interprocess pipesJanusz Krzysztofik
If a child process dies for any reason while basic-fence-read or basic-fence-mmap subtest is run, the subtest may hang indefinitely on read() from a pipe which is supposed to be written to by that child (can be interrupted though). Fix it by first closing unused pipe ends on both parent and child side before using the pipe, as recommended by pipe(2) manual page. Please note that due to the IGT library way of handling signals, now the subtests may fail with error code 141 (128 + SIGPIPE) and no usual DEBUG message block on stderr nor FAIL message line on stdout, however some meaningful error messages will still be printed on stderr by the failing child processes. Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-05-29prime_vgem: Fix typo in checking for invalid enginesChris Wilson
Move the stray ')' from gem_can_store_dword(exec_id) | exec_flags to gem_can_store_dword(exec_id | exec_flags) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110764 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-05-09tests/prime_vgem/basic-fence-flip: Probe display resolutionTvrtko Ursulin
Some displays might not support hardcoded 1024x768. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109294 Reviewed-by: Mika Kahola <mika.kahola@intel.com>
2019-04-04prime_vgem: Downgrade the severity of a single missed vblank on flippingChris Wilson
Not displaying the flip on the next vblank is bad, but not the end of the world -- so long as that is only a temporary glitch. Give the vblank a few more frames to complete, and warn instead of failing if it takes more than one vblank interval to flip. v2: Bump the warning to >1 missed flip, to spare us the noise. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2019-04-02prime_vgem: Replace nanosleep with igt_waitchildren_timeoutChris Wilson
We want to use a child in order to detect an uninterruptable sleep (a potential bug we might hit), but we can use igt_waitchildren_timeout() to replace our risky self-signaling + nanosleep. v2: Remove the now redundant signal() setup. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103182 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2018-10-01igt/prime_vgem: Skip flip if no displayChris Wilson
We try flipping a vgem surface onto a i915 scanout. However, if there is no display we want to disable the kms interface, including the addfb ioctl. On such systems the call to kms_addfb will naturally fail and the test cannot be run. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Antonio Argenziano <antonio.argenziano@intel.com>
2018-09-25lib/kms: Pass the number of planes explicitly to __kms_addfb()Ville Syrjälä
Currently __kms_addfb() assumes that only the first plane can be at offset 0. I don't particularly like such assumptions so let's just pass in the number of planes explicitly. We'll also require offsets[] to be passed in always. Nothing really to gain by making it optional. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2018-09-25lib/kms: Pass strides[] to __kms_addfbVille Syrjälä
Make __kms_addfb() usable with planar formats by passing in the stride for each plane. v2: Handle strides[1] for planar formats in kms_available_modes_crc Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2018-08-08igt/prime_vgem: Ask the shrinker to purge a vgem bo from inside i915Chris Wilson
Link a vgem dmabuf into an i915 bo and then ask the i915 shrinker to purge/invalidate its pages. This should establish the lockdep link from the fs_reclaim shrinker section to whatever locks are used to acquire/release dmabuf mappings; if any are required ofc. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Daniel Vetter <daniel@ffwll.ch> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
2018-07-20igt/gem_mmap_gtt: Check for known incoherency before testingChris Wilson
We test map_gtt coherency (whether or not a write via the mmap_gtt is immediately visible in the backing storage to a read via mmap_cpu) but we know that several platforms are inherently incorrect and require some form of hammer to workaround internal delays. These platforms break our ABI guarantees and so we report the change in ABI via a driver getparam. If we know the platform doesn't meet the ABI guarantee, skip the test. If it is meant to work, test! Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100587 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2018-02-01lib/fb: Add support for creating planar framebuffers, v3.Maarten Lankhorst
Add support to create planar framebuffers, but don't add formats that support them yet. This first requires conversion to the RGB24 format. Changes since v1: - Don't crash in igt_create_bo_with_dimensions(). Changes since v2: - Zero offsets for dumb fb too. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com> [mlankhorst: Change memset(4 * ..) to memset(ARRAY_SIZE(format->plane_bpp) * ..)]
2017-10-18tests: Clean up igt_skip_on_simulation() usesArkadiusz Hiler
General update to reflect current state of things. Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com> Acked-by: Petri Latvala <petri.latvala@intel.com>
2017-09-21igt/prime_vgem: Split out the fine-grain coherency checkChris Wilson
We don't expect every machine to be able to pass the WC/GTT coherency check, see kernel commit 3b5724d702ef24ee41ca008a1fab1cf94f3d31b5 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Aug 18 17:16:49 2016 +0100 drm/i915: Wait for writes through the GTT to land before reading back If we quickly switch from writing through the GTT to a read of the physical page directly with the CPU (e.g. performing relocations through the GTT and then running the command parser), we can observe that the writes are not visible to the CPU. It is not a coherency problem, as extensive investigations with clflush have demonstrated, but a mere timing issue - we have to wait for the GTT to complete it's write before we start our read from the CPU. The issue can be illustrated in userspace with: gtt = gem_mmap__gtt(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE); cpu = gem_mmap__cpu(fd, handle, 0, OBJECT_SIZE, PROT_READ | PROT_WRITE); gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); for (i = 0; i < OBJECT_SIZE / 64; i++) { int x = 16*i + (i%16); gtt[x] = i; clflush(&cpu[x], sizeof(cpu[x])); assert(cpu[x] == i); } Experimenting with that shows that this behaviour is indeed limited to recent Atom-class hardware. so split out the interleave coherency check from the basic interopability check. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102577 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
2017-07-06Revert "igt: Remove default from the engine list"Chris Wilson
This reverts commit d7a0b61450797a3d6644c65aebf75c2a90da1a15.
2017-07-06igt: Remove default from the engine listTvrtko Ursulin
Default is not an engine but an ABI alias for RCS. Remove it from the engine list to eliminate redundant subtests and test passes. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Daniel Vetter <daniel.vetter@intel.com>
2017-05-18lib: Refactor testing for ability to use MI_STORE_DATA_IMMChris Wilson
Rather than have the code in multiple locations, put a copy in lib/ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-02-22igt: Start marking up GEM tests that require an alive GPU to functionChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-09-21igt/prime_vgem: Initialise pfd for both parent/childChris Wilson
commit 4337091f6af6 moved the initialisation of the pollfd into the child, forgetting that it was also used in the parent as a sanity check. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97885 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-09-01igt/prime_vgem: Simplify inter-process flip checksChris Wilson
Avoid having both the child and parent do the same "did the flip" happen check with each looking for the same event on the same fd. The problem being that the child may fall asleep and by the time it wakes up to do its check, the parent has already eaten the event. So leave the checking that the flip does occur to the parent. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-08-30prime_vgem: Fix fence flippingChris Wilson
On the move to doing front/back flips, I managed to completely break the test by forgetting to pass the fence to be signaled. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-08-23igt/prime_vgem: Test both front/back flipChris Wilson
Check that we neither stall nor flip too early given active front/back buffers. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-08-23igt/prime_vgem: Detect when the call to pageflip blocksChris Wilson
Identify whether it is the nonblockling page-flip request that blocks or the event is fired too early. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-08-23igt/prime_vgem: Perform connector probe on startupChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-08-22Revert "tests/prime_vgem: Remove BAT sub-tests that cause intermittent fails."Chris Wilson
This reverts commit 5188745c4b531d09508cf0897fb90a3634299283.
2016-07-25tests/prime_vgem: Remove BAT sub-tests that cause intermittent fails.Marius Vlad
The following tests are causing problems in CI: prime_vgem@basic-fence-flip, fails intermittently on a HSW and SKL prime_vgem@basic-fence-wait-default, fails on all platforms since it was added prime_vgem@basic-sync-default, fails on all platforms since it was added, and it sometimes hangs BYT machine prime_vgem@basic-busy-default, fails on all platforms since it was added prime_vgem@basic-wait-default, fails on all platforms since it was added, and it sometimes hangs BYT machine Add a flag to enable them when they get stable enough. Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-07-19igt/prime_vgem: Test set-domain on foriegn dma-bufsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-19igt/prime_vgem: Replace arbitray delay with backchat from childChris Wilson
Wait until the child tells us they are running (and have verified the initial buffer state) before modifing the vgem buffer and then signaling the child. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-19igt/prime_vgem/fence-read: Insert a delayChris Wilson
Ensure that the child does need to sleep before the vgem is written. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-18igt/prime_vgem: Check for fence wait before gem_read()Chris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-15igt/vgem_slow/nohang: Test fence autotimeoutChris Wilson
To protect the kernel against unscrupulous fence users, fences should automatically signal after a timeout. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-12vgem: Add basic dma-buf fence interopChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-21igt/prime_vgem: Speed up implicit fence failureChris Wilson
Close the batch before asserting so that we don't have to wait for a hang after a failure. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-20igt/prime_vgem: Insert a WCB flush between distinct mmappingsChris Wilson
Since we use distinct WC addresses for the same page, we need to flush the WCB after the write in order to see it from the other mmaping. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-20igt/prime_vgem: Add a tight coherency check between vgem/gtt mmapChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-20benchmarks: Add vgem mmap speed testChris Wilson
Primarily to check that we have the WC read/write disparity. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>