@@ -122,12 +122,12 @@ static void eat_error_state(int dev)
* to be done under hang injection.
* Default: false
*/
-void igt_require_hang_ring(int fd, int ring)
+void igt_require_hang_ring(int fd, uint32_t ctx, int ring)
{
if (!igt_check_boolean_env_var("IGT_HANG", true))
igt_skip("hang injection disabled by user [IGT_HANG=0]\n");
- gem_require_ring(fd, ring);
+ igt_require(gem_context_has_engine(fd, ctx, ring));
gem_context_require_bannable(fd);
if (!igt_check_boolean_env_var("IGT_HANG_WITHOUT_RESET", false))
igt_require(has_gpu_reset(fd));
@@ -290,7 +290,7 @@ static igt_hang_t __igt_hang_ctx(int fd, uint64_t ahnd, uint32_t ctx, int ring,
igt_spin_t *spin;
unsigned ban;
- igt_require_hang_ring(fd, ring);
+ igt_require_hang_ring(fd, ctx, ring);
/* check if non-default ctx submission is allowed */
igt_require(ctx == 0 || has_ctx_exec(fd, ring, ctx));
@@ -31,7 +31,7 @@
#include "i915/i915_drm_local.h"
#include "i915_drm.h"
-void igt_require_hang_ring(int fd, int ring);
+void igt_require_hang_ring(int fd, uint32_t ctx, int ring);
typedef struct igt_hang {
igt_spin_t *spin;
@@ -295,7 +295,7 @@ test_engine_hang(const intel_ctx_t *ctx,
* case and it takes a lot more time to wrap, so the acthd can potentially keep
* increasing for a long time
*/
-static void hangcheck_unterminated(void)
+static void hangcheck_unterminated(const intel_ctx_t *ctx)
{
/* timeout needs to be greater than ~5*hangcheck */
int64_t timeout_ns = 100ull * NSEC_PER_SEC; /* 100 seconds */
@@ -304,7 +304,7 @@ static void hangcheck_unterminated(void)
uint32_t handle;
igt_require(gem_uses_full_ppgtt(device));
- igt_require_hang_ring(device, 0);
+ igt_require_hang_ring(device, ctx->id, 0);
handle = gem_create(device, 4096);
@@ -394,7 +394,7 @@ igt_main
igt_describe("Check that executing unintialised memory causes a hang");
igt_subtest("hangcheck-unterminated")
- hangcheck_unterminated();
+ hangcheck_unterminated(ctx);
igt_fixture {
igt_disallow_hang(device, hang);