linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Matthias Kaehlcke <mka@chromium.org>
To: MyungJoo Ham <myungjoo.ham@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>,
	Chanwoo Choi <cw00.choi@samsung.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Brian Norris <briannorris@chromium.org>,
	Douglas Anderson <dianders@chromium.org>,
	Enric Balletbo i Serra <enric.balletbo@collabora.com>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Lee Jones <lee.jones@linaro.org>,
	Benson Leung <bleung@chromium.org>,
	Olof Johansson <olof@lixom.net>
Subject: Re: [PATCH v5 03/12] PM / devfreq: Don't adjust to user limits in governors
Date: Thu, 2 Aug 2018 16:36:00 -0700	[thread overview]
Message-ID: <20180802233600.GT68975@google.com> (raw)
In-Reply-To: <20180703234705.227473-4-mka@chromium.org>

Hi Chanwoo,

this patch and "PM / devfreq: Fix handling of min/max_freq == 0"
address issues not directly related with the throttler. It seems it
could still take a while for the throttler to move forward, do you
want me to spin out these two patches so that they can get merged
independently from the rest of the series?

Thanks

Matthias

On Tue, Jul 03, 2018 at 04:46:56PM -0700, Matthias Kaehlcke wrote:
> Several governors use the user space limits df->min/max_freq to adjust
> the target frequency. This is not necessary, since update_devfreq()
> already takes care of this. Instead the governor can request the available
> min/max frequency by setting the target frequency to DEVFREQ_MIN/MAX_FREQ
> and let update_devfreq() take care of any adjustments.
> 
> Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
> Reviewed-by: Brian Norris <briannorris@chromium.org>
> ---
> Changes in v5:
> - none
> 
> Changes in v4:
> - added 'Reviewed-by: Brian Norris <briannorris@chromium.org>' tag
> 
> Changes in v3:
> - none
> 
> Changes in v2:
> - squashed "PM / devfreq: Remove redundant frequency adjustment from governors"
>   and "PM / devfreq: governors: Return device frequency limits instead of user
>   limits"
> - updated subject and commit message
> - use DEVFREQ_MIN/MAX_FREQ instead of df->scaling_min/max_freq
> ---
>  drivers/devfreq/governor.h                |  3 +++
>  drivers/devfreq/governor_performance.c    |  5 +----
>  drivers/devfreq/governor_powersave.c      |  2 +-
>  drivers/devfreq/governor_simpleondemand.c | 12 +++---------
>  drivers/devfreq/governor_userspace.c      | 16 ++++------------
>  5 files changed, 12 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/devfreq/governor.h b/drivers/devfreq/governor.h
> index cfc50a61a90d..b81700244ce3 100644
> --- a/drivers/devfreq/governor.h
> +++ b/drivers/devfreq/governor.h
> @@ -25,6 +25,9 @@
>  #define DEVFREQ_GOV_SUSPEND			0x4
>  #define DEVFREQ_GOV_RESUME			0x5
>  
> +#define DEVFREQ_MIN_FREQ			0
> +#define DEVFREQ_MAX_FREQ			ULONG_MAX
> +
>  /**
>   * struct devfreq_governor - Devfreq policy governor
>   * @node:		list node - contains registered devfreq governors
> diff --git a/drivers/devfreq/governor_performance.c b/drivers/devfreq/governor_performance.c
> index 4d23ecfbd948..ded429fd51be 100644
> --- a/drivers/devfreq/governor_performance.c
> +++ b/drivers/devfreq/governor_performance.c
> @@ -20,10 +20,7 @@ static int devfreq_performance_func(struct devfreq *df,
>  	 * target callback should be able to get floor value as
>  	 * said in devfreq.h
>  	 */
> -	if (!df->max_freq)
> -		*freq = UINT_MAX;
> -	else
> -		*freq = df->max_freq;
> +	*freq = DEVFREQ_MAX_FREQ;
>  	return 0;
>  }
>  
> diff --git a/drivers/devfreq/governor_powersave.c b/drivers/devfreq/governor_powersave.c
> index 0c42f23249ef..9e8897f5ac42 100644
> --- a/drivers/devfreq/governor_powersave.c
> +++ b/drivers/devfreq/governor_powersave.c
> @@ -20,7 +20,7 @@ static int devfreq_powersave_func(struct devfreq *df,
>  	 * target callback should be able to get ceiling value as
>  	 * said in devfreq.h
>  	 */
> -	*freq = df->min_freq;
> +	*freq = DEVFREQ_MIN_FREQ;
>  	return 0;
>  }
>  
> diff --git a/drivers/devfreq/governor_simpleondemand.c b/drivers/devfreq/governor_simpleondemand.c
> index 28e0f2de7100..c0417f0e081e 100644
> --- a/drivers/devfreq/governor_simpleondemand.c
> +++ b/drivers/devfreq/governor_simpleondemand.c
> @@ -27,7 +27,6 @@ static int devfreq_simple_ondemand_func(struct devfreq *df,
>  	unsigned int dfso_upthreshold = DFSO_UPTHRESHOLD;
>  	unsigned int dfso_downdifferential = DFSO_DOWNDIFFERENCTIAL;
>  	struct devfreq_simple_ondemand_data *data = df->data;
> -	unsigned long max = (df->max_freq) ? df->max_freq : UINT_MAX;
>  
>  	err = devfreq_update_stats(df);
>  	if (err)
> @@ -47,7 +46,7 @@ static int devfreq_simple_ondemand_func(struct devfreq *df,
>  
>  	/* Assume MAX if it is going to be divided by zero */
>  	if (stat->total_time == 0) {
> -		*freq = max;
> +		*freq = DEVFREQ_MAX_FREQ;
>  		return 0;
>  	}
>  
> @@ -60,13 +59,13 @@ static int devfreq_simple_ondemand_func(struct devfreq *df,
>  	/* Set MAX if it's busy enough */
>  	if (stat->busy_time * 100 >
>  	    stat->total_time * dfso_upthreshold) {
> -		*freq = max;
> +		*freq = DEVFREQ_MAX_FREQ;
>  		return 0;
>  	}
>  
>  	/* Set MAX if we do not know the initial frequency */
>  	if (stat->current_frequency == 0) {
> -		*freq = max;
> +		*freq = DEVFREQ_MAX_FREQ;
>  		return 0;
>  	}
>  
> @@ -85,11 +84,6 @@ static int devfreq_simple_ondemand_func(struct devfreq *df,
>  	b = div_u64(b, (dfso_upthreshold - dfso_downdifferential / 2));
>  	*freq = (unsigned long) b;
>  
> -	if (df->min_freq && *freq < df->min_freq)
> -		*freq = df->min_freq;
> -	if (df->max_freq && *freq > df->max_freq)
> -		*freq = df->max_freq;
> -
>  	return 0;
>  }
>  
> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
> index 080607c3f34d..378d84c011df 100644
> --- a/drivers/devfreq/governor_userspace.c
> +++ b/drivers/devfreq/governor_userspace.c
> @@ -26,19 +26,11 @@ static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
>  {
>  	struct userspace_data *data = df->data;
>  
> -	if (data->valid) {
> -		unsigned long adjusted_freq = data->user_frequency;
> -
> -		if (df->max_freq && adjusted_freq > df->max_freq)
> -			adjusted_freq = df->max_freq;
> -
> -		if (df->min_freq && adjusted_freq < df->min_freq)
> -			adjusted_freq = df->min_freq;
> -
> -		*freq = adjusted_freq;
> -	} else {
> +	if (data->valid)
> +		*freq = data->user_frequency;
> +	else
>  		*freq = df->previous_freq; /* No user freq specified yet */
> -	}
> +
>  	return 0;
>  }
>  

  parent reply	other threads:[~2018-08-02 23:36 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-03 23:46 [PATCH v5 00/12] Add throttler driver for non-thermal throttling Matthias Kaehlcke
2018-07-03 23:46 ` [PATCH v5 01/12] PM / devfreq: Init user limits from OPP limits, not viceversa Matthias Kaehlcke
2018-07-03 23:46 ` [PATCH v5 02/12] PM / devfreq: Fix handling of min/max_freq == 0 Matthias Kaehlcke
2018-07-04  2:20   ` Chanwoo Choi
2018-07-06 16:36     ` Matthias Kaehlcke
2018-07-12  8:34       ` Chanwoo Choi
2018-07-03 23:46 ` [PATCH v5 03/12] PM / devfreq: Don't adjust to user limits in governors Matthias Kaehlcke
2018-07-04  2:27   ` Chanwoo Choi
2018-08-02 23:36   ` Matthias Kaehlcke [this message]
2018-08-03  0:03     ` Chanwoo Choi
2018-08-03  0:24       ` Matthias Kaehlcke
2018-08-03  0:43         ` Chanwoo Choi
2018-07-03 23:46 ` [PATCH v5 04/12] PM / devfreq: Add struct devfreq_policy Matthias Kaehlcke
2018-07-04  2:51   ` Chanwoo Choi
2018-07-06 17:07     ` Matthias Kaehlcke
2018-07-12  8:38       ` Chanwoo Choi
2018-08-03  0:04         ` Chanwoo Choi
2018-07-03 23:46 ` [PATCH v5 05/12] PM / devfreq: Add support for policy notifiers Matthias Kaehlcke
2018-07-04  6:41   ` Chanwoo Choi
2018-07-06 17:53     ` Matthias Kaehlcke
2018-07-12  8:44       ` Chanwoo Choi
2018-07-16 17:50         ` Matthias Kaehlcke
2018-07-31 19:39           ` Matthias Kaehlcke
2018-08-01  1:22             ` Chanwoo Choi
2018-08-01 17:08               ` Matthias Kaehlcke
2018-08-02  1:58                 ` Chanwoo Choi
2018-08-02 23:13                   ` Matthias Kaehlcke
2018-08-02 23:48                     ` Matthias Kaehlcke
2018-08-03  0:14                       ` Chanwoo Choi
2018-08-06 19:21                         ` Matthias Kaehlcke
2018-08-06 22:31                           ` Chanwoo Choi
2018-08-06 22:50                             ` Chanwoo Choi
2018-08-07  0:23                             ` Matthias Kaehlcke
2018-08-07  1:35                               ` Chanwoo Choi
2018-08-07 22:34                                 ` Matthias Kaehlcke
2018-08-02 23:56                     ` Chanwoo Choi
2018-08-06 18:46                       ` Matthias Kaehlcke
2018-08-06 22:16                         ` Chanwoo Choi
2018-07-03 23:46 ` [PATCH v5 06/12] PM / devfreq: Make update_devfreq() public Matthias Kaehlcke
2018-08-01  8:32   ` Chanwoo Choi
2018-07-03 23:47 ` [PATCH v5 07/12] PM / devfreq: export devfreq_class Matthias Kaehlcke
2018-07-04  5:30   ` Chanwoo Choi
2018-07-06 18:09     ` Matthias Kaehlcke
2018-07-12  9:08       ` Chanwoo Choi
2018-07-16 19:41         ` Matthias Kaehlcke
2018-07-31 19:29           ` Matthias Kaehlcke
2018-08-01  8:18             ` Chanwoo Choi
2018-08-01 17:18               ` Matthias Kaehlcke
2018-07-03 23:47 ` [PATCH v5 08/12] cpufreq: Add stub for cpufreq_update_policy() Matthias Kaehlcke
2018-07-04 10:41   ` Rafael J. Wysocki
2018-07-10 22:24     ` Matthias Kaehlcke
2018-07-04 10:44   ` Viresh Kumar
2018-07-03 23:47 ` [PATCH v5 09/12] dt-bindings: misc: add bindings for throttler Matthias Kaehlcke
2018-07-04 10:00   ` Viresh Kumar
2018-08-01  8:27   ` Chanwoo Choi
2018-08-01 17:39     ` Matthias Kaehlcke
2018-07-03 23:47 ` [PATCH v5 10/12] misc: throttler: Add core support for non-thermal throttling Matthias Kaehlcke
2018-07-03 23:47 ` [PATCH v5 11/12] misc: throttler: Add Chrome OS EC throttler Matthias Kaehlcke
2018-07-03 23:47 ` [PATCH v5 12/12] mfd: cros_ec: Add throttler sub-device Matthias Kaehlcke
2018-07-04  7:59   ` Lee Jones
     [not found] ` <CGME20180703234727epcas3p1b9f4a41b1f1714c8c059100d46b816dd@epcms1p5>
2018-07-04  2:24   ` [PATCH v5 01/12] PM / devfreq: Init user limits from OPP limits, not viceversa MyungJoo Ham

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=20180802233600.GT68975@google.com \
    --to=mka@chromium.org \
    --cc=arnd@arndb.de \
    --cc=bleung@chromium.org \
    --cc=briannorris@chromium.org \
    --cc=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=enric.balletbo@collabora.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kyungmin.park@samsung.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=myungjoo.ham@samsung.com \
    --cc=olof@lixom.net \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    --cc=viresh.kumar@linaro.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;
as well as URLs for NNTP newsgroup(s).