1. 25 4月, 2018 1 次提交
  2. 07 3月, 2018 4 次提交
  3. 02 3月, 2018 1 次提交
  4. 28 2月, 2018 1 次提交
  5. 23 2月, 2018 2 次提交
  6. 22 2月, 2018 3 次提交
  7. 21 2月, 2018 1 次提交
    • C
      drm/i915: Move the policy for placement of the GGTT vma into the caller · 5935485f
      Chris Wilson 提交于
      Currently we make the unilateral decision inside
      i915_gem_object_pin_to_display() where the VMA should resided (inside
      the fence and mappable region or above?). This is not our decision to
      make as it impacts on how the display engine can use the resulting
      scanout object, and it would rather instruct us where to place the VMA so
      that it can enable the features it wants. As such, make the pin flags an
      argument to i915_gem_object_pin_to_display() and control them from
      intel_pin_and_fence_fb_obj()
      
      Whilst taking control of the mapping for ourselves, start tracking how
      we use it to avoid trying to free a fence we never claimed:
      
      <3>[  227.151869] GEM_BUG_ON(vma->fence->pin_count <= 0)
      <4>[  227.152064] ------------[ cut here ]------------
      <2>[  227.152068] kernel BUG at drivers/gpu/drm/i915/i915_vma.h:391!
      <4>[  227.152084] invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
      <0>[  227.152092] Dumping ftrace buffer:
      <0>[  227.152099]    (ftrace buffer empty)
      <4>[  227.152102] Modules linked in: i915 snd_hda_codec_analog snd_hda_codec_generic coretemp snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm lpc_ich e1000e mei_me mei prime_numbers
      <4>[  227.152131] CPU: 1 PID: 1587 Comm: kworker/u16:49 Tainted: G     U           4.16.0-rc1-gbab67b2f6177-kasan_7+ #1
      <4>[  227.152134] Hardware name: Dell Inc. OptiPlex 755                 /0PU052, BIOS A08 02/19/2008
      <4>[  227.152236] Workqueue: events_unbound intel_atomic_commit_work [i915]
      <4>[  227.152292] RIP: 0010:intel_unpin_fb_vma+0x23a/0x2a0 [i915]
      <4>[  227.152295] RSP: 0018:ffff88005aad7b68 EFLAGS: 00010286
      <4>[  227.152300] RAX: 0000000000000026 RBX: ffff88005c359580 RCX: 0000000000000000
      <4>[  227.152304] RDX: 0000000000000026 RSI: ffffffff8707d840 RDI: ffffed000b55af63
      <4>[  227.152307] RBP: ffff880056817e58 R08: 0000000000000001 R09: 0000000000000000
      <4>[  227.152311] R10: ffff88005aad7b88 R11: 0000000000000000 R12: ffff8800568184d0
      <4>[  227.152314] R13: ffff880065b5ab08 R14: 0000000000000000 R15: dffffc0000000000
      <4>[  227.152318] FS:  0000000000000000(0000) GS:ffff88006ac40000(0000) knlGS:0000000000000000
      <4>[  227.152322] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[  227.152325] CR2: 00007f5fb25550a8 CR3: 0000000068c78000 CR4: 00000000000006e0
      <4>[  227.152328] Call Trace:
      <4>[  227.152385]  intel_cleanup_plane_fb+0x6b/0xd0 [i915]
      <4>[  227.152395]  drm_atomic_helper_cleanup_planes+0x166/0x280
      <4>[  227.152452]  intel_atomic_commit_tail+0x159d/0x3380 [i915]
      <4>[  227.152463]  ? process_one_work+0x66e/0x1460
      <4>[  227.152516]  ? skl_update_crtcs+0x9c0/0x9c0 [i915]
      <4>[  227.152523]  ? lock_acquire+0x13d/0x390
      <4>[  227.152527]  ? lock_acquire+0x13d/0x390
      <4>[  227.152534]  process_one_work+0x71a/0x1460
      <4>[  227.152540]  ? __schedule+0x815/0x1e20
      <4>[  227.152547]  ? pwq_dec_nr_in_flight+0x2b0/0x2b0
      <4>[  227.152553]  ? _raw_spin_lock_irq+0xa/0x40
      <4>[  227.152559]  worker_thread+0xdf/0xf60
      <4>[  227.152569]  ? process_one_work+0x1460/0x1460
      <4>[  227.152573]  kthread+0x2cf/0x3c0
      <4>[  227.152578]  ? _kthread_create_on_node+0xa0/0xa0
      <4>[  227.152583]  ret_from_fork+0x3a/0x50
      <4>[  227.152591] Code: c6 00 11 86 c0 48 c7 c7 e0 bd 85 c0 e8 60 e7 a9 c4 0f ff e9 1f fe ff ff 48 c7 c6 40 10 86 c0 48 c7 c7 e0 ca 85 c0 e8 2b 95 bd c4 <0f> 0b 48 89 ef e8 4c 44 e8 c4 e9 ef fd ff ff e8 42 44 e8 c4 e9
      <1>[  227.152720] RIP: intel_unpin_fb_vma+0x23a/0x2a0 [i915] RSP: ffff88005aad7b68
      
      v2: i915_vma_pin_fence() is a no-op if a fence isn't required, so check
      vma->fence as well.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180220134208.24988-2-chris@chris-wilson.co.uk
      5935485f
  8. 13 2月, 2018 1 次提交
  9. 10 2月, 2018 1 次提交
  10. 06 2月, 2018 1 次提交
  11. 31 1月, 2018 1 次提交
  12. 30 1月, 2018 1 次提交
  13. 23 1月, 2018 1 次提交
  14. 19 1月, 2018 2 次提交
  15. 15 1月, 2018 1 次提交
  16. 13 1月, 2018 1 次提交
  17. 09 1月, 2018 3 次提交
    • S
      drm/i915: Implement HDCP for HDMI · 2320175f
      Sean Paul 提交于
      This patch adds HDCP support for HDMI connectors by implementing
      the intel_hdcp_shim.
      
      Nothing too special, just a bunch of DDC reads/writes.
      
      Changes in v2:
      - Rebased on drm-intel-next
      Changes in v3:
      - Initialize new worker
      Changes in v4:
      - Remove SKL_ prefix from most register names (Daniel)
      - Wrap sanity checks in WARN_ON (Daniel)
      - Consolidate the enable/disable functions into one toggle fn
      - Use intel_hdcp_init (Daniel)
      Changes in v5:
      - checkpatch whitespace nits
      Changes in v6:
      - None
      
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NRamalingam C <ramalingam.c@intel.com>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-9-seanpaul@chromium.org
      2320175f
    • S
      drm/i915: Add HDCP framework + base implementation · ee5e5e7a
      Sean Paul 提交于
      This patch adds the framework required to add HDCP support to intel
      connectors. It implements Aksv loading from fuse, and parts 1/2/3
      of the HDCP authentication scheme.
      
      Note that without shim implementations, this does not actually implement
      HDCP. That will come in subsequent patches.
      
      Changes in v2:
      - Don't open code wait_fors (Chris)
      - drm_hdcp.c under MIT license (Daniel)
      - Move intel_hdcp_disable() call above ddi_disable (Ram)
      - Fix // comments (I wore a cone of shame for 12 hours to atone) (Daniel)
      - Justify intel_hdcp_shim with comments (Daniel)
      - Fixed async locking issues by adding hdcp_mutex (Daniel)
      - Don't alter connector_state in enable/disable (Daniel)
      Changes in v3:
      - Added hdcp_mutex/hdcp_value to make async reasonable
      - Added hdcp_prop_work to separate link checking & property setting
      - Added new helper for atomic_check state tracking (Daniel)
      - Moved enable/disable into atomic_commit with matching helpers
      - Moved intel_hdcp_check_link out of all locks when called from dp
      - Bumped up ksv_fifo timeout (noticed failure on one of my dongles)
      Changes in v4:
      - Remove SKL_ prefix from most register names (Daniel)
      - Move enable/disable back to modeset path (Daniel)
      - s/get_random_long/get_random_u32/ (Daniel)
      - Remove mode_config.mutex lock in prop_work (Daniel)
      - Add intel_hdcp_init to handle init of conn components (Daniel)
      - Actually check return value of attach_property
      - Check Bksv is valid before trying to authenticate (Ram)
      Changes in v5:
      - checkpatch whitespace changes
      - s/DRM_MODE_CONTENT_PROTECTION_OFF/DRM_MODE_CONTENT_PROTECTION_UNDESIRED/
      - Fix ksv list wait timeout (actually wait 5s)
      - Increase the R0 timeout to 300ms (Ram)
      Changes in v6:
      - SPDX license
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NRamalingam C <ramalingm.c@intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-6-seanpaul@chromium.org
      ee5e5e7a
    • S
      drm/i915: Add more control to wait_for routines · 23fdbdd7
      Sean Paul 提交于
      This patch adds a little more control to a couple wait_for routines such
      that we can avoid open-coding read/wait/timeout patterns which:
       - need the value of the register after the wait_for
       - run arbitrary operation for the read portion
      
      This patch also chooses the correct sleep function (based on
      timers-howto.txt) for the polling interval the caller specifies.
      
      Changes in v2:
      - Added to the series
      Changes in v3:
      - Rebased on drm-intel-next-queued and the new Wmin/max _wait_for
      - Removed msleep option
      Changes in v4:
      - Removed ; for OP in _wait_for (Chris)
      - Moved reg_value definition above ret (Chris)
      Changes in v4:
      - checkpatch whitespace fix
      Changes in v5:
      - None
      Changes in v6:
      - None
      Suggested-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-3-seanpaul@chromium.org
      23fdbdd7
  18. 01 12月, 2017 2 次提交
  19. 30 11月, 2017 1 次提交
  20. 28 11月, 2017 2 次提交
  21. 25 11月, 2017 1 次提交
    • C
      drm/i915: Use exponential backoff for wait_for() · a54b1873
      Chris Wilson 提交于
      Instead of sleeping for a fixed 1ms (roughly, depending on timer slack),
      start with a small sleep and exponentially increase the sleep on each
      cycle.
      
      A good example of a beneficiary is the guc mmio communication channel.
      Typically we expect (and so spin) for 10us for a quick response, but this
      doesn't cover everything and so sometimes we fallback to the millisecond+
      sleep. This incurs a significant delay in time-critical operations like
      preemption (igt/gem_exec_latency), which can be improved significantly by
      using a small sleep after the spin fails.
      
      We've made this suggestion many times, but had little experimental data
      to support adding the complexity.
      
      v2: Bump the minimum usleep to 10us on advice of
      Documentation/timers/timers-howto.txt (Tvrko)
      v3: Specify min, max range for usleep intervals -- some code may
      crucially depend upon and so want to specify the sleep pattern.
      
      References: 1758b90e ("drm/i915: Use a hybrid scheme for fast register waits")
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: John Harrison <John.C.Harrison@intel.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
      Reviewed-by: NMichał Winiarski <michal.winiarski@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171124130031.20761-2-chris@chris-wilson.co.uk
      a54b1873
  22. 22 11月, 2017 4 次提交
  23. 17 11月, 2017 3 次提交
  24. 14 11月, 2017 1 次提交