Commit e367d3c4 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin Committed by Umesh Nerlige Ramappa

drm/i915/pmu: Support PMU for all engines

Given how the metrics are already exported, we also need to run sampling
over engines from all GTs.

Problem of GT frequencies is left for later.
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Signed-off-by: default avatarUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230519154946.3751971-3-umesh.nerlige.ramappa@intel.com
parent a644fde7
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "gt/intel_engine_pm.h" #include "gt/intel_engine_pm.h"
#include "gt/intel_engine_regs.h" #include "gt/intel_engine_regs.h"
#include "gt/intel_engine_user.h" #include "gt/intel_engine_user.h"
#include "gt/intel_gt.h"
#include "gt/intel_gt_pm.h" #include "gt/intel_gt_pm.h"
#include "gt/intel_gt_regs.h" #include "gt/intel_gt_regs.h"
#include "gt/intel_rc6.h" #include "gt/intel_rc6.h"
...@@ -425,8 +426,9 @@ static enum hrtimer_restart i915_sample(struct hrtimer *hrtimer) ...@@ -425,8 +426,9 @@ static enum hrtimer_restart i915_sample(struct hrtimer *hrtimer)
struct drm_i915_private *i915 = struct drm_i915_private *i915 =
container_of(hrtimer, struct drm_i915_private, pmu.timer); container_of(hrtimer, struct drm_i915_private, pmu.timer);
struct i915_pmu *pmu = &i915->pmu; struct i915_pmu *pmu = &i915->pmu;
struct intel_gt *gt = to_gt(i915);
unsigned int period_ns; unsigned int period_ns;
struct intel_gt *gt;
unsigned int i;
ktime_t now; ktime_t now;
if (!READ_ONCE(pmu->timer_enabled)) if (!READ_ONCE(pmu->timer_enabled))
...@@ -442,8 +444,13 @@ static enum hrtimer_restart i915_sample(struct hrtimer *hrtimer) ...@@ -442,8 +444,13 @@ static enum hrtimer_restart i915_sample(struct hrtimer *hrtimer)
* grabbing the forcewake. However the potential error from timer call- * grabbing the forcewake. However the potential error from timer call-
* back delay greatly dominates this so we keep it simple. * back delay greatly dominates this so we keep it simple.
*/ */
for_each_gt(gt, i915, i) {
engines_sample(gt, period_ns); engines_sample(gt, period_ns);
if (i == 0) /* FIXME */
frequency_sample(gt, period_ns); frequency_sample(gt, period_ns);
}
hrtimer_forward(hrtimer, now, ns_to_ktime(PERIOD)); hrtimer_forward(hrtimer, now, ns_to_ktime(PERIOD));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment