1. 06 Mar, 2018 13 commits
  2. 05 Mar, 2018 4 commits
    • Tvrtko Ursulin's avatar
      drm/i915/icl: Ringbuffer interrupt handling · d4ccceb0
      Tvrtko Ursulin authored
      On Gen11 interrupt masks need to be clear to allow C6 entry.
      We keep them all enabled knowing that we generate extra
      interrupts.
      
      v2: Rebase.
      v3: Remove gen 11 extra check in logical_render_ring_init.
      v4: Rebase fixes.
      v5: Rebase/refactor.
      v6: Rebase.
      v7: Rebase.
      v8: Update comment and commit message (Daniele)
      Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180302161501.28594-1-mika.kuoppala@linux.intel.com
      d4ccceb0
    • Chris Wilson's avatar
      drm/i915: Unwind vma pinning for intel_pin_and_fence_fb_obj error path · 7509702b
      Chris Wilson authored
      If we fail to acquire a fence when we must, we must unwind before
      reporting the error. Otherwise, we lose tracking of the vma pinning and
      eventually hit a bug like
      
      <3>[   46.163202] i915_vma_unpin:333 GEM_BUG_ON(!i915_vma_is_pinned(vma))
      <4>[   46.163424] ------------[ cut here ]------------
      <2>[   46.163429] kernel BUG at drivers/gpu/drm/i915/i915_vma.h:333!
      <4>[   46.163444] invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
      <0>[   46.163451] Dumping ftrace buffer:
      <0>[   46.163457] ---------------------------------
      <0>[   46.163630]    <...>-84      1.... 46260767us : i915_gem_object_unpin_from_display_plane: i915_vma_unpin:333 GEM_BUG_ON(!i915_vma_is_pinned(vma))
      <0>[   46.163635] ---------------------------------
      <4>[   46.163638] Modules linked in: vgem 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 mei_me e1000e mei prime_numbers
      <4>[   46.163667] CPU: 1 PID: 84 Comm: kworker/u16:1 Tainted: G     U           4.16.0-rc3-gc07ef2c77d14-kasan_18+ #1
      <4>[   46.163671] Hardware name: Dell Inc. OptiPlex 755                 /0PU052, BIOS A08 02/19/2008
      <4>[   46.163743] Workqueue: events_unbound intel_atomic_commit_work [i915]
      <4>[   46.163809] RIP: 0010:i915_gem_object_unpin_from_display_plane+0x253/0x2f0 [i915]
      <4>[   46.163813] RSP: 0018:ffff8800624cfb48 EFLAGS: 00010286
      <4>[   46.163818] RAX: 000000000000000c RBX: ffff880064446c40 RCX: ffff8800653135b8
      <4>[   46.163822] RDX: dffffc0000000000 RSI: 0000000000000054 RDI: ffff8800651e30d0
      <4>[   46.163825] RBP: 00000000000003d0 R08: 0000000000000001 R09: ffff8800651e3158
      <4>[   46.163829] R10: 0000000000000000 R11: ffff8800651e30f0 R12: 0000000000000001
      <4>[   46.163832] R13: ffff880054c58620 R14: 0000000000000000 R15: dffffc0000000000
      <4>[   46.163836] FS:  0000000000000000(0000) GS:ffff880066040000(0000) knlGS:0000000000000000
      <4>[   46.163840] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[   46.163843] CR2: 00007f1fc6fb0000 CR3: 00000000526fe000 CR4: 00000000000006e0
      <4>[   46.163846] Call Trace:
      <4>[   46.163918]  intel_unpin_fb_vma+0xbd/0x300 [i915]
      <4>[   46.163990]  intel_cleanup_plane_fb+0x99/0xc0 [i915]
      <4>[   46.163998]  drm_atomic_helper_cleanup_planes+0x166/0x280
      <4>[   46.164071]  intel_atomic_commit_tail+0x1594/0x33a0 [i915]
      <4>[   46.164081]  ? process_one_work+0x66e/0x1460
      <4>[   46.164151]  ? skl_update_crtcs+0x9c0/0x9c0 [i915]
      <4>[   46.164157]  ? lock_acquire+0x13d/0x390
      <4>[   46.164161]  ? lock_acquire+0x13d/0x390
      <4>[   46.164169]  process_one_work+0x71a/0x1460
      <4>[   46.164175]  ? __schedule+0x838/0x1e50
      <4>[   46.164182]  ? pwq_dec_nr_in_flight+0x2b0/0x2b0
      <4>[   46.164188]  ? _raw_spin_lock_irq+0xa/0x40
      <4>[   46.164194]  worker_thread+0xdf/0xf60
      <4>[   46.164204]  ? process_one_work+0x1460/0x1460
      <4>[   46.164209]  kthread+0x2cf/0x3c0
      <4>[   46.164213]  ? _kthread_create_on_node+0xa0/0xa0
      <4>[   46.164218]  ret_from_fork+0x3a/0x50
      <4>[   46.164227] Code: e8 78 d9 cd e8 48 8b 35 cc 9e 47 00 49 c7 c0 c0 31 84 c0 b9 4d 01 00 00 48 c7 c2 e0 80 84 c0 48 c7 c7 0e bb 57 c0 e8 5d 4b df e8 <0f> 0b 48 c7 c1 c0 30 84 c0 ba 4e 01 00 00 48 c7 c6 e0 80 84 c0
      <1>[   46.164368] RIP: i915_gem_object_unpin_from_display_plane+0x253/0x2f0 [i915] RSP: ffff8800624cfb48
      
      Fixes: 85798ac9 ("drm/i915: Fail if we can't get a fence for gen2/3 tiled scanout")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180305103312.29492-1-chris@chris-wilson.co.uk
      7509702b
    • Mahesh Kumar's avatar
      drm/i915/icl: remove port A/E lane sharing limitation. · 3d2011cf
      Mahesh Kumar authored
      Platforms before Gen11 were sharing lanes between port-A & port-E.
      This limitation is no more there.
      
      Changes since V1:
       - optimize the code (Shashank/Jani)
       - create helper function to get max lanes (ville)
      Changes since V2:
       - Include BIOS fail fix-up in same helper function (ville)
      Changes since V3:
       - remove confusing if/else (jani)
       - group intel_encoder initialization
      Signed-off-by: default avatarMahesh Kumar <mahesh1.kumar@intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180206060855.30026-1-mahesh1.kumar@intel.com
      3d2011cf
    • Joonas Lahtinen's avatar
  3. 02 Mar, 2018 12 commits
  4. 01 Mar, 2018 8 commits
  5. 28 Feb, 2018 3 commits
    • Jani Nikula's avatar
      drm/i915/dp: move link rate arrays where they're used · 229675d5
      Jani Nikula authored
      Localize link rate arrays by moving them to the functions where they're
      used. Further clarify the distinction between source and sink
      capabilities. Split pre and post Haswell arrays, and get rid of the
      array size arithmetics. Use a direct rate value in the paranoia case of
      no common rates find.
      
      Cc: Manasi Navare <manasi.d.navare@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180227105911.4485-1-jani.nikula@intel.com
      229675d5
    • Ville Syrjälä's avatar
      drm/i915: Consult aux_ch instead of port in ->get_aux_clock_divider() · 449059a9
      Ville Syrjälä authored
      While it seems totally unlikely that any system would mix a cpu/north
      aux channel with a pch/south port (or vice versa) we should still
      consult intel_dp->aux_ch rather than encoder->port when figuring out
      which clock is actually used by the aux ch.
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180222181036.15251-5-ville.syrjala@linux.intel.com
      Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> #irc
      449059a9
    • Chris Wilson's avatar
      drm/i915: Don't deref request->ctx inside unlocked print_request() · 367a35a6
      Chris Wilson authored
      Although we protect the request itself, we don't lock inside
      intel_engine_dump() and so the request maybe retired as we peek into it.
      One consequence is that the request->ctx may be freed before we
      dereference it, leading to a use-after-free. Replace the hw_id we are
      peeking from inside request->ctx with the request->fence.context, with
      which we can still track from which context the request originated
      (although to tie to HW reports requires a little more legwork, but is
      good enough to follow the GEM traces).
      
      [52640.729670] general protection fault: 0000 [#2] SMP
      [52640.729694] Dumping ftrace buffer:
      [52640.729701]    (ftrace buffer empty)
      [52640.729705] Modules linked in: vgem snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic x86_pkg_\
      temp_thermal intel_powerclamp coretemp crct10dif_pclmul crc32_pclmul snd_hda_intel snd_hda_codec snd_hwdep gha\
      sh_clmulni_intel snd_hda_core snd_pcm mei_me mei i915 r8169 mii prime_numbers i2c_hid
      [52640.729748] CPU: 2 PID: 4335 Comm: gem_exec_schedu Tainted: G     UD W        4.16.0-rc3+ #7
      [52640.729759] Hardware name: Acer Aspire E5-575G/Ironman_SK  , BIOS V1.12 08/02/2016
      [52640.729803] RIP: 0010:print_request+0x2b/0xb0 [i915]
      [52640.729811] RSP: 0018:ffffc90001453c18 EFLAGS: 00010206
      [52640.729820] RAX: 6b6b6b6b6b6b6b6b RBX: ffff8801e0292d40 RCX: 0000000000000006
      [52640.729829] RDX: ffffc90001453c60 RSI: ffff8801e0292d40 RDI: 0000000000000003
      [52640.729838] RBP: ffffc90001453d80 R08: 0000000000000000 R09: 0000000000000001
      [52640.729847] R10: ffffc90001453bd0 R11: ffffc90001453c73 R12: ffffc90001453c60
      [52640.729856] R13: ffffc90001453d80 R14: ffff8801d5a683c8 R15: ffff8801e0292d40
      [52640.729866] FS:  00007f1ee50548c0(0000) GS:ffff8801e8200000(0000) knlGS:0000000000000000
      [52640.729876] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [52640.729884] CR2: 00007f1ee5077000 CR3: 00000001d9411004 CR4: 00000000003606e0
      [52640.729893] Call Trace:
      [52640.729922]  intel_engine_print_registers+0x623/0x890 [i915]
      [52640.729948]  intel_engine_dump+0x4a3/0x590 [i915]
      [52640.729957]  ? seq_printf+0x3a/0x50
      [52640.729977]  i915_engine_info+0xb8/0xe0 [i915]
      [52640.729984]  ? drm_mode_gamma_get_ioctl+0xf0/0xf0
      [52640.729990]  seq_read+0xd5/0x410
      [52640.729997]  full_proxy_read+0x4b/0x70
      [52640.730004]  __vfs_read+0x1e/0x120
      [52640.730009]  ? do_sys_open+0x134/0x220
      [52640.730015]  ? kmem_cache_free+0x174/0x2b0
      [52640.730021]  vfs_read+0xa1/0x150
      [52640.730026]  SyS_read+0x40/0xa0
      [52640.730032]  do_syscall_64+0x65/0x1a0
      [52640.730038]  entry_SYSCALL_64_after_hwframe+0x42/0xb7
      Reported-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180228094732.28462-1-chris@chris-wilson.co.uk
      367a35a6