[Intel-gfx] [PATCH v3] drm/i915/selftests: add basic selftests for rc6
Chris Wilson
chris at chris-wilson.co.uk
Tue Dec 3 11:01:24 UTC 2019
Quoting Andi Shyti (2019-12-03 08:53:12)
> Add three basic tests for rc6 power status:
>
> 1. live_rc6_basic - simply checks if rc6 works when it's enabled
> or stops when it's disabled.
>
> 2. live_rc6_threshold - rc6 should not work when the evaluation
> interval is less than the threshold and should work otherwise.
>
> 3. live_rc6_busy - keeps the gpu busy and then goes in idle;
> checks that we don't fall in rc6 when busy and that we do fall
> in rc6 when idling.
>
> The three tests are added as sutest of the bigger live_late_gt_pm
> selftest.
>
> The basic rc6 functionality is tested by checking the reference
> counter within the evaluation interval.
>
> Signed-off-by: Andi Shyti <andi.shyti at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> Hi,
>
> this is the first patche from the pm selftest series. Now it's
> rebased on top of drm-tip.
>
> Changelog:
> * v1 -> v2:
> - some changes from Chris (thank you!).
> * v2 -> v3:
> - rebased on top of the latest drm-tip
> - fixed exiting order in rc6_basic to avoid exiting
> without releasing the pm reference
>
> Andi
>
> drivers/gpu/drm/i915/gt/selftest_gt_pm.c | 3 +
> drivers/gpu/drm/i915/gt/selftest_rc6.c | 190 +++++++++++++++++++++++
> drivers/gpu/drm/i915/gt/selftest_rc6.h | 3 +
> 3 files changed, 196 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> index 09ff8e4f88af..84d1a58cfa28 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> @@ -51,6 +51,9 @@ static int live_gt_resume(void *arg)
> int intel_gt_pm_live_selftests(struct drm_i915_private *i915)
> {
> static const struct i915_subtest tests[] = {
> + SUBTEST(live_rc6_basic),
> + SUBTEST(live_rc6_threshold),
> + SUBTEST(live_rc6_busy),
> SUBTEST(live_rc6_manual),
> SUBTEST(live_gt_resume),
> };
> diff --git a/drivers/gpu/drm/i915/gt/selftest_rc6.c b/drivers/gpu/drm/i915/gt/selftest_rc6.c
> index f8b7691be4d1..935e721f5479 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_rc6.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_rc6.c
> @@ -11,6 +11,7 @@
> #include "selftest_rc6.h"
>
> #include "selftests/i915_random.h"
> +#include "selftests/igt_spinner.h"
>
> int live_rc6_manual(void *arg)
> {
> @@ -202,3 +203,192 @@ int live_rc6_ctx_wa(void *arg)
> kfree(engines);
> return err;
> }
> +
> +static bool test_rc6(struct intel_rc6 *rc6, bool enabled)
I keep getting confused as to the meaning of the result, forgetting it
changes based on bool enabled.
Maybe u32 measure_rc6() and leave the pass/fail to the caller?
-Chris
More information about the Intel-gfx
mailing list