public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Deepak S <deepak.s@linux.intel.com>
To: Daisy Sun <daisy.sun@intel.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v3] drm/i915: Debugfs disable RPS boost and idle
Date: Sat, 10 May 2014 10:37:01 +0530	[thread overview]
Message-ID: <536DB3F5.90701@linux.intel.com> (raw)
In-Reply-To: <1399326627-30890-1-git-send-email-daisy.sun@intel.com>


On Tuesday 06 May 2014 03:20 AM, Daisy Sun wrote:
> RP frequency request is affected by 2 modules: normal turbo
> algorithm and RPS boost algorithm. By adding RPS boost algorithm
> to the mix, the final frequency becomes relatively unpredictable.
> Add a switch to enable/disable RPS boost functionality. When
> disabled, RP frequency will follow the normal turbo algorithm only.
>
> Intention: when boost and idle are disabled, we have a clear vision
> of turbo algorithm. It‘s very helpful to verify if the turbo
> algorithm is working as expected.
> Without debugfs hooks, the RPS boost or idle may kick in at
> anytime and any circumstances.
>
> V1->V2: Follow Daniel's comment to explain the intention.
> V2->V3: Abandon flush_delayed work, abandon lock of rps.hw_lock
> during get/set of rps.debugfs_disable_boost
>
> Signed-off-by: Daisy Sun <daisy.sun@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_debugfs.c | 29 +++++++++++++++++++++++++++++
>   drivers/gpu/drm/i915/i915_drv.h     |  1 +
>   drivers/gpu/drm/i915/intel_pm.c     |  8 ++++++--
>   3 files changed, 36 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 1e83ae4..685f7e5 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -3486,6 +3486,34 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_drop_caches_fops,
>   			i915_drop_caches_get, i915_drop_caches_set,
>   			"0x%08llx\n");
>   
> +static int i915_rps_disable_boost_get(void *data, u64 *val)
> +{
> +	struct drm_device *dev = data;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +
> +	*val = dev_priv->rps.debugfs_disable_boost;
> +
> +	return 0;
> +}
> +
> +static int i915_rps_disable_boost_set(void *data, u64 val)
> +{
> +	struct drm_device *dev = data;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	int ret;
> +
> +	DRM_DEBUG_DRIVER("%s RPS Boost-Idle mode\n",
> +				 val ? "Disable" : "Enable");
> +
> +	dev_priv->rps.debugfs_disable_boost = val;
> +
> +	return 0;
> +}
> +
> +DEFINE_SIMPLE_ATTRIBUTE(i915_rps_disable_boost_fops,
> +		i915_rps_disable_boost_get, i915_rps_disable_boost_set,
> +			"%llu\n");
> +
>   static int
>   i915_max_freq_get(void *data, u64 *val)
>   {
> @@ -3821,6 +3849,7 @@ static const struct i915_debugfs_files {
>   	{"i915_wedged", &i915_wedged_fops},
>   	{"i915_max_freq", &i915_max_freq_fops},
>   	{"i915_min_freq", &i915_min_freq_fops},
> +	{"i915_rps_disable_boost", &i915_rps_disable_boost_fops},
>   	{"i915_cache_sharing", &i915_cache_sharing_fops},
>   	{"i915_ring_stop", &i915_ring_stop_fops},
>   	{"i915_ring_missed_irq", &i915_ring_missed_irq_fops},
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 272aa7a..9c427da 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -847,6 +847,7 @@ struct intel_gen6_power_mgmt {
>   	int last_adj;
>   	enum { LOW_POWER, BETWEEN, HIGH_POWER } power;
>   
> +	bool debugfs_disable_boost;
>   	bool enabled;
>   	struct delayed_work delayed_resume_work;
>   
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 75c1c76..6acac14 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -3163,7 +3163,9 @@ void gen6_rps_idle(struct drm_i915_private *dev_priv)
>   	struct drm_device *dev = dev_priv->dev;
>   
>   	mutex_lock(&dev_priv->rps.hw_lock);
> -	if (dev_priv->rps.enabled) {
> +
> +	if (dev_priv->rps.enabled
> +		&& !dev_priv->rps.debugfs_disable_boost) {

On VLV, when system is idle we wont get  down threshold interrupts. So disabling this will not help you to test the algorithm. I think we need to retain gen6_rps_idle


>   		if (IS_VALLEYVIEW(dev))
>   			vlv_set_rps_idle(dev_priv);
>   		else
> @@ -3178,7 +3180,9 @@ void gen6_rps_boost(struct drm_i915_private *dev_priv)
>   	struct drm_device *dev = dev_priv->dev;
>   
>   	mutex_lock(&dev_priv->rps.hw_lock);
> -	if (dev_priv->rps.enabled) {
> +
> +	if (dev_priv->rps.enabled
> +		&& !dev_priv->rps.debugfs_disable_boost) {
>   		if (IS_VALLEYVIEW(dev))
>   			valleyview_set_rps(dev_priv->dev, dev_priv->rps.max_freq_softlimit);
>   		else

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

      parent reply	other threads:[~2014-05-10  5:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-05 21:50 [PATCH v3] drm/i915: Debugfs disable RPS boost and idle Daisy Sun
2014-05-06  5:51 ` Chris Wilson
2014-05-07  1:50   ` Sun, Daisy
2014-05-10  5:07 ` Deepak S [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=536DB3F5.90701@linux.intel.com \
    --to=deepak.s@linux.intel.com \
    --cc=daisy.sun@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox