mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 14:13:49 +07:00
drm/i915/selftests: Move some reset testcases to separate file
igt_global_reset and igt_wedged_reset testcases are first candidates. Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@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> Link: https://patchwork.freedesktop.org/patch/msgid/20190522193203.23932-2-michal.wajdeczko@intel.com
This commit is contained in:
parent
d3622099c7
commit
932309fb03
@ -1394,3 +1394,7 @@ void __i915_fini_wedge(struct i915_wedge_me *w)
|
||||
destroy_delayed_work_on_stack(&w->work);
|
||||
w->i915 = NULL;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
|
||||
#include "selftest_reset.c"
|
||||
#endif
|
||||
|
@ -365,54 +365,6 @@ static int igt_hang_sanitycheck(void *arg)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int igt_global_reset(void *arg)
|
||||
{
|
||||
struct drm_i915_private *i915 = arg;
|
||||
unsigned int reset_count;
|
||||
int err = 0;
|
||||
|
||||
/* Check that we can issue a global GPU reset */
|
||||
|
||||
igt_global_reset_lock(i915);
|
||||
|
||||
reset_count = i915_reset_count(&i915->gpu_error);
|
||||
|
||||
i915_reset(i915, ALL_ENGINES, NULL);
|
||||
|
||||
if (i915_reset_count(&i915->gpu_error) == reset_count) {
|
||||
pr_err("No GPU reset recorded!\n");
|
||||
err = -EINVAL;
|
||||
}
|
||||
|
||||
igt_global_reset_unlock(i915);
|
||||
|
||||
if (i915_reset_failed(i915))
|
||||
err = -EIO;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int igt_wedged_reset(void *arg)
|
||||
{
|
||||
struct drm_i915_private *i915 = arg;
|
||||
intel_wakeref_t wakeref;
|
||||
|
||||
/* Check that we can recover a wedged device with a GPU reset */
|
||||
|
||||
igt_global_reset_lock(i915);
|
||||
wakeref = intel_runtime_pm_get(i915);
|
||||
|
||||
i915_gem_set_wedged(i915);
|
||||
|
||||
GEM_BUG_ON(!i915_reset_failed(i915));
|
||||
i915_reset(i915, ALL_ENGINES, NULL);
|
||||
|
||||
intel_runtime_pm_put(i915, wakeref);
|
||||
igt_global_reset_unlock(i915);
|
||||
|
||||
return i915_reset_failed(i915) ? -EIO : 0;
|
||||
}
|
||||
|
||||
static bool wait_for_idle(struct intel_engine_cs *engine)
|
||||
{
|
||||
return wait_for(intel_engine_is_idle(engine), IGT_IDLE_TIMEOUT) == 0;
|
||||
@ -1846,8 +1798,6 @@ static int igt_atomic_reset(void *arg)
|
||||
int intel_hangcheck_live_selftests(struct drm_i915_private *i915)
|
||||
{
|
||||
static const struct i915_subtest tests[] = {
|
||||
SUBTEST(igt_global_reset), /* attempt to recover GPU first */
|
||||
SUBTEST(igt_wedged_reset),
|
||||
SUBTEST(igt_hang_sanitycheck),
|
||||
SUBTEST(igt_reset_nop),
|
||||
SUBTEST(igt_reset_nop_engine),
|
||||
|
76
drivers/gpu/drm/i915/gt/selftest_reset.c
Normal file
76
drivers/gpu/drm/i915/gt/selftest_reset.c
Normal file
@ -0,0 +1,76 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
/*
|
||||
* Copyright © 2018 Intel Corporation
|
||||
*/
|
||||
|
||||
#include "i915_selftest.h"
|
||||
#include "selftests/igt_reset.h"
|
||||
|
||||
static int igt_global_reset(void *arg)
|
||||
{
|
||||
struct drm_i915_private *i915 = arg;
|
||||
unsigned int reset_count;
|
||||
int err = 0;
|
||||
|
||||
/* Check that we can issue a global GPU reset */
|
||||
|
||||
igt_global_reset_lock(i915);
|
||||
|
||||
reset_count = i915_reset_count(&i915->gpu_error);
|
||||
|
||||
i915_reset(i915, ALL_ENGINES, NULL);
|
||||
|
||||
if (i915_reset_count(&i915->gpu_error) == reset_count) {
|
||||
pr_err("No GPU reset recorded!\n");
|
||||
err = -EINVAL;
|
||||
}
|
||||
|
||||
igt_global_reset_unlock(i915);
|
||||
|
||||
if (i915_reset_failed(i915))
|
||||
err = -EIO;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int igt_wedged_reset(void *arg)
|
||||
{
|
||||
struct drm_i915_private *i915 = arg;
|
||||
intel_wakeref_t wakeref;
|
||||
|
||||
/* Check that we can recover a wedged device with a GPU reset */
|
||||
|
||||
igt_global_reset_lock(i915);
|
||||
wakeref = intel_runtime_pm_get(i915);
|
||||
|
||||
i915_gem_set_wedged(i915);
|
||||
|
||||
GEM_BUG_ON(!i915_reset_failed(i915));
|
||||
i915_reset(i915, ALL_ENGINES, NULL);
|
||||
|
||||
intel_runtime_pm_put(i915, wakeref);
|
||||
igt_global_reset_unlock(i915);
|
||||
|
||||
return i915_reset_failed(i915) ? -EIO : 0;
|
||||
}
|
||||
|
||||
int intel_reset_live_selftests(struct drm_i915_private *i915)
|
||||
{
|
||||
static const struct i915_subtest tests[] = {
|
||||
SUBTEST(igt_global_reset), /* attempt to recover GPU first */
|
||||
SUBTEST(igt_wedged_reset),
|
||||
};
|
||||
intel_wakeref_t wakeref;
|
||||
int err = 0;
|
||||
|
||||
if (!intel_has_gpu_reset(i915))
|
||||
return 0;
|
||||
|
||||
if (i915_terminally_wedged(i915))
|
||||
return -EIO; /* we're long past hope of a successful reset */
|
||||
|
||||
with_intel_runtime_pm(i915, wakeref)
|
||||
err = i915_subtests(tests, i915);
|
||||
|
||||
return err;
|
||||
}
|
@ -24,6 +24,7 @@ selftest(gem, i915_gem_live_selftests)
|
||||
selftest(evict, i915_gem_evict_live_selftests)
|
||||
selftest(hugepages, i915_gem_huge_page_live_selftests)
|
||||
selftest(contexts, i915_gem_context_live_selftests)
|
||||
selftest(reset, intel_reset_live_selftests)
|
||||
selftest(hangcheck, intel_hangcheck_live_selftests)
|
||||
selftest(execlists, intel_execlists_live_selftests)
|
||||
selftest(guc, intel_guc_live_selftest)
|
||||
|
Loading…
Reference in New Issue
Block a user