Age | Commit message (Collapse) | Author | Files | Lines |
|
Avoid the implicit GEM fence linking the low priority thread to the high
priority thread that would order the low priority batch before the high,
invalidating the test.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Be wary in case we postpone error discovering for nonblocking execbuf,
and double check the fence status.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Check that the target engine does indeed support store-dword before
attempting to use it.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Handling magic control blocks and longjmp() out of them in threads is
hard.
The test should state the requirements before it starts spinning
threads.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Since IGT is using magic control blocks (igt_subtest et al.) asserts
jump out the them using longjmp() causing a bunch of confusing messages
and occasionally crashing the whole process.
This is not the behavior we want :-)
With this patch:
1. simple_main, dynamic and subtest each clears the thread failure state
at the start
2. each of those blocks also asserts no thread failures at the end
3. igt_assert() in non-main thread prints out the error + stacktrace
and marks that we have failed thread
Issue: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/55
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
So that we know what's the source of messages.
igt_thread.c is created to facilitate more threading-related
functionality that will come in the following patch.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
These are i915 specific tests of the perf and perf-workalike interfaces,
so move them under i915/
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
|
|
Intended use case was that run without arguments prints out the
calibrations which can be simply copied and pasted to the -n argument and
things should just work.
Two problems we need to solve: If the print out loops shows zero
calibrations (engine not present) they are later rejected and also if some
calibration is not given it is only an error if it needs to be used
(engine present).
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Some frames from the middle of a demo with corresponding buffers.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
It is useful to know how much memory workload is allocating.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
-f <float> on the command line can be used to scale batch buffer durations
in all parsed workloads. Equally -F <float> for delay steps.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
See README for more details.
v2:
* No need to mess with flags. (Chris)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Show average/min/max workload iteration and dropped period stats when 'p'
command is used.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Add support for defining buffer object working sets and targetting them as
data dependencies. For more information please see the README file.
v2:
* More robustness in parsing here and there. (Chris)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Evaluation of userspace load balancing options was how this tool started
but since we have settled on doing it in the kernel.
Tomorrow we will want to update the tool for new engine interfaces and all
this legacy code will just be a distraction.
Rip out everything not related to explicit load balancing implemented via
context engine maps and adjust the workloads to use it.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
tests/intel-ci/blacklist*.txt files can collect bitrot unless there's
an easy way to check for lines that are no longer needed due to the
tests being renamed or removed. Therefore, a script just for that.
v2: Use long options for readability, exit with 1 if something found
v3: Verify manually against the list of all tests instead of trying
with igt_runner's --include-tests
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
SPDX header already states it is MIT, no need for duplication on the
copyright notice.
Reference: https://lists.freedesktop.org/archives/intel-gfx/2020-June/241548.html
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Fix the script name and make the path to mesa i915_asm a bit
more clear
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
The cmdparser is a cause of priority inversions [it is multiple FIFO
queues, the kworkers] and so may perturb the Q-independent tests by
delaying the high priority requests to only be submitted after the low
priority requests have already completed. The goal of the test is let
all be ready to run simultaneous and check that they are run in priority
order [that they can indeed be run independently despite sharing the
vm].
References: https://gitlab.freedesktop.org/drm/intel/-/issues/2013
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
We need the object we wait on to be clean, and free of stray fences as
the waitboosting only applies to i915_request that have not been
started. If we use an exclusive fence (from a write dependency) that
will strip off any foreign fences, allowing us to trick the driver into
behaving as we expect.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Large GTT do not fit into the 32b local, use a 64b and limit to [2G-3G]!
Fixes: 0421ebe98f0b ("lib/i915: Increase range for randomised location of dummyload")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Check that when relocating a batch along an engine, we are not forced to
wait upon a resource elsewhere that userspace may be holding, or else we
are faced with a deadlock that may be injected by another user. That
deadlock may be resolved by resetting the hostile context, but in doing
so we should not break the relocation processing.
Ideally, we would avoid the deadlock.
References: https://gitlab.freedesktop.org/drm/intel/-/issues/2021
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Suggest a wider range of possible relocations to reduce the chance of
colliding with a framebuffer.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Rather than just try to look at the first fault of each mmap in each
thread, keep the threads running for the test duration and watch for
refaults.
References: https://gitlab.freedesktop.org/drm/intel/-/issues/2012
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
This tests is being sporadically skipped in CI as it is not due
"PSR sink not reliable: yes". This commit adds printing of debugfs
("tests/kms_psr2_su: Print debugfs when skipping test"), but it is not
enough to track error cases.
It adds printing of errorno while it fails to read debugfs.
Cc: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
|
|
To make the script also useful when igt_runner/igt_resume binarires are
installed, also search PATH for the binaries.
Signed-off-by: Stefan Agner <stefan@agner.ch>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Noticed while running some tests that adding any kind of spaces into the
name of a test run would stop igt_resume from working for said test run.
Turns out that when we parse test metadata, we accidentally use the
'%ms' specifier with fscanf() which finishes parsing strings when any
kind of whitespace is encountered.
So, fix this by using the proper %m[^\n] specifier, which dynamically
allocates it's result and doesn't stop reading the string until a
newline is encountered. Additionally, add a test for this.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
_open_pmu() was calling perf_igfx_open_group() which in turn was
calling igt_perf_type_id("i915") each time.
By making _open_pmu() take type as a parameter and call
igt_perf_open_group() we achieve two things:
* we use the correct type for engines->device instead of the
hardcoded "i915"
* optimization - we call igt_perf_type_id() once - it's reading
sysfs
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
__cancel_work_at_exit writes -1 to param "reset", with the intention
that it's "any available method". Hex values to numeric params should
be prefixed with 0x to be parsed as a number. Use the convention of %u
with -1 as is used elsewhere with the "reset" param.
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Sometimes creating the string representation fails. This usually happens
when we have a huge logs (e.g.: something was spamming the dmesg) or the
result generation was run on a very low-end system (e.g. embedded board
with 256 megs of RAM).
Sadly json-c call returns us NULL and provides no explanation
whatsoever. Let's fix a NULL pointer dereference in such cases and print
a mesage that should help people make sense out of what have just
happened.
Cc: Swati Sharma <swati2.sharma@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
In commit b943d64f95bc ("kms_atomic_transition: Make the available
pipe discovery dynamic") the subtests of kms_atomic_transition were
split into dynamic subtests. What avoided scrutiny however was that
the looping uses for_each_pipe_with_valid_output, which gives you
every valid pipe/output combo, so just using the pipe name as the
dynamic subtest name causes duplicates, resulting in weird CI results.
As the nature of the original test was a stress test for watermarks,
keep the full combo rather than switching to
for_each_pipe_with_single_output, but use the output name as well in
the dynamic subtest name.
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
This allows the test to work on setups where the primary plane cannot
be disabled while the CRTC is enabled.
It should make no difference for the output.
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
It got removed in Python 3.9 and ever since Python 3.3 it's:
from xml.etree.ElementTree import *
Link: https://docs.python.org/3.9/whatsnew/3.9.html#removed
Issue: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/86#note_520308
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Lionel Landwerlin <lionel.g.landwerlin@linux.intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
In intel_gpu_top device path was hard coded for integrated GPU.
With this patch we:
* use igt_device_scan library for device scanning,
* make discrete GPU the default one,
* provided options for card selection.
v2:
* explicitly set ret to EXIT_SUCCESS after all the other uses
* fix use after free of opt_device (Tvrtko)
* use EXIT_FAILURE instead of "1" (Tvrtko)
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Will be used in the next patch.
1. set_pci_slot_name(): stores PCI_SLOT_NAME from prop to device
2. igt_device_find_first_discrete_card(): try to find first discrete GPU
3. igt_devices_free(): Free device buffers created during scan
Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
igt_device_scan can now be used as a separate library which only depends
glib and libudev - some IGT internals are being stubbed in this case.
v2: (mostly) sort includes (Lucas)
Cc: Lucas De Marchi <lucas.de.marchi@gmail.com>
Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Return value of udev_enumerate_add_match_property() was not being checked
in scan_drm_devices().
Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Since preempt-reset is 640ms we have to wait at least that long to
recover from a hostile client.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Remove all "localized" functions in media spin and libdrm usage
in the test.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
For some scenarios we want to keep previous objects and their offsets
and recreate only batchbuffer object. To allow user do that add
bb reset function which can or not purge collected objects from
previous run.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
To avoid relocations when intel_buf is used we need to keep previous
offset and context. Add addr structure with offset and ctx fields.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
After replugging a connector and the kernel reports the connector as
connected the cached modes returned by drmModeGetConnectorCurrent() (the
kernel's cached list of modes) may be stale. The modes will be only
updated by a full reprobe. Ensure this by setting output->force_reprobe
which will result in calling drmModeGetConnector().
This fixes sporadic test failures due to seeing no modes unexpectedly.
So far things happened to work, because some in-kernel user of the
output - like fbdev - does a full reprobe sometime after the hotplug
event.
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
If we fail to fork (e.g. due to restrictive limits) -1 gets written as
PID of our child and we assert out.
The cleanup that happens afterwards tries to kill all our children,
which ends up in kill(-1, SIGKILL) which is not good.
This patch makes sure of two things:
* -1 doesn't get written down as our child
* when we are killing children we make sure that pid > 0
Reported-by: Fei Yang <fei.yang@intel.com>
Cc: Michael Hebenstreit <michael.hebenstreit@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Tested-by: Michael Hebenstreit <michael.hebenstreit@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
The gem_create_v2 uapi was never merged, which would have been a nice
addition to allow userspace to utilise stolen memory. Since it can only
get in the way at this point, let's just remove it.
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Disable the pre-parser on Tigerlake as we are dynamically rewriting the
batches and so need to disable the parser cache.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
DRM logging in the kernel has switched to device based logging,
changing the pattern of logging from
[drm:function_name] Message
to
i915 0000:00:02.0: [drm] Message
Change the pattern we use with --piglit-style-dmesg to match the new
style logging, catching all warnings that contain [drm]. We're no
longer result-wise exactly piglit compatible but then again that ship
sailed long time ago with the change of introducing dmesg-level
parameter. Piglit compatibility result-wise is not a goal regardless.
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
|
|
This tests is being sporadically skipped in CI as it is not due
"PSR sink not reliable: yes" lets print the i915_edp_psr_status to
find out the reason.
This can be reverted afterwards.
Reference: https://gitlab.freedesktop.org/drm/intel/-/issues/1911
Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
|
|
Not sure why but in recent kernels + IGT when PSR status debugfs is
read the frame already passed, so the su blocks is set in frame 1
and causing the test to fail for page flips.
So here reading from frame 1 if frame 0 has 0 blocks, as this test
always changes screen with the same number of su blocks it is not a
issue.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/608
Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
|