Skip to content

Commit bf225f2

Browse files
ickledanvet
authored andcommitted
drm/i915: Move RPS evaluation interval counters to i915->rps
Place the RPS counters inside the RPS struct. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
1 parent 755f68f commit bf225f2

File tree

2 files changed

+23
-27
lines changed

2 files changed

+23
-27
lines changed

drivers/gpu/drm/i915/i915_drv.h

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -902,10 +902,10 @@ struct vlv_s0ix_state {
902902
u32 clock_gate_dis2;
903903
};
904904

905-
struct intel_rps_ei_calc {
906-
u32 cz_ts_ei;
907-
u32 render_ei_c0;
908-
u32 media_ei_c0;
905+
struct intel_rps_ei {
906+
u32 cz_clock;
907+
u32 render_c0;
908+
u32 media_c0;
909909
};
910910

911911
struct intel_gen6_power_mgmt {
@@ -940,6 +940,9 @@ struct intel_gen6_power_mgmt {
940940
bool enabled;
941941
struct delayed_work delayed_resume_work;
942942

943+
/* manual wa residency calculations */
944+
struct intel_rps_ei up_ei, down_ei;
945+
943946
/*
944947
* Protects RPS/RC6 register access and PCU communication.
945948
* Must be taken after struct_mutex if nested.
@@ -1534,13 +1537,6 @@ struct drm_i915_private {
15341537
/* gen6+ rps state */
15351538
struct intel_gen6_power_mgmt rps;
15361539

1537-
/* rps wa up ei calculation */
1538-
struct intel_rps_ei_calc rps_up_ei;
1539-
1540-
/* rps wa down ei calculation */
1541-
struct intel_rps_ei_calc rps_down_ei;
1542-
1543-
15441540
/* ilk-only ips/rps state. Everything in here is protected by the global
15451541
* mchdev_lock in intel_pm.c */
15461542
struct intel_ilk_power_mgmt ips;

drivers/gpu/drm/i915/i915_irq.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,7 +1273,7 @@ static void notify_ring(struct drm_device *dev,
12731273
}
12741274

12751275
static u32 vlv_c0_residency(struct drm_i915_private *dev_priv,
1276-
struct intel_rps_ei_calc *rps_ei)
1276+
struct intel_rps_ei *rps_ei)
12771277
{
12781278
u32 cz_ts, cz_freq_khz;
12791279
u32 render_count, media_count;
@@ -1286,22 +1286,22 @@ static u32 vlv_c0_residency(struct drm_i915_private *dev_priv,
12861286
render_count = I915_READ(VLV_RENDER_C0_COUNT_REG);
12871287
media_count = I915_READ(VLV_MEDIA_C0_COUNT_REG);
12881288

1289-
if (rps_ei->cz_ts_ei == 0) {
1290-
rps_ei->cz_ts_ei = cz_ts;
1291-
rps_ei->render_ei_c0 = render_count;
1292-
rps_ei->media_ei_c0 = media_count;
1289+
if (rps_ei->cz_clock == 0) {
1290+
rps_ei->cz_clock = cz_ts;
1291+
rps_ei->render_c0 = render_count;
1292+
rps_ei->media_c0 = media_count;
12931293

12941294
return dev_priv->rps.cur_freq;
12951295
}
12961296

1297-
elapsed_time = cz_ts - rps_ei->cz_ts_ei;
1298-
rps_ei->cz_ts_ei = cz_ts;
1297+
elapsed_time = cz_ts - rps_ei->cz_clock;
1298+
rps_ei->cz_clock = cz_ts;
12991299

1300-
elapsed_render = render_count - rps_ei->render_ei_c0;
1301-
rps_ei->render_ei_c0 = render_count;
1300+
elapsed_render = render_count - rps_ei->render_c0;
1301+
rps_ei->render_c0 = render_count;
13021302

1303-
elapsed_media = media_count - rps_ei->media_ei_c0;
1304-
rps_ei->media_ei_c0 = media_count;
1303+
elapsed_media = media_count - rps_ei->media_c0;
1304+
rps_ei->media_c0 = media_count;
13051305

13061306
/* Convert all the counters into common unit of milli sec */
13071307
elapsed_time /= VLV_CZ_CLOCK_TO_MILLI_SEC;
@@ -1337,9 +1337,9 @@ static u32 vlv_calc_delay_from_C0_counters(struct drm_i915_private *dev_priv)
13371337
WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock));
13381338

13391339

1340-
if (dev_priv->rps_up_ei.cz_ts_ei == 0) {
1341-
vlv_c0_residency(dev_priv, &dev_priv->rps_up_ei);
1342-
vlv_c0_residency(dev_priv, &dev_priv->rps_down_ei);
1340+
if (dev_priv->rps.up_ei.cz_clock == 0) {
1341+
vlv_c0_residency(dev_priv, &dev_priv->rps.up_ei);
1342+
vlv_c0_residency(dev_priv, &dev_priv->rps.down_ei);
13431343
return dev_priv->rps.cur_freq;
13441344
}
13451345

@@ -1354,10 +1354,10 @@ static u32 vlv_calc_delay_from_C0_counters(struct drm_i915_private *dev_priv)
13541354
dev_priv->rps.ei_interrupt_count = 0;
13551355

13561356
residency_C0_down = vlv_c0_residency(dev_priv,
1357-
&dev_priv->rps_down_ei);
1357+
&dev_priv->rps.down_ei);
13581358
} else {
13591359
residency_C0_up = vlv_c0_residency(dev_priv,
1360-
&dev_priv->rps_up_ei);
1360+
&dev_priv->rps.up_ei);
13611361
}
13621362

13631363
new_delay = dev_priv->rps.cur_freq;

0 commit comments

Comments
 (0)