Age | Commit message (Collapse) | Author |
|
[[ a != b ]] is a bashism. As it's just comparing $1 to an empty string,
use -n with a normal [ ].
Noticed whilst testing meson builds. /bin/sh is apparently dash in Intel's CI.
v2:
- keep this as a /bin/sh script (Joonas Lahtinen)
Fixes: c3863e19 ("assembler/test: Prep work for meson")
CC: Daniel Vetter <daniel.vetter@ffwll.ch>
CC: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Rhys Kidd <rhyskidd@gmail.com>
|
|
For measuring the cost of preemption, inject a low priority spinner
between the two measurements; the difference between the preemption and
the normal dispatch includes both the cost of the spinner dispatch and
of preempting it. Close enough for us to estimate the cost of
preemption, though we don't measure the cost of preemption on the local
ring!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
CC: Michał Winiarski <michal.winiarski@intel.com>
|
|
If the system has bsd2, we do not know which ring the kernel will alias
I915_EXEC_BSD onto and so we do not what the matching string should be.
Skip the unknown.
v2: Deny the aliased I915_EXEC_BSD exists at all; be specific!
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103324
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
CC: Michał Winiarski <michal.winiarski@intel.com>
|
|
Since the headless subtest wants to compare execution latency of a
headless mode vs a single head, it needs to be able to do a modeset and
ergo it requires DRM_MASTER.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
|
|
__gem_create() doesn't touch the outparam *handle on failure, so we can
no longer assert that it zero. This is reasonable to remove as it is just
testing the library itself and not the kernel, so no loss in coverage.
We already had to remove the false assertion that gem_create() must fail
following fd exhaustion (as we can not prevent the kernel from freeing
VFS fdspace in between calls).
The last remaining change is that we do no need to rely on an external
path for open() as dup() will do the job of exhausting the fdtable.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103365
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
|
|
We only suppress the error state from the context, iff we trigger the
GPU reset by hangcheck (igt_hang_ring). If we trigger an immediate reset
via igt_force_gpu_reset(), we will populate the error-state but not free
it because we thought we have it suppressed by the context parameter.
Always eat the error after we expect a GPU reset and have not specified
that we want to keep it.
The side-effect of keeping the error-state around after we deliberately
created it is that subsequent GPU hangs are not prominently recorded, as
the kernel believes they are secondary hangs (and we only announce the
first).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
|
|
Emphasize that we want to test synchronisation using the dmabuf API
(prime_sync_start, prime_sync_end) and so drop the manual
synchronisation using the GEM API (gem_sync).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Since the driver's guc submission method requires the breadcrumbs irq
for feeding requests to the guc, we cannot simply simulate a missing irq
by disabling the interrupts.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
|
|
When we only print mode objects that have changed properties, we
reduce a lot of the spam. Fortunately we have a single bitfield
now that gets printed when something is changed. Use that to decrease
the amount of spam.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Only build intel_dp_compliance when libudev is available, also include
libudev in the list of dependencies.
Fixes error when libudev isn't there:
../tools/intel_dp_compliance_hotplug.c:33:21: fatal error: libudev.h: No such file or directory
#include <libudev.h>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
xmlrpc is an optional dependency. If pkg-config can't find it, don't
assume xmlrpc-c-config will be there either. Make xmlrpc-c-config
optional too.
Fixes error:
Meson encountered an error in file meson.build, line 73, column 1:
Program or command 'xmlrpc-c-config' not foundor not executable
Fixes: 892abc602a8a ("meson: Add fallback for xmlrpc discovery")
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
kms_atomic_transition was updating already disabled planes and committing
them nonblockingly. This results in sporadic -EBUSY failures because
planes that are unbound have their own timeline.
The solution is not unbinding already unbound planes, making the test
pass. There was also a related kernel bug causing failures in the same
way, but that is now fixed.
While at it, only check for fd completion in the nonblocking case,
in the blocking case it's theoretically possible the commit completes
before we check the that the commit didn't complete, most probably when
the test is run in a debugger.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102671
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
kmstest_get_crtc was skipping because at that point the crtc was not
active yet, instead we should only use igt_assert_plane_visible
directly. Unexport kmstest_get_crtc, since nothing here should need it.
While at it fix a small leak in igt_assert_plane_visible, the only
remaining user.
Additionally, it' s not allowed to obtain crc on a disabled pipe, so
wait until the pipe is enabled before allocating the crc.
Changes since v1:
- Move igt_pipe_crc_new until after pipe is enabled.
- Move test_init() into test_setup(), it's redundant..
- Remove pipe_crc from data, no need to have it there.
Changes since v2:
- Increment fb pointer for igt_plane_set_fb, in order to set a different
fb on each plane correctly.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Unify the common code for current and legacy blocks.
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
There's no evidence that this is the limit.
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
It's the same stuff as in the new child devices.
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
Make it easier to compare dumping against the struct definition.
v2: Fix version comparison for flags, aux channel and dongle detect, and
fix some typos while at it (Ville)
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
Cleaner than having it inline.
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
child->device_id may not be terminated, but we can use %.*s format
specifier to define the max length to print. No need to make a copy.
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
Add names for new ports, throw out unused macros.
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
Take child device size into account, avoid reading past the actual child
device.
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
igt_pipe_refresh was added for the forked helper, we could just call it
from the fork to prevent races against MODE_ID.
The static 1024x768 mode is allocated on the stack and returned, which will
result in a garbage mode. Make the fallback mode global to prevent this.
igt_output_set_pipe is unneeded, override_mode is enough to force the
right mode.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103342
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Now that we can set individual properties through the igt_kms api,
we no longer need to duplicate functionality from igt_kms. Set invalid
properties directly, and rewrite kms_atomic.c to use igt_display.
This will allow us to remove a lot of code in kms_atomic.c,
and benefit from how igt_kms can set up a valid configuration,
instead of having to inherit it from fbcon.
Changes since v1:
- Fix test failure when atomic_invalid_params is run standalone.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Daniel Stone <daniels@collabora.com>
[mlankhorst: Use kmstest_set_connector_dpms (mkahola)]
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
IGT has an api that can find a matching pipe for a given connector,
so use that.
igt_output_override_mode already forces a modeset on an affected pipe
since an earlier commit, so the second call to igt_output_set_pipe
can be removed.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
igt_pipe_get_property is about to be removed, so use
igt_pipe_obj_get_prop instead. This requires adding 2 more properties
to the crtc property list. Also get rid of the Broadcast RGB call,
this is already handled in igt_kms.
Change order for DEGAMMA_LUT and GAMMA_LUT around, else this test will
fail if legacy gamma is set. In the legacy path, this will update
GAMMA_LUT to the new size before DEGAMMA_LUT is set.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
This can be handled by generic properties.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
igt_pipe_get_property has been replaced by igt_pipe_obj_get_prop.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Some tests need to get the current kernel value for properties
as part of the test. Add get_prop functions that will retrieve
the current kernel value.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
This allows test to test whether a property is supported, in
a nice and clean way. It removes the need for special case
functions like igt_plane_supports_rotation.
Convert the users of igt_plane_supports_rotation and remove the
extra check in drm_plane_commit, this is already checked below
when setting plane properties.
Changes since v1:
- Use the correct has_prop in kms_crtc_background_color.c
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Setting broadcast rgb was only used by chamelium, but is now handled
in igt_display by default. This means that chamelium doesn't need to
set it, and this can be hidden. The broadcast RGB property is intel
connector specific, so rename the enum to intel_broadcast_rgb_mode.
Keep the property and enum public in case someone wants to test the
property later.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
With the replace_prop_blob functions we can safely replace the blob for
any property, without having to care about error handling ourselves.
This will for example allow overriding color management blobs, or for
kms_atomic set invalid mode blobs.
The color management blob functions are removed, they can now be
replaced by direct calls to replace the properties.
Changes since v1:
- Fix chamelium tests.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Everything except CRTC_ID can be set in the legacy paths,
we even have 2, the legacy and universal path. Excercise both. :D
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Blacklist some explicit atomic properties. We could theoretically set
them but that's not what the legacy path is for. :)
When adding new properties, this means we could test those through
the legacy commit.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
In the future I want to allow tests to commit more properties,
but for this to work I have to fix all properties to work better
with atomic commit. Instead of special casing each
property make a bitmask for all property changed flags, and try to
commit all properties.
This has been the most involved one, since legacy pipe commit still
handles a lot of the properties differently from the rest.
Changes since v1:
- Dump all changed properties on commit.
- Fix bug in igt_pipe_refresh().
Changes since v2:
- Set pipe ACTIVE property changed flag on init.
Changes since v3:
- Add a missing igt_pipe_refresh() to kms_atomic_interruptible.
Changes since v4:
- Perform error handling when setting custom crtc properties.
Changes since v5:
- Only attempt to commit changes properties.
Changes since v6:
- Clear OUT_FENCE_PTR on succesful commit.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
In the future I want to allow tests to commit more properties,
but for this to work I have to fix all properties to work better
with atomic commit. Instead of special casing each
property make a bitmask for all property changed flags, and try to
commit all properties.
Changes since v1:
- Remove special dumping of src and crtc coordinates.
- Dump all modified coordinates.
Changes since v2:
- Move igt_plane_set_prop_changed up slightly.
Changes since v3:
- Fix wrong ordering of set_position in kms_plane_lowres causing a test failure.
Changes since v4:
- Back out resetting crtc position in igt_plane_set_fb() and
document it during init. Tests appear to rely on it being preserved.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
In the future I want to allow tests to commit more properties,
but for this to work I have to fix all properties to work better
with atomic commit. Instead of special casing each
property make a bitmask for all property changed flags, and try to
commit all properties.
Changs since v1:
- Mention which properties we set to what.
- Assert the property to be set is valid.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Release the internal caches (by flushing the idle_worker) to maximise the
available memory for use by tests (and to reduce sporadic skipping when
on the cusp).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
As the driver itself keeps a cache of objects, these too need to be
flushed prior to producing a stable count of objects.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102655
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
As part of the general procedure for ensuring the GPU is idle, we also
want to ask the driver to flush its idle_worker. The idle_worker is
responsible for releasing both the driver's internal cache of buffers
and cache of state (such as the prolonged GT wakeref). By flushing the
idle_worker we ensure that each test (each caller needing an idle gpu)
has a clean slate; not carrying over caches from one test to the next.
Note this is a silent no-op for kernels that do not know about DROP_IDLE,
old bugs will remain.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
A new flag for an old API; now we can request that the driver flush its
idle_worker to release internal caches.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
Moving code out of the boost function will allow its usage
in other/new test scenarios.
Signed-off-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
Reviewed-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
|
|
Since I accidentally broke the build for some, by putting the pretty
printer for submission inside ifdef HAVE_PROCPS, it's time to move the
whole thing into lib/i915 while fixing this mistake.
Let's also rename the pretty printer and add a doc to it as well as the
section.
Fixes: f6dfe556659f ("lib: Extract helpers for determining submission method")
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
We never declared that we were about to read from the mmap after copying
into it using the BLT (a missed call to prime_sync_start); leaving its
coherency ill-defined. For completeness, add the missing
prime_sync_end() as well.
v2: Another prime_sync_start/end around the is-zero check in
test_read_flush()
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103168
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
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>
|
|
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>
|
|
Since Debian-likes (including Ubuntu) ship xmlrpc packages predating the
pkg-config era, we need to use xmlrpc-c-config to do the discovery.
Also this patch adds HAVE_CHAMELIUM flag to config.h to get rid of
"implicit declaration of function" warnings in case of meson build.
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
This was the predecessor test to kms_frontbuffer_tracking, which not
just tests fbc, and also in a much more through-out fashion.
Both tests authored by Paulo, but looking at git history there's a
clear switch with the introduction of kms_frontbuffer_tracking. After
that only maintenance commits to kms_fbc_crc. Not point having
redundant tests, so lets remove the old one.
This will cut a bit more than 3 minutes of test-time from kbl-shard.
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Acked-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
As we use rounding when converting from hw clocks to time, we may report
a residency greater than wallclock (by a small margin), so allow us to
overshoot by 5% (just due to our inaccuracy).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
|
|
Ignore the unexpected success when the CPU cache is randomly flushed
that makes !llc appear to work without sync. It happens, the cpu cache
is a fickle beast that we do not have sole control over. Instead limit
the test to detect failures when the API is being adhered to.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103168
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|