[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