Skip to content
  • Tvrtko Ursulin's avatar
    tests/perf_pmu: Tests for i915 PMU API · 20d89b41
    Tvrtko Ursulin authored
    
    
    A bunch of tests for the new i915 PMU feature.
    
    Parts of the code were initialy sketched by Dmitry Rogozhkin.
    
    v2: (Most suggestions by Chris Wilson)
     * Add new class/instance based engine list.
     * Add gem_has_engine/gem_require_engine to work with class/instance.
     * Use the above two throughout the test.
     * Shorten tests to 100ms busy batches, seems enough.
     * Add queued counter sanity checks.
     * Use igt_nsec_elapsed.
     * Skip on perf -ENODEV in some tests instead of embedding knowledge locally.
     * Fix multi ordering for busy accounting.
     * Use new guranteed_usleep when sleep time is asserted on.
     * Check for no queued when idle/busy.
     * Add queued counter init test.
     * Add queued tests.
     * Consolidate and increase multiple busy engines tests to most-busy and
       all-busy tests.
     * Guarantte interrupts by using fences.
     * Test RC6 via forcewake.
    
    v3:
     * Tweak assert in interrupts subtest.
     * Sprinkle of comments.
     * Fix multi-client test which got broken in v2.
    
    v4:
     * Measured instead of guaranteed sleep.
     * Missing sync in no_sema.
     * Log busyness before asserts for debug.
     * access(2) instead of open(2) to determine if cpu0 is hotpluggable.
     * Test frequency reporting via min/max setting instead assuming.
       ^^ All above suggested by Chris Wilson. ^^
     * Drop queued subtests to match i915.
     * Use long batches with fences to ensure interrupts.
     * Test render node as well.
    
    v5:
     * Add to meson build. (Petri Latvala)
     * Use 1eN constants. (Chris Wilson)
     * Add tests for semaphore and event waiting.
    
    v6:
     * Fix interrupts subtest by polling the fence from the "outside".
       (Chris Wilson)
    
    v7:
     * Assert number of initialized engines matches the expectation.
       (Chris Wilson)
     * Warn instead of skipping if we couldn't restore the initial
       frequency. (Chris Wilson)
     * Move all asserts to after the test cleanup (just a tidy).
     * More 1eN notation for timeouts.
     * Bump the tolerance to 5% since I saw a few noisy runs with
       sampling counters.
     * Always start the PMU before submitting batches to lower
       reliance on i915 doing the delayed engine busy stats disable.
    
    v8:
     * Update for upstream engine class enum.
    
    v9:
     * Add meson build support.
    
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    20d89b41