Signed-off-by: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_trace.h    | 15 +++-----
 drivers/gpu/drm/i915/intel_display.c | 74 ++++++++++++++----------------------
 drivers/gpu/drm/i915/intel_pm.c      | 16 ++++----
 drivers/gpu/drm/i915/intel_sprite.c  | 61 +++++------------------------
 4 files changed, 52 insertions(+), 114 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_trace.h 
b/drivers/gpu/drm/i915/i915_trace.h
index d4a5776282ff..84bad38b20ae 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -194,9 +194,8 @@ TRACE_EVENT(vlv_fifo_size,
 
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
-                          __entry->frame = 
crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                               
       crtc->pipe);
-                          __entry->scanline = intel_get_crtc_scanline(crtc);
+                          __entry->frame = 
__intel_crtc_get_vblank_counter(crtc);
+                          __entry->scanline = __intel_get_crtc_scanline(crtc);
                           __entry->sprite0_start = sprite0_start;
                           __entry->sprite1_start = sprite1_start;
                           __entry->fifo_size = fifo_size;
@@ -226,9 +225,8 @@ TRACE_EVENT(intel_update_plane,
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
                           __entry->name = plane->name;
-                          __entry->frame = 
crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                               
       crtc->pipe);
-                          __entry->scanline = intel_get_crtc_scanline(crtc);
+                          __entry->frame = 
__intel_crtc_get_vblank_counter(crtc);
+                          __entry->scanline = __intel_get_crtc_scanline(crtc);
                           memcpy(__entry->src, &plane->state->src, 
sizeof(__entry->src));
                           memcpy(__entry->dst, &plane->state->dst, 
sizeof(__entry->dst));
                           ),
@@ -254,9 +252,8 @@ TRACE_EVENT(intel_disable_plane,
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
                           __entry->name = plane->name;
-                          __entry->frame = 
crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                               
       crtc->pipe);
-                          __entry->scanline = intel_get_crtc_scanline(crtc);
+                          __entry->frame = 
__intel_crtc_get_vblank_counter(crtc);
+                          __entry->scanline = __intel_get_crtc_scanline(crtc);
                           ),
 
            TP_printk("pipe %c, plane %s, frame=%u, scanline=%u",
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 60ba5bb3f34c..02f91a15d2aa 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2734,14 +2734,17 @@ static void intel_plane_disable_noatomic(struct 
intel_crtc *crtc,
                to_intel_crtc_state(crtc->base.state);
        struct intel_plane_state *plane_state =
                to_intel_plane_state(plane->base.state);
+       struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
 
        intel_set_plane_visible(crtc_state, plane_state, false);
 
        if (plane->id == PLANE_PRIMARY)
                intel_pre_disable_primary_noatomic(&crtc->base);
 
+       spin_lock_irq(&dev_priv->uncore.lock);
        trace_intel_disable_plane(&plane->base, crtc);
        plane->disable_plane(plane, crtc);
+       spin_unlock_irq(&dev_priv->uncore.lock);
 }
 
 static void
@@ -3255,7 +3258,6 @@ static void i9xx_update_plane(struct intel_plane *plane,
        i915_reg_t reg = DSPCNTR(i9xx_plane);
        int x = plane_state->main.x;
        int y = plane_state->main.y;
-       unsigned long irqflags;
        u32 dspaddr_offset;
 
        linear_offset = intel_fb_xy_to_linear(x, y, plane_state, 0);
@@ -3265,8 +3267,6 @@ static void i9xx_update_plane(struct intel_plane *plane,
        else
                dspaddr_offset = linear_offset;
 
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
-
        if (INTEL_GEN(dev_priv) < 4) {
                /* pipesrc and dspsize control the size that is scaled from,
                 * which should always be the user's requested size.
@@ -3303,8 +3303,6 @@ static void i9xx_update_plane(struct intel_plane *plane,
                              dspaddr_offset);
        }
        POSTING_READ_FW(reg);
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static void i9xx_disable_plane(struct intel_plane *plane,
@@ -3312,9 +3310,6 @@ static void i9xx_disable_plane(struct intel_plane *plane,
 {
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        enum i9xx_plane_id i9xx_plane = plane->i9xx_plane;
-       unsigned long irqflags;
-
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
 
        I915_WRITE_FW(DSPCNTR(i9xx_plane), 0);
        if (INTEL_GEN(dev_priv) >= 4)
@@ -3322,8 +3317,6 @@ static void i9xx_disable_plane(struct intel_plane *plane,
        else
                I915_WRITE_FW(DSPADDR(i9xx_plane), 0);
        POSTING_READ_FW(DSPCNTR(i9xx_plane));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static bool i9xx_plane_get_hw_state(struct intel_plane *plane)
@@ -3364,9 +3357,9 @@ static void skl_detach_scaler(struct intel_crtc 
*intel_crtc, int id)
        struct drm_device *dev = intel_crtc->base.dev;
        struct drm_i915_private *dev_priv = to_i915(dev);
 
-       I915_WRITE(SKL_PS_CTRL(intel_crtc->pipe, id), 0);
-       I915_WRITE(SKL_PS_WIN_POS(intel_crtc->pipe, id), 0);
-       I915_WRITE(SKL_PS_WIN_SZ(intel_crtc->pipe, id), 0);
+       I915_WRITE_FW(SKL_PS_CTRL(intel_crtc->pipe, id), 0);
+       I915_WRITE_FW(SKL_PS_WIN_POS(intel_crtc->pipe, id), 0);
+       I915_WRITE_FW(SKL_PS_WIN_SZ(intel_crtc->pipe, id), 0);
 }
 
 /*
@@ -3752,9 +3745,9 @@ static void intel_update_pipe_config(const struct 
intel_crtc_state *old_crtc_sta
         * sized surface.
         */
 
-       I915_WRITE(PIPESRC(crtc->pipe),
-                  ((new_crtc_state->pipe_src_w - 1) << 16) |
-                  (new_crtc_state->pipe_src_h - 1));
+       I915_WRITE_FW(PIPESRC(crtc->pipe),
+                     ((new_crtc_state->pipe_src_w - 1) << 16) |
+                     (new_crtc_state->pipe_src_h - 1));
 
        /* on skylake this is done by detaching scalers */
        if (INTEL_GEN(dev_priv) >= 9) {
@@ -4841,10 +4834,10 @@ static void skylake_pfit_enable(struct intel_crtc *crtc)
                        return;
 
                id = scaler_state->scaler_id;
-               I915_WRITE(SKL_PS_CTRL(pipe, id), PS_SCALER_EN |
+               I915_WRITE_FW(SKL_PS_CTRL(pipe, id), PS_SCALER_EN |
                        PS_FILTER_MEDIUM | scaler_state->scalers[id].mode);
-               I915_WRITE(SKL_PS_WIN_POS(pipe, id), 
crtc->config->pch_pfit.pos);
-               I915_WRITE(SKL_PS_WIN_SZ(pipe, id), 
crtc->config->pch_pfit.size);
+               I915_WRITE_FW(SKL_PS_WIN_POS(pipe, id), 
crtc->config->pch_pfit.pos);
+               I915_WRITE_FW(SKL_PS_WIN_SZ(pipe, id), 
crtc->config->pch_pfit.size);
        }
 }
 
@@ -4860,12 +4853,12 @@ static void ironlake_pfit_enable(struct intel_crtc 
*crtc)
                 * e.g. x201.
                 */
                if (IS_IVYBRIDGE(dev_priv) || IS_HASWELL(dev_priv))
-                       I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3 |
+                       I915_WRITE_FW(PF_CTL(pipe), PF_ENABLE | 
PF_FILTER_MED_3x3 |
                                                 PF_PIPE_SEL_IVB(pipe));
                else
-                       I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3);
-               I915_WRITE(PF_WIN_POS(pipe), crtc->config->pch_pfit.pos);
-               I915_WRITE(PF_WIN_SZ(pipe), crtc->config->pch_pfit.size);
+                       I915_WRITE_FW(PF_CTL(pipe), PF_ENABLE | 
PF_FILTER_MED_3x3);
+               I915_WRITE_FW(PF_WIN_POS(pipe), crtc->config->pch_pfit.pos);
+               I915_WRITE_FW(PF_WIN_SZ(pipe), crtc->config->pch_pfit.size);
        }
 }
 
@@ -5172,14 +5165,17 @@ static void intel_pre_plane_update(struct 
intel_crtc_state *old_crtc_state,
 static void intel_crtc_disable_planes(struct drm_crtc *crtc, unsigned 
plane_mask)
 {
        struct drm_device *dev = crtc->dev;
+       struct drm_i915_private *dev_priv = to_i915(dev);
        struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
        struct drm_plane *p;
        int pipe = intel_crtc->pipe;
 
        intel_crtc_dpms_overlay_disable(intel_crtc);
 
+       spin_lock_irq(&dev_priv->uncore.lock);
        drm_for_each_plane_mask(p, dev, plane_mask)
                to_intel_plane(p)->disable_plane(to_intel_plane(p), intel_crtc);
+       spin_unlock_irq(&dev_priv->uncore.lock);
 
        /*
         * FIXME: Once we grow proper nuclear flip support out of this we need
@@ -5477,10 +5473,12 @@ static void haswell_crtc_enable(struct intel_crtc_state 
*pipe_config,
        if (psl_clkgate_wa)
                glk_pipe_scaler_clock_gating_wa(dev_priv, pipe, true);
 
+       spin_lock_irq(&dev_priv->uncore.lock);
        if (INTEL_GEN(dev_priv) >= 9)
                skylake_pfit_enable(intel_crtc);
        else
                ironlake_pfit_enable(intel_crtc);
+       spin_unlock_irq(&dev_priv->uncore.lock);
 
        /*
         * On ILK+ LUT must be loaded before the pipe is running but with
@@ -5533,9 +5531,9 @@ static void ironlake_pfit_disable(struct intel_crtc 
*crtc, bool force)
        /* To avoid upsetting the power well on haswell only disable the pfit if
         * it's in use. The hw state code will make sure we get this right. */
        if (force || crtc->config->pch_pfit.enabled) {
-               I915_WRITE(PF_CTL(pipe), 0);
-               I915_WRITE(PF_WIN_POS(pipe), 0);
-               I915_WRITE(PF_WIN_SZ(pipe), 0);
+               I915_WRITE_FW(PF_CTL(pipe), 0);
+               I915_WRITE_FW(PF_WIN_POS(pipe), 0);
+               I915_WRITE_FW(PF_WIN_SZ(pipe), 0);
        }
 }
 
@@ -5623,10 +5621,12 @@ static void haswell_crtc_disable(struct 
intel_crtc_state *old_crtc_state,
        if (!transcoder_is_dsi(cpu_transcoder))
                intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder);
 
+       spin_lock_irq(&dev_priv->uncore.lock);
        if (INTEL_GEN(dev_priv) >= 9)
                skylake_scaler_disable(intel_crtc);
        else
                ironlake_pfit_disable(intel_crtc, false);
+       spin_unlock_irq(&dev_priv->uncore.lock);
 
        if (!transcoder_is_dsi(cpu_transcoder))
                intel_ddi_disable_pipe_clock(intel_crtc->config);
@@ -9462,7 +9462,6 @@ static void i845_update_cursor(struct intel_plane *plane,
 {
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        u32 cntl = 0, base = 0, pos = 0, size = 0;
-       unsigned long irqflags;
 
        if (plane_state && plane_state->base.visible) {
                unsigned int width = plane_state->base.crtc_w;
@@ -9475,8 +9474,6 @@ static void i845_update_cursor(struct intel_plane *plane,
                pos = intel_cursor_position(plane_state);
        }
 
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
-
        /* On these chipsets we can only modify the base/size/stride
         * whilst the cursor is disabled.
         */
@@ -9497,8 +9494,6 @@ static void i845_update_cursor(struct intel_plane *plane,
        }
 
        POSTING_READ_FW(CURCNTR(PIPE_A));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static void i845_disable_cursor(struct intel_plane *plane,
@@ -9657,7 +9652,6 @@ static void i9xx_update_cursor(struct intel_plane *plane,
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        enum pipe pipe = plane->pipe;
        u32 cntl = 0, base = 0, pos = 0, fbc_ctl = 0;
-       unsigned long irqflags;
 
        if (plane_state && plane_state->base.visible) {
                cntl = plane_state->ctl;
@@ -9669,8 +9663,6 @@ static void i9xx_update_cursor(struct intel_plane *plane,
                pos = intel_cursor_position(plane_state);
        }
 
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
-
        /*
         * On some platforms writing CURCNTR first will also
         * cause CURPOS to be armed by the CURBASE write.
@@ -9707,8 +9699,6 @@ static void i9xx_update_cursor(struct intel_plane *plane,
        }
 
        POSTING_READ_FW(CURBASE(pipe));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static void i9xx_disable_cursor(struct intel_plane *plane,
@@ -12070,16 +12060,6 @@ static int intel_atomic_prepare_commit(struct 
drm_device *dev,
        return drm_atomic_helper_prepare_planes(dev, state);
 }
 
-u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc)
-{
-       struct drm_device *dev = crtc->base.dev;
-
-       if (!dev->max_vblank_count)
-               return drm_crtc_accurate_vblank_count(&crtc->base);
-
-       return dev->driver->get_vblank_counter(dev, crtc->pipe);
-}
-
 static void intel_update_crtc(struct drm_crtc *crtc,
                              struct drm_atomic_state *state,
                              struct drm_crtc_state *old_crtc_state,
@@ -13130,6 +13110,7 @@ intel_legacy_cursor_update(struct drm_plane *plane,
        /* Swap plane state */
        plane->state = new_plane_state;
 
+       spin_lock_irq(&dev_priv->uncore.lock);
        if (plane->state->visible) {
                trace_intel_update_plane(plane, to_intel_crtc(crtc));
                intel_plane->update_plane(intel_plane,
@@ -13139,6 +13120,7 @@ intel_legacy_cursor_update(struct drm_plane *plane,
                trace_intel_disable_plane(plane, to_intel_crtc(crtc));
                intel_plane->disable_plane(intel_plane, to_intel_crtc(crtc));
        }
+       spin_unlock_irq(&dev_priv->uncore.lock);
 
        old_vma = fetch_and_zero(&to_intel_plane_state(old_plane_state)->vma);
        if (old_vma)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index b2f5e3b9ada8..1899dad5b9d9 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -1964,7 +1964,6 @@ static void vlv_atomic_update_fifo(struct 
intel_atomic_state *state,
         * intel_pipe_update_start() has already disabled interrupts
         * for us, so a plain spin_lock() is sufficient here.
         */
-       spin_lock(&dev_priv->uncore.lock);
 
        switch (crtc->pipe) {
                uint32_t dsparb, dsparb2, dsparb3;
@@ -2024,8 +2023,6 @@ static void vlv_atomic_update_fifo(struct 
intel_atomic_state *state,
        }
 
        POSTING_READ_FW(DSPARB);
-
-       spin_unlock(&dev_priv->uncore.lock);
 }
 
 #undef VLV_FIFO
@@ -4795,9 +4792,9 @@ static void skl_ddb_entry_write(struct drm_i915_private 
*dev_priv,
                                const struct skl_ddb_entry *entry)
 {
        if (entry->end)
-               I915_WRITE(reg, (entry->end - 1) << 16 | entry->start);
+               I915_WRITE_FW(reg, (entry->end - 1) << 16 | entry->start);
        else
-               I915_WRITE(reg, 0);
+               I915_WRITE_FW(reg, 0);
 }
 
 static void skl_write_wm_level(struct drm_i915_private *dev_priv,
@@ -4812,7 +4809,7 @@ static void skl_write_wm_level(struct drm_i915_private 
*dev_priv,
                val |= level->plane_res_l << PLANE_WM_LINES_SHIFT;
        }
 
-       I915_WRITE(reg, val);
+       I915_WRITE_FW(reg, val);
 }
 
 static void skl_write_plane_wm(struct intel_crtc *intel_crtc,
@@ -5181,7 +5178,7 @@ static void skl_atomic_update_crtc_wm(struct 
intel_atomic_state *state,
        if (!(state->wm_results.dirty_pipes & drm_crtc_mask(&crtc->base)))
                return;
 
-       I915_WRITE(PIPE_WM_LINETIME(pipe), pipe_wm->linetime);
+       I915_WRITE_FW(PIPE_WM_LINETIME(pipe), pipe_wm->linetime);
 
        for_each_plane_id_on_crtc(crtc, plane_id) {
                if (plane_id != PLANE_CURSOR)
@@ -5208,8 +5205,11 @@ static void skl_initial_wm(struct intel_atomic_state 
*state,
 
        mutex_lock(&dev_priv->wm.wm_mutex);
 
-       if (cstate->base.active_changed)
+       if (cstate->base.active_changed) {
+               spin_lock_irq(&dev_priv->uncore.lock);
                skl_atomic_update_crtc_wm(state, cstate);
+               spin_unlock_irq(&dev_priv->uncore.lock);
+       }
 
        skl_copy_wm_for_pipe(hw_vals, results, pipe);
 
diff --git a/drivers/gpu/drm/i915/intel_sprite.c 
b/drivers/gpu/drm/i915/intel_sprite.c
index 95f0999ea18a..094b331b522d 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -98,6 +98,9 @@ void intel_pipe_update_start(const struct intel_crtc_state 
*new_crtc_state)
                intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI);
        DEFINE_WAIT(wait);
 
+       /* Must be called before we acquire the spinlock. */
+       WARN_ON(drm_crtc_vblank_get(&crtc->base));
+
        vblank_start = adjusted_mode->crtc_vblank_start;
        if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
                vblank_start = DIV_ROUND_UP(vblank_start, 2);
@@ -107,10 +110,7 @@ void intel_pipe_update_start(const struct intel_crtc_state 
*new_crtc_state)
                                                      VBLANK_EVASION_TIME_US);
        max = vblank_start - 1;
 
-       local_irq_disable();
-
-       if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
-               return;
+       spin_lock_irq(&dev_priv->uncore.lock);
 
        if (min <= 0 || max <= 0)
                return;
@@ -118,7 +118,6 @@ void intel_pipe_update_start(const struct intel_crtc_state 
*new_crtc_state)
        crtc->debug.min_vbl = min;
        crtc->debug.max_vbl = max;
 
-       spin_lock(&dev_priv->uncore.lock);
        trace_i915_pipe_update_start(crtc);
 
        for (;;) {
@@ -166,10 +165,9 @@ void intel_pipe_update_start(const struct intel_crtc_state 
*new_crtc_state)
        while (need_vlv_dsi_wa && scanline == vblank_start)
                scanline = __intel_get_crtc_scanline(crtc);
 
-       spin_unlock(&dev_priv->uncore.lock);
        crtc->debug.scanline_start = scanline;
        crtc->debug.start_vbl_time = ktime_get();
-       crtc->debug.start_vbl_count = intel_crtc_get_vblank_counter(crtc);
+       crtc->debug.start_vbl_count = __intel_crtc_get_vblank_counter(crtc);
 
        trace_i915_pipe_update_vblank_evaded(crtc);
 }
@@ -186,8 +184,8 @@ void intel_pipe_update_end(struct intel_crtc_state 
*new_crtc_state)
 {
        struct intel_crtc *crtc = to_intel_crtc(new_crtc_state->base.crtc);
        enum pipe pipe = crtc->pipe;
-       int scanline_end = intel_get_crtc_scanline(crtc);
-       u32 end_vbl_count = intel_crtc_get_vblank_counter(crtc);
+       int scanline_end = __intel_get_crtc_scanline(crtc);
+       u32 end_vbl_count = __intel_crtc_get_vblank_counter(crtc);
        ktime_t end_vbl_time = ktime_get();
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
 
@@ -197,11 +195,11 @@ void intel_pipe_update_end(struct intel_crtc_state 
*new_crtc_state)
         * Would be slightly nice to just grab the vblank count and arm the
         * event outside of the critical section - the spinlock might spin for a
         * while ... */
+       spin_unlock(&dev_priv->uncore.lock);
        if (new_crtc_state->base.event) {
                spin_lock(&crtc->base.dev->event_lock);
                drm_crtc_arm_vblank_event(&crtc->base, 
new_crtc_state->base.event);
                spin_unlock(&crtc->base.dev->event_lock);
-
                new_crtc_state->base.event = NULL;
        } else
                drm_crtc_vblank_put(&crtc->base);
@@ -211,7 +209,8 @@ void intel_pipe_update_end(struct intel_crtc_state 
*new_crtc_state)
        if (intel_vgpu_active(dev_priv))
                return;
 
-       if (crtc->debug.start_vbl_count &&
+       if (INTEL_GEN(dev_priv) < 9 &&
+           crtc->debug.start_vbl_count &&
            crtc->debug.start_vbl_count != end_vbl_count) {
                DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) 
time %lld us, min %d, max %d, scanline start %d, end %d\n",
                          pipe_name(pipe), crtc->debug.start_vbl_count,
@@ -253,7 +252,6 @@ skl_update_plane(struct intel_plane *plane,
        uint32_t y = plane_state->main.y;
        uint32_t src_w = drm_rect_width(&plane_state->base.src) >> 16;
        uint32_t src_h = drm_rect_height(&plane_state->base.src) >> 16;
-       unsigned long irqflags;
 
        /* Sizes are 0 based */
        src_w--;
@@ -261,8 +259,6 @@ skl_update_plane(struct intel_plane *plane,
        crtc_w--;
        crtc_h--;
 
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
-
        if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
                I915_WRITE_FW(PLANE_COLOR_CTL(pipe, plane_id),
                              plane_state->color_ctl);
@@ -303,8 +299,6 @@ skl_update_plane(struct intel_plane *plane,
        I915_WRITE_FW(PLANE_SURF(pipe, plane_id),
                      intel_plane_ggtt_offset(plane_state) + surf_addr);
        POSTING_READ_FW(PLANE_SURF(pipe, plane_id));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 void
@@ -313,16 +307,11 @@ skl_disable_plane(struct intel_plane *plane, struct 
intel_crtc *crtc)
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        enum plane_id plane_id = plane->id;
        enum pipe pipe = plane->pipe;
-       unsigned long irqflags;
-
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
 
        I915_WRITE_FW(PLANE_CTL(pipe, plane_id), 0);
 
        I915_WRITE_FW(PLANE_SURF(pipe, plane_id), 0);
        POSTING_READ_FW(PLANE_SURF(pipe, plane_id));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 bool
@@ -467,7 +456,6 @@ vlv_update_plane(struct intel_plane *plane,
        uint32_t crtc_h = drm_rect_height(&plane_state->base.dst);
        uint32_t x = plane_state->main.x;
        uint32_t y = plane_state->main.y;
-       unsigned long irqflags;
 
        /* Sizes are 0 based */
        crtc_w--;
@@ -475,8 +463,6 @@ vlv_update_plane(struct intel_plane *plane,
 
        linear_offset = intel_fb_xy_to_linear(x, y, plane_state, 0);
 
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
-
        if (IS_CHERRYVIEW(dev_priv) && pipe == PIPE_B)
                chv_update_csc(plane, fb->format->format);
 
@@ -500,8 +486,6 @@ vlv_update_plane(struct intel_plane *plane,
        I915_WRITE_FW(SPSURF(pipe, plane_id),
                      intel_plane_ggtt_offset(plane_state) + sprsurf_offset);
        POSTING_READ_FW(SPSURF(pipe, plane_id));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static void
@@ -510,16 +494,11 @@ vlv_disable_plane(struct intel_plane *plane, struct 
intel_crtc *crtc)
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        enum pipe pipe = plane->pipe;
        enum plane_id plane_id = plane->id;
-       unsigned long irqflags;
-
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
 
        I915_WRITE_FW(SPCNTR(pipe, plane_id), 0);
 
        I915_WRITE_FW(SPSURF(pipe, plane_id), 0);
        POSTING_READ_FW(SPSURF(pipe, plane_id));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static bool
@@ -618,7 +597,6 @@ ivb_update_plane(struct intel_plane *plane,
        uint32_t y = plane_state->main.y;
        uint32_t src_w = drm_rect_width(&plane_state->base.src) >> 16;
        uint32_t src_h = drm_rect_height(&plane_state->base.src) >> 16;
-       unsigned long irqflags;
 
        /* Sizes are 0 based */
        src_w--;
@@ -631,8 +609,6 @@ ivb_update_plane(struct intel_plane *plane,
 
        linear_offset = intel_fb_xy_to_linear(x, y, plane_state, 0);
 
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
-
        if (key->flags) {
                I915_WRITE_FW(SPRKEYVAL(pipe), key->min_value);
                I915_WRITE_FW(SPRKEYMAX(pipe), key->max_value);
@@ -658,8 +634,6 @@ ivb_update_plane(struct intel_plane *plane,
        I915_WRITE_FW(SPRSURF(pipe),
                      intel_plane_ggtt_offset(plane_state) + sprsurf_offset);
        POSTING_READ_FW(SPRSURF(pipe));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static void
@@ -667,9 +641,6 @@ ivb_disable_plane(struct intel_plane *plane, struct 
intel_crtc *crtc)
 {
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        enum pipe pipe = plane->pipe;
-       unsigned long irqflags;
-
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
 
        I915_WRITE_FW(SPRCTL(pipe), 0);
        /* Can't leave the scaler enabled... */
@@ -678,8 +649,6 @@ ivb_disable_plane(struct intel_plane *plane, struct 
intel_crtc *crtc)
 
        I915_WRITE_FW(SPRSURF(pipe), 0);
        POSTING_READ_FW(SPRSURF(pipe));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static bool
@@ -774,7 +743,6 @@ g4x_update_plane(struct intel_plane *plane,
        uint32_t y = plane_state->main.y;
        uint32_t src_w = drm_rect_width(&plane_state->base.src) >> 16;
        uint32_t src_h = drm_rect_height(&plane_state->base.src) >> 16;
-       unsigned long irqflags;
 
        /* Sizes are 0 based */
        src_w--;
@@ -787,8 +755,6 @@ g4x_update_plane(struct intel_plane *plane,
 
        linear_offset = intel_fb_xy_to_linear(x, y, plane_state, 0);
 
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
-
        if (key->flags) {
                I915_WRITE_FW(DVSKEYVAL(pipe), key->min_value);
                I915_WRITE_FW(DVSKEYMAX(pipe), key->max_value);
@@ -809,8 +775,6 @@ g4x_update_plane(struct intel_plane *plane,
        I915_WRITE_FW(DVSSURF(pipe),
                      intel_plane_ggtt_offset(plane_state) + dvssurf_offset);
        POSTING_READ_FW(DVSSURF(pipe));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static void
@@ -818,9 +782,6 @@ g4x_disable_plane(struct intel_plane *plane, struct 
intel_crtc *crtc)
 {
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        enum pipe pipe = plane->pipe;
-       unsigned long irqflags;
-
-       spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
 
        I915_WRITE_FW(DVSCNTR(pipe), 0);
        /* Disable the scaler */
@@ -828,8 +789,6 @@ g4x_disable_plane(struct intel_plane *plane, struct 
intel_crtc *crtc)
 
        I915_WRITE_FW(DVSSURF(pipe), 0);
        POSTING_READ_FW(DVSSURF(pipe));
-
-       spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
 
 static bool
-- 
2.16.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to