From: Robert Beckett <bob.beckett@collabora.com>
To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
Jani Nikula <jani.nikula@linux.intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>
Cc: kernel@collabora.com,
"Robert Beckett" <bob.beckett@collabora.com>,
"Matthew Auld" <matthew.auld@intel.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH v10 10/11] drm/i915/selftest: wait for requests during engine reset selftest
Date: Thu, 7 Jul 2022 20:02:28 +0000 [thread overview]
Message-ID: <20220707200230.1657555-11-bob.beckett@collabora.com> (raw)
In-Reply-To: <20220707200230.1657555-1-bob.beckett@collabora.com>
While looping around each engine and testing for corrupted solen memory
during engine reset, the old requests from the previous engine can still
be yet to retire.
To prevent false positive corruption tests, wait for the outstanding
requests at the end of the test
Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
---
drivers/gpu/drm/i915/gt/selftest_reset.c | 35 ++++++++++++++++++++++--
1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/selftest_reset.c b/drivers/gpu/drm/i915/gt/selftest_reset.c
index 55f3b34e5f6e..a2558bc31408 100644
--- a/drivers/gpu/drm/i915/gt/selftest_reset.c
+++ b/drivers/gpu/drm/i915/gt/selftest_reset.c
@@ -6,6 +6,7 @@
#include <linux/crc32.h>
#include "gem/i915_gem_stolen.h"
+#include "gt/intel_gt.h"
#include "i915_memcpy.h"
#include "i915_selftest.h"
@@ -26,6 +27,7 @@ __igt_reset_stolen(struct intel_gt *gt,
intel_wakeref_t wakeref;
enum intel_engine_id id;
struct igt_spinner spin;
+ struct i915_request *requests[I915_NUM_ENGINES] = {0};
long max, count;
void *tmp;
u32 *crc;
@@ -68,15 +70,16 @@ __igt_reset_stolen(struct intel_gt *gt,
ce = intel_context_create(engine);
if (IS_ERR(ce)) {
err = PTR_ERR(ce);
- goto err_spin;
+ goto err_requests;
}
rq = igt_spinner_create_request(&spin, ce, MI_ARB_CHECK);
intel_context_put(ce);
if (IS_ERR(rq)) {
err = PTR_ERR(rq);
- goto err_spin;
+ goto err_requests;
}
i915_request_add(rq);
+ requests[id] = i915_request_get(rq);
}
for (page = 0; page < num_pages; page++) {
@@ -165,6 +168,34 @@ __igt_reset_stolen(struct intel_gt *gt,
err = -EINVAL;
}
+ /* wait for requests and idle, otherwise cleanup can happen on next loop */
+ for (id = 0; id < I915_NUM_ENGINES; id++) {
+ if (!requests[id])
+ continue;
+ err = i915_request_wait(requests[id], I915_WAIT_INTERRUPTIBLE, HZ);
+ if (err < 0) {
+ pr_err("%s failed to wait for rq: %d\n", msg, err);
+ goto err_requests;
+ }
+
+ i915_request_put(requests[id]);
+ requests[id] = NULL;
+ }
+
+ err = intel_gt_wait_for_idle(gt, HZ);
+ if (err < 0) {
+ pr_err("%s failed to wait for gt idle: %d\n", msg, err);
+ goto err_spin;
+ }
+
+ err = 0;
+
+err_requests:
+ for (id = 0; id < I915_NUM_ENGINES; id++) {
+ if (!requests[id])
+ continue;
+ i915_request_put(requests[id]);
+ }
err_spin:
igt_spinner_fini(&spin);
--
2.25.1
next prev parent reply other threads:[~2022-07-07 20:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20220707200230.1657555-1-bob.beckett@collabora.com>
2022-07-07 20:02 ` [PATCH v10 01/11] drm/i915/ttm: dont trample cache_level overrides during ttm move Robert Beckett
2022-07-07 20:02 ` [PATCH v10 02/11] drm/i915: limit ttm to dma32 for i965G[M] Robert Beckett
2022-07-07 20:02 ` [PATCH v10 03/11] drm/i915/ttm: only trust snooping for dgfx when deciding default cache_level Robert Beckett
2022-07-07 20:02 ` [PATCH v10 04/11] drm/i915/gem: selftest should not attempt mmap of private regions Robert Beckett
2022-07-08 7:53 ` Matthew Auld
2022-07-08 13:22 ` Robert Beckett
2022-07-08 13:27 ` Matthew Auld
2022-07-08 13:31 ` Robert Beckett
2022-07-07 20:02 ` [PATCH v10 05/11] drm/i915: instantiate ttm ranger manager for stolen memory Robert Beckett
2022-07-07 20:02 ` [PATCH v10 06/11] drm/i915: sanitize mem_flags for stolen buffers Robert Beckett
2022-07-07 20:02 ` [PATCH v10 07/11] drm/i915: ttm move/clear logic fix Robert Beckett
2022-07-07 20:02 ` [PATCH v10 08/11] drm/i915/ttm: add buffer pin on alloc flag Robert Beckett
2022-07-07 20:02 ` [PATCH v10 09/11] drm/i915/selftest: don't attempt engine reset of guc submission engines Robert Beckett
2022-07-07 20:02 ` Robert Beckett [this message]
2022-07-07 20:02 ` [PATCH v10 11/11] drm/i915: stolen memory use ttm backend Robert Beckett
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220707200230.1657555-11-bob.beckett@collabora.com \
--to=bob.beckett@collabora.com \
--cc=airlied@linux.ie \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kernel@collabora.com \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew.auld@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=thomas.hellstrom@linux.intel.com \
--cc=tvrtko.ursulin@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®