Age | Commit message (Collapse) | Author |
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Suggested-by: Akash Goel <akash.goel@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Don't just fail, skip gracefully if an external module is unavailable.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Ensure that we eventually report idle if we call gem_busy() in a tight
loop on a hanging batch.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Not a good day.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The name for a single engine was unset, oops.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
In light of a bug in intel_breadcrumbs where we missed the interrupt
when a new bottom half was installed and raced with the old bottom half
being signaled, try and recreate that race.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Change __wait_for_vblank() to use kmstest_get_vbl_flag() helper function.
Signed-off-by: Robert Foss <robert.foss@collabora.com>
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
|
|
Previously crtc0 was statically used for VBLANK tests, but
that assumption is not valid for the VC4 platform.
Instead we're now explicitly setting the mode.
Also add support for testing all connected connectors during
the same test.
Signed-off-by: Robert Foss <robert.foss@collabora.com>
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
|
|
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Currently gem_sync exploits read-read optimisation to wait upon multiple
rings simultaneously. But at the moment, gem_exec_flush is showing
sporadic missed interrupts on bdw/skl and yet gem_sync is not. This is
some subtlety in the timing, perhaps caused by the extra write. This set
of tests tries to exercise that by using a write batch - which also
means we exercise inter-ring synchronisation (like gem_storedw_loop).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Since all the batches start with the same content, we can reuse the same
buf to fill them.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
This is a requirement for interoperability that we fail.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Accidentally added as part of another patch.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
All pipes are now updated in the loop first, before connectors
are read out. The mode_id and active crtc properties are added,
and crtc_id for connectors. These are required to do a modeset,
and the behavior during atomic commits is changed slightly too.
A lot of code will do the following:
- Init.
- igt_output_set_pipe(output, pipe);
- commit.
Since legacy setcrtc and atomic commit differ, there are some
differences in how we commit pipes and connectors too.
For atomic we set output->crtc during igt_output_set_pipe,
and use it in atomic commit. This may be set to NULL, in which
case the output is disconnected from the crtc. Unlike legacy
we won't attempt to bind all connectors to all pipes, only
the ones that were explicitly set.
As a test, convert kms_rmfb.c
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
This reduces the runtime of the tests from ~200s on my 30 fps 4k panel
to 10s.
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
A similar expectation as to the current test that flips do not stall
cursor updates.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
We don't do anything yet other than try to load the module. Initial
sanity checks to come.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Zhi Wang <zhi.a.wang@intel.com>
|
|
Silly compiler emitting warnings that just cause people to break code
attempting to silence the compiler.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Aparently we never supported that mode of operation. Maybe in the future
we will, but for now just use the vblank wait to align ourselves with
the vblank.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Let's make sure the ts vs. seq difference between the current and last
events match.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
To aid in diagnosing failures, print out the expected time
difference between the two events.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Include diff.tv_secs in the jitter comparison.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Replace some opencoded numbers with USEC_PER_SEC, and
print the usec_diff with 6 decimal digits to make things
more consistent.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
A common problem when trying to unify legacy and atomic is the breaking
of existing non-blocking, asynchronous userspace. The most trivial
example is a cursor that stalls for a pageflip.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Skip if the vgem module is not present, but still fail if we fail to
load it.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
tests using executable permission.
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
|
|
that require it.
This should allow tests/vgem_reload_basic to pass check target and it
doesn't depend of i915 being present.
v2: Do not source drm_lib.sh, only fake getopt parsing
option to again access to --list-subtests option (Chris)
v3: Forget to place the script in Makefile.sources, otherwise
distcheck will not copy it.
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
[Chris: Replace exit 1 with exit $IGT_EXIT_FAILURE]
CC: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
commit e63a0681d95a ("tests/gem_close_race: Use drm_open_driver helper")
left a few raw open() behind. Eliminate them as well!
References: https://bugs.freedesktop.org/show_bug.cgi?id=96605
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
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>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
For fun, debugfs/.../names currently explodes, so lets capture that and
make sure that basic access to debugfs does no harm.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Primarily to check that we have the WC read/write disparity.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The new Kernel behavior is that whenever a buffer has ever been WC
mmapped, the GTT mmaps will be treated as CPU operations. Because of
this, if we don't issue the dirty_fb IOCTL after doing frontbuffer
rendering with the GTT mmaps, FBC will remain disabled. Luckily, the
only subtest that does this sort of mix is the multidraw subtest.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
This patch was originally written because of a workaround we were
planning to merge. Later we improved the workaround so it wouldn't
need this patch anymore. Then later we gave up on the workaround, but
decided to go with a plan that would cause GTT mmap writes to
invalidate FBC in case the frontbuffer ever had a WC mmap. So now we
need the patch again because we don't want a subtest that involves an
WC mmap to change the behavior of other unrelated subtests that use
GTT mmaps.
Even if we don't go with the current planned Kernel patch, merging
this should be worth in order to avoid future related problems.
v2: New commit message.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
A recent Kernel fix changed the way GTT and WC mmaps behave during
frontbuffer drawing. This, added with the fact that GTT mmaps are
special cases for PSR, suggests that maybe we should move to BLT
drawing in places where we can, in order to simplify things a little
bit.
v2: New commit message.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
In order to control some of the finer detail of detecting when we missed
an interrupt, replace the shell script with C.
This version submits a hanging batch and uses a child process to unhang
it, whilst the parent sleeps. As the child process is prevented from
running whilst the parent is alive (as the child is a low priority
normal process whereas the parent is a RT process), the child can only
unhang the parent after i915_wait_request() has spun up and tried to
enable the interrupt. In contrast, the shell script guessed a workload
that should take long enough for the i915_spin_request() to miss the
completion, but that was not guaranteed. Furthermore, from C we can
trigger a missed interrupt on each engine.
A minor convenience of the C version is that we don't have to worry
about install paths to find the binaries underneath.
References: https://bugs.freedesktop.org/show_bug.cgi?id=88437
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
It access hardware, hence why the simple igt_only_list_subtests()
check from igt_fork/stop_signal_helper() isn't enough.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
This tests that we are adding our requests to the dma-buf reservation
object, both in exclusive (write) and shared (read) mode.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|