1. 08 9月, 2016 5 次提交
  2. 07 9月, 2016 3 次提交
  3. 06 9月, 2016 3 次提交
  4. 05 9月, 2016 3 次提交
  5. 03 9月, 2016 2 次提交
  6. 02 9月, 2016 10 次提交
  7. 01 9月, 2016 1 次提交
  8. 31 8月, 2016 1 次提交
  9. 29 8月, 2016 4 次提交
  10. 27 8月, 2016 4 次提交
    • C
      drm/i915: Make for_each_engine_masked() more compact and quicker · bafb0fce
      Chris Wilson 提交于
      Rather than walk the full array of engines checking whether each is in
      the mask in turn, we can use the mask to jump to the right engines. This
      should quicker for a sparse array of engines or mask, whilst generating
      smaller code:
      
         text	   data	    bss	    dec	    hex	filename
      1251010	   4579	    800	1256389	 132bc5	drivers/gpu/drm/i915/i915.ko
      1250530	   4579	    800	1255909	 1329e5	drivers/gpu/drm/i915/i915.ko
      
      The downside is that we have to pass in a temporary, alas no C99
      iterators yet.
      
      [P.S. Joonas doesn't like having to pass extra temporaries into the
      macro, and even less that I called them tmp. As yet, we haven't found a
      macro that avoids passing in a temporary that is smaller. We probably
      will get C99 iterators first!]
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160827075401.16470-2-chris@chris-wilson.co.uk
      bafb0fce
    • C
      drm/i915: Tidy reporting busy status during i915_gem_retire_requests() · f6407193
      Chris Wilson 提交于
      As we know by inspection whether any engine is still busy as we retire
      all the requests, we can pass that information back via return value
      rather than check again afterwards.
      
      v2: A little more polish missed in patch splitting
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Reviewed-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160827075401.16470-1-chris@chris-wilson.co.uk
      f6407193
    • C
      drm/i915: Allow the user to pass a context to any ring · f7978a0c
      Chris Wilson 提交于
      With full-ppgtt, we want the user to have full control over their memory
      layout, with a separate instance per context. Forcing them to use a
      shared memory layout for !RCS not only duplicates the amount of work we
      have to do, but also defeats the memory segregation on offer.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160822080350.4964-4-chris@chris-wilson.co.ukReviewed-by: NJohn Harrison <john.c.harrison@intel.com>
      Reviewed-by: NThomas Daniel <thomas.daniel@intel.com>
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f7978a0c
    • C
      drm/i915: Add GEN7_PCODE_MIN_FREQ_TABLE_GT_RATIO_OUT_OF_RANGE to SNB · 7850d1c3
      Chris Wilson 提交于
      According to the CI test machines, SNB also uses the
      GEN7_PCODE_MIN_FREQ_TABLE_GT_RATIO_OUT_OF_RANGE value to report a bad
      GEN6_PCODE_MIN_FREQ_TABLE request.
      
      [  157.744641] WARNING: CPU: 5 PID: 9238 at
      drivers/gpu/drm/i915/intel_pm.c:7760 sandybridge_pcode_write+0x141/0x200 [i915]
      [  157.744642] Missing switch case (16) in gen6_check_mailbox_status
      [  157.744642] Modules linked in: snd_hda_intel i915 ax88179_178a usbnet mii x86_pkg_temp_thermal intel_powerclamp coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_codec snd_hwdep snd_hda_core mei_me lpc_ich snd_pcm mei broadcom bcm_phy_lib tg3 ptp pps_core [last unloaded: vgem]
      [  157.744658] CPU: 5 PID: 9238 Comm: drv_hangman Tainted: G     U  W 4.8.0-rc3-CI-CI_DRM_1589+ #1
      [  157.744658] Hardware name: Dell Inc. XPS 8300  /0Y2MRG, BIOS A06 10/17/2011
      [  157.744659]  0000000000000000 ffff88011f093a98 ffffffff81426415 ffff88011f093ae8
      [  157.744662]  0000000000000000 ffff88011f093ad8 ffffffff8107d2a6 00001e50810d3c9f
      [  157.744663]  ffff880128680000 0000000000000008 0000000000000000 ffff88012868a650
      [  157.744665] Call Trace:
      [  157.744669]  [<ffffffff81426415>] dump_stack+0x67/0x92
      [  157.744672]  [<ffffffff8107d2a6>] __warn+0xc6/0xe0
      [  157.744673]  [<ffffffff8107d30a>] warn_slowpath_fmt+0x4a/0x50
      [  157.744685]  [<ffffffffa0029831>] sandybridge_pcode_write+0x141/0x200 [i915]
      [  157.744697]  [<ffffffffa002a88a>] intel_enable_gt_powersave+0x64a/0x1330 [i915]
      [  157.744712]  [<ffffffffa006b4cb>] ? i9xx_emit_request+0x1b/0x80 [i915]
      [  157.744725]  [<ffffffffa0055ed3>] __i915_add_request+0x1e3/0x370 [i915]
      [  157.744738]  [<ffffffffa00428bd>] i915_gem_do_execbuffer.isra.16+0xced/0x1b80 [i915]
      [  157.744740]  [<ffffffff811a232e>] ? __might_fault+0x3e/0x90
      [  157.744752]  [<ffffffffa0043b72>] i915_gem_execbuffer2+0xc2/0x2a0 [i915]
      [  157.744753]  [<ffffffff815485b7>] drm_ioctl+0x207/0x4c0
      [  157.744765]  [<ffffffffa0043ab0>] ? i915_gem_execbuffer+0x360/0x360 [i915]
      [  157.744767]  [<ffffffff810ea4ad>] ?  debug_lockdep_rcu_enabled+0x1d/0x20
      [  157.744769]  [<ffffffff811fe09e>] do_vfs_ioctl+0x8e/0x680
      [  157.744770]  [<ffffffff811a2377>] ? __might_fault+0x87/0x90
      [  157.744771]  [<ffffffff811a232e>] ? __might_fault+0x3e/0x90
      [  157.744773]  [<ffffffff810d3df2>] ?  trace_hardirqs_on_caller+0x122/0x1b0
      [  157.744774]  [<ffffffff811fe6cc>] SyS_ioctl+0x3c/0x70
      [  157.744776]  [<ffffffff8180fe69>] entry_SYSCALL_64_fastpath+0x1c/0xac
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97491
      Fixes: 87660502 ("drm/i915/gen6+: Interpret mailbox error flags")
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Lyude <cpaul@redhat.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: stable@vger.kernel.org
      Link: http://patchwork.freedesktop.org/patch/msgid/20160826105926.3413-1-chris@chris-wilson.co.ukAcked-by: NMika Kuoppala <mika.kuoppala@intel.com>
      7850d1c3
  11. 26 8月, 2016 2 次提交
  12. 25 8月, 2016 2 次提交
    • L
      drm/i915/skl: Update DDB values atomically with wms/plane attrs · 27082493
      Lyude 提交于
      Now that we can hook into update_crtcs and control the order in which we
      update CRTCs at each modeset, we can finish the final step of fixing
      Skylake's watermark handling by performing DDB updates at the same time
      as plane updates and watermark updates.
      
      The first major change in this patch is skl_update_crtcs(), which
      handles ensuring that we order each CRTC update in our atomic commits
      properly so that they honor the DDB flush order.
      
      The second major change in this patch is the order in which we flush the
      pipes. While the previous order may have worked, it can't be used in
      this approach since it no longer will do the right thing. For example,
      using the old ddb flush order:
      
      We have pipes A, B, and C enabled, and we're disabling C. Initial ddb
      allocation looks like this:
      
      |   A   |   B   |xxxxxxx|
      
      Since we're performing the ddb updates after performing any CRTC
      disablements in intel_atomic_commit_tail(), the space to the right of
      pipe B is unallocated.
      
      1. Flush pipes with new allocation contained into old space. None
         apply, so we skip this
      2. Flush pipes having their allocation reduced, but overlapping with a
         previous allocation. None apply, so we also skip this
      3. Flush pipes that got more space allocated. This applies to A and B,
         giving us the following update order: A, B
      
      This is wrong, since updating pipe A first will cause it to overlap with
      B and potentially burst into flames. Our new order (see the code
      comments for details) would update the pipes in the proper order: B, A.
      
      As well, we calculate the order for each DDB update during the check
      phase, and reference it later in the commit phase when we hit
      skl_update_crtcs().
      
      This long overdue patch fixes the rest of the underruns on Skylake.
      
      Changes since v1:
       - Add skl_ddb_entry_write() for cursor into skl_write_cursor_wm()
      Changes since v2:
       - Use the method for updating CRTCs that Ville suggested
       - In skl_update_wm(), only copy the watermarks for the crtc that was
         passed to us
      Changes since v3:
       - Small comment fix in skl_ddb_allocation_overlaps()
      Changes since v4:
       - Remove the second loop in intel_update_crtcs() and use Ville's
         suggestion for updating the ddb allocations in the right order
       - Get rid of the second loop and just use the ddb state as it updates
         to determine what order to update everything in (thanks for the
         suggestion Ville)
       - Simplify skl_ddb_allocation_overlaps()
       - Split actual overlap checking into it's own helper
      
      Fixes: 0e8fb7ba ("drm/i915/skl: Flush the WM configuration")
      Fixes: 8211bd5b ("drm/i915/skl: Program the DDB allocation")
      [omitting CC for stable, since this patch will need to be changed for
      such backports first]
      
      Testcase: kms_cursor_legacy
      Testcase: plane-all-modeset-transition
      Signed-off-by: NLyude <cpaul@redhat.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
      Cc: Hans de Goede <hdegoede@redhat.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1471961565-28540-2-git-send-email-cpaul@redhat.com
      27082493
    • L
      drm/i915: Move CRTC updating in atomic_commit into it's own hook · 896e5bb0
      Lyude 提交于
      Since we have to write ddb allocations at the same time as we do other
      plane updates, we're going to need to be able to control the order in
      which we execute modesets on each pipe. The easiest way to do this is to
      just factor this section of intel_atomic_commit_tail()
      (intel_atomic_commit() for stable branches) into it's own function, and
      add an appropriate display function hook for it.
      
      Based off of Matt Rope's suggestions
      
      Changes since v1:
       - Drop pipe_config->base.active check in intel_update_crtcs() since we
         check that before calling the function
      Signed-off-by: NLyude <cpaul@redhat.com>
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      [omitting CC for stable, since this patch will need to be changed for
      such backports first]
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
      Cc: Hans de Goede <hdegoede@redhat.com>
      Signed-off-by: NLyude <cpaul@redhat.com>
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1471961565-28540-1-git-send-email-cpaul@redhat.com
      896e5bb0