[Intel-gfx] [RFC 00/22] Add support for GuC-based SLPC

Daniel Vetter daniel at ffwll.ch
Fri Jan 22 09:00:13 PST 2016

On Wed, Jan 20, 2016 at 06:26:02PM -0800, tom.orourke at intel.com wrote:
> From: Tom O'Rourke <Tom.O'Rourke at intel.com>
> SLPC (Single Loop Power Controller) is a replacement for
> some host-based power management features.  The SLPC
> implemenation runs in firmware on GuC.
> This series is a first request for comments.  This series
> is not expected to be merged.  After changes based on
> comments, a later patch series will be sent for merging.
> This series has been tested with SKL guc firmware
> versions 4.3 and 4.7.  The graphics power management
> features in SLPC in those versions are DFPS (Dynamic FPS),
> Turbo, and DCC (Duty Cycle Control).  DFPS adjusts
> requested graphics frequency to maintain target framerate.
> Turbo adjusts requested graphics frequency to maintain
> target GT busyness.  DCC adjusts requested graphics
> frequency and stalls guc-scheduler to maintain actual
> graphics frequency in efficient range.

Either it's been forever long ago or I missed that meeting, so I'll drop
my big arch concerns here. We probably need to discuss this internally, at
least the benchmark data. Two big items:

- How does GuC measure fps rendered to the screen? More specifically, how
  does it figure out that we missed a frame and kick the throttle up?

- This patch series seems to remove the limiting abilities, and also
  completely no-ops out our boost/deboost features. Can we recover these

We need at least make benchmarks of spike-y workloads (for the missed
frame boosting/deboosting) and for workloads that stall too often to make
sure slpc firmware doesn't suck. Chris has done quite a bit of work in
this area since at least the default behaviour is pretty bad for both
interactivity and for some throughput workloads. We need to benchmark
this, and if slpc falls short either scream at firmware folks to improve
things, or figure out how we can override slpc decisions to recover
performance that might have been lost.

Chris has more details, but the two workloads where iirc current default
rps totally fails are:
- totally idle system, then short burts of 60fps rendering for gui
  transition, then again totally idle.
- libva and iirc also some opencl workloads that stall for the gpu awfully
  often. If you're unlucky cpu ramps down due to stalls, which means next
  workload takes longer to prep, which means gpu ramps down due to
  idleness, repeat until crawling.

> Patch 1/22 is included ihere for convenience and should be
> part of an earlier series.  SLPC assumes guc firmware has
> been loaded and GuC submission is enabled.
> Patch 22/22 sets the flag to enable SLPC on SKL.  Without
> this patch, the previous patches should have no effect.
> VIZ-6773, VIZ-6889
> Dave Gordon (1):
>   drm/i915: Enable GuC submission, where supported
> Sagar Arun Kamble (4):
>   drm/i915/slpc: Enable/Disable RC6 in SLPC flows
>   drm/i915/slpc: Add Display mode event related data structures
>   drm/i915/slpc: Notification of Display mode change
>   drm/i915/slpc: Notification of Refresh Rate change
> Tom O'Rourke (17):
>   drm/i915/slpc: Add has_slpc capability flag
>   drm/i915/slpc: Expose guc functions for use with SLPC
>   drm/i915/slpc: Use intel_slpc_* functions if supported
>   drm/i915/slpc: If using SLPC, do not set frequency
>   drm/i915/slpc: Enable SLPC in guc if supported
>   drm/i915/slpc: Allocate/Release/Initialize SLPC shared data
>   drm/i915/slpc: Setup rps frequency values during SLPC init
>   drm/i915/slpc: Update current requested frequency
>   drm/i915/slpc: Send reset event
>   drm/i915/slpc: Send shutdown event
>   drm/i915/slpc: Add slpc_status enum values
>   drm/i915/slpc: Add i915_slpc_info to debugfs
>   drm/i915/slpc: Add dfps task info to i915_slpc_info
>   drm/i915/slpc: Add parameter unset/set/get functions
>   drm/i915/slpc: Add slpc support for max/min freq
>   drm/i915/slpc: Add enable/disable debugfs for slpc
>   drm/i915/slpc: Add has_slpc to skylake info
>  drivers/gpu/drm/i915/Makefile              |   5 +-
>  drivers/gpu/drm/i915/i915_debugfs.c        | 436 +++++++++++++++++++++++++
>  drivers/gpu/drm/i915/i915_drv.c            |   1 +
>  drivers/gpu/drm/i915/i915_drv.h            |   2 +
>  drivers/gpu/drm/i915/i915_guc_submission.c |   6 +-
>  drivers/gpu/drm/i915/i915_params.c         |   4 +-
>  drivers/gpu/drm/i915/i915_sysfs.c          |  10 +
>  drivers/gpu/drm/i915/intel_display.c       |   2 +
>  drivers/gpu/drm/i915/intel_dp.c            |   2 +
>  drivers/gpu/drm/i915/intel_drv.h           |   1 +
>  drivers/gpu/drm/i915/intel_guc.h           |   7 +
>  drivers/gpu/drm/i915/intel_guc_loader.c    |   3 +
>  drivers/gpu/drm/i915/intel_pm.c            |  43 ++-
>  drivers/gpu/drm/i915/intel_slpc.c          | 499 +++++++++++++++++++++++++++++
>  drivers/gpu/drm/i915/intel_slpc.h          | 207 ++++++++++++
>  15 files changed, 1210 insertions(+), 18 deletions(-)
>  create mode 100644 drivers/gpu/drm/i915/intel_slpc.c
>  create mode 100644 drivers/gpu/drm/i915/intel_slpc.h
> -- 
> 1.9.1
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Daniel Vetter
Software Engineer, Intel Corporation

More information about the Intel-gfx mailing list