linux/drivers/gpu/drm/i915
Chris Wilson 8b38b3a167 drm/i915: Compute the ELSP register location once
Similar to the issue with reading from the context status buffer,
see commit 26720ab97f ("drm/i915: Move CSB MMIO reads out of the
execlists lock"), we frequently write to the ELSP register (4 writes per
interrupt) and know we hold the required spinlock and forcewake throughout.
We can further reduce the cost of writing these registers beyond the
I915_WRITE_FW() by precomputing the address of the ELSP register. We also
note that the subsequent read serves no purpose here, and are happy to
see it go.

v2: Address I915_WRITE mistakes in changelog

   text    data     bss     dec     hex filename
1259784    4581     576 1264941  134d2d drivers/gpu/drm/i915/i915.ko
1259720    4581     576 1264877  134ced drivers/gpu/drm/i915/i915.ko

Saves 64 bytes of address recomputation.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160909131201.16673-4-chris@chris-wilson.co.uk
2016-09-09 14:23:01 +01:00
..
gvt
dvo.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915/cmdparser: Accelerate copies from WC memory 2016-08-18 22:37:01 +01:00
i915_debugfs.c drm/i915: Get rid of HAS_CORE_RING_FREQ 2016-09-07 16:07:08 -07:00
i915_drv.c drm/i915: sseu: Convert subslice count fields to subslice mask 2016-09-02 18:17:47 +03:00
i915_drv.h drm/i915: Move HAS_GUC definition to platform definition 2016-09-07 16:07:09 -07:00
i915_gem.c drm/i915: Use atomic for dev_priv->mm.bsd_engine_dispatch_index 2016-09-01 15:39:25 +03:00
i915_gem.h
i915_gem_batch_pool.c drm/i915: Double check the active status on the batch pool 2016-08-04 20:19:50 +01:00
i915_gem_batch_pool.h drm/i915: Double check the active status on the batch pool 2016-08-04 20:19:50 +01:00
i915_gem_context.c drm/i915: Move debug only per-request pid tracking from request to ctx 2016-08-15 11:01:15 +01:00
i915_gem_dmabuf.c drm/i915: Support for creating write combined type vmaps 2016-08-12 13:06:36 +01:00
i915_gem_dmabuf.h
i915_gem_evict.c drm/i915: Choose not to evict faultable objects from the GGTT 2016-08-18 22:36:55 +01:00
i915_gem_execbuffer.c drm/i915: Use atomic for dev_priv->mm.bsd_engine_dispatch_index 2016-09-01 15:39:25 +03:00
i915_gem_fence.c drm/i915: Flush delayed fence releases after reset 2016-08-19 16:59:22 +01:00
i915_gem_gtt.c drm/i915: disable 48bit full PPGTT when vGPU is active 2016-09-06 16:40:00 +03:00
i915_gem_gtt.h drm/i915: Embed the scratch page struct into each VM 2016-08-22 12:19:52 +01:00
i915_gem_render_state.c drm/i915: Use VMA for render state page tracking 2016-08-15 11:01:11 +01:00
i915_gem_render_state.h drm/i915: Use VMA for render state page tracking 2016-08-15 11:01:11 +01:00
i915_gem_request.c drm/i915: Make for_each_engine_masked() more compact and quicker 2016-08-27 09:42:53 +01:00
i915_gem_request.h drm/i915: Record the position of the workarounds in the tail of the request 2016-09-09 14:23:00 +01:00
i915_gem_shrinker.c drm/i915: Remove unused no-shrinker-steal 2016-08-05 10:54:39 +01:00
i915_gem_stolen.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
i915_gem_tiling.c drm/i915: Move fence tracking from object to vma 2016-08-18 22:36:50 +01:00
i915_gem_userptr.c drm/i915/userptr: Make gup errors stickier 2016-08-18 22:36:49 +01:00
i915_gpu_error.c drm/i915: Make HWS_NEEDS_PHYSICAL the exception 2016-09-07 16:07:09 -07:00
i915_guc_reg.h
i915_guc_submission.c drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN() 2016-09-05 16:05:01 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Make for_each_engine_masked() more compact and quicker 2016-08-27 09:42:53 +01:00
i915_memcpy.c drm/i915: Mark the static key for movntqda as static 2016-08-17 12:36:07 +01:00
i915_mm.c drm/i915: Use remap_io_mapping() to prefault all PTE in a single pass 2016-08-19 17:13:36 +01:00
i915_params.c drm/i915: Add a way to test the modeset done during gpu reset, v3. 2016-08-05 23:28:28 +03:00
i915_params.h drm/i915: Add a way to test the modeset done during gpu reset, v3. 2016-08-05 23:28:28 +03:00
i915_pci.c drm/i915: Move HAS_GUC definition to platform definition 2016-09-07 16:07:09 -07:00
i915_pvinfo.h
i915_reg.h drm/i915/skl: Add support for the SAGV, fix underrun hangs 2016-08-22 12:54:41 +02:00
i915_suspend.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
i915_sw_fence.c drm/i915: Add a sw fence for collecting up dma fences 2016-09-09 14:22:55 +01:00
i915_sw_fence.h drm/i915: Add a sw fence for collecting up dma fences 2016-09-09 14:22:55 +01:00
i915_sysfs.c drm/i915: Drop mutex around clearing error state 2016-09-02 08:32:55 +01:00
i915_trace.h drm/i915: Remove surplus drm_device parameter to i915_gem_evict_something() 2016-08-04 20:19:50 +01:00
i915_trace_points.c
i915_vgpu.c drm/i915: enable vGPU detection for all 2016-09-06 16:39:36 +03:00
i915_vgpu.h
intel_acpi.c
intel_atomic.c
intel_atomic_plane.c drm/i915: Use drm_plane_helper_check_state() 2016-08-08 14:19:56 -04:00
intel_audio.c drm/i915: Eliminate redundant local variable definition 2016-08-24 08:49:49 -07:00
intel_bios.c
intel_bios.h
intel_breadcrumbs.c drm/i915: Use RCU to annotate and enforce protection for breadcrumb's bh 2016-08-10 10:37:49 +01:00
intel_color.c drm/i915: Use more atomic state in intel_color.c 2016-08-23 11:58:56 +02:00
intel_crt.c drm/i915: Cleanup crt disable sequence on hsw+ 2016-08-24 09:49:10 +02:00
intel_csr.c drm/i915: Fix botched merge that downgrades CSR versions. 2016-08-22 12:54:50 +02:00
intel_ddi.c drm/i915: Split intel_ddi_pre_enable() into DP and HDMI versions 2016-09-07 13:55:33 -07:00
intel_device_info.c drm/i915: sseu: Add debug printf for slice/subslice masks 2016-09-02 18:17:52 +03:00
intel_display.c drm/i915: Remove ddi_pll_sel from intel_crtc_state 2016-09-07 13:55:33 -07:00
intel_dp.c drm/i915: Don't pass crtc_state to intel_dp_set_link_params() 2016-09-07 13:55:33 -07:00
intel_dp_aux_backlight.c
intel_dp_link_training.c drm/i915/dp: Dump DP link status when link training stages fail 2016-08-24 08:49:27 -07:00
intel_dp_mst.c drm/i915: Remove ddi_pll_sel from intel_crtc_state 2016-09-07 13:55:33 -07:00
intel_dpio_phy.c
intel_dpll_mgr.c drm/i915: Split hsw_get_dpll() 2016-09-07 13:55:33 -07:00
intel_dpll_mgr.h drm/i915: Split hsw_get_dpll() 2016-09-07 13:55:33 -07:00
intel_drv.h drm/i915: Remove ddi_pll_sel from intel_crtc_state 2016-09-07 13:55:33 -07:00
intel_dsi.c drm/i915: Convert intel_dsi to use atomic state 2016-08-23 11:21:39 +02:00
intel_dsi.h
intel_dsi_dcs_backlight.c
intel_dsi_panel_vbt.c
intel_dsi_pll.c
intel_dvo.c drm/i915/dvo: Remove dangling call to drm_encoder_cleanup() 2016-08-24 14:54:01 +03:00
intel_engine_cs.c drm/i915/cmdparser: Make initialisation failure non-fatal 2016-08-18 22:36:58 +01:00
intel_fbc.c Revert "drm/i915/fbc: Allow on unfenced surfaces, for recent gen" 2016-08-24 19:32:35 +01:00
intel_fbdev.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
intel_fifo_underrun.c
intel_frontbuffer.c drm/i915: Use dev_priv consistently through the intel_frontbuffer interface 2016-08-04 20:20:03 +01:00
intel_frontbuffer.h drm/i915: Use dev_priv consistently through the intel_frontbuffer interface 2016-08-04 20:20:03 +01:00
intel_guc.h drm/i915: Track pinned vma inside guc 2016-08-15 11:00:58 +01:00
intel_guc_fwif.h
intel_guc_loader.c drm/i915/guc: revisit GuC loader message levels 2016-09-05 16:05:01 +01:00
intel_gvt.c
intel_gvt.h
intel_hdmi.c Revert "drm/i915: Check live status before reading edid" 2016-09-07 14:53:31 +03:00
intel_hotplug.c drm/i915: Mark i915_hpd_poll_init_work as static 2016-08-17 12:36:15 +01:00
intel_i2c.c drm/i915: Take forcewake once for the entire GMBUS transaction 2016-08-22 18:42:44 +01:00
intel_lrc.c drm/i915: Compute the ELSP register location once 2016-09-09 14:23:01 +01:00
intel_lrc.h
intel_lvds.c drm/i915: Convert intel_lvds to use atomic state 2016-08-23 11:29:45 +02:00
intel_mocs.c
intel_mocs.h
intel_modes.c drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
intel_opregion.c
intel_overlay.c drm/i915: Embed the io-mapping struct inside drm_i915_private 2016-08-19 17:13:35 +01:00
intel_panel.c drm/i915/backlight: handle enabled but zero duty cycle at module load 2016-08-29 13:59:05 +02:00
intel_pm.c drm/i915: sseu: Use sseu_dev_info in device info 2016-09-02 18:16:31 +03:00
intel_psr.c Merge tag 'drm-intel-next-2016-08-08' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:53:57 +10:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Make HWS_NEEDS_PHYSICAL the exception 2016-09-07 16:07:09 -07:00
intel_ringbuffer.h drm/i915: Allow ringbuffers to be bound anywhere 2016-08-18 22:36:48 +01:00
intel_runtime_pm.c drm/i915: pdev cleanup 2016-08-22 12:19:52 +01:00
intel_sdvo.c drm/i915: Convert intel_sdvo to use atomic state 2016-08-23 11:21:51 +02:00
intel_sdvo_regs.h
intel_sideband.c
intel_sprite.c drm/i915/skl: Don't try to update plane watermarks if they haven't changed 2016-09-07 12:29:17 +02:00
intel_tv.c drm/i915: Make encoder->compute_config take the connector state 2016-08-23 11:07:23 +02:00
intel_uncore.c drm/i915: Remove 64b mmio write vfuncs 2016-09-06 17:51:01 +01:00
intel_vbt_defs.h
Kconfig
Kconfig.debug
Makefile drm/i915: Add a sw fence for collecting up dma fences 2016-09-09 14:22:55 +01:00