| From efe7db1c227423bf920c9a49b4f99f1eaae97937 Mon Sep 17 00:00:00 2001 |
| From: Vinit Azad <vinit.azad@intel.com> |
| Date: Wed, 14 Aug 2013 13:34:33 -0700 |
| Subject: drm/i915: Only unmask required PM interrupts |
| |
| Un-masking all PM interrupts causes hardware to generate |
| interrupts regardless of whether the interrupts are enabled |
| on the DE side. Since turbo only need up/down threshold and |
| rc6 timeout interrupt, mask all other interrupts bits to avoid |
| unnecessary overhead/wake up. |
| |
| Note that our interrupt handler isn't being fired since we do set the |
| IER bits properly (IIR bits aren't set). The overhead isn't because |
| our driver is reacting to these interrupts, but because hardware keeps |
| generating internal messages when PMINTRMSK doesn't mask out the |
| up/down EI interrupts (which happen periodically). |
| |
| Signed-off-by: Vinit Azad <vinit.azad@intel.com> |
| [danvet: Add follow-up explanation of the precise effects from Vinit |
| as a note to the commit message.] |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| |
| (cherry picked from commit fd547d25a8ac3f390fee4a689de86a64e3d65fe1) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_pm.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c |
| index d82d70588d11..21f4c958bbfe 100644 |
| --- a/drivers/gpu/drm/i915/intel_pm.c |
| +++ b/drivers/gpu/drm/i915/intel_pm.c |
| @@ -3453,8 +3453,8 @@ static void gen6_enable_rps_interrupts(struct drm_device *dev) |
| I915_WRITE(GEN6_PMIMR, I915_READ(GEN6_PMIMR) & ~GEN6_PM_RPS_EVENTS); |
| I915_WRITE(GEN6_PMIIR, GEN6_PM_RPS_EVENTS); |
| spin_unlock_irq(&dev_priv->irq_lock); |
| - /* unmask all PM interrupts */ |
| - I915_WRITE(GEN6_PMINTRMSK, 0); |
| + /* only unmask PM interrupts we need. Mask all others. */ |
| + I915_WRITE(GEN6_PMINTRMSK, ~GEN6_PM_RPS_EVENTS); |
| } |
| |
| static void gen6_enable_rps(struct drm_device *dev) |
| -- |
| 1.8.5.rc3 |
| |