SLPC (Single Loop Power Controller) is a replacement for some host-based power management features. The SLPC implementation runs in firmware on GuC. This series has been tested with SKL and APL GuC firmware v9 (not released yet). Current GuC firmware's SLPC interfaces are updated in v9. The graphics power management features in SLPC in this version are called GTPERF, BALANCER, and DCC. GTPERF is a combination of DFPS (Dynamic FPS) and Turbo. DFPS adjusts requested graphics frequency to maintain target framerate. Turbo adjusts requested graphics frequency to maintain target GT busyness; this includes an adaptive boost turbo method. BALANCER adjusts balance between power budgets for IA and GT in power limited scenarios. DCC (Duty Cycle Control) adjusts requested graphics frequency and stalls guc-scheduler to maintain actual graphics frequency in efficient range. This patch series activates only GTPERF Turbo in GuC SLPC. v2: Addressed review comments on v1. Removed patch to enable SLPC by default. v3: Addressed WARNING in igt@drv_module_reload_basic flagged by trybot BAT. Added change for sanitizing GT PM during reset. Added separate patch for sysfs interface to know HW requested frequency. Also, earlier patches did not go as series hence were not correctly picked up by BAT. v4: Changes to multiple patches. CI BAT is passing. Performance run on SKL GT2 done and shows perf at parity with Host Turbo. For BXT, SLPC improves performance when GuC is enabled compared to Host Turbo. This series keeps only support of 9.18 firmware for better readability. If needed, other SLPC interfaces for different GuC version will be added later. v5: This series incorporates feedback from code reviews on earlier series and adds following new changes: 1. More changes for separation of RPS and RC6 handling for Gen9. 2. Tied up SLPC enabling with GuC load/GuC submission sequence. 3. SLPC structures are defined explicitly for event input/output. 4. Definition of SLPC parameter control and task control functions agnostic to the underlying param definitions as they might change with GuC versions and prepared helpers for common tasks. 5. Transition of i915 overrides done through host to guc events to shared data and single reset event. 6. Handling SLPC status post reset through shared memory. 7. Derived helpers for setting frequency limits. 8. Removed sysfs interface to know RPNSWREQ as it is available in debugfs interface i915_frequency_info. 9. Simple igt test to verify SLPC configuration by i915 in various driver scenarios is prepared. VIZ-6773, VIZ-6889, VIZ-6890 Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: Daniel Vetter <daniel.vetter@xxxxxxxxx> Cc: Beuchat, Marc <marc.beuchat@xxxxxxxxx> Cc: Jeff McGee <jeff.mcgee@xxxxxxxxx> Sagar Arun Kamble (3): drm/i915/gen9: Separate RPS and RC6 handling drm/i915/slpc: Only enable GTPERF task, Disable other tasks/parameters drm/i915/slpc: Preserve min/max frequency softlimits on re-activation Tom O'Rourke (19): drm/i915/slpc: Expose GuC functions for use with SLPC drm/i915/slpc: Add has_slpc capability flag drm/i915/slpc: Add enable_slpc module parameter drm/i915/slpc: Sanitize GuC version drm/i915/slpc: Use intel_slpc_* functions if supported drm/i915/slpc: Enable SLPC in GuC if supported drm/i915/slpc: If using SLPC, do not set frequency drm/i915/slpc: Allocate/Release/Initialize SLPC shared data drm/i915/slpc: Update debugfs interfaces for frequency parameters drm/i915/slpc: Add slpc communication interfaces drm/i915/slpc: Send reset event and handle SLPC enabling drm/i915/slpc: Send shutdown event drm/i915/slpc: Add parameter unset/set/get functions drm/i915/slpc: Add support for min/max frequency control drm/i915/slpc: Add enable/disable controls for slpc tasks drm/i915/slpc: Add i915_slpc_info to debugfs drm/i915/slpc: Add SKL SLPC Support drm/i915/slpc: Add Broxton SLPC support drm/i915/slpc: Enable SLPC, where supported drivers/gpu/drm/i915/Makefile | 3 +- drivers/gpu/drm/i915/i915_debugfs.c | 382 ++++++++++++++++++- drivers/gpu/drm/i915/i915_drv.c | 17 +- drivers/gpu/drm/i915/i915_drv.h | 4 + drivers/gpu/drm/i915/i915_gem.c | 8 + drivers/gpu/drm/i915/i915_guc_submission.c | 25 +- drivers/gpu/drm/i915/i915_params.c | 6 + drivers/gpu/drm/i915/i915_params.h | 1 + drivers/gpu/drm/i915/i915_pci.c | 3 + drivers/gpu/drm/i915/i915_sysfs.c | 36 +- drivers/gpu/drm/i915/intel_guc.h | 5 + drivers/gpu/drm/i915/intel_guc_loader.c | 45 ++- drivers/gpu/drm/i915/intel_pm.c | 106 +++++- drivers/gpu/drm/i915/intel_slpc.c | 586 +++++++++++++++++++++++++++++ drivers/gpu/drm/i915/intel_slpc.h | 252 +++++++++++++ 15 files changed, 1440 insertions(+), 39 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx