diff options
author | Dave Airlie <airlied@redhat.com> | 2016-07-14 23:50:58 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-07-14 23:50:58 -0400 |
commit | ff37c05a996bb96eccc21f4fb1b32ba0e24f3443 (patch) | |
tree | c09b09b37521f2f8f3f7a9bb3b0a33a2b3bde1a1 /drivers/gpu/drm/i915/i915_gem_execbuffer.c | |
parent | 6c181c82106e12dced317e93a7a396cbb8c64f75 (diff) | |
parent | 0b2c0582f1570bfc95aa9ac1cd340a215d8e8335 (diff) |
Merge tag 'drm-intel-next-2016-07-11' of git://anongit.freedesktop.org/drm-intel into drm-next
- select igt testing depencies for CONFIG_DRM_I915_DEBUG (Chris)
- track outputs in crtc state and clean up all our ad-hoc connector/encoder
walking in modest code (Ville)
- demidlayer drm_device/drm_i915_private (Chris Wilson)
- thundering herd fix from Chris Wilson, with lots of help from Tvrtko Ursulin
- piles of assorted clean and fallout from the thundering herd fix
- documentation and more tuning for waitboosting (Chris)
- pooled EU support on bxt (Arun Siluvery)
- bxt support is no longer considered prelimary!
- ring/engine vfunc cleanup from Tvrtko
- introduce intel_wait_for_register helper (Chris)
- opregion updates (Jani Nukla)
- tuning and fixes for wait_for macros (Tvrkto&Imre)
- more kabylake pci ids (Rodrigo)
- pps cleanup and fixes for bxt (Imre)
- move sink crc support over to atomic state (Maarten)
- fix up async fbdev init ordering (Chris)
- fbc fixes from Paulo and Chris
* tag 'drm-intel-next-2016-07-11' of git://anongit.freedesktop.org/drm-intel: (223 commits)
drm/i915: Update DRIVER_DATE to 20160711
drm/i915: Select DRM_VGEM for igt
drm/i915: Select X86_MSR for igt
drm/i915: Fill unused GGTT with scratch pages for VT-d
drm/i915: Introduce Kabypoint PCH for Kabylake H/DT.
drm/i915:gen9: implement WaMediaPoolStateCmdInWABB
drm/i915: Check for invalid cloning earlier during modeset
drm/i915: Simplify hdmi_12bpc_possible()
drm/i915: Kill has_dsi_encoder
drm/i915: s/INTEL_OUTPUT_DISPLAYPORT/INTEL_OUTPUT_DP/
drm/i915: Replace some open coded intel_crtc_has_dp_encoder()s
drm/i915: Kill has_dp_encoder from pipe_config
drm/i915: Replace manual lvds and sdvo/hdmi counting with intel_crtc_has_type()
drm/i915: Unify intel_pipe_has_type() and intel_pipe_will_have_type()
drm/i915: Add output_types bitmask into the crtc state
drm/i915: Remove encoder type checks from MST suspend/resume
drm/i915: Don't mark eDP encoders as MST capable
drm/i915: avoid wait_for_atomic() in non-atomic host2guc_action()
drm/i915: Group the irq breadcrumb variables into the same cacheline
drm/i915: Wake up the bottom-half if we steal their interrupt
...
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_execbuffer.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_execbuffer.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index 7941f1fe9cd2..1978633e7549 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c | |||
@@ -1142,7 +1142,7 @@ i915_reset_gen7_sol_offsets(struct drm_device *dev, | |||
1142 | struct drm_i915_gem_request *req) | 1142 | struct drm_i915_gem_request *req) |
1143 | { | 1143 | { |
1144 | struct intel_engine_cs *engine = req->engine; | 1144 | struct intel_engine_cs *engine = req->engine; |
1145 | struct drm_i915_private *dev_priv = dev->dev_private; | 1145 | struct drm_i915_private *dev_priv = to_i915(dev); |
1146 | int ret, i; | 1146 | int ret, i; |
1147 | 1147 | ||
1148 | if (!IS_GEN7(dev) || engine != &dev_priv->engine[RCS]) { | 1148 | if (!IS_GEN7(dev) || engine != &dev_priv->engine[RCS]) { |
@@ -1225,7 +1225,7 @@ i915_gem_ringbuffer_submission(struct i915_execbuffer_params *params, | |||
1225 | { | 1225 | { |
1226 | struct drm_device *dev = params->dev; | 1226 | struct drm_device *dev = params->dev; |
1227 | struct intel_engine_cs *engine = params->engine; | 1227 | struct intel_engine_cs *engine = params->engine; |
1228 | struct drm_i915_private *dev_priv = dev->dev_private; | 1228 | struct drm_i915_private *dev_priv = to_i915(dev); |
1229 | u64 exec_start, exec_len; | 1229 | u64 exec_start, exec_len; |
1230 | int instp_mode; | 1230 | int instp_mode; |
1231 | u32 instp_mask; | 1231 | u32 instp_mask; |
@@ -1328,10 +1328,10 @@ gen8_dispatch_bsd_ring(struct drm_i915_private *dev_priv, struct drm_file *file) | |||
1328 | /* Check whether the file_priv has already selected one ring. */ | 1328 | /* Check whether the file_priv has already selected one ring. */ |
1329 | if ((int)file_priv->bsd_ring < 0) { | 1329 | if ((int)file_priv->bsd_ring < 0) { |
1330 | /* If not, use the ping-pong mechanism to select one. */ | 1330 | /* If not, use the ping-pong mechanism to select one. */ |
1331 | mutex_lock(&dev_priv->dev->struct_mutex); | 1331 | mutex_lock(&dev_priv->drm.struct_mutex); |
1332 | file_priv->bsd_ring = dev_priv->mm.bsd_ring_dispatch_index; | 1332 | file_priv->bsd_ring = dev_priv->mm.bsd_ring_dispatch_index; |
1333 | dev_priv->mm.bsd_ring_dispatch_index ^= 1; | 1333 | dev_priv->mm.bsd_ring_dispatch_index ^= 1; |
1334 | mutex_unlock(&dev_priv->dev->struct_mutex); | 1334 | mutex_unlock(&dev_priv->drm.struct_mutex); |
1335 | } | 1335 | } |
1336 | 1336 | ||
1337 | return file_priv->bsd_ring; | 1337 | return file_priv->bsd_ring; |
@@ -1477,6 +1477,12 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, | |||
1477 | dispatch_flags |= I915_DISPATCH_RS; | 1477 | dispatch_flags |= I915_DISPATCH_RS; |
1478 | } | 1478 | } |
1479 | 1479 | ||
1480 | /* Take a local wakeref for preparing to dispatch the execbuf as | ||
1481 | * we expect to access the hardware fairly frequently in the | ||
1482 | * process. Upon first dispatch, we acquire another prolonged | ||
1483 | * wakeref that we hold until the GPU has been idle for at least | ||
1484 | * 100ms. | ||
1485 | */ | ||
1480 | intel_runtime_pm_get(dev_priv); | 1486 | intel_runtime_pm_get(dev_priv); |
1481 | 1487 | ||
1482 | ret = i915_mutex_lock_interruptible(dev); | 1488 | ret = i915_mutex_lock_interruptible(dev); |