drm/i915: Compute the ELSP register location once
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 9 Sep 2016 13:11:44 +0000 (14:11 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 9 Sep 2016 13:23:01 +0000 (14:23 +0100)
commit8b38b3a16719ee86f9aa2fd1bc479db7d5b28e48
tree7b10ef1f015c9cca39957becc9b04cbe457fdd3c
parenta52abd2facfe8add456a075c2d9e254db071bf85
drm/i915: Compute the ELSP register location once

Similar to the issue with reading from the context status buffer,
see commit 26720ab97fea ("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
drivers/gpu/drm/i915/intel_lrc.c