drm/i915/guc: don't ever forward VBlank to the GuC
authorDave Gordon <david.s.gordon@intel.com>
Fri, 24 Jun 2016 14:57:57 +0000 (15:57 +0100)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Mon, 27 Jun 2016 12:21:59 +0000 (13:21 +0100)
commitfa7545a4ae8c1a0640a294db4f8b6bab8a68dcd0
tree517d1f0785a053aaa8da579a345aa74984212296
parent731f74c5c644f113186288013e73382e20dd1d9e
drm/i915/guc: don't ever forward VBlank to the GuC

If a context waiting for VBlank were switched out, switching
in the next context and generating a CSB event in the process,
then the GuC would have to put the context back in the queue,
and then observe the subsequent VBlank interrupt so that it
could resubmit the suspended context.

However, we always set the CTX_CTRL_INHIBIT_SYN_CTX_SWITCH bit
in the RING_CONTEXT_CONTROL register, so this case cannot occur.
Furthermore we don't use the GuC's internal scheduler or allow
it to auto-resubmit workloads.  Consequently, the GuC doesn't
need to see VBlanks, and by sending them to it we may be waking
it up unnecessarily, which might reduce RC6 residency and
increase power consumption.

So this patch removes the setting of the GFC_FORWARD_VBLANK
field from the code that diverts interrupts towards the GuC.
(The code to direct interrupts to the host, OTOH, continues to
explicitly set the field to "never send VBlanks to the GuC".)

v3:
    Remove the line of code completely (original set the field
    to ALWAYS forward, v1 changed it to CONDITIONAL forwarding,
    v2 explicitly set it to NEVER, v3 just doesn't touch it at
    all, as we know it's already set to NEVER).

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> (previous version)
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1466780277-23435-1-git-send-email-david.s.gordon@intel.com
drivers/gpu/drm/i915/intel_guc_loader.c