Patch "drm/i915: Stop using RP_DOWN_EI on Baytrail" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
drm/i915: Stop using RP_DOWN_EI on Baytrail
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-i915-stop-using-rp_down_ei-on-baytrail.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
8f68d591d4765b2e1ce9d916ac7bc5583285c4adMon Sep 17 00:00:00 2001
From: Chris Wilson <[email protected]>
Date: Mon, 13 Mar 2017 17:06:17 +0000
Subject: drm/i915: Stop using RP_DOWN_EI on Baytrail
From: Chris Wilson <[email protected]>
commit 8f68d591d4765b2e1ce9d916ac7bc5583285c4ad upstream.
On Baytrail, we manually calculate busyness over the evaluation interval to avoid issues with miscaluations with RC6 enabled. However, it turns out that the DOWN_EI interrupt generator is completely bust - it operates in two modes, continuous or never. Neither of which are conducive to good behaviour. Stop unmask the DOWN_EI interrupt and just compute everything from the UP_EI which does seem to correspond to the desired interval.
v2: Fixup gen6_rps_pm_mask() as well
v3: Inline vlv_c0_above() to combine the now identical elapsed calculation for up/down and simplify the threshold testing
--- drivers/gpu/drm/i915/i915_drv.h | 2 - drivers/gpu/drm/i915/i915_irq.c | 73 +++++++++++++++------------------------- drivers/gpu/drm/i915/intel_pm.c | 5 +- 3 files changed, 32 insertions(+), 48 deletions(-)
drivers/gpu/drm/i915/i915_drv.h +1 -1
@@ -1159,7 +1159,7 @@ struct intel_gen6_power_mgmt {struct intel_rps_client semaphores, mmioflips;/* manual wa residency calculations */ -struct intel_rps_ei up_ei, down_ei; +struct intel_rps_ei ei;/* * Protects RPS/RC6 register access and PCU communication.
drivers/gpu/drm/i915/i915_irq.c +28 -45
103 lines not on this page · raw message
drivers/gpu/drm/i915/intel_pm.c +3 -2
@@ -4411,8 +4411,9 @@ static u32 gen6_rps_pm_mask(struct drm_i {u32 mask =0 ; +/* We use UP_EI_EXPIRED interupts for both up/down in manual mode */ if (val > dev_priv->rps.min_freq_softlimit) - mask |=GEN6_PM_RP_DOWN_EI_EXPIRED |GEN6_PM_RP_DOWN_THRESHOLD |GEN6_PM_RP_DOWN_TIMEOUT ; + mask |=GEN6_PM_RP_UP_EI_EXPIRED |GEN6_PM_RP_DOWN_THRESHOLD |GEN6_PM_RP_DOWN_TIMEOUT ;if (val < dev_priv->rps.max_freq_softlimit) mask |=GEN6_PM_RP_UP_EI_EXPIRED |GEN6_PM_RP_UP_THRESHOLD ;
@@ -4516,7 +4517,7 @@ void gen6_rps_busy(struct drm_i915_priva {mutex_lock (&dev_priv->rps.hw_lock);if (dev_priv->rps.enabled) { -if (dev_priv->pm_rps_events & (GEN6_PM_RP_DOWN_EI_EXPIRED |GEN6_PM_RP_UP_EI_EXPIRED )) +if (dev_priv->pm_rps_events &GEN6_PM_RP_UP_EI_EXPIRED )gen6_rps_reset_ei (dev_priv);I915_WRITE (GEN6_PMINTRMSK ,gen6_rps_pm_mask (dev_priv, dev_priv->rps.cur_freq));
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/drm-i915-stop-using-rp_down_ei-on-baytrail.patch queue-4.4/drm-i915-avoid-tweaking-evaluation-thresholds-on-baytrail-v3.patch