Skip to content
  1. Jul 27, 2017
    • Imre Deak's avatar
      drm/i915: Fix scaler init during CRTC HW state readout · 5fb9dadf
      Imre Deak authored
      
      
      The scaler allocation code depends on a non-zero default value for the
      crtc scaler_id, so make sure we initialize the scaler state accordingly
      even if the crtc is off. This fixes at least an initial YUV420 modeset
      (added in a follow-up patchset by Shashank) when booting with the screen
      off: after the initial HW readout and modeset which enables the scaler a
      subsequent modeset will disable the scaler which isn't properly
      allocated. This results in a funky HW state where the pipe scaler HW
      registers can't be modified and the normally black screen is grey and
      shifted to the right or jitters.
      
      The problem was revealed by Shashank's YUV420 patchset and first
      reported by Ville.
      
      v2:
      - In the stable tag also include versions which need backporting (Jani)
      
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Shashank Sharma <shashank.sharma@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Chandra Konduru <chandra.konduru@intel.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: <stable@vger.kernel.org> # 4.2.x
      Reported-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Fixes: a1b2278e
      
       ("drm/i915: skylake panel fitting using shared scalers")
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarMahesh Kumar <mahesh1.kumar@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170720112820.26816-1-imre.deak@intel.com
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      5fb9dadf
    • Chris Wilson's avatar
      drm/i915/selftests: Exercise independence of per-engine resets · 79f0f472
      Chris Wilson authored
      
      
      If all goes well, resetting one engine should not affect the operation of
      any others. So to test this, we setup a continuous stream of requests
      onto to each of the "innocent" engines whilst constantly resetting our
      target engine.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-16-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      79f0f472
    • Chris Wilson's avatar
      drm/i915: Disable per-engine reset for Broxton · 2b49e721
      Chris Wilson authored
      Triggering a GPU reset for one engine affects another, notably
      corrupting the context status buffer (CSB) effectively losing track of
      inflight requests.
      
      Adding a few printks:
      diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
      index ad41836fa5e5..a969456bc0fa 100644
      --- a/drivers/gpu/drm/i915/i915_drv.c
      +++ b/drivers/gpu/drm/i915/i915_drv.c
      @@ -1953,6 +1953,7 @@ int i915_reset_engine(struct intel_engine_cs *engine)
                      goto out;
              }
      
      +       pr_err("Resetting %s\n", engine->name);
              ret = intel_gpu_reset(engine->i915, intel_engine_flag(engine));
              if (ret) {
                      /* If we fail here, we expect to fallback to a global reset */
      diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
      index 716e5c9ea222..a72bc35d0870 100644
      --- a/drivers/gpu/drm/i915/intel_lrc.c
      +++ b/drivers/gpu/drm/i915/intel_lrc.c
      @@ -355,6 +355,7 @@ static void execlists_submit_ports(struct intel_engine_cs *engine)
                                      execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_IN);
                              port_set(&port[n], port_pack(rq, count));
                              desc = execlists_update_context(rq);
      +                       pr_err("%s: in (rq=%x) ctx=%d\n", engine->name, rq->global_seqno, upper_32_bits(desc));
                              GEM_DEBUG_EXEC(port[n].context_id = upper_32_bits(desc));
                      } else {
                              GEM_BUG_ON(!n);
      @@ -594,9 +595,23 @@ static void intel_lrc_irq_handler(unsigned long data)
                              if (!(status & GEN8_CTX_STATUS_COMPLETED_MASK))
                                      continue;
      
      +                       pr_err("%s: out CSB (%x head=%d, tail=%d), ctx=%d, rq=%d\n",
      +                                       engine->name,
      +                                       readl(csb_mmio),
      +                                       head, tail,
      +                                       readl(buf+2*head+1),
      +                                       port->context_id);
      +
                              /* Check the context/desc id for this event matches */
      -                       GEM_DEBUG_BUG_ON(readl(buf + 2 * head + 1) !=
      -                                        port->context_id);
      +                       if (readl(buf + 2 * head + 1) != port->context_id) {
      +                               pr_err("%s: BUG CSB (%x head=%d, tail=%d), ctx=%d, rq=%d\n",
      +                                               engine->name,
      +                                               readl(csb_mmio),
      +                                               head, tail,
      +                                               readl(buf+2*head+1),
      +                                               port->context_id);
      +                               BUG();
      +                       }
      
                              rq = port_unpack(port, &count);
                              GEM_BUG_ON(count == 0);
      
      Results in:
      
      [ 6423.006602] Resetting rcs0
      [ 6423.009080] rcs0: in (rq=fffffe70) ctx=1
      [ 6423.009216] rcs0: in (rq=fffffe6f) ctx=3
      [ 6423.009542] rcs0: out CSB (2 head=1, tail=2), ctx=3, rq=3
      [ 6423.009619] Resetting bcs0
      [ 6423.009980] rcs0: BUG CSB (0 head=1, tail=2), ctx=0, rq=3
      
      Note that this bug may be affect all machines and not just Broxton,
      Broxton is just the first machine on which I have confirmed this bug.
      
      Fixes: 142bc7d9
      
       ("drm/i915: Modify error handler for per engine hang recovery")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Acked-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-13-chris@chris-wilson.co.uk
      
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      2b49e721
    • Chris Wilson's avatar
      drm/i915: Emit a user level message when resetting the GPU (or engine) · 7367612f
      Chris Wilson authored
      
      
      Although a banned context will be told to -EIO off if they try to submit
      more requests, we have a discrepancy between whole device resets and
      per-engine resets where we report the GPU reset but not the engine
      resets. This leaves a bit of mystery as to why the context was banned,
      and also reduces awareness overall of when a GPU (engine) reset occurs
      with its possible side-effects.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-13-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      7367612f
    • Chris Wilson's avatar
      drm/i915: Make i915_gem_context_mark_guilty() safe for unlocked updates · 77b25a97
      Chris Wilson authored
      
      
      Since we make call i915_gem_context_mark_guilty() concurrently when
      resetting different engines in parallel, we need to make sure that our
      updates are safe for the unlocked access.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-12-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      77b25a97
    • Chris Wilson's avatar
      drm/i915: Clear engine irq posted following a reset · ed454f2c
      Chris Wilson authored
      
      
      When the GPU is reset, we want to discard all pending notifications as
      either we have manually completed them, or they are no longer
      applicable. Make sure we do reset the engine->irq_posted prior to
      re-enabling the engine (e.g. the interrupt tasklets) in
      i915_gem_reset_finish_engine().
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-11-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      ed454f2c
    • Chris Wilson's avatar
      drm/i915: Assert that machine is wedged for nop_submit_request · bf2eac3b
      Chris Wilson authored
      
      
      We should only ever do nop_submit_request when the machine is wedged, so
      assert it is so.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-10-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      bf2eac3b
    • Chris Wilson's avatar
      drm/i915: Wake up waiters after setting the WEDGED bit · 3d7adbbf
      Chris Wilson authored
      
      
      After setting the WEDGED bit, make sure that we do wake up waiters as
      they may not be waiting for a request completion yet, just for its
      execution.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-9-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      3d7adbbf
    • Chris Wilson's avatar
      drm/i915: Move idle checks before intel_engine_init_global_seqno() · 4d53568c
      Chris Wilson authored
      
      
      intel_engine_init_globa_seqno() may be called from an uncontrolled
      set-wedged path where we have given up waiting for broken hw and declare
      it defunct. Along that path, any sanity checks that the hw is idle
      before we adjust its state will expectedly fail, so we simply cannot.
      Instead of asserting inside init_global_seqno, we move them to the
      normal caller reset_all_global_seqno() as it handles runtime seqno
      wraparound.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-8-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      4d53568c
    • Chris Wilson's avatar
      drm/i915: Clear execlist port[] before updating seqno on wedging · 5e32d748
      Chris Wilson authored
      
      
      When we wedge the device, we clear out the in-flight requests and
      advance the breadcrumb to indicate they are complete. However, the
      breadcrumb advance includes an assert that the engine is idle, so that
      advancement needs to be the last step to ensure we pass our own sanity
      checks.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-7-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      5e32d748
    • Chris Wilson's avatar
      drm/i915: Check the execlist queue for pending requests before declaring idle · d6edb6e3
      Chris Wilson authored
      
      
      Including a check against the execlist queue before calling the engine
      idle and passing hangcheck.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-6-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      d6edb6e3
    • Chris Wilson's avatar
      drm/i915: Check execlist/ring status during hangcheck · 5cce5e31
      Chris Wilson authored
      
      
      Before we declare an engine as idle, check if there are any pending
      execlist context-switches and if the ring itself reports as idle.
      Otherwise, we may be left in a situation where we miss a crucial
      execlist event (or something more sinister) yet the requests complete.
      Since the seqno write happens, we believe the engine to be truly idle.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-5-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      5cce5e31
    • Chris Wilson's avatar
      drm/i915: Flush the execlist ports if idle · cdb6ded4
      Chris Wilson authored
      
      
      When doing a GPU reset, the CSB register will be trashed and we will
      lose any context-switch notifications that happened since the tasklet
      was disabled. If we find that all requests on this engine were
      completed, we want to make sure that the ELSP tracker is similarly empty
      so that we do not feed back in the completed requests upon recovering
      from the reset.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-4-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      cdb6ded4
    • Chris Wilson's avatar
      drm/i915: Serialize per-engine resets against new requests · 0364cd19
      Chris Wilson authored
      We rely on disabling the execlists (by stopping the tasklet) to prevent
      new requests from submitting to the engine ELSP before we are ready.
      However, we re-enable the engine before we call init_hw which gives
      userspace the opportunity to subit a new request which is then
      overwritten by init_hw -- but not before the HW may have started
      executing. The subsequent out-of-order CSB is detected by our sanity
      checks in intel_lrc_irq_handler().
      
      Fixes: a1ef70e1
      
       ("drm/i915: Add support for per engine reset recovery")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-3-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      0364cd19
    • Chris Wilson's avatar
      drm/i915: Reset context image on engines after triggering the reset · b4f3e163
      Chris Wilson authored
      We try to fixup the context image after the reset to ensure that there
      are no more pending writes from the hw that may conflict and to fixup
      any that were in flight.
      
      Fixes: a1ef70e1
      
       ("drm/i915: Add support for per engine reset recovery")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-2-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      b4f3e163
    • Chris Wilson's avatar
      drm/i915: Report execlists irq bit in debugfs · 4d73da93
      Chris Wilson authored
      
      
      As part of the knowing whether there is outstanding data in the CSB,
      also check whether there is an outstanding IRQ notification.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170721123238.16428-1-chris@chris-wilson.co.uk
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      4d73da93
    • Daniel Vetter's avatar
      Merge airlied/drm-next into drm-intel-next-queued · 64282ea2
      Daniel Vetter authored
      
      
      Resync with upstream to avoid git getting too badly confused. Also, we
      have a conflict with the drm_vblank_cleanup removal, which cannot be
      resolved by simply taking our side. Bake that in properly.
      
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      64282ea2
    • Stephen Rothwell's avatar
      drm: linux-next: build failure after merge of the drm-misc tree · e6742e10
      Stephen Rothwell authored
      Hi all,
      
      After merging the drm-misc tree, today's linux-next build (x86_64
      allmodconfig) failed like this:
      
      drivers/staging/vboxvideo/vbox_drv.c:235:2: error: unknown field 'set_busid' specified in initializer
        .set_busid = drm_pci_set_busid,
        ^
      drivers/staging/vboxvideo/vbox_drv.c:235:15: error: 'drm_pci_set_busid' undeclared here (not in a function)
        .set_busid = drm_pci_set_busid,
                     ^
      drivers/staging/vboxvideo/vbox_drv.c: In function 'vbox_init':
      drivers/staging/vboxvideo/vbox_drv.c:273:9: error: implicit declaration of function 'drm_pci_init' [-Werror=implicit-function-declaration]
        return drm_pci_init(&driver, &vbox_pci_driver);
               ^
      drivers/staging/vboxvideo/vbox_drv.c: In function 'vbox_exit':
      drivers/staging/vboxvideo/vbox_drv.c:278:2: error: implicit declaration of function 'drm_pci_exit' [-Werror=implicit-function-declaration]
        drm_pci_exit(&driver, &vbox_pci_driver);
        ^
      
      Caused by commits
      
        5c484cee ("drm: Remove drm_driver->set_busid hook")
        10631d72 ("drm/pci: Deprecate drm_pci_init/exit completely")
      
      interacting with commit
      
        dd55d44f
      
       ("staging: vboxvideo: Add vboxvideo to drivers/staging")
      
      from the staging.current tree.
      
      I have applied the following merge fix patch - please check that it
      is correct.
      
      From: Stephen Rothwell <sfr@canb.auug.org.au>
      Date: Wed, 19 Jul 2017 11:41:01 +1000
      Subject: [PATCH] drm: fixes for staging due to API changes in the drm core
      
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      e6742e10
    • Dave Airlie's avatar
      Backmerge tag 'v4.13-rc2' into drm-next · 0eb2c0ae
      Dave Airlie authored
      Linux 4.13-rc2
      
      This is required for drm-misc fixing.
      0eb2c0ae
    • Dave Airlie's avatar
      Merge tag 'drm-misc-next-2017-07-26' of git://anongit.freedesktop.org/git/drm-misc into drm-next · 542aefb5
      Dave Airlie authored
      drm-misc-next-2017-07-18:
      Core Changes:
      - A couple fixes to only opening crc when needed (Maarten)
      - Change atomic helper swap_state to be interruptible (Maarten)
      - fb_helper: Support waiting for an output before setting up (Daniel)
      - Allow drivers supporting runtime_pm to use helper_commit_tail (Maxime)
      
      Driver Changes:
      - misc: Use %pOF to print device node names (Rob)
      - Miscellaneous fixes
      
      drm-misc-next-2017-07-18:
      UAPI Changes:
      - Fail commits which request an event without including a crtc (Andrey)
      
      Core Changes:
      - Add YCBCR 4:2:0 support (Shashank)
      - s/drm_atomic_replace_property_blob/drm_property_replace_blob/ (Peter)
      - Add proper base class for private objs instead of using void* (Ville)
      - Remove pending_read/write_domains from drm_gem_object (Chris)
      - Add async plane update support (ie: cursor) to atomic helpers (Gustavo)
      - Add old state to .enable and rename to .atomic_enable (Laurent)
      - Add drm_atomic_helper_wait_for_flip_done() (Boris)
      - Remove drm_driver->set_busid hook (Daniel)
      - Migrate vblank documentation into the source files (Daniel)
      - Add fb_helper->lock instead of abusing modeset lock (Thierry/Daniel)
      
      Driver Changes:
      - stm: Add STM32 DSI controller driver (Phillipe)
      - amdgpu: Numerous small/misc fixes
      - bridge: Add Synopsys Designware MIPI DSI host bridge driver (Phillipe)
      - tinydrm: Add support for Pervasive Displays RePaper displays (Noralf)
      - misc: Replace for_each_[obj]_in_state to prep for removal (Maarten)
      - misc: Use .atomic_disable for atomic drivers (Laurent)
      - vgem: Pin pages when mapped/exported (Chris)
      - dw_hdmi: Add support for Rockchip RK3399 (Mark)
      - atmel-hlcdc: Add 8-bit color look-up table format (Peter)
      - vc4: Send vblank event when disabling a crtc (Boris)
      - vc4: Use atomic helpers for fence waits (Eric)
      - misc: drop drm_vblank_cleanup cargo-cult (Daniel)
      
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Peter Rosin <peda@axentia.se>
      Cc: Mark Yao <mark.yao@rock-chips.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
      Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Cc: Gustavo Padovan <gustavo.padovan@collabora.com>
      Cc: Thierry Reding <treding@nvidia.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Peter Rosin <peda@axentia.se>
      Cc: Shashank Sharma <shashank.sharma@intel.com>
      Cc: Philippe CORNU <philippe.cornu@st.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
      
      * tag 'drm-misc-next-2017-07-26' of git://anongit.freedesktop.org/git/drm-misc: (171 commits)
        drm/hisilicon: fix build error without fbdev emulation
        drm/atomic: implement drm_atomic_helper_commit_tail for runtime_pm users
        drm: Improve kerneldoc for drm_modeset_lock
        drm/hisilicon: Remove custom FB helper deferred setup
        drm/exynos: Remove custom FB helper deferred setup
        drm/fb-helper: Support deferred setup
        dma-fence: Don't BUG_ON when not absolutely needed
        drm: Convert to using %pOF instead of full_name
        drm/syncobj: Fix kerneldoc
        drm/atomic: Allow drm_atomic_helper_swap_state to fail
        drm/atomic: Add __must_check to drm_atomic_helper_swap_state.
        drm/vc4: Handle drm_atomic_helper_swap_state failure
        drm/tilcdc: Handle drm_atomic_helper_swap_state failure
        drm/tegra: Handle drm_atomic_helper_swap_state failure
        drm/msm: Handle drm_atomic_helper_swap_state failure
        drm/mediatek: Handle drm_atomic_helper_swap_state failure
        drm/i915: Handle drm_atomic_helper_swap_state failure
        drm/atmel-hlcdc: Handle drm_atomic_helper_swap_state failure
        drm/nouveau: Handle drm_atomic_helper_swap_state failure
        drm/atomic: Change drm_atomic_helper_swap_state to return an error.
        ...
      542aefb5
  2. Jul 26, 2017