devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: MyungJoo Ham <myungjoo.ham@samsung.com>
To: 최찬우 <cw00.choi@samsung.com>, 크쉬시토프 <k.kozlowski@samsung.com>,
	"kgene@kernel.org" <kgene@kernel.org>
Cc: 박경민 <kyungmin.park@samsung.com>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>,
	"pawel.moll@arm.com" <pawel.moll@arm.com>,
	"mark.rutland@arm.com" <mark.rutland@arm.com>,
	"ijc+devicetree@hellion.org.uk" <ijc+devicetree@hellion.org.uk>,
	"galak@codeaurora.org" <galak@codeaurora.org>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"tjakobi@math.uni-bielefeld.de" <tjakobi@math.uni-bielefeld.de>,
	"linux.amoon@gmail.com" <linux.amoon@gmail.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v4 07/20] PM / devfreq: Show the related information according to governor type
Date: Mon, 14 Dec 2015 09:49:49 +0000 (GMT)	[thread overview]
Message-ID: <346992826.663931450086583548.JavaMail.weblogic@epmlwas07b> (raw)

>   
>  This patch modifies the following sysfs entry of DEVFREQ framework
> because the devfreq device using passive governor don't need the same
> information of the devfreq device using rest governor.
> - polling_interval    : passive gov don't use the sampling rate.
> - available_governors : passive gov don't be changed on runtime in this version.
> - trans_stat          : passive governor don't support trans_stat in this version.
> 
> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
> [linux.amoon: Tested on Odroid U3]
> Tested-by: Anand Moon <linux.amoon@gmail.com>

You have a major update that is not mendtioned in the commit message.
(add governor "type")

> ---
>  drivers/devfreq/devfreq.c                 | 31 +++++++++++++++++++++++++------
>  drivers/devfreq/governor.h                |  7 +++++++
>  drivers/devfreq/governor_passive.c        |  1 +
>  drivers/devfreq/governor_performance.c    |  1 +
>  drivers/devfreq/governor_powersave.c      |  1 +
>  drivers/devfreq/governor_simpleondemand.c |  1 +
>  drivers/devfreq/governor_userspace.c      |  1 +
>  include/linux/devfreq.h                   |  2 ++
>  8 files changed, 39 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 78ea4cdaa82c..18ad956fec93 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -597,7 +597,7 @@ struct devfreq *devfreq_add_device(struct device *dev,
>  		goto err_init;
>  	}
>  
> -	if (!strncmp(devfreq->governor_name, "passive", 7)) {
> +	if (devfreq->governor->type == DEVFREQ_GOV_PASSIVE) {
>  		struct devfreq *parent_devfreq =
>  			((struct devfreq_passive_data *)data)->parent;

As mentioned in a previous reply, this code may be removed.

>  
> @@ -963,13 +963,23 @@ static ssize_t available_governors_show(struct device *d,
>  					struct device_attribute *attr,
>  					char *buf)
>  {
> -	struct devfreq_governor *tmp_governor;
> +	struct devfreq *devfreq = to_devfreq(d);
>  	ssize_t count = 0;
>  
>  	mutex_lock(&devfreq_list_lock);
> -	list_for_each_entry(tmp_governor, &devfreq_governor_list, node)
> +	if (devfreq->governor->type == DEVFREQ_GOV_PASSIVE) {
>  		count += scnprintf(&buf[count], (PAGE_SIZE - count - 2),
> -				   "%s ", tmp_governor->name);
> +					   "%s ", devfreq->governor->name);
> +	} else {
> +		struct devfreq_governor *tmp_governor;
> +
> +		list_for_each_entry(tmp_governor, &devfreq_governor_list, node) {
> +			if (tmp_governor->type == DEVFREQ_GOV_PASSIVE)
> +				continue;
> +			count += scnprintf(&buf[count], (PAGE_SIZE - count - 2),
> +					   "%s ", tmp_governor->name);
> +		}
> +	}

Uh no. As long as we do not have a list of all possible governors
for each device, let's stick with what we've defined in ABI documentation:
show all available governors "in the system".

You MAY have a device that may run both PASSIVE and USERSPACE.

>  	mutex_unlock(&devfreq_list_lock);
>  
>  	/* Truncate the trailing space */
> @@ -1006,6 +1016,11 @@ static DEVICE_ATTR_RO(target_freq);
>  static ssize_t polling_interval_show(struct device *dev,
>  				     struct device_attribute *attr, char *buf)
>  {
> +	struct devfreq *df = to_devfreq(dev);
> +
> +	if (df->governor->type == DEVFREQ_GOV_PASSIVE)
> +		return sprintf(buf, "Not Supported.\n");
> +
>  	return sprintf(buf, "%d\n", to_devfreq(dev)->profile->polling_ms);
>  }

When polling interval is irrlevent with the governor,
you don't need to print "Not Supported". Instead,
printing "0" is enough, (polling_ms=0 == no polling)
which is what devfreq is doing now.

>  
> @@ -1020,6 +1035,9 @@ static ssize_t polling_interval_store(struct device *dev,
>  	if (!df->governor)
>  		return -EINVAL;
>  
> +	if (df->governor->type == DEVFREQ_GOV_PASSIVE)
> +		return -EINVAL;
> +

Please simply return -EINVAL with governor's event_handler with DEVFREQ_GOV_INTERVAL
(I see the return value checking is missing at df->governor->event_handler().
You may want to add return value checking there to properly handle what you want.)

>  	ret = sscanf(buf, "%u", &value);
>  	if (ret != 1)
>  		return -EINVAL;
> @@ -1137,11 +1155,12 @@ static ssize_t trans_stat_show(struct device *dev,
>  	int i, j;
>  	unsigned int max_state = devfreq->profile->max_state;
>  
> +	if (max_state == 0 || devfreq->governor->type == DEVFREQ_GOV_PASSIVE)
> +		return sprintf(buf, "Not Supported.\n");
> +
>  	if (!devfreq->stop_polling &&
>  			devfreq_update_status(devfreq, devfreq->previous_freq))
>  		return 0;
> -	if (max_state == 0)
> -		return sprintf(buf, "Not Supported.\n");

We have no reason to always disable this for PASSIVE.

>  
>  	len = sprintf(buf, "     From  :   To\n");
>  	len += sprintf(buf + len, "           :");
> diff --git a/drivers/devfreq/governor.h b/drivers/devfreq/governor.h
> index fad7d6321978..43513a58f5bf 100644
> --- a/drivers/devfreq/governor.h
> +++ b/drivers/devfreq/governor.h
> @@ -18,6 +18,13 @@
>  
>  #define to_devfreq(DEV)	container_of((DEV), struct devfreq, dev)
>  
> +/* Devfreq governor type */
> +#define DEVFREQ_GOV_ONDEMAND			0x1
> +#define DEVFREQ_GOV_PERFORMANCE			0x2
> +#define DEVFREQ_GOV_POWERSAVE			0x3
> +#define DEVFREQ_GOV_USERSPACE			0x4
> +#define DEVFREQ_GOV_PASSIVE			0x4

Uh.. both USERSPACE AND PASSIVE are 0x4?



             reply	other threads:[~2015-12-14  9:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-14  9:49 MyungJoo Ham [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-12-14  6:38 [PATCH v4 00/20] PM / devferq: Add generic exynos bus frequency driver and new passive governor Chanwoo Choi
2015-12-14  6:38 ` [PATCH v4 07/20] PM / devfreq: Show the related information according to governor type Chanwoo Choi

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=346992826.663931450086583548.JavaMail.weblogic@epmlwas07b \
    --to=myungjoo.ham@samsung.com \
    --cc=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=k.kozlowski@samsung.com \
    --cc=kgene@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux.amoon@gmail.com \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=tjakobi@math.uni-bielefeld.de \
    /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).