* [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init
@ 2023-05-22 11:59 Tvrtko Ursulin
2023-05-22 11:59 ` [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values Tvrtko Ursulin
` (8 more replies)
0 siblings, 9 replies; 17+ messages in thread
From: Tvrtko Ursulin @ 2023-05-22 11:59 UTC (permalink / raw)
To: Intel-gfx, dri-devel; +Cc: Rodrigo Vivi
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Since 36d516be867c ("drm/i915/gt: Switch to manual evaluation of RPS")
thresholds are invariant so lets move their setting to init time.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
---
drivers/gpu/drm/i915/gt/intel_rps.c | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index e68a99205599..791097eb9bfd 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -671,7 +671,6 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
{
struct intel_gt *gt = rps_to_gt(rps);
struct intel_uncore *uncore = gt->uncore;
- u32 threshold_up = 0, threshold_down = 0; /* in % */
u32 ei_up = 0, ei_down = 0;
lockdep_assert_held(&rps->power.mutex);
@@ -679,9 +678,6 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
if (new_power == rps->power.mode)
return;
- threshold_up = 95;
- threshold_down = 85;
-
/* Note the units here are not exactly 1us, but 1280ns. */
switch (new_power) {
case LOW_POWER:
@@ -708,17 +704,22 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
GT_TRACE(gt,
"changing power mode [%d], up %d%% @ %dus, down %d%% @ %dus\n",
- new_power, threshold_up, ei_up, threshold_down, ei_down);
+ new_power,
+ rps->power.up_threshold, ei_up,
+ rps->power.down_threshold, ei_down);
set(uncore, GEN6_RP_UP_EI,
intel_gt_ns_to_pm_interval(gt, ei_up * 1000));
set(uncore, GEN6_RP_UP_THRESHOLD,
- intel_gt_ns_to_pm_interval(gt, ei_up * threshold_up * 10));
+ intel_gt_ns_to_pm_interval(gt,
+ ei_up * rps->power.up_threshold * 10));
set(uncore, GEN6_RP_DOWN_EI,
intel_gt_ns_to_pm_interval(gt, ei_down * 1000));
set(uncore, GEN6_RP_DOWN_THRESHOLD,
- intel_gt_ns_to_pm_interval(gt, ei_down * threshold_down * 10));
+ intel_gt_ns_to_pm_interval(gt,
+ ei_down *
+ rps->power.down_threshold * 10));
set(uncore, GEN6_RP_CONTROL,
(GRAPHICS_VER(gt->i915) > 9 ? 0 : GEN6_RP_MEDIA_TURBO) |
@@ -730,8 +731,6 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
skip_hw_write:
rps->power.mode = new_power;
- rps->power.up_threshold = threshold_up;
- rps->power.down_threshold = threshold_down;
}
static void gen6_rps_set_thresholds(struct intel_rps *rps, u8 val)
@@ -1557,10 +1556,12 @@ void intel_rps_enable(struct intel_rps *rps)
return;
GT_TRACE(rps_to_gt(rps),
- "min:%x, max:%x, freq:[%d, %d]\n",
+ "min:%x, max:%x, freq:[%d, %d], thresholds:[%u, %u]\n",
rps->min_freq, rps->max_freq,
intel_gpu_freq(rps, rps->min_freq),
- intel_gpu_freq(rps, rps->max_freq));
+ intel_gpu_freq(rps, rps->max_freq),
+ rps->power.up_threshold,
+ rps->power.down_threshold);
GEM_BUG_ON(rps->max_freq < rps->min_freq);
GEM_BUG_ON(rps->idle_freq > rps->max_freq);
@@ -2013,6 +2014,10 @@ void intel_rps_init(struct intel_rps *rps)
}
}
+ /* Set default thresholds in % */
+ rps->power.up_threshold = 95;
+ rps->power.down_threshold = 85;
+
/* Finally allow us to boost to max by default */
rps->boost_freq = rps->max_freq;
rps->idle_freq = rps->min_freq;
--
2.39.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
@ 2023-05-22 11:59 ` Tvrtko Ursulin
2023-05-22 14:52 ` Rodrigo Vivi
2023-05-22 22:48 ` Andi Shyti
2023-05-22 11:59 ` [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds Tvrtko Ursulin
` (7 subsequent siblings)
8 siblings, 2 replies; 17+ messages in thread
From: Tvrtko Ursulin @ 2023-05-22 11:59 UTC (permalink / raw)
To: Intel-gfx, dri-devel; +Cc: Rodrigo Vivi
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Record the default values as preparation for exposing the sysfs controls.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
---
drivers/gpu/drm/i915/gt/intel_gt_types.h | 3 +++
drivers/gpu/drm/i915/gt/intel_rps.c | 2 ++
2 files changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h b/drivers/gpu/drm/i915/gt/intel_gt_types.h
index f08c2556aa25..1b22d7a50665 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h
@@ -83,6 +83,9 @@ enum intel_submission_method {
struct gt_defaults {
u32 min_freq;
u32 max_freq;
+
+ u8 rps_up_threshold;
+ u8 rps_down_threshold;
};
enum intel_gt_type {
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 791097eb9bfd..333abc8f7ecb 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -2016,7 +2016,9 @@ void intel_rps_init(struct intel_rps *rps)
/* Set default thresholds in % */
rps->power.up_threshold = 95;
+ rps_to_gt(rps)->defaults.rps_up_threshold = rps->power.up_threshold;
rps->power.down_threshold = 85;
+ rps_to_gt(rps)->defaults.rps_down_threshold = rps->power.down_threshold;
/* Finally allow us to boost to max by default */
rps->boost_freq = rps->max_freq;
--
2.39.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
2023-05-22 11:59 ` [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values Tvrtko Ursulin
@ 2023-05-22 11:59 ` Tvrtko Ursulin
2023-05-22 14:52 ` Rodrigo Vivi
2023-05-22 23:09 ` Andi Shyti
2023-05-22 11:59 ` [Intel-gfx] [PATCH 4/4] drm/i915: Expose RPS thresholds in sysfs Tvrtko Ursulin
` (6 subsequent siblings)
8 siblings, 2 replies; 17+ messages in thread
From: Tvrtko Ursulin @ 2023-05-22 11:59 UTC (permalink / raw)
To: Intel-gfx, dri-devel; +Cc: Rodrigo Vivi
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
In preparation for exposing via sysfs add helpers for managing rps
thresholds.
v2:
* Force sw and hw re-programming on threshold change.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
---
drivers/gpu/drm/i915/gt/intel_rps.c | 54 +++++++++++++++++++++++++++++
drivers/gpu/drm/i915/gt/intel_rps.h | 4 +++
2 files changed, 58 insertions(+)
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 333abc8f7ecb..afde601a6111 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -16,7 +16,9 @@
#include "intel_gt.h"
#include "intel_gt_clock_utils.h"
#include "intel_gt_irq.h"
+#include "intel_gt_pm.h"
#include "intel_gt_pm_irq.h"
+#include "intel_gt_print.h"
#include "intel_gt_regs.h"
#include "intel_mchbar_regs.h"
#include "intel_pcode.h"
@@ -2574,6 +2576,58 @@ int intel_rps_set_min_frequency(struct intel_rps *rps, u32 val)
return set_min_freq(rps, val);
}
+u8 intel_rps_get_up_threshold(struct intel_rps *rps)
+{
+ return rps->power.up_threshold;
+}
+
+static int rps_set_threshold(struct intel_rps *rps, u8 *threshold, u8 val)
+{
+ int ret;
+
+ if (val > 100)
+ return -EINVAL;
+
+ ret = mutex_lock_interruptible(&rps->lock);
+ if (ret)
+ return ret;
+
+ if (*threshold == val)
+ goto out_unlock;
+
+ *threshold = val;
+
+ /* Force reset. */
+ rps->last_freq = -1;
+ mutex_lock(&rps->power.mutex);
+ rps->power.mode = -1;
+ mutex_unlock(&rps->power.mutex);
+
+ intel_rps_set(rps, clamp(rps->cur_freq,
+ rps->min_freq_softlimit,
+ rps->max_freq_softlimit));
+
+out_unlock:
+ mutex_unlock(&rps->lock);
+
+ return ret;
+}
+
+int intel_rps_set_up_threshold(struct intel_rps *rps, u8 threshold)
+{
+ return rps_set_threshold(rps, &rps->power.up_threshold, threshold);
+}
+
+u8 intel_rps_get_down_threshold(struct intel_rps *rps)
+{
+ return rps->power.down_threshold;
+}
+
+int intel_rps_set_down_threshold(struct intel_rps *rps, u8 threshold)
+{
+ return rps_set_threshold(rps, &rps->power.down_threshold, threshold);
+}
+
static void intel_rps_set_manual(struct intel_rps *rps, bool enable)
{
struct intel_uncore *uncore = rps_to_uncore(rps);
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.h b/drivers/gpu/drm/i915/gt/intel_rps.h
index a3fa987aa91f..92fb01f5a452 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.h
+++ b/drivers/gpu/drm/i915/gt/intel_rps.h
@@ -37,6 +37,10 @@ void intel_rps_mark_interactive(struct intel_rps *rps, bool interactive);
int intel_gpu_freq(struct intel_rps *rps, int val);
int intel_freq_opcode(struct intel_rps *rps, int val);
+u8 intel_rps_get_up_threshold(struct intel_rps *rps);
+int intel_rps_set_up_threshold(struct intel_rps *rps, u8 threshold);
+u8 intel_rps_get_down_threshold(struct intel_rps *rps);
+int intel_rps_set_down_threshold(struct intel_rps *rps, u8 threshold);
u32 intel_rps_read_actual_frequency(struct intel_rps *rps);
u32 intel_rps_read_actual_frequency_fw(struct intel_rps *rps);
u32 intel_rps_get_requested_frequency(struct intel_rps *rps);
--
2.39.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Intel-gfx] [PATCH 4/4] drm/i915: Expose RPS thresholds in sysfs
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
2023-05-22 11:59 ` [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values Tvrtko Ursulin
2023-05-22 11:59 ` [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds Tvrtko Ursulin
@ 2023-05-22 11:59 ` Tvrtko Ursulin
2023-05-22 23:10 ` Andi Shyti
2023-05-22 14:52 ` [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Rodrigo Vivi
` (5 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Tvrtko Ursulin @ 2023-05-22 11:59 UTC (permalink / raw)
To: Intel-gfx, dri-devel; +Cc: Rodrigo Vivi
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
User feedback indicates significant performance gains are possible in
specific games with non default RPS up/down thresholds.
Expose these tunables via sysfs which will allow users to achieve best
performance when running games and best power efficiency elsewhere.
Note this patch supports non GuC based platforms only.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
References: https://gitlab.freedesktop.org/drm/intel/-/issues/8389
Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
---
drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c | 104 ++++++++++++++++++++
1 file changed, 104 insertions(+)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c
index ee2b44f896a2..c0902fbb90d5 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c
@@ -700,6 +700,76 @@ static const struct attribute *media_perf_power_attrs[] = {
NULL
};
+static ssize_t
+rps_up_threshold_pct_show(struct kobject *kobj, struct kobj_attribute *attr,
+ char *buf)
+{
+ struct intel_gt *gt = intel_gt_sysfs_get_drvdata(kobj, attr->attr.name);
+ struct intel_rps *rps = >->rps;
+
+ return sysfs_emit(buf, "%u\n", intel_rps_get_up_threshold(rps));
+}
+
+static ssize_t
+rps_up_threshold_pct_store(struct kobject *kobj, struct kobj_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct intel_gt *gt = intel_gt_sysfs_get_drvdata(kobj, attr->attr.name);
+ struct intel_rps *rps = >->rps;
+ int ret;
+ u8 val;
+
+ ret = kstrtou8(buf, 10, &val);
+ if (ret)
+ return ret;
+
+ ret = intel_rps_set_up_threshold(rps, val);
+
+ return ret == 0 ? count : ret;
+}
+
+static struct kobj_attribute rps_up_threshold_pct =
+__ATTR(rps_up_threshold_pct, 0664,
+ rps_up_threshold_pct_show, rps_up_threshold_pct_store);
+
+static ssize_t
+rps_down_threshold_pct_show(struct kobject *kobj, struct kobj_attribute *attr,
+ char *buf)
+{
+ struct intel_gt *gt = intel_gt_sysfs_get_drvdata(kobj, attr->attr.name);
+ struct intel_rps *rps = >->rps;
+
+ return sysfs_emit(buf, "%u\n", intel_rps_get_down_threshold(rps));
+}
+
+static ssize_t
+rps_down_threshold_pct_store(struct kobject *kobj, struct kobj_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct intel_gt *gt = intel_gt_sysfs_get_drvdata(kobj, attr->attr.name);
+ struct intel_rps *rps = >->rps;
+ int ret;
+ u8 val;
+
+ ret = kstrtou8(buf, 10, &val);
+ if (ret)
+ return ret;
+
+ ret = intel_rps_set_down_threshold(rps, val);
+
+ return ret == 0 ? count : ret;
+}
+
+static struct kobj_attribute rps_down_threshold_pct =
+__ATTR(rps_down_threshold_pct, 0664,
+ rps_down_threshold_pct_show, rps_down_threshold_pct_store);
+
+static const struct attribute * const gen6_gt_rps_attrs[] = {
+ &rps_up_threshold_pct.attr,
+ &rps_down_threshold_pct.attr,
+ NULL
+};
+
static ssize_t
default_min_freq_mhz_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
@@ -722,9 +792,37 @@ default_max_freq_mhz_show(struct kobject *kobj, struct kobj_attribute *attr, cha
static struct kobj_attribute default_max_freq_mhz =
__ATTR(rps_max_freq_mhz, 0444, default_max_freq_mhz_show, NULL);
+static ssize_t
+default_rps_up_threshold_pct_show(struct kobject *kobj,
+ struct kobj_attribute *attr,
+ char *buf)
+{
+ struct intel_gt *gt = kobj_to_gt(kobj->parent);
+
+ return sysfs_emit(buf, "%u\n", gt->defaults.rps_up_threshold);
+}
+
+static struct kobj_attribute default_rps_up_threshold_pct =
+__ATTR(rps_up_threshold_pct, 0444, default_rps_up_threshold_pct_show, NULL);
+
+static ssize_t
+default_rps_down_threshold_pct_show(struct kobject *kobj,
+ struct kobj_attribute *attr,
+ char *buf)
+{
+ struct intel_gt *gt = kobj_to_gt(kobj->parent);
+
+ return sysfs_emit(buf, "%u\n", gt->defaults.rps_down_threshold);
+}
+
+static struct kobj_attribute default_rps_down_threshold_pct =
+__ATTR(rps_down_threshold_pct, 0444, default_rps_down_threshold_pct_show, NULL);
+
static const struct attribute * const rps_defaults_attrs[] = {
&default_min_freq_mhz.attr,
&default_max_freq_mhz.attr,
+ &default_rps_up_threshold_pct.attr,
+ &default_rps_down_threshold_pct.attr,
NULL
};
@@ -752,6 +850,12 @@ static int intel_sysfs_rps_init(struct intel_gt *gt, struct kobject *kobj)
if (IS_VALLEYVIEW(gt->i915) || IS_CHERRYVIEW(gt->i915))
ret = sysfs_create_file(kobj, vlv_attr);
+ if (is_object_gt(kobj) && !intel_uc_uses_guc_slpc(>->uc)) {
+ ret = sysfs_create_files(kobj, gen6_gt_rps_attrs);
+ if (ret)
+ return ret;
+ }
+
return ret;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
` (2 preceding siblings ...)
2023-05-22 11:59 ` [Intel-gfx] [PATCH 4/4] drm/i915: Expose RPS thresholds in sysfs Tvrtko Ursulin
@ 2023-05-22 14:52 ` Rodrigo Vivi
2023-05-22 18:21 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] " Patchwork
` (4 subsequent siblings)
8 siblings, 0 replies; 17+ messages in thread
From: Rodrigo Vivi @ 2023-05-22 14:52 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Intel-gfx, dri-devel
On Mon, May 22, 2023 at 12:59:25PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Since 36d516be867c ("drm/i915/gt: Switch to manual evaluation of RPS")
> thresholds are invariant so lets move their setting to init time.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_rps.c | 27 ++++++++++++++++-----------
> 1 file changed, 16 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index e68a99205599..791097eb9bfd 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -671,7 +671,6 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
> {
> struct intel_gt *gt = rps_to_gt(rps);
> struct intel_uncore *uncore = gt->uncore;
> - u32 threshold_up = 0, threshold_down = 0; /* in % */
> u32 ei_up = 0, ei_down = 0;
>
> lockdep_assert_held(&rps->power.mutex);
> @@ -679,9 +678,6 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
> if (new_power == rps->power.mode)
> return;
>
> - threshold_up = 95;
> - threshold_down = 85;
> -
> /* Note the units here are not exactly 1us, but 1280ns. */
> switch (new_power) {
> case LOW_POWER:
> @@ -708,17 +704,22 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
>
> GT_TRACE(gt,
> "changing power mode [%d], up %d%% @ %dus, down %d%% @ %dus\n",
> - new_power, threshold_up, ei_up, threshold_down, ei_down);
> + new_power,
> + rps->power.up_threshold, ei_up,
> + rps->power.down_threshold, ei_down);
>
> set(uncore, GEN6_RP_UP_EI,
> intel_gt_ns_to_pm_interval(gt, ei_up * 1000));
> set(uncore, GEN6_RP_UP_THRESHOLD,
> - intel_gt_ns_to_pm_interval(gt, ei_up * threshold_up * 10));
> + intel_gt_ns_to_pm_interval(gt,
> + ei_up * rps->power.up_threshold * 10));
>
> set(uncore, GEN6_RP_DOWN_EI,
> intel_gt_ns_to_pm_interval(gt, ei_down * 1000));
> set(uncore, GEN6_RP_DOWN_THRESHOLD,
> - intel_gt_ns_to_pm_interval(gt, ei_down * threshold_down * 10));
> + intel_gt_ns_to_pm_interval(gt,
> + ei_down *
> + rps->power.down_threshold * 10));
>
> set(uncore, GEN6_RP_CONTROL,
> (GRAPHICS_VER(gt->i915) > 9 ? 0 : GEN6_RP_MEDIA_TURBO) |
> @@ -730,8 +731,6 @@ static void rps_set_power(struct intel_rps *rps, int new_power)
>
> skip_hw_write:
> rps->power.mode = new_power;
> - rps->power.up_threshold = threshold_up;
> - rps->power.down_threshold = threshold_down;
> }
>
> static void gen6_rps_set_thresholds(struct intel_rps *rps, u8 val)
> @@ -1557,10 +1556,12 @@ void intel_rps_enable(struct intel_rps *rps)
> return;
>
> GT_TRACE(rps_to_gt(rps),
> - "min:%x, max:%x, freq:[%d, %d]\n",
> + "min:%x, max:%x, freq:[%d, %d], thresholds:[%u, %u]\n",
> rps->min_freq, rps->max_freq,
> intel_gpu_freq(rps, rps->min_freq),
> - intel_gpu_freq(rps, rps->max_freq));
> + intel_gpu_freq(rps, rps->max_freq),
> + rps->power.up_threshold,
> + rps->power.down_threshold);
>
> GEM_BUG_ON(rps->max_freq < rps->min_freq);
> GEM_BUG_ON(rps->idle_freq > rps->max_freq);
> @@ -2013,6 +2014,10 @@ void intel_rps_init(struct intel_rps *rps)
> }
> }
>
> + /* Set default thresholds in % */
> + rps->power.up_threshold = 95;
> + rps->power.down_threshold = 85;
> +
> /* Finally allow us to boost to max by default */
> rps->boost_freq = rps->max_freq;
> rps->idle_freq = rps->min_freq;
> --
> 2.39.2
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values
2023-05-22 11:59 ` [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values Tvrtko Ursulin
@ 2023-05-22 14:52 ` Rodrigo Vivi
2023-05-22 22:48 ` Andi Shyti
1 sibling, 0 replies; 17+ messages in thread
From: Rodrigo Vivi @ 2023-05-22 14:52 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Intel-gfx, dri-devel
On Mon, May 22, 2023 at 12:59:26PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Record the default values as preparation for exposing the sysfs controls.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_gt_types.h | 3 +++
> drivers/gpu/drm/i915/gt/intel_rps.c | 2 ++
> 2 files changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h b/drivers/gpu/drm/i915/gt/intel_gt_types.h
> index f08c2556aa25..1b22d7a50665 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_types.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h
> @@ -83,6 +83,9 @@ enum intel_submission_method {
> struct gt_defaults {
> u32 min_freq;
> u32 max_freq;
> +
> + u8 rps_up_threshold;
> + u8 rps_down_threshold;
> };
>
> enum intel_gt_type {
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 791097eb9bfd..333abc8f7ecb 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -2016,7 +2016,9 @@ void intel_rps_init(struct intel_rps *rps)
>
> /* Set default thresholds in % */
> rps->power.up_threshold = 95;
> + rps_to_gt(rps)->defaults.rps_up_threshold = rps->power.up_threshold;
> rps->power.down_threshold = 85;
> + rps_to_gt(rps)->defaults.rps_down_threshold = rps->power.down_threshold;
>
> /* Finally allow us to boost to max by default */
> rps->boost_freq = rps->max_freq;
> --
> 2.39.2
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds
2023-05-22 11:59 ` [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds Tvrtko Ursulin
@ 2023-05-22 14:52 ` Rodrigo Vivi
2023-05-22 23:09 ` Andi Shyti
1 sibling, 0 replies; 17+ messages in thread
From: Rodrigo Vivi @ 2023-05-22 14:52 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Intel-gfx, dri-devel
On Mon, May 22, 2023 at 12:59:27PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> In preparation for exposing via sysfs add helpers for managing rps
> thresholds.
>
> v2:
> * Force sw and hw re-programming on threshold change.
it makes sense now.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
> ---
> drivers/gpu/drm/i915/gt/intel_rps.c | 54 +++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/gt/intel_rps.h | 4 +++
> 2 files changed, 58 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 333abc8f7ecb..afde601a6111 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -16,7 +16,9 @@
> #include "intel_gt.h"
> #include "intel_gt_clock_utils.h"
> #include "intel_gt_irq.h"
> +#include "intel_gt_pm.h"
> #include "intel_gt_pm_irq.h"
> +#include "intel_gt_print.h"
> #include "intel_gt_regs.h"
> #include "intel_mchbar_regs.h"
> #include "intel_pcode.h"
> @@ -2574,6 +2576,58 @@ int intel_rps_set_min_frequency(struct intel_rps *rps, u32 val)
> return set_min_freq(rps, val);
> }
>
> +u8 intel_rps_get_up_threshold(struct intel_rps *rps)
> +{
> + return rps->power.up_threshold;
> +}
> +
> +static int rps_set_threshold(struct intel_rps *rps, u8 *threshold, u8 val)
> +{
> + int ret;
> +
> + if (val > 100)
> + return -EINVAL;
> +
> + ret = mutex_lock_interruptible(&rps->lock);
> + if (ret)
> + return ret;
> +
> + if (*threshold == val)
> + goto out_unlock;
> +
> + *threshold = val;
> +
> + /* Force reset. */
> + rps->last_freq = -1;
> + mutex_lock(&rps->power.mutex);
> + rps->power.mode = -1;
> + mutex_unlock(&rps->power.mutex);
> +
> + intel_rps_set(rps, clamp(rps->cur_freq,
> + rps->min_freq_softlimit,
> + rps->max_freq_softlimit));
> +
> +out_unlock:
> + mutex_unlock(&rps->lock);
> +
> + return ret;
> +}
> +
> +int intel_rps_set_up_threshold(struct intel_rps *rps, u8 threshold)
> +{
> + return rps_set_threshold(rps, &rps->power.up_threshold, threshold);
> +}
> +
> +u8 intel_rps_get_down_threshold(struct intel_rps *rps)
> +{
> + return rps->power.down_threshold;
> +}
> +
> +int intel_rps_set_down_threshold(struct intel_rps *rps, u8 threshold)
> +{
> + return rps_set_threshold(rps, &rps->power.down_threshold, threshold);
> +}
> +
> static void intel_rps_set_manual(struct intel_rps *rps, bool enable)
> {
> struct intel_uncore *uncore = rps_to_uncore(rps);
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.h b/drivers/gpu/drm/i915/gt/intel_rps.h
> index a3fa987aa91f..92fb01f5a452 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.h
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.h
> @@ -37,6 +37,10 @@ void intel_rps_mark_interactive(struct intel_rps *rps, bool interactive);
>
> int intel_gpu_freq(struct intel_rps *rps, int val);
> int intel_freq_opcode(struct intel_rps *rps, int val);
> +u8 intel_rps_get_up_threshold(struct intel_rps *rps);
> +int intel_rps_set_up_threshold(struct intel_rps *rps, u8 threshold);
> +u8 intel_rps_get_down_threshold(struct intel_rps *rps);
> +int intel_rps_set_down_threshold(struct intel_rps *rps, u8 threshold);
> u32 intel_rps_read_actual_frequency(struct intel_rps *rps);
> u32 intel_rps_read_actual_frequency_fw(struct intel_rps *rps);
> u32 intel_rps_get_requested_frequency(struct intel_rps *rps);
> --
> 2.39.2
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Move setting of rps thresholds to init
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
` (3 preceding siblings ...)
2023-05-22 14:52 ` [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Rodrigo Vivi
@ 2023-05-22 18:21 ` Patchwork
2023-05-22 18:21 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
` (3 subsequent siblings)
8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2023-05-22 18:21 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/4] drm/i915: Move setting of rps thresholds to init
URL : https://patchwork.freedesktop.org/series/118115/
State : warning
== Summary ==
Error: dim checkpatch failed
b2777c501d13 drm/i915: Move setting of rps thresholds to init
-:6: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit 36d516be867c ("drm/i915/gt: Switch to manual evaluation of RPS")'
#6:
Since 36d516be867c ("drm/i915/gt: Switch to manual evaluation of RPS")
total: 1 errors, 0 warnings, 0 checks, 73 lines checked
15839327f3b3 drm/i915: Record default rps threshold values
a844f8f7f78c drm/i915: Add helpers for managing rps thresholds
ea4ccda9c3d5 drm/i915: Expose RPS thresholds in sysfs
-:56: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#56: FILE: drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c:733:
+ rps_up_threshold_pct_show, rps_up_threshold_pct_store);$
-:88: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#88: FILE: drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c:765:
+ rps_down_threshold_pct_show, rps_down_threshold_pct_store);$
total: 0 errors, 2 warnings, 0 checks, 125 lines checked
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/4] drm/i915: Move setting of rps thresholds to init
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
` (4 preceding siblings ...)
2023-05-22 18:21 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] " Patchwork
@ 2023-05-22 18:21 ` Patchwork
2023-05-22 18:37 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
` (2 subsequent siblings)
8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2023-05-22 18:21 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/4] drm/i915: Move setting of rps thresholds to init
URL : https://patchwork.freedesktop.org/series/118115/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915: Move setting of rps thresholds to init
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
` (5 preceding siblings ...)
2023-05-22 18:21 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
@ 2023-05-22 18:37 ` Patchwork
2023-05-22 22:48 ` [Intel-gfx] [PATCH 1/4] " Andi Shyti
2023-05-23 2:11 ` [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/4] " Patchwork
8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2023-05-22 18:37 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 4083 bytes --]
== Series Details ==
Series: series starting with [1/4] drm/i915: Move setting of rps thresholds to init
URL : https://patchwork.freedesktop.org/series/118115/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_13174 -> Patchwork_118115v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/index.html
Participating hosts (39 -> 38)
------------------------------
Missing (1): fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_118115v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live@gt_lrc:
- bat-rpls-2: [PASS][1] -> [INCOMPLETE][2] ([i915#4983] / [i915#7913])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/bat-rpls-2/igt@i915_selftest@live@gt_lrc.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/bat-rpls-2/igt@i915_selftest@live@gt_lrc.html
* igt@i915_selftest@live@requests:
- bat-rpls-1: [PASS][3] -> [ABORT][4] ([i915#7911] / [i915#7920])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/bat-rpls-1/igt@i915_selftest@live@requests.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/bat-rpls-1/igt@i915_selftest@live@requests.html
#### Possible fixes ####
* igt@i915_module_load@load:
- {bat-adlp-11}: [ABORT][5] ([i915#4423] / [i915#8189]) -> [PASS][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/bat-adlp-11/igt@i915_module_load@load.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/bat-adlp-11/igt@i915_module_load@load.html
* igt@i915_selftest@live@slpc:
- {bat-mtlp-6}: [DMESG-WARN][7] ([i915#6367]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/bat-mtlp-6/igt@i915_selftest@live@slpc.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/bat-mtlp-6/igt@i915_selftest@live@slpc.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
[i915#4093]: https://gitlab.freedesktop.org/drm/intel/issues/4093
[i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
[i915#4309]: https://gitlab.freedesktop.org/drm/intel/issues/4309
[i915#4423]: https://gitlab.freedesktop.org/drm/intel/issues/4423
[i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
[i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
[i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
[i915#7059]: https://gitlab.freedesktop.org/drm/intel/issues/7059
[i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#7911]: https://gitlab.freedesktop.org/drm/intel/issues/7911
[i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913
[i915#7920]: https://gitlab.freedesktop.org/drm/intel/issues/7920
[i915#8189]: https://gitlab.freedesktop.org/drm/intel/issues/8189
[i915#8497]: https://gitlab.freedesktop.org/drm/intel/issues/8497
Build changes
-------------
* Linux: CI_DRM_13174 -> Patchwork_118115v1
CI-20190529: 20190529
CI_DRM_13174: 00e64f04fac388222f3a8407848e185b3ade4256 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7299: 3effd4be7f6c867d942532b3fe18d6c54fffbd7a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_118115v1: 00e64f04fac388222f3a8407848e185b3ade4256 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
e3b66d87613d drm/i915: Expose RPS thresholds in sysfs
2183dc066301 drm/i915: Add helpers for managing rps thresholds
897d3e1106cf drm/i915: Record default rps threshold values
fb3c56bd00d3 drm/i915: Move setting of rps thresholds to init
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/index.html
[-- Attachment #2: Type: text/html, Size: 4191 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
` (6 preceding siblings ...)
2023-05-22 18:37 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2023-05-22 22:48 ` Andi Shyti
2023-05-23 2:11 ` [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/4] " Patchwork
8 siblings, 0 replies; 17+ messages in thread
From: Andi Shyti @ 2023-05-22 22:48 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Rodrigo Vivi, Intel-gfx, dri-devel
Hi Tvrtko,
On Mon, May 22, 2023 at 12:59:25PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Since 36d516be867c ("drm/i915/gt: Switch to manual evaluation of RPS")
> thresholds are invariant so lets move their setting to init time.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Andi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values
2023-05-22 11:59 ` [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values Tvrtko Ursulin
2023-05-22 14:52 ` Rodrigo Vivi
@ 2023-05-22 22:48 ` Andi Shyti
1 sibling, 0 replies; 17+ messages in thread
From: Andi Shyti @ 2023-05-22 22:48 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Rodrigo Vivi, Intel-gfx, dri-devel
Hi Tvrtko,
On Mon, May 22, 2023 at 12:59:26PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Record the default values as preparation for exposing the sysfs controls.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Andi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds
2023-05-22 11:59 ` [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds Tvrtko Ursulin
2023-05-22 14:52 ` Rodrigo Vivi
@ 2023-05-22 23:09 ` Andi Shyti
2023-05-23 9:07 ` Tvrtko Ursulin
1 sibling, 1 reply; 17+ messages in thread
From: Andi Shyti @ 2023-05-22 23:09 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Rodrigo Vivi, Intel-gfx, dri-devel
Hi Tvrtko,
On Mon, May 22, 2023 at 12:59:27PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> In preparation for exposing via sysfs add helpers for managing rps
> thresholds.
>
> v2:
> * Force sw and hw re-programming on threshold change.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
> ---
> drivers/gpu/drm/i915/gt/intel_rps.c | 54 +++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/gt/intel_rps.h | 4 +++
> 2 files changed, 58 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 333abc8f7ecb..afde601a6111 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -16,7 +16,9 @@
> #include "intel_gt.h"
> #include "intel_gt_clock_utils.h"
> #include "intel_gt_irq.h"
> +#include "intel_gt_pm.h"
> #include "intel_gt_pm_irq.h"
> +#include "intel_gt_print.h"
> #include "intel_gt_regs.h"
> #include "intel_mchbar_regs.h"
> #include "intel_pcode.h"
> @@ -2574,6 +2576,58 @@ int intel_rps_set_min_frequency(struct intel_rps *rps, u32 val)
> return set_min_freq(rps, val);
> }
>
> +u8 intel_rps_get_up_threshold(struct intel_rps *rps)
> +{
> + return rps->power.up_threshold;
> +}
> +
> +static int rps_set_threshold(struct intel_rps *rps, u8 *threshold, u8 val)
> +{
> + int ret;
> +
> + if (val > 100)
> + return -EINVAL;
> +
> + ret = mutex_lock_interruptible(&rps->lock);
> + if (ret)
> + return ret;
> +
> + if (*threshold == val)
> + goto out_unlock;
> +
> + *threshold = val;
> +
> + /* Force reset. */
> + rps->last_freq = -1;
> + mutex_lock(&rps->power.mutex);
> + rps->power.mode = -1;
> + mutex_unlock(&rps->power.mutex);
> +
> + intel_rps_set(rps, clamp(rps->cur_freq,
> + rps->min_freq_softlimit,
> + rps->max_freq_softlimit));
why are you resetting here?
Andi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 4/4] drm/i915: Expose RPS thresholds in sysfs
2023-05-22 11:59 ` [Intel-gfx] [PATCH 4/4] drm/i915: Expose RPS thresholds in sysfs Tvrtko Ursulin
@ 2023-05-22 23:10 ` Andi Shyti
0 siblings, 0 replies; 17+ messages in thread
From: Andi Shyti @ 2023-05-22 23:10 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Rodrigo Vivi, Intel-gfx, dri-devel
Hi Tvrtko,
On Mon, May 22, 2023 at 12:59:28PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> User feedback indicates significant performance gains are possible in
> specific games with non default RPS up/down thresholds.
>
> Expose these tunables via sysfs which will allow users to achieve best
> performance when running games and best power efficiency elsewhere.
>
> Note this patch supports non GuC based platforms only.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> References: https://gitlab.freedesktop.org/drm/intel/-/issues/8389
> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Andi
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/4] drm/i915: Move setting of rps thresholds to init
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
` (7 preceding siblings ...)
2023-05-22 22:48 ` [Intel-gfx] [PATCH 1/4] " Andi Shyti
@ 2023-05-23 2:11 ` Patchwork
8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2023-05-23 2:11 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 13803 bytes --]
== Series Details ==
Series: series starting with [1/4] drm/i915: Move setting of rps thresholds to init
URL : https://patchwork.freedesktop.org/series/118115/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_13174_full -> Patchwork_118115v1_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (7 -> 7)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in Patchwork_118115v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_persistence@engines-hostile-preempt:
- shard-snb: NOTRUN -> [SKIP][1] ([fdo#109271] / [i915#1099])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-snb4/igt@gem_ctx_persistence@engines-hostile-preempt.html
* igt@gem_softpin@noreloc-s3:
- shard-glk: [PASS][2] -> [FAIL][3] ([fdo#103375]) +2 similar issues
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-glk2/igt@gem_softpin@noreloc-s3.html
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-glk8/igt@gem_softpin@noreloc-s3.html
* igt@gen9_exec_parse@allowed-single:
- shard-apl: [PASS][4] -> [ABORT][5] ([i915#5566])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-apl1/igt@gen9_exec_parse@allowed-single.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-apl4/igt@gen9_exec_parse@allowed-single.html
* igt@i915_module_load@load:
- shard-snb: NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#6227])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-snb4/igt@i915_module_load@load.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-apl: [PASS][7] -> [ABORT][8] ([i915#180])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-apl4/igt@kms_fbcon_fbt@fbc-suspend.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-apl3/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_plane_scaling@plane-upscale-with-modifiers-factor-0-25@pipe-a-vga-1:
- shard-snb: NOTRUN -> [SKIP][9] ([fdo#109271]) +69 similar issues
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-snb4/igt@kms_plane_scaling@plane-upscale-with-modifiers-factor-0-25@pipe-a-vga-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b-vga-1:
- shard-snb: NOTRUN -> [SKIP][10] ([fdo#109271] / [i915#4579]) +19 similar issues
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-snb5/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b-vga-1.html
* igt@kms_setmode@basic@pipe-a-vga-1:
- shard-snb: NOTRUN -> [FAIL][11] ([i915#5465]) +1 similar issue
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-snb4/igt@kms_setmode@basic@pipe-a-vga-1.html
* igt@perf_pmu@cpu-hotplug:
- shard-glk: [PASS][12] -> [TIMEOUT][13] ([i915#8116])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-glk2/igt@perf_pmu@cpu-hotplug.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-glk8/igt@perf_pmu@cpu-hotplug.html
* igt@perf_pmu@multi-client@rcs0:
- shard-glk: [PASS][14] -> [FAIL][15] ([i915#8107]) +3 similar issues
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-glk2/igt@perf_pmu@multi-client@rcs0.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-glk8/igt@perf_pmu@multi-client@rcs0.html
#### Possible fixes ####
* igt@drm_fdinfo@most-busy-check-all@rcs0:
- {shard-rkl}: [FAIL][16] ([i915#7742]) -> [PASS][17]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-rkl-1/igt@drm_fdinfo@most-busy-check-all@rcs0.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-rkl-2/igt@drm_fdinfo@most-busy-check-all@rcs0.html
* igt@gem_exec_fair@basic-none@vcs0:
- {shard-rkl}: [FAIL][18] ([i915#2842]) -> [PASS][19] +3 similar issues
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-rkl-7/igt@gem_exec_fair@basic-none@vcs0.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-rkl-2/igt@gem_exec_fair@basic-none@vcs0.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-glk: [FAIL][20] ([i915#2842]) -> [PASS][21]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-glk9/igt@gem_exec_fair@basic-pace-share@rcs0.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-glk7/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_suspend@basic-s4-devices@lmem0:
- {shard-dg1}: [ABORT][22] ([i915#7975] / [i915#8213]) -> [PASS][23]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-dg1-14/igt@gem_exec_suspend@basic-s4-devices@lmem0.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-dg1-18/igt@gem_exec_suspend@basic-s4-devices@lmem0.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- {shard-dg1}: [TIMEOUT][24] ([i915#5493]) -> [PASS][25]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-dg1-13/igt@gem_lmem_swapping@smem-oom@lmem0.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-dg1-16/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_mmap_gtt@fault-concurrent-x:
- shard-snb: [ABORT][26] ([i915#5161]) -> [PASS][27]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-snb2/igt@gem_mmap_gtt@fault-concurrent-x.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-snb4/igt@gem_mmap_gtt@fault-concurrent-x.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- {shard-rkl}: [FAIL][28] ([i915#3743]) -> [PASS][29]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-rkl-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-rkl-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-apl: [FAIL][30] ([i915#2346]) -> [PASS][31] +1 similar issue
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-apl6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@single-move@pipe-b:
- {shard-rkl}: [INCOMPLETE][32] ([i915#8011]) -> [PASS][33] +1 similar issue
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-rkl-7/igt@kms_cursor_legacy@single-move@pipe-b.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-rkl-2/igt@kms_cursor_legacy@single-move@pipe-b.html
* igt@kms_flip@2x-plain-flip-ts-check-interruptible@ac-hdmi-a1-hdmi-a2:
- shard-glk: [FAIL][34] ([i915#2122]) -> [PASS][35]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-glk4/igt@kms_flip@2x-plain-flip-ts-check-interruptible@ac-hdmi-a1-hdmi-a2.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-glk6/igt@kms_flip@2x-plain-flip-ts-check-interruptible@ac-hdmi-a1-hdmi-a2.html
* {igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2}:
- {shard-rkl}: [FAIL][36] ([i915#8292]) -> [PASS][37]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-rkl-1/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-rkl-4/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2.html
* igt@perf_pmu@idle@rcs0:
- {shard-rkl}: [FAIL][38] ([i915#4349]) -> [PASS][39]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13174/shard-rkl-4/igt@perf_pmu@idle@rcs0.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/shard-rkl-3/igt@perf_pmu@idle@rcs0.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
[fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
[fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
[i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
[i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
[i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
[i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
[i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
[i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
[i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
[i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
[i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
[i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
[i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
[i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
[i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
[i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
[i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
[i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
[i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
[i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
[i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
[i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
[i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
[i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
[i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
[i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
[i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
[i915#4816]: https://gitlab.freedesktop.org/drm/intel/issues/4816
[i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
[i915#5161]: https://gitlab.freedesktop.org/drm/intel/issues/5161
[i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
[i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
[i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
[i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
[i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
[i915#5465]: https://gitlab.freedesktop.org/drm/intel/issues/5465
[i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
[i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
[i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
[i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227
[i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
[i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
[i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
[i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
[i915#8011]: https://gitlab.freedesktop.org/drm/intel/issues/8011
[i915#8107]: https://gitlab.freedesktop.org/drm/intel/issues/8107
[i915#8116]: https://gitlab.freedesktop.org/drm/intel/issues/8116
[i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
[i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292
[i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381
[i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
[i915#8502]: https://gitlab.freedesktop.org/drm/intel/issues/8502
Build changes
-------------
* Linux: CI_DRM_13174 -> Patchwork_118115v1
CI-20190529: 20190529
CI_DRM_13174: 00e64f04fac388222f3a8407848e185b3ade4256 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7299: 3effd4be7f6c867d942532b3fe18d6c54fffbd7a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_118115v1: 00e64f04fac388222f3a8407848e185b3ade4256 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_118115v1/index.html
[-- Attachment #2: Type: text/html, Size: 11952 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds
2023-05-22 23:09 ` Andi Shyti
@ 2023-05-23 9:07 ` Tvrtko Ursulin
2023-05-23 11:39 ` Andi Shyti
0 siblings, 1 reply; 17+ messages in thread
From: Tvrtko Ursulin @ 2023-05-23 9:07 UTC (permalink / raw)
To: Andi Shyti; +Cc: Rodrigo Vivi, Intel-gfx, dri-devel
On 23/05/2023 00:09, Andi Shyti wrote:
> Hi Tvrtko,
>
> On Mon, May 22, 2023 at 12:59:27PM +0100, Tvrtko Ursulin wrote:
>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>
>> In preparation for exposing via sysfs add helpers for managing rps
>> thresholds.
>>
>> v2:
>> * Force sw and hw re-programming on threshold change.
>>
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@kernel.org>
>> ---
>> drivers/gpu/drm/i915/gt/intel_rps.c | 54 +++++++++++++++++++++++++++++
>> drivers/gpu/drm/i915/gt/intel_rps.h | 4 +++
>> 2 files changed, 58 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
>> index 333abc8f7ecb..afde601a6111 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
>> @@ -16,7 +16,9 @@
>> #include "intel_gt.h"
>> #include "intel_gt_clock_utils.h"
>> #include "intel_gt_irq.h"
>> +#include "intel_gt_pm.h"
>> #include "intel_gt_pm_irq.h"
>> +#include "intel_gt_print.h"
>> #include "intel_gt_regs.h"
>> #include "intel_mchbar_regs.h"
>> #include "intel_pcode.h"
>> @@ -2574,6 +2576,58 @@ int intel_rps_set_min_frequency(struct intel_rps *rps, u32 val)
>> return set_min_freq(rps, val);
>> }
>>
>> +u8 intel_rps_get_up_threshold(struct intel_rps *rps)
>> +{
>> + return rps->power.up_threshold;
>> +}
>> +
>> +static int rps_set_threshold(struct intel_rps *rps, u8 *threshold, u8 val)
>> +{
>> + int ret;
>> +
>> + if (val > 100)
>> + return -EINVAL;
>> +
>> + ret = mutex_lock_interruptible(&rps->lock);
>> + if (ret)
>> + return ret;
>> +
>> + if (*threshold == val)
>> + goto out_unlock;
>> +
>> + *threshold = val;
>> +
>> + /* Force reset. */
>> + rps->last_freq = -1;
>> + mutex_lock(&rps->power.mutex);
>> + rps->power.mode = -1;
>> + mutex_unlock(&rps->power.mutex);
>> +
>> + intel_rps_set(rps, clamp(rps->cur_freq,
>> + rps->min_freq_softlimit,
>> + rps->max_freq_softlimit));
>
> why are you resetting here?
I want to ensure the next calls to rps_set go past the "if (val ==
rps->last_freq)" and "if (new_power == rps->power.mode)" checks (second
one via gen6_rps_set_thresholds->rps_set_power" so new values are
immediately programmed into the hardware and sw state reset and
re-calculated.
Regards,
Tvrtko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds
2023-05-23 9:07 ` Tvrtko Ursulin
@ 2023-05-23 11:39 ` Andi Shyti
0 siblings, 0 replies; 17+ messages in thread
From: Andi Shyti @ 2023-05-23 11:39 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Rodrigo Vivi, Intel-gfx, dri-devel
Hi Tvrtko,
> > > + /* Force reset. */
> > > + rps->last_freq = -1;
> > > + mutex_lock(&rps->power.mutex);
> > > + rps->power.mode = -1;
> > > + mutex_unlock(&rps->power.mutex);
> > > +
> > > + intel_rps_set(rps, clamp(rps->cur_freq,
> > > + rps->min_freq_softlimit,
> > > + rps->max_freq_softlimit));
> >
> > why are you resetting here?
>
> I want to ensure the next calls to rps_set go past the "if (val ==
> rps->last_freq)" and "if (new_power == rps->power.mode)" checks (second one
> via gen6_rps_set_thresholds->rps_set_power" so new values are immediately
> programmed into the hardware and sw state reset and re-calculated.
thanks! makes sense!
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Andi
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2023-05-23 11:39 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-22 11:59 [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Tvrtko Ursulin
2023-05-22 11:59 ` [Intel-gfx] [PATCH 2/4] drm/i915: Record default rps threshold values Tvrtko Ursulin
2023-05-22 14:52 ` Rodrigo Vivi
2023-05-22 22:48 ` Andi Shyti
2023-05-22 11:59 ` [Intel-gfx] [PATCH 3/4] drm/i915: Add helpers for managing rps thresholds Tvrtko Ursulin
2023-05-22 14:52 ` Rodrigo Vivi
2023-05-22 23:09 ` Andi Shyti
2023-05-23 9:07 ` Tvrtko Ursulin
2023-05-23 11:39 ` Andi Shyti
2023-05-22 11:59 ` [Intel-gfx] [PATCH 4/4] drm/i915: Expose RPS thresholds in sysfs Tvrtko Ursulin
2023-05-22 23:10 ` Andi Shyti
2023-05-22 14:52 ` [Intel-gfx] [PATCH 1/4] drm/i915: Move setting of rps thresholds to init Rodrigo Vivi
2023-05-22 18:21 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] " Patchwork
2023-05-22 18:21 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-05-22 18:37 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-05-22 22:48 ` [Intel-gfx] [PATCH 1/4] " Andi Shyti
2023-05-23 2:11 ` [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/4] " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox