Age | Commit message (Collapse) | Author |
|
On discrete detected default alignment may be bigger than single page
so it is likely we enter offsets > 32b. To avoid getting -EINVAL adding
flag EXEC_OBJECT_SUPPORTS_48B_ADDRESS is now necessary.
Fixes: deep, smoketest, smoketest-all
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
|
|
Running spinner in default context is not correct because it can
contain less engines than spinner expect. Fix this by setting
two contexts with identical set of engines.
Fixes: semaphore-noskip and u-semaphore-noskip
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
|
|
Engine passed to the subtest comes from configuration which is build
on top of all-physical-engines context. Add dedicated context for
the spinner which is compatibile with this engine.
Fixes: pi-shared-iova and pi-distinct-iova
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
|
|
Iterating over all physical engines on default context is wrong and
it may end with failure when there're more engines than default context
contains. To handle this we should create separate context on top of
all-physical-engines config.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Fixes: https://gitlab.freedesktop.org/drm/intel/-/issues/5444 (semaphore-resolved).
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
|
|
Config created on top of all physical devices may provide more devices
than default context contains. Using engine id from such "richer"
context is wrong when default context will be chosen for this engine.
Add dedicated context to handle all engines covered by context cfg.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Fixes: https://gitlab.freedesktop.org/drm/intel/-/issues/5444 (timeslicing)
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
|
|
submit_slice() is using a single address space for a couple of contexts
to prevent rebinding while active, and so requires that address space to
be shared during context construction.
v2: Add separate context for background spinner (Zbigniew)
Fixes: a9987a8dcb8f ("tests/i915/gem_exec_schedule: Convert to intel_ctx_t (v3)")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
|
|
In 4d9396e67930 we have started storing the opts with which the spin was
created as part of igt_spin_t. The ahnd stored as part of igt_spin_t is
therefore redundant. We can get ahnd from opts.ahnd.
Cc: Zbigniew Kempczynski <zbigniew.kempczynski@intel.com>
Cc: Jasmine Newsome <jasmine.newsome@intel.com>
Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
|
|
Just like the commit 74fc362b425c(i915/gem_busy: Prevent context
ban with right ctx id), some codes are using the constant ctx id 0
passed into igt_allow_hang(), it may cause test failures.
This patch is to correct them with right ctx id for the below
tests:
tests/i915/prime_busy
tests/i915/gem_ctx_persistence
tests/i915/gem_exec_schedule
tests/i915/gem_wait
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
|
|
mapping
The i915 currently has 2k visible priority levels which are currently
unique. This is changing to statically map these 2k levels into 3
buckets:
low: < 0
mid: 0
high: > 0
Update gem_exec_schedule to understand this. This entails updating
promotion test to use 3 levels that will map into different buckets and
also add bit of delay after releasing a cork beforing completing the
spinners to give time to the i915 schedule to process the fence and
release and queue the requests.
Also skip any tests that rely on having more than 3 priority levels.
v2: Add a delay between starting releasing spinner and cork in
promotion, add local define for static mapping engine info
v3:
(Daniele)
- Update commit message explaining why delay is needed,
unconditionally add delay
v4:
(Tvrtko)
- Reduce sleep period
(Daniele)
- Add comment in code by sleep
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
|
|
Update gem_require_mmap_wc to gem_require_mmap_device_coherent
along with mmap__wc, as it works on discrete platforms, while
still using an explicit WC mmap on integrated platforms.
Below are the updated tests:
gem_exec_schedule
gem_exec_async
gem_busy
kms_busy
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>
|
|
Resolved missing context id in exec buf, and passing created context
to igt spin .
This change would fix test assertion in gem_execbuf for independent
subtest
v2: Passing original ctx id to gem_execbuf
Signed-off-by: Arjun Melkaveri <arjun.melkaveri@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
|
|
Alter tests to cover reloc and no-reloc (softpin) modes.
v2: fix pi-* subtests
v3: addressing review comments (Ashutosh)
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
|
|
In
commit 2884f91dd6d7682ea738ef6f0943cc591643dda2
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Jul 20 12:29:30 2018 +0100
igt/gem_exec_schedule: Trim deep runtime
this was open-coded, I guess to avoid having to allocate a ton of
batchbuffers. Unfortunately this relies on being able to rewrite
batchbuffer relocations while the batch is in-flight (otherwise
everything stalls and our setup is for nothing), and we're removing
gpu relocations from upstream.
This problem was realized for the testcase in general in
commit f1e62e330a6e2de7b3cbf7cf02d71ae00cc6adcc
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue May 26 15:22:38 2020 +0100
i915/gem_exec_schedule: Reduce relocation risk for store-dword
but the fix in there is only stochastic, there's still a chance of
failure and hence unsightly noise in CI. The proper fix is to use
softpin for this testcase unconditionally (not just when relocations
aren't available), so that we clearly disentangle the concerns here
and really only test the scheduler. And not some legacy features that
are on the way out to their deserved retirement like relocations.
Zbyscek and Ashotush cc'ed so they're aware that this testcase must be
switched over to softping uncondtionally, for correctness reasons.
But that's a pile more work, so as an interim solution go back to
__store_dword helper.
v2 (Jason Ekstrand):
- Rebase on intel_ctx_t changes
Cc: Jason Ekstrand <jason@jlekstrand.net>
Cc: Dixit Ashutosh <ashutosh.dixit@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Lakshminarayana Vudum <lakshminarayana.vudum@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
|
|
Instead of relying on the context param, check for the device query or
attempt to set engines as a create param.
v2 (Jason Ekstrand):
- Add a common gem_has_context_engines helper
v3 (Jason Ekstrand):
- Drop gem_has_context_engines and always check I915_QUERY_ENGINE_INFO
v4 (Ashutosh Dixit):
- Add a comment to the gem_has_engine_topology docs saying that it can
be used to query either feature.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
v2 (Jason Ekstrand):
- Pass the context config to gem_submission_measure()
v3 (Jason Ekstrand):
- Use a shared VM in the noreorder test
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
If provided, the engine (or ALL_ENGINES) is relative to the given
context config. This is intended to be transitional. We'll get rid of
all the __for_each_physical_engine stuff later.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
|
|
Userspace semaphores (with arbitrary deadlock as soon by this test)
can only be handled if the kernel supports timeslicing. Now that we
explicitly report timeslicing capabilities, check for that cap.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
|
|
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>
|
|
Each bundle is 3 requests, so trim the workload estimate accordingly.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Verify that we do not run a later request before its dependency on the
same engine, even if the linkage is looped around all the other engines.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
In the codependency test we assume the first engine is usable; check.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Covered with more accuracy with selftests.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Only iterate over various queue lengths on the target engine, and use a
single qlen for the inter-engine validation.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
In practice, it turns out that compute likes to use userptr for
everything, and so in turn so must we.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Check that timeslices for an oversaturated system (where there is more
work than can be supported by a single engine) are evenly distributed
between the clients.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
We only require the minimum set of userfaultfd API (wake, copy) so we
can remove the overzealous assert that we have the full range. The full
range is not available if the vma contains a huge page, for example.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
We want to recognise future devices (gen = -1u) and treat them as an
extension of the latest known device, which is typically true.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
|
|
Reduce the preemption timeout to 150ms (from infinity for tgl! tsk,
tsk) so that the preemption hang tests run quicker.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Double the queue length each time, instead of a plain increment, so we
reduce the number of iterations we require by 4.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
A future change will cause the scheduling to only take into account
relative priorities and not apply strict priority ordering. To keep
reorder-wide working we need to ensure that the seperation in priority
levels is sufficient such that a ring full of the high priority work
will have an earlier deadline than the first low priority request.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
We don't need several thousand requests, timeslicing across 64 contexts
to verifying that we can reorder contexts within contexts, so limit it
to a couple of requests along each context to exercise promotion.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
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>
|
|
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>
|
|
Be careful and check the engine support store-dw as we are using
__igt_spin_new() which skips the requirement checks.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
gem_ring_measure_inflight() uses the legacy ring idx, whereas
gem_exec_schedule is using the new dynamic ctx->engine[] indices.
Mismatch and hanging tests ensue.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
The cmd-parser causes a disturbance in our priority scheme. It uses a
CPU worker that does not inherit the context priority and so may use a
simple FIFO that causes the requests to be ready (and so executed) in
parser order rather than our expected inherited priority order. If we do
not need to wait for relocations, the cmdparser is run inline, i.e.
before the test unleashes the fence holding the requests back.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Since we are not declaring a write hazard from the batch, we have to be
careful in our gem_read() to force a read from memory and not a
speculative read from the CPU cache.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/859
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Use a spinner to create a fence, and then use that as to synchronise
another batch to cancel the spinner.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
A quick test to ensure that ctx->engines[] are independent and can be
reprioritised and shuffled amongst themselves.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Since we are hiding our write hazards, gem_read() may not know if it
needs to flush the CPU caches prior to reading back. As we lie to the
kernel, use an explicit WC mmap for result readback.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/1875
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Local macros were declared in several files as a prelude to upstream
implementations. Now that we ship include/drm-uapi, we can remove LOCAL
as we upstream.
Cc: Dixit, Ashutosh <ashutosh.dixit@intel.com>
Cc: Tahvanainen Jari <jari.tahvanainen@intel.com>
Signed-off-by: ranjeet kumar <ranjeet1.kumar@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Check that if the HW submission queue is full of ordered requests, we
can still timeslice into the next submission.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
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>
|
|
Submit more coupled batches than can possibly fit into the ELSP and
verify that we can slice between them all.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
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>
|
|
Check that reads are serialised after a write, and that a subsequent
write is after all reads.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Sravan Kumar Nedunoori <sravan.kumar.nedunoori@intel.com>
Reviewed-by: Antonio Argenziano <antonio.argenziano@intel.com>
|
|
Replace calls to mmap_gtt with mmap__device_coherent for platforms
where aperture is not available.
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Removing igt_skip_on_simulation() from all the gem tests
since this feature is not supported anymore.
v2: Rebase
v3: Corrected build failure, because of deletion of
gem_exec_blt.c
Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
|