Age | Commit message (Collapse) | Author |
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Certain kernels/gen like to move execbuf around for relocations,
disrupting our prewritten batches. Be more careful and try and keep the
relocation/execobjects accurate.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94537
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
After loading the module with load failure injection enabled don't try
check the alive state. Also limit the number of failure points to
existing ones, to reduce the run time of the test.
v2:
- make VT binding/snd module loading part of reload and VT bind fail
silently (Chris)
Signed-off-by: Imre Deak <imre.deak@intel.com>
|
|
For basic, since CI doesn't hit the same hard lockup on Braswell that is
possible without hpet, stop running for so long!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Not as stressful as testing inter-ring synchronisation, but it does
allow inspecting the simpler testcases if need be.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
No users so time to die.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Supersedes gem_dummy_reloc_loop.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Fix the engine selection to exercise all possible rings and in doing so
completely obsoletes gem_multi_bsd_sync_loop.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
No one uses this nor should they as it just gem_get_param() in disguise
and they are better feature queries for whether individual execution
engines are functional.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The goal is to test interengine synchronisation so remove any likelihood
that we introduce synchronisation for performing relocations.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
An idea for testing failure paths along module load is to use a parameter
to perform fault injection. This rudimentary framework should get us
started.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
We don't preserve the execobj.offset nor set the right values into the
batches between iterations.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Android defines __USE_GNU but does not provide pthread_attr_setaffinity_np()
so added an extra guard arround pthread_attr_setaffinity_np().
Signed-off-by: Derek Morton <derek.j.morton@intel.com>
|
|
A more complicated store variant to stress inter-engine dependencies
(i.e. semaphores and sync). We write a control value from one batch into
the next and then execute it. This is repeated a few times with each
execution happening on a different engine (so the kernel has to
serialise operations between engines) until we finally write the value
out into our scratch buffer where we can check the result, just like a
Chinese whisper.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Only if the trial __gem_execbuf reports an error do we want to remove
the fancy LUT flags.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
pthread_setaffinity_np is a GNU extensions, so add some __USE_GNU
ifdeffry and hope for the best if unavailable.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
gem_reloc_overflow.c: In function ‘__real_main365’:
gem_reloc_overflow.c:384:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 6 has type ‘size_t’ [-Wformat=]
igt_require_f(mlock(reloc, reloc_size) == 0,
^
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
gem_concurrent_all.c: In function ‘__real_main1556’:
gem_concurrent_all.c:1642:4: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘uint64_t’ [-Wformat=]
igt_debug("Pinning %ld MiB\n", pin_sz);
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
drv_hangman.c: In function ‘hangcheck_unterminated’:
drv_hangman.c:290:27: warning: integer overflow in expression [-Woverflow]
int64_t timeout_ns = 100 * NSEC_PER_SEC; /* 100 seconds */
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Since clock_gettime() should be a fixed overhead that adds to the
latency result, subtract it from the result.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
In order to keep the latency as low as possible for the idle load, we
need to keep the CPU awake. Otherwise we end up with the busy workload
having lower latency than the idle workload!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Also useful to know how much worse than baseline the latency is when the
gem load is applied. For slower systems, presenting in nanoseconds makes
it hard to read, so switch to microseconds for output.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Instead of measuring the wakeup latency of a GEM client, we turn the
tables here and ask what is the wakeup latency of a normal process
competing with GEM. In particular, a realtime process that expects
deterministic latency.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Ignore the default ring as that is purely symbolic. On BSD2 systems it
is similarly useful to ignore the symbolic BSD ring.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Boom when running with --list on non-intel machines or as non-root.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
Oversight from the exit handler cleanup, spotted by Chris Wilson.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
A very simple, the simplest!, batch that can execution on any known
engine that just writes a value into memory.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Checks that
- exit handlers are run only once, even when registered multiple
times.
- run in reverse order
- actually run for all ways a test could exit.
This is prep work to extend exit handlers to also work in a subtest
aware way.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
No longer needed, and also not really a safe idea.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
autofu apparently adds these files for non-recoursive make. Fallout
from the uwildmat addition.
While at it also exclude stuff generated by make distcheck
Cc: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
For a background task the fork helpers are more appropriate, since we
can explicitly cancel children. Also, anything that does real work is
supposed to be in fixtures.
Cc: Tiago Vignatti <tiago.vignatti@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
--
Tiago, can you pls check that I haven't broken anythig?
Thanks, Daniel
|
|
This was originally added to work around a race, but then that's
broken now. And set_vt_mode generally never results in a test binary
crash, so overkill.
I want to get rid of this interface since I spotted some abuse.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
Use a simpler statically allocated struct for computing the mean as
otherwise we many run out of memeory!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Demonstrate how trivial it is to lockup Braswell, at least my N3050 nuc,
by saturating the interrupt handler with a few requests.
References: https://bugs.freedesktop.org/show_bug.cgi?id=93467
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Keep an eye on domain tracking for both cached/uncached objects across
suspend.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Check that the system operates normally before and after the suspend (as
well as across the suspend). The goal is to isolate the breakage to the
subtest.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
By looking for a particular error we can avoid actually executing
anything when testing whether the kernel supports an individual ring.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When flushing work and idling the GPU, we need to flush all engines,
including the forgotten BSD2.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The execbuffer2 ABI is not strictly limited to a total of UINT32_MAX
entries, rather each object can have a maximum of UINT32_MAX relocation
entries and the current implementation imposes that the total must be
allocable in a contiguous buffer when necessary (i.e as large as the
kernel can conceivably allocate). This is not an ABI constraint per-se,
just an implementation issue.
Whilst updating the limits for 64bit kernels, review usable of
ioctl-wrappers (i.e. use __gem_execbuf now available) and include a
batch of more tests to explore the boundary conditions of the maximum
relocation size. Note that rather than guess the reloc-max, it would be
better if we queried it. Also it is of vital importance that when
constructing a test to fail in a particular fashion, it must not include
any other error (e.g. we were passing in relocation arrays with invalid
target handle and domains when looking for a potential overflow across
multiple objects).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The transition to PCI device state D3 is not instantaneous and only
started when runtime suspended. Allow the driver/hardware a little bit
of time to complete the transition before declaring a test failure.
References: https://bugs.freedesktop.org/show_bug.cgi?id=93123
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Now that engines keep references on the last executed contexts,
to fix this test we need to execute an unrelated context last to
ensure the one we are interested in is free to be cleaned up when
we expect it to be.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
kms_setmode.c:384:30: warning: declaration of ‘drm_fd’ shadows a global
declaration [-Wshadow]
kms_setmode.c:45:12: note: shadowed declaration is here static int drm_fd;
kms_setmode.c:391:38: warning: passing argument 8 of ‘drmModeSetCrtc’
discards ‘const’ qualifier from pointer target type
[-Wdiscarded-qualifiers] ids, crtc->connector_count, &crtc->mode);
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
Excercise connector stealing harder. There is a border case in atomic currently where
encoder stealing is not prevented on the same crtc when the encoder is not reassigned.
The following testcase excercises that path and causes a OOPS on my system with nightly.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
The test used to assume pipe A was being used for everything, and we
tried to fix this in commit "tests: fix CRTC assignment for a few
tests", but the pipe CRC code was forgotten.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|