[Intel-gfx] [PATCH 7/9] drm/i915: allow package C8+ states on Haswell (disabled)

Chris Wilson chris at chris-wilson.co.uk
Fri Aug 9 22:42:48 CEST 2013


On Fri, Aug 09, 2013 at 05:10:05PM -0300, Paulo Zanoni wrote:
> +/* Disable interrupts so we can allow Package C8+. */
> +void hsw_pc8_disable_interrupts(struct drm_device *dev)
> +{
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	unsigned long irqflags;
> +
> +	spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
> +
> +	dev_priv->pc8.regsave.deimr = I915_READ(DEIMR);
> +	dev_priv->pc8.regsave.sdeimr = I915_READ(SDEIMR);
> +	dev_priv->pc8.regsave.gtimr = I915_READ(GTIMR);
> +	dev_priv->pc8.regsave.gtier = I915_READ(GTIER);
> +	dev_priv->pc8.regsave.gen6_pmimr = I915_READ(GEN6_PMIMR);
> +
> +	ironlake_disable_display_irq(dev_priv, ~DE_PCH_EVENT_IVB);
> +	ibx_disable_display_interrupt(dev_priv, ~SDE_HOTPLUG_MASK_CPT);
> +	ilk_disable_gt_irq(dev_priv, 0xffffffff);
> +	snb_disable_pm_irq(dev_priv, 0xffffffff);
> +
> +	dev_priv->pc8.irqs_disabled = true;
> +
> +	WARN(I915_READ(DEIIR), "DEIIR is not 0\n");
> +	WARN(I915_READ(SDEIIR), "SDEIIR is not 0\n");
> +	WARN(I915_READ(GTIIR), "GTIIR is not 0\n");
> +	WARN(I915_READ(GEN6_PMIIR), "GEN6_PMIIR is not 0\n");

I keep looking at this, because we will hit these warns. But I also
don't think it a problem, as the interrupt handle will run as soon as we
release the irq_lock and that will be the final time until we reenable
interrupts. (Just kill the WARNs.)

Now, why IMR and not IER?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list