Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b3016c4 authored by Chris Wilson's avatar Chris Wilson
Browse files

Merge branch 'drm-intel-fixes' into drm-intel-next

parents 021357ac dd8849c8
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -1350,17 +1350,25 @@ void i915_hangcheck_elapsed(unsigned long data)
		i915_seqno_passed(i915_get_gem_seqno(dev,
				&dev_priv->render_ring),
			i915_get_tail_request(dev)->seqno)) {
		bool missed_wakeup = false;

		dev_priv->hangcheck_count = 0;

		/* Issue a wake-up to catch stuck h/w. */
		if (dev_priv->render_ring.waiting_gem_seqno |
		    dev_priv->bsd_ring.waiting_gem_seqno) {
			DRM_ERROR("Hangcheck timer elapsed... GPU idle, missed IRQ.\n");
			if (dev_priv->render_ring.waiting_gem_seqno)
		if (dev_priv->render_ring.waiting_gem_seqno &&
		    waitqueue_active(&dev_priv->render_ring.irq_queue)) {
			DRM_WAKEUP(&dev_priv->render_ring.irq_queue);
			if (dev_priv->bsd_ring.waiting_gem_seqno)
			missed_wakeup = true;
		}

		if (dev_priv->bsd_ring.waiting_gem_seqno &&
		    waitqueue_active(&dev_priv->bsd_ring.irq_queue)) {
			DRM_WAKEUP(&dev_priv->bsd_ring.irq_queue);
			missed_wakeup = true;
		}

		if (missed_wakeup)
			DRM_ERROR("Hangcheck timer elapsed... GPU idle, missed IRQ.\n");
		return;
	}

+8 −0
Original line number Diff line number Diff line
@@ -2215,9 +2215,17 @@
#define  WM1_LP_SR_EN		(1<<31)
#define  WM1_LP_LATENCY_SHIFT	24
#define  WM1_LP_LATENCY_MASK	(0x7f<<24)
#define  WM1_LP_FBC_LP1_MASK	(0xf<<20)
#define  WM1_LP_FBC_LP1_SHIFT	20
#define  WM1_LP_SR_MASK		(0x1ff<<8)
#define  WM1_LP_SR_SHIFT	8
#define  WM1_LP_CURSOR_MASK	(0x3f)
#define WM2_LP_ILK		0x4510c
#define  WM2_LP_EN		(1<<31)
#define WM3_LP_ILK		0x45110
#define  WM3_LP_EN		(1<<31)
#define WM1S_LP_ILK		0x45120
#define  WM1S_LP_EN		(1<<31)

/* Memory latency timer register */
#define MLTR_ILK		0x11222
+4 −2
Original line number Diff line number Diff line
@@ -3516,8 +3516,7 @@ static void ironlake_update_wm(struct drm_device *dev, int planea_clock,
		reg_value = I915_READ(WM1_LP_ILK);
		reg_value &= ~(WM1_LP_LATENCY_MASK | WM1_LP_SR_MASK |
			       WM1_LP_CURSOR_MASK);
		reg_value |= WM1_LP_SR_EN |
			     (ilk_sr_latency << WM1_LP_LATENCY_SHIFT) |
		reg_value |= (ilk_sr_latency << WM1_LP_LATENCY_SHIFT) |
			     (sr_wm << WM1_LP_SR_SHIFT) | cursor_wm;

		I915_WRITE(WM1_LP_ILK, reg_value);
@@ -5839,6 +5838,9 @@ void intel_init_clock_gating(struct drm_device *dev)
			I915_WRITE(DISP_ARB_CTL,
					(I915_READ(DISP_ARB_CTL) |
						DISP_FBC_WM_DIS));
		I915_WRITE(WM3_LP_ILK, 0);
		I915_WRITE(WM2_LP_ILK, 0);
		I915_WRITE(WM1_LP_ILK, 0);
		}
		/*
		 * Based on the document from hardware guys the following bits