[Intel-gfx] [RFC 02/10] drm/i915: Add intel_energy_uJ
Tvrtko Ursulin
tursulin at ursulin.net
Wed Aug 2 12:32:42 UTC 2017
From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Extract code from i915_energy_uJ (debugfs) so it can be used by
other callers in future patches.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
drivers/gpu/drm/i915/i915_debugfs.c | 14 +-------------
drivers/gpu/drm/i915/i915_drv.h | 2 ++
drivers/gpu/drm/i915/intel_pm.c | 20 ++++++++++++++++++++
3 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index ea50c4a1efae..67287ecc2ed1 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2783,23 +2783,11 @@ static int i915_sink_crc(struct seq_file *m, void *data)
static int i915_energy_uJ(struct seq_file *m, void *data)
{
struct drm_i915_private *dev_priv = node_to_i915(m->private);
- u64 power;
- u32 units;
if (INTEL_GEN(dev_priv) < 6)
return -ENODEV;
- intel_runtime_pm_get(dev_priv);
-
- rdmsrl(MSR_RAPL_POWER_UNIT, power);
- power = (power & 0x1f00) >> 8;
- units = 1000000 / (1 << power); /* convert to uJ */
- power = I915_READ(MCH_SECP_NRG_STTS);
- power *= units;
-
- intel_runtime_pm_put(dev_priv);
-
- seq_printf(m, "%llu", (long long unsigned)power);
+ seq_printf(m, "%llu", (long long unsigned)intel_energy_uJ(dev_priv));
return 0;
}
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index d47215e73405..124cbfc9353c 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -4018,6 +4018,8 @@ static inline u64 intel_rc6_residency_us(struct drm_i915_private *dev_priv,
return DIV_ROUND_UP_ULL(intel_rc6_residency_ns(dev_priv, reg), 1000);
}
+u64 intel_energy_uJ(struct drm_i915_private *dev_priv);
+
#define I915_READ8(reg) dev_priv->uncore.funcs.mmio_readb(dev_priv, (reg), true)
#define I915_WRITE8(reg, val) dev_priv->uncore.funcs.mmio_writeb(dev_priv, (reg), (val), true)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index bfbce74a4013..ad49932b445c 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -9205,3 +9205,23 @@ u64 intel_rc6_residency_ns(struct drm_i915_private *dev_priv,
return res;
}
+
+u64 intel_energy_uJ(struct drm_i915_private *dev_priv)
+{
+ u64 power;
+ u32 units, val;
+
+ if (GEM_WARN_ON(INTEL_GEN(dev_priv) < 6))
+ return 0;
+
+ intel_runtime_pm_get(dev_priv);
+
+ rdmsrl(MSR_RAPL_POWER_UNIT, power);
+ val = (power >> 8) & 0x1f;
+ units = 1000000 >> val; /* convert to uJ */
+ power = I915_READ(MCH_SECP_NRG_STTS) * units;
+
+ intel_runtime_pm_put(dev_priv);
+
+ return power;
+}
--
2.9.4
More information about the Intel-gfx
mailing list