From: Tilak Tangudu <tilak.tang...@intel.com>

use libpower library to verify power consumption values
in selftests.

v2: add per-gt hwmon support (Ashutosh)
v3: remove libpower changes (Ashutosh)

Signed-off-by: Tilak Tangudu <tilak.tang...@intel.com>
Co-developed-by: Riana Tauro <riana.ta...@intel.com>
Signed-off-by: Riana Tauro <riana.ta...@intel.com>
Reviewed-by: Anshuman Gupta <anshuman.gu...@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.di...@intel.com>
---
 drivers/gpu/drm/i915/gt/selftest_rc6.c  | 10 +++++-----
 drivers/gpu/drm/i915/gt/selftest_rps.c  | 24 ++++++++++++------------
 drivers/gpu/drm/i915/gt/selftest_slpc.c |  4 ++--
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/selftest_rc6.c 
b/drivers/gpu/drm/i915/gt/selftest_rc6.c
index 15b84c428f66..682f2fe67b3a 100644
--- a/drivers/gpu/drm/i915/gt/selftest_rc6.c
+++ b/drivers/gpu/drm/i915/gt/selftest_rc6.c
@@ -51,7 +51,7 @@ int live_rc6_manual(void *arg)
        if (IS_VALLEYVIEW(gt->i915) || IS_CHERRYVIEW(gt->i915))
                return 0;
 
-       has_power = libpower_supported(gt->i915);
+       has_power = libpower_supported(gt);
        wakeref = intel_runtime_pm_get(gt->uncore->rpm);
 
        /* Force RC6 off for starters */
@@ -61,9 +61,9 @@ int live_rc6_manual(void *arg)
        res[0] = rc6_residency(rc6);
 
        dt = ktime_get();
-       rc0_power = libpower_get_energy_uJ();
+       rc0_power = libpower_get_energy_uJ(gt);
        msleep(250);
-       rc0_power = libpower_get_energy_uJ() - rc0_power;
+       rc0_power = libpower_get_energy_uJ(gt) - rc0_power;
        dt = ktime_sub(ktime_get(), dt);
        res[1] = rc6_residency(rc6);
        if ((res[1] - res[0]) >> 10) {
@@ -89,9 +89,9 @@ int live_rc6_manual(void *arg)
        res[0] = rc6_residency(rc6);
        intel_uncore_forcewake_flush(rc6_to_uncore(rc6), FORCEWAKE_ALL);
        dt = ktime_get();
-       rc6_power = libpower_get_energy_uJ();
+       rc6_power = libpower_get_energy_uJ(gt);
        msleep(100);
-       rc6_power = libpower_get_energy_uJ() - rc6_power;
+       rc6_power = libpower_get_energy_uJ(gt) - rc6_power;
        dt = ktime_sub(ktime_get(), dt);
        res[1] = rc6_residency(rc6);
        if (res[1] == res[0]) {
diff --git a/drivers/gpu/drm/i915/gt/selftest_rps.c 
b/drivers/gpu/drm/i915/gt/selftest_rps.c
index b8b0b0c7617e..d5e9f57cca55 100644
--- a/drivers/gpu/drm/i915/gt/selftest_rps.c
+++ b/drivers/gpu/drm/i915/gt/selftest_rps.c
@@ -1090,38 +1090,38 @@ int live_rps_interrupt(void *arg)
        return err;
 }
 
-static u64 __measure_power(int duration_ms)
+static u64 __measure_power(struct intel_gt *gt, int duration_ms)
 {
        u64 dE, dt;
 
        dt = ktime_get();
-       dE = libpower_get_energy_uJ();
+       dE = libpower_get_energy_uJ(gt);
        usleep_range(1000 * duration_ms, 2000 * duration_ms);
-       dE = libpower_get_energy_uJ() - dE;
+       dE = libpower_get_energy_uJ(gt) - dE;
        dt = ktime_get() - dt;
 
        return div64_u64(1000 * 1000 * dE, dt);
 }
 
-static u64 measure_power(struct intel_rps *rps, int *freq)
+static u64 measure_power(struct intel_gt *gt, int *freq)
 {
        u64 x[5];
        int i;
 
        for (i = 0; i < 5; i++)
-               x[i] = __measure_power(5);
+               x[i] = __measure_power(gt, 5);
 
-       *freq = (*freq + intel_rps_read_actual_frequency(rps)) / 2;
+       *freq = (*freq + intel_rps_read_actual_frequency(&gt->rps)) / 2;
 
        /* A simple triangle filter for better result stability */
        sort(x, 5, sizeof(*x), cmp_u64, NULL);
        return div_u64(x[1] + 2 * x[2] + x[3], 4);
 }
 
-static u64 measure_power_at(struct intel_rps *rps, int *freq)
+static u64 measure_power_at(struct intel_gt *gt, int *freq)
 {
-       *freq = rps_set_check(rps, *freq);
-       return measure_power(rps, freq);
+       *freq = rps_set_check(&gt->rps, *freq);
+       return measure_power(gt, freq);
 }
 
 int live_rps_power(void *arg)
@@ -1143,7 +1143,7 @@ int live_rps_power(void *arg)
        if (!intel_rps_is_enabled(rps) || GRAPHICS_VER(gt->i915) < 6)
                return 0;
 
-       if (!libpower_supported(gt->i915))
+       if (!libpower_supported(gt))
                return 0;
 
        if (igt_spinner_init(&spin, gt))
@@ -1187,10 +1187,10 @@ int live_rps_power(void *arg)
                }
 
                max.freq = rps->max_freq;
-               max.power = measure_power_at(rps, &max.freq);
+               max.power = measure_power_at(gt, &max.freq);
 
                min.freq = rps->min_freq;
-               min.power = measure_power_at(rps, &min.freq);
+               min.power = measure_power_at(gt, &min.freq);
 
                igt_spinner_end(&spin);
                st_engine_heartbeat_enable(engine);
diff --git a/drivers/gpu/drm/i915/gt/selftest_slpc.c 
b/drivers/gpu/drm/i915/gt/selftest_slpc.c
index fc1cdda82ec6..20b9e05d3d16 100644
--- a/drivers/gpu/drm/i915/gt/selftest_slpc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_slpc.c
@@ -78,7 +78,7 @@ static u64 measure_power_at_freq(struct intel_gt *gt, int 
*freq, u64 *power)
        if (err)
                return err;
        *freq = intel_rps_read_actual_frequency(&gt->rps);
-       *power = measure_power(&gt->rps, freq);
+       *power = measure_power(gt, freq);
 
        return err;
 }
@@ -169,7 +169,7 @@ static int slpc_power(struct intel_gt *gt, struct 
intel_engine_cs *engine)
         * actually saves power. Let's see if our RAPL measurement supports
         * that theory.
         */
-       if (!libpower_supported(gt->i915))
+       if (!libpower_supported(gt))
                return 0;
 
        min.freq = slpc->min_freq;
-- 
2.25.1

Reply via email to