1. 26 8月, 2014 3 次提交
    • V
      drm/i915: Move intel_ddi_set_vc_payload_alloc(false) to haswell_crtc_disable() · a4bf214f
      Ville Syrjälä 提交于
      Somehow the intel_ddi_set_vc_payload_alloc(false) call has ended up
      in ironlake_crtc_disable() rather than haswell_crtc_disable(). Move it
      to the correct place.
      
      intel_ddi_disable_transcoder_func() already disables the vc payload
      allocation so this doesn't actually do anything more. The spec
      says we should wait for some kind of ack after frobbing the bit. We
      don't appear to do that currently, but if and when someone decides
      that we should do it, intel_ddi_set_vc_payload_alloc() would appear
      to be be the right place for it. So having the function call in
      haswell_crtc_disable() seems like the right thing for the future
      even if it does nothing currently.
      
      Cc: Dave Airlie <airlied@redhat.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      a4bf214f
    • P
      drm/i915: fix plane/cursor handling when runtime suspended · d6dd6843
      Paulo Zanoni 提交于
      If we're runtime suspended and try to use the plane interfaces, we
      will get a lot of WARNs saying we did the wrong thing.
      
      We need to get runtime PM references to pin the objects, and to
      change the fences. The pin functions are the ideal places for
      this, but intel_crtc_cursor_set_obj() doesn't call them, so we also
      have to add get/put calls inside it. There is no problem if we runtime
      suspend right after these functions are finished, because the
      registers written are forwarded to system memory.
      
      Note: for a complete fix of the cursor-dpms test case, we also need
      the patch named "drm/i915: Don't try to enable cursor from setplane
      when crtc is disabled".
      
      v2: - Narrow the put/get calls on intel_crtc_cursor_set_obj() (Daniel)
      v3: - Make get/put also surround the fence and unpin calls (Daniel and
            Ville).
          - Merge all the plane changes into a single patch since they're
            the same fix.
          - Add the comment requested by Daniel.
      v4: - Remove spurious whitespace (Ville).
      v5: - Remove intel_crtc_update_cursor() chunk since Ville did an
            equivalent fix in another patch (Ville).
      v6: - Remove unpin chunk: it will be on a separate patch (Ville,
            Chris, Daniel).
      v7: - Same thing, new color.
      
      Testcase: igt/pm_rpm/cursor
      Testcase: igt/pm_rpm/cursor-dpms
      Testcase: igt/pm_rpm/legacy-planes
      Testcase: igt/pm_rpm/legacy-planes-dpms
      Testcase: igt/pm_rpm/universal-planes
      Testcase: igt/pm_rpm/universal-planes-dpms
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81645
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82603
      Cc: stable@vger.kernel.org
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      d6dd6843
    • S
      drm/i915: Ignore VBT backlight presence check on Acer C720 (4005U) · dfb3d47b
      Scot Doyle 提交于
      commit c675949e
      Author: Jani Nikula <jani.nikula@intel.com>
      Date:   Wed Apr 9 11:31:37 2014 +0300
      
          drm/i915: do not setup backlight if not available according to VBT
      
      prevents backlight setup on the Acer C720 (Core i3 4005U CPU), which has a
      misconfigured VBT. Apply quirk to ignore the VBT backlight presence check
      during backlight setup.
      Signed-off-by: NScot Doyle <lkml14@scotdoyle.com>
      Tested-by: NTyler Cleveland <siralucardt@openmailbox.org>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org (3.15+)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      dfb3d47b
  2. 18 8月, 2014 8 次提交
    • I
      drm/i915: don't try to retrain a DP link on an inactive CRTC · 1a125d8a
      Imre Deak 提交于
      Atm we may retrain the DP link even if the CRTC is inactive through
      HPD work->intel_dp_check_link_status(). This in turn can lock up the PHY
      (at least on BYT), since the DP port is disabled.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81948Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Cc: stable@vger.kernel.org (3.16+)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      1a125d8a
    • I
      drm/i915: make sure VDD is turned off during system suspend · 07f9cd0b
      Imre Deak 提交于
      Atm we may leave eDP VDD enabled during system suspend after the CRTCs
      are disabled through an HPD->DPCD read event. So disable VDD during
      suspend at a point when no HPDs can occur.
      
      Note that runtime suspend doesn't have the same problem, since there the
      RPM ref held by VDD provides already the needed serialization.
      
      v2:
      - add note to commit message about the runtime suspend path (Ville)
      - use edp_panel_vdd_off_sync(), so we can keep the WARN in
        edp_panel_vdd_off() (Ville)
      v3:
      - rebased on -fixes (for_each_intel_encoder()->list_for_each_entry())
        (Imre)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> (v2)
      Cc: stable@vger.kernel.org (3.16+)
      [Jani: fix sparse warning reported by Fengguang Wu]
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      07f9cd0b
    • I
      drm/i915: cancel hotplug and dig_port work during suspend and unload · 1d0d343a
      Imre Deak 提交于
      Make sure these work handlers don't run after we system suspend or
      unload the driver. Note that we don't cancel the handlers during runtime
      suspend. That could lead to a lockup, since we take a runtime PM ref
      from the handlers themselves. Fortunaltely canceling there is not needed
      since the RPM ref itself provides for the needed serialization.
      
      v2:
      - fix the order of canceling dig_port_work wrt. hotplug_work (Ville)
      - zero out {long,short}_hpd_port_mask and hpd_event_bits for speed
        (Ville)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Cc: stable@vger.kernel.org (3.16+)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      1d0d343a
    • I
      drm/i915: fix HPD IRQ reenable work cancelation · 6323751d
      Imre Deak 提交于
      Atm, the HPD IRQ reenable timer can get rearmed right after it's
      canceled. Also to access the HPD IRQ mask registers we need to wake up
      the HW.
      
      Solve both issues by converting the reenable timer to a delayed work and
      grabbing a runtime PM reference in the work. By this we can also forgo
      canceling the timer during runtime suspend, since the only important
      thing there is that the HW is awake when we write the registers and
      that's ensured by the RPM ref. So do the cancelation only during driver
      unload time; this is also a requirement for an upcoming patch where we
      want to cancel all HPD related works only during system suspend and
      driver unload time, but not during runtime suspend.
      
      Note that there is still a race between the HPD IRQ reenable work and
      drm_irq_uninstall() during driver unload, where the work can reenable
      the HPD IRQs disabled by drm_irq_uninstall(). This isn't a problem since
      the HPD IRQs will still be effectively masked by the first level
      interrupt mask.
      
      v2-3:
      - unchanged
      v4:
      - use proper API for changing the expiration time for an already pending
        delayed work (Jani)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> (v2)
      Cc: stable@vger.kernel.org (3.16+)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      6323751d
    • I
      drm/i915: take display port power domain in DP HPD handler · 1c767b33
      Imre Deak 提交于
      Ville noticed that we can call ibx_digital_port_connected() which accesses
      the HW without holding any power well/runtime pm reference. Fix this by
      holding a display port power domain reference around the whole hpd_pulse
      handler.
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NDave Airlie <airlied@redhat.com>
      Cc: stable@vger.kernel.org (3.16+)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      1c767b33
    • V
      drm/i915: Don't try to enable cursor from setplane when crtc is disabled · 1add143c
      Ville Syrjälä 提交于
      Make sure the cursor gets fully clipped when enabling it on a disabled
      crtc via setplane. This will prevent the lower level code from
      attempting to enable the cursor in hardware.
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      1add143c
    • V
      drm/i915: Skip load detect when intel_crtc->new_enable==true · a459249c
      Ville Syrjälä 提交于
      During suspend we turn off the crtcs, but leave the staged config in
      place so that we can restore the display(s) to their previous state on
      resume.
      
      During resume when we attempt to apply the force pipe A quirk we use the
      load detect mechanism. That doesn't check whether there was an already
      staged configuration for the crtc since that's not even possible during
      normal runtime load detection. But during resume it is possible, and if
      we just blindly go and overwrite the staged crtc configuration for the
      load detection we can no longer restore the display to the correct
      state.
      
      Even worse, we don't even clear all the staged connector->encoder->crtc
      links so we may end up using a cloned setup for the load detection, and
      after we're done we just clear the links related to the VGA output
      leaving the links for the other outputs in place. This will eventually
      result in calling intel_set_mode() with mode==NULL but with valid
      connector->encoder->crtc links which will result in dereferencing the
      NULL mode since the code thinks it will have to a modeset.
      
      To avoid these problems don't use any crtc with new_enabled==true for
      load detection.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org (for 3.16)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      a459249c
    • V
      drm/i915: Fix locking for intel_enable_pipe_a() · 208bf9fd
      Ville Syrjälä 提交于
      intel_enable_pipe_a() gets called with all the modeset locks already
      held (by drm_modeset_lock_all()), so trying to grab the same
      locks using another drm_modeset_acquire_ctx is going to fail miserably.
      
      Move most of the drm_modeset_acquire_ctx handling (init/drop/fini)
      out from intel_{get,release}_load_detect_pipe() into the callers
      (intel_{crt,tv}_detect()). Only the actual locking and backoff
      handling is left in intel_get_load_detect_pipe(). And in
      intel_enable_pipe_a() we just share the mode_config.acquire_ctx from
      drm_modeset_lock_all() which is already holding all the relevant locks.
      
      It's perfectly legal to lock the same ww_mutex multiple times using the
      same ww_acquire_ctx. drm_modeset_lock() will convert the returned
      -EALREADY into 0, so the caller doesn't need to do antyhing special.
      
      Fixes a hang on resume on my 830.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      208bf9fd
  3. 09 8月, 2014 1 次提交
    • L
      Revert "drm/i915: Enable PSR by default." · 27d438c5
      Linus Torvalds 提交于
      This reverts commit b6d54779.
      
      The panel self refresh clearly isn't stable yet, and causes my laptop
      (Haswell ULT in a Sony Vaio Pro) to have the screen lock up.  Maybe it
      doesn't ever get out of self-refresh, or maybe there are gremlins in the
      machine that get unhappy.  Regardless, it's broken, and it gets
      reverted.
      
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      27d438c5
  4. 08 8月, 2014 4 次提交
    • R
      Revert "drm/i915: Enable semaphores on BDW" · be71eabe
      Rodrigo Vivi 提交于
      This reverts commit 521e62e4.
      
      Although POST_SYNC brought a bit of stability to Semaphores on BDW
      it didn't solved all issues and some hungs can still occour when
      semaphores are enabled on BDW. Also some sloweness can be found on some
      igt tests, althoguth it apparently doesn't affect real workloads.
      
      Besides that, no real performance gain was found on our tests with different
      and even multiple workloads.
      
      Let's disable it again for now. At least until we are sure it is safe
      to re-enable it.
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      be71eabe
    • J
      drm/i915: read HEAD register back in init_ring_common() to enforce ordering · ece4a17d
      Jiri Kosina 提交于
      Withtout this, ring initialization fails reliabily during resume with
      
      	[drm:init_ring_common] *ERROR* render ring initialization failed ctl 0001f001 head ffffff8804 tail 00000000 start 000e4000
      
      This is not a complete fix, but it is verified to make the ring
      initialization failures during resume much less likely.
      
      We were not able to root-cause this bug (likely HW-specific to Gen4 chips)
      yet. This is therefore used as a ducttape before problem is fully
      understood and proper fix created, so that people don't suffer from
      completely unusable systems in the meantime.
      
      The discussion and debugging is happening at
      
      	https://bugs.freedesktop.org/show_bug.cgi?id=76554Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ece4a17d
    • R
      drm/i915: Fix crash when failing to parse MIPI VBT · ed3b6679
      Rafael Barbalho 提交于
      This particular nasty presented itself while trying to register the
      intelfb device (intel_fbdev.c). During the process of registering the device
      the driver will disable the crtc via i9xx_crtc_disable. These will
      also disable the panel using the generic mipi panel functions in
      dsi_mod_vbt_generic.c. The stale MIPI generic data sequence pointers would
      cause a crash within those functions. However, all of this is happening
      while console_lock is held from do_register_framebuffer inside fbcon.c. Which
      means that you got kernel log and just the device appearing to reboot/hang for
      no apparent reason.
      
      The fault started from the FB_EVENT_FB_REGISTERED event using the
      fb_notifier_call_chain call in fbcon.c.
      
      This regression has been introduced in
      
      commit d3b542fc
      Author: Shobhit Kumar <shobhit.kumar@intel.com>
      Date:   Mon Apr 14 11:00:34 2014 +0530
      
          drm/i915: Add parsing support for new MIPI blocks in VBT
      
      Cc: Shobhit Kumar <shobhit.kumar@intel.com>
      Signed-off-by: NRafael Barbalho <rafael.barbalho@intel.com>
      Reviewed-by: NShobhit Kumar <shobhit.kumar@intel.com>
      [danvet: Add regression citation.]
      Cc: stable@vger.kernel.org
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ed3b6679
    • D
      Revert "drm: drop redundant drm_file->is_master" · 7963e9db
      Dave Airlie 提交于
      This reverts commit 48ba8137.
      
      Thanks to Chris:
      "drm_file->is_master is not synomous with having drm_file->master ==
      drm_file->minor->master. This is because drm_file->master is the same
      for all drm_files of the same generation and so when there is a master,
      every drm_file believes itself to be the master. Confusion ensues and
      things go pear shaped when one file is closed and there is no master
      anymore."
      
      Conflicts:
      	drivers/gpu/drm/drm_drv.c
      	drivers/gpu/drm/drm_stub.c
      7963e9db
  5. 07 8月, 2014 17 次提交
  6. 06 8月, 2014 1 次提交
  7. 05 8月, 2014 2 次提交
  8. 04 8月, 2014 1 次提交
  9. 25 7月, 2014 1 次提交
  10. 24 7月, 2014 2 次提交
    • C
      drm/i915: Allow overlapping userptr objects · ec8b0dd5
      Chris Wilson 提交于
      Whilst I strongly advise against doing so for the implicit coherency
      issues between the multiple buffer objects accessing the same backing
      store, it nevertheless is a valid use case, akin to mmaping the same
      file multiple times.
      
      The reason why we forbade it earlier was that our use of the interval
      tree for fast invalidation upon vma changes excluded overlapping
      objects. So in the case where the user wishes to create such pairs of
      overlapping objects, we degrade the range invalidation to walkin the
      linear list of objects associated with the mm.
      
      A situation where overlapping objects could arise is the lax implementation
      of MIT-SHM Pixmaps in the xserver. A second situation is where the user
      wishes to have different access modes to a region of memory (e.g. access
      through a read-only userptr buffer and through a normal userptr buffer).
      
      v2: Compile for mmu-notifiers after tweaking
      v3: Rename is_linear/has_linear
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: "Li, Victor Y" <victor.y.li@intel.com>
      Cc: "Kelley, Sean V" <sean.v.kelley@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Cc: "Gong, Zhipeng" <zhipeng.gong@intel.com>
      Cc: Akash Goel <akash.goel@intel.com>
      Cc: "Volkin, Bradley D" <bradley.d.volkin@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ec8b0dd5
    • D
      drm/i915: Ditch UMS config option · 03dae59c
      Daniel Vetter 提交于
      Let's march ahead with the deprecation plan laid out in
      
      commit b30324ad
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Wed Nov 13 22:11:25 2013 +0100
      
          drm/i915: Deprecated UMS support
      
      Thus far no regression report yet, so the transparent fallback plan
      seems to pan out.
      
      Cc: Dave Airlie <airlied@gmail.com>
      Cc: David Herrmann <dh.herrmann@gmail.com>
      Suggested-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Acked-by: NDave Airlie <airlied@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      03dae59c