v1: Updated tasks and frequency post reset.
    Added DFPS param update for MAX_FPS and FPS Stall.

v2-v3: Rebase.

v4: Updated with GuC firmware v9.

v5: Rebase. Replaced H2G interrupts for parameter override with memory
    setup with required parameters.

v6: Moved task override to intel_slpc_init. Added override of min frequency
    to Rpe. Commit subject update.

Signed-off-by: Sagar Arun Kamble <sagar.a.kam...@intel.com>
---
 drivers/gpu/drm/i915/intel_drv.h  |  1 +
 drivers/gpu/drm/i915/intel_pm.c   |  2 +-
 drivers/gpu/drm/i915/intel_slpc.c | 46 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 51228fe..f2fc0fe 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1816,6 +1816,7 @@ bool chv_phy_powergate_ch(struct drm_i915_private 
*dev_priv, enum dpio_phy phy,
 void gen6_rps_boost(struct drm_i915_private *dev_priv,
                    struct intel_rps_client *rps,
                    unsigned long submitted);
+void gen6_init_rps_frequencies(struct drm_i915_private *dev_priv);
 void intel_queue_rps_boost_for_request(struct drm_i915_gem_request *req);
 void vlv_wm_get_hw_state(struct drm_device *dev);
 void ilk_wm_get_hw_state(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 73c4cd3..32be190 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5569,7 +5569,7 @@ int sanitize_rc6_option(struct drm_i915_private 
*dev_priv, int enable_rc6)
        return INTEL_RC6_ENABLE;
 }
 
-static void gen6_init_rps_frequencies(struct drm_i915_private *dev_priv)
+void gen6_init_rps_frequencies(struct drm_i915_private *dev_priv)
 {
        /* All of these values are in units of 50MHz */
 
diff --git a/drivers/gpu/drm/i915/intel_slpc.c 
b/drivers/gpu/drm/i915/intel_slpc.c
index 79b7954..ca5ec09 100644
--- a/drivers/gpu/drm/i915/intel_slpc.c
+++ b/drivers/gpu/drm/i915/intel_slpc.c
@@ -501,6 +501,48 @@ static void slpc_shared_data_init(struct drm_i915_private 
*dev_priv)
        data->platform_info.Pe_freq = val >> 40;
        data->platform_info.Pn_freq = val >> 48;
 
+       /* Enable only GTPERF task, Disable others */
+       val = SLPC_PARAM_TASK_ENABLED;
+       slpc_mem_task_control(data, val,
+                             SLPC_PARAM_TASK_ENABLE_GTPERF,
+                             SLPC_PARAM_TASK_DISABLE_GTPERF);
+
+       val = SLPC_PARAM_TASK_DISABLED;
+       slpc_mem_task_control(data, val,
+                             SLPC_PARAM_TASK_ENABLE_BALANCER,
+                             SLPC_PARAM_TASK_DISABLE_BALANCER);
+
+       slpc_mem_task_control(data, val,
+                             SLPC_PARAM_TASK_ENABLE_DCC,
+                             SLPC_PARAM_TASK_DISABLE_DCC);
+
+       slpc_mem_set_param(data, SLPC_PARAM_GTPERF_THRESHOLD_MAX_FPS, 0);
+
+       slpc_mem_set_param(data, SLPC_PARAM_GTPERF_ENABLE_FRAMERATE_STALLING,
+                          0);
+
+       slpc_mem_set_param(data, SLPC_PARAM_GLOBAL_ENABLE_IA_GT_BALANCING,
+                          0);
+
+       slpc_mem_set_param(data,
+                          SLPC_PARAM_GLOBAL_ENABLE_ADAPTIVE_BURST_TURBO,
+                          0);
+
+       slpc_mem_set_param(data, SLPC_PARAM_GLOBAL_ENABLE_EVAL_MODE, 0);
+
+       slpc_mem_set_param(data,
+                          SLPC_PARAM_GLOBAL_ENABLE_BALANCER_IN_NON_GAMING_MODE,
+                          0);
+
+       slpc_mem_set_param(data,
+                          SLPC_PARAM_GLOBAL_MIN_GT_UNSLICE_FREQ_MHZ,
+                          intel_gpu_freq(dev_priv,
+                               dev_priv->rps.efficient_freq));
+       slpc_mem_set_param(data,
+                          SLPC_PARAM_GLOBAL_MIN_GT_SLICE_FREQ_MHZ,
+                          intel_gpu_freq(dev_priv,
+                               dev_priv->rps.efficient_freq));
+
        kunmap_atomic(data);
 }
 
@@ -862,6 +904,10 @@ void intel_slpc_init(struct drm_i915_private *dev_priv)
 
        dev_priv->guc.slpc.active = false;
 
+       mutex_lock(&dev_priv->rps.hw_lock);
+       gen6_init_rps_frequencies(dev_priv);
+       mutex_unlock(&dev_priv->rps.hw_lock);
+
        /* Allocate shared data structure */
        vma = dev_priv->guc.slpc.vma;
        if (!vma) {
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to