linux_dsm_epyc7002/drivers/gpu/drm/i915
Tvrtko Ursulin c6a2ac712d drm/i915: Execlists small cleanups and micro-optimisations
Assorted changes in the areas of code cleanup, reduction of
invariant conditional in the interrupt handler and lock
contention and MMIO access optimisation.

 * Remove needless initialization.
 * Improve cache locality by reorganizing code and/or using
   branch hints to keep unexpected or error conditions out
   of line.
 * Favor busy submit path vs. empty queue.
 * Less branching in hot-paths.

v2:

 * Avoid mmio reads when possible. (Chris Wilson)
 * Use natural integer size for csb indices.
 * Remove useless return value from execlists_update_context.
 * Extract 32-bit ppgtt PDPs update so it is out of line and
   shared with two callers.
 * Grab forcewake across all mmio operations to ease the
   load on uncore lock and use chepear mmio ops.

v3:

 * Removed some more pointless u8 data types.
 * Removed unused return from execlists_context_queue.
 * Commit message updates.

v4:
 * Unclumsify the unqueue if statement. (Chris Wilson)
 * Hide forcewake from the queuing function. (Chris Wilson)

Version 3 now makes the irq handling code path ~20% smaller on
48-bit PPGTT hardware, and a little bit less elsewhere. Hot
paths are mostly in-line now and hammering on the uncore
spinlock is greatly reduced together with mmio traffic to an
extent.

Benchmarking with "gem_latency -n 100" (keep submitting
batches with 100 nop instruction) shows approximately 4% higher
throughput, 2% less CPU time and 22% smaller latencies. This was
on a big-core while small-cores could benefit even more.

Most likely reason for the improvements are the MMIO
optimization and uncore lock traffic reduction.

One odd result is with "gem_latency -n 0" (dispatching empty
batches) which shows 5% more throughput, 8% less CPU time,
25% better producer and consumer latencies, but 15% higher
dispatch latency which is yet unexplained.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1456505912-22286-1-git-send-email-tvrtko.ursulin@linux.intel.com
2016-03-01 10:36:02 +00:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c
i915_debugfs.c drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_dma.c drm/i915: Add two-stage ILK-style watermark programming (v11) 2016-02-29 08:20:53 -08:00
i915_drv.c drm/i915: Use atomic helpers for suspend, v2. 2016-02-16 11:23:46 +01:00
i915_drv.h drm/i915: Add two-stage ILK-style watermark programming (v11) 2016-02-29 08:20:53 -08:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_debug.c
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_execbuffer.c drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_gem_fence.c
i915_gem_gtt.c drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_gem_gtt.h drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_gem_render_state.c
i915_gem_render_state.h
i915_gem_shrinker.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_stolen.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_tiling.c
i915_gem_userptr.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem.c drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_gpu_error.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_guc_reg.h
i915_guc_submission.c
i915_ioc32.c
i915_irq.c drm/i915: Add for_each_pipe_masked() 2016-02-22 19:28:16 +02:00
i915_params.c drm/i915: drop unused i915.disable_vtd_wa module parameter 2016-02-19 17:27:15 +02:00
i915_params.h drm/i915: drop unused i915.disable_vtd_wa module parameter 2016-02-19 17:27:15 +02:00
i915_reg.h drm/i915/gen9: Extend dmc debug mask to include cores 2016-02-22 17:20:28 +02:00
i915_suspend.c
i915_sysfs.c
i915_trace_points.c
i915_trace.h drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_vgpu.c
i915_vgpu.h
intel_acpi.c
intel_atomic_plane.c
intel_atomic.c drm/i915: Add two-stage ILK-style watermark programming (v11) 2016-02-29 08:20:53 -08:00
intel_audio.c
intel_bios.c
intel_bios.h
intel_crt.c drm/i915: Use correct dpms for intel_enable_crt. 2016-02-18 10:41:51 +01:00
intel_csr.c drm/i915/gen9: Write dc state debugmask bits only once 2016-02-22 17:21:04 +02:00
intel_ddi.c drm/i915/ddi: Ensure the HW is powered during HW state readout 2016-02-17 16:17:14 +02:00
intel_display.c drm/i915: Handle -EDEADLK in drm_atomic_commit from load-detect. 2016-03-01 09:40:51 +01:00
intel_dp_link_training.c
intel_dp_mst.c
intel_dp.c drm/i915/dp: Ensure the HW is powered during HW state readout 2016-02-17 16:17:34 +02:00
intel_drv.h drm/i915: Add two-stage ILK-style watermark programming (v11) 2016-02-29 08:20:53 -08:00
intel_dsi_panel_vbt.c drm/i915/dsi: Using the bpp value wrt the pixel format 2016-02-19 14:56:05 +02:00
intel_dsi_pll.c drm/i915/dsi: Using the bpp value wrt the pixel format 2016-02-19 14:56:05 +02:00
intel_dsi.c drm/i915/dsi: Using the bpp value wrt the pixel format 2016-02-19 14:56:05 +02:00
intel_dsi.h drm/i915/dsi: Using the bpp value wrt the pixel format 2016-02-19 14:56:05 +02:00
intel_dvo.c
intel_fbc.c drm/i915/fbc: enable FBC by default on HSW and BDW 2016-02-19 18:06:16 -02:00
intel_fbdev.c drm/i915: Use atomic state in intel_fb_initial_config. 2016-02-18 10:41:54 +01:00
intel_fifo_underrun.c
intel_frontbuffer.c
intel_guc_fwif.h
intel_guc_loader.c drm/i915/guc: Do not wait for firmware load atomically 2016-02-15 16:10:19 +00:00
intel_guc.h
intel_hdmi.c drm/i915/hdmi: Ensure the HW is powered during HW state readout 2016-02-17 16:17:34 +02:00
intel_hotplug.c
intel_i2c.c
intel_lrc.c drm/i915: Execlists small cleanups and micro-optimisations 2016-03-01 10:36:02 +00:00
intel_lrc.h
intel_lvds.c drm/i915/lvds: Ensure the HW is powered during HW state readout 2016-02-17 16:17:35 +02:00
intel_mocs.c
intel_mocs.h
intel_modes.c
intel_opregion.c
intel_overlay.c
intel_panel.c
intel_pm.c drm/i915: remove left over dead code 2016-02-29 17:55:28 +01:00
intel_psr.c drm/i915: Enable PSR by default on Haswell and Broadwell. 2016-02-17 13:04:48 -08:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c drm/i915: Don't ERROR for an expected intel_rcs_ctx_init() interruption 2016-02-15 10:48:08 +01:00
intel_ringbuffer.h drm/i915: Execlists small cleanups and micro-optimisations 2016-03-01 10:36:02 +00:00
intel_runtime_pm.c drm/i915: Balance assert_rpm_wakelock_held() for !IS_ENABLED(CONFIG_PM) 2016-02-26 15:11:40 +02:00
intel_sdvo_regs.h
intel_sdvo.c
intel_sideband.c
intel_sprite.c
intel_tv.c drm/i915: remove dead code 2016-02-29 17:58:09 +01:00
intel_uncore.c
Kconfig drm/i915: Add an optional selection from i915 of CONFIG_MMU_NOTIFIER 2016-02-17 13:58:46 +01:00
Makefile