Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1423660 > unrolled thread

Re: [PATCHv4 07/48] thermal: core: move passive attr to tz->device.groups

Started byZhang Rui <rui.zhang@intel.com>
First post2016-06-16 05:30 +0200
Last post2016-06-16 06:20 +0200
Articles 2 — 1 participant

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCHv4 07/48] thermal: core: move passive attr to  tz->device.groups Zhang Rui <rui.zhang@intel.com> - 2016-06-16 05:30 +0200
    Re: [PATCHv4 07/48] thermal: core: move passive attr to  tz->device.groups Zhang Rui <rui.zhang@intel.com> - 2016-06-16 06:20 +0200

#1423660 — Re: [PATCHv4 07/48] thermal: core: move passive attr to tz->device.groups

FromZhang Rui <rui.zhang@intel.com>
Date2016-06-16 05:30 +0200
SubjectRe: [PATCHv4 07/48] thermal: core: move passive attr to tz->device.groups
Message-ID<rKwad-30x-1@gated-at.bofh.it>
On 一, 2016-05-30 at 23:18 -0700, Eduardo Valentin wrote:
> This patch moves the passive attribute to tz->device.groups. Moving
> the
> passive attribute also requires a .is_visible() callback
> implementation
> for its attribute group.
> 
> The logic behind the visibility of passive attribute is kept the
> same.
> We only expose the passive attribute if the thermal driver has
> exposed
> at least one passive trip point.
> 
No, the passive attribute is only present for zones in which the
passive cooling policy is not supported by native thermal driver.

> Cc: Zhang Rui <rui.zhang@intel.com>
> Cc: linux-pm@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
> ---
>  drivers/thermal/thermal_core.c | 42
> +++++++++++++++++++++++++++++++++---------
>  1 file changed, 33 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/thermal/thermal_core.c
> b/drivers/thermal/thermal_core.c
> index 19fea9e..efc190c 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -1056,9 +1056,42 @@ static struct attribute_group
> thermal_zone_mode_attribute_group = {
>  	.is_visible = thermal_zone_mode_is_visible,
>  };
>  
> +/* We expose passive only if passive trips are present */
> +static struct attribute *thermal_zone_passive_attrs[] = {
> +	&dev_attr_passive.attr,
> +	NULL,
> +};
> +
> +static umode_t thermal_zone_passive_is_visible(struct kobject *kobj,
> +					       struct attribute
> *attr,
> +					       int attrno)
> +{
> +	struct device *dev = container_of(kobj, struct device,
> kobj);
> +	struct thermal_zone_device *tz;
> +	enum thermal_trip_type trip_type;
> +	int count;
> +
> +	tz = container_of(dev, struct thermal_zone_device, device);
> +
> +	for (count = 0; count < tz->trips; count++) {
> +		tz->ops->get_trip_type(tz, count, &trip_type);
> +
> +		if (trip_type == THERMAL_TRIP_PASSIVE)
> +			return attr->mode;
we should
			return 0;
> +	}
> +
> +	return 0;
and
	return attr->mode;

thanks,
rui
> +}
> +
> +static struct attribute_group thermal_zone_passive_attribute_group =
> {
> +	.attrs = thermal_zone_passive_attrs,
> +	.is_visible = thermal_zone_passive_is_visible,
> +};
> +
>  static const struct attribute_group *thermal_zone_attribute_groups[]
> = {
>  	&thermal_zone_attribute_group,
>  	&thermal_zone_mode_attribute_group,
> +	&thermal_zone_passive_attribute_group,
>  	NULL
>  };
>  
> @@ -1843,7 +1876,6 @@ struct thermal_zone_device
> *thermal_zone_device_register(const char *type,
>  	int trip_temp;
>  	int result;
>  	int count;
> -	int passive = 0;
>  	struct thermal_governor *governor;
>  
>  	if (!type || strlen(type) == 0)
> @@ -1904,8 +1936,6 @@ struct thermal_zone_device
> *thermal_zone_device_register(const char *type,
>  	for (count = 0; count < trips; count++) {
>  		if (tz->ops->get_trip_type(tz, count, &trip_type))
>  			set_bit(count, &tz->trips_disabled);
> -		if (trip_type == THERMAL_TRIP_PASSIVE)
> -			passive = 1;
>  		if (tz->ops->get_trip_temp(tz, count, &trip_temp))
>  			set_bit(count, &tz->trips_disabled);
>  		/* Check for bogus trip points */
> @@ -1913,12 +1943,6 @@ struct thermal_zone_device
> *thermal_zone_device_register(const char *type,
>  			set_bit(count, &tz->trips_disabled);
>  	}
>  
> -	if (!passive) {
> -		result = device_create_file(&tz->device,
> &dev_attr_passive);
> -		if (result)
> -			goto unregister;
> -	}
> -
>  	/* Update 'this' zone's governor information */
>  	mutex_lock(&thermal_governor_lock);
>  

[toc] | [next] | [standalone]


#1423668

FromZhang Rui <rui.zhang@intel.com>
Date2016-06-16 06:20 +0200
Message-ID<rKwWB-3vg-3@gated-at.bofh.it>
In reply to#1423660
On 四, 2016-06-16 at 11:27 +0800, Zhang Rui wrote:
> On 一, 2016-05-30 at 23:18 -0700, Eduardo Valentin wrote:
> > 
> > This patch moves the passive attribute to tz->device.groups. Moving
> > the
> > passive attribute also requires a .is_visible() callback
> > implementation
> > for its attribute group.
> > 
> > The logic behind the visibility of passive attribute is kept the
> > same.
> > We only expose the passive attribute if the thermal driver has
> > exposed
> > at least one passive trip point.
> > 
> No, the passive attribute is only present for zones in which the
> passive cooling policy is not supported by native thermal driver.
> 
> > 
> > Cc: Zhang Rui <rui.zhang@intel.com>
> > Cc: linux-pm@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org
> > Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
> > ---
> >  drivers/thermal/thermal_core.c | 42
> > +++++++++++++++++++++++++++++++++---------
> >  1 file changed, 33 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/thermal/thermal_core.c
> > b/drivers/thermal/thermal_core.c
> > index 19fea9e..efc190c 100644
> > --- a/drivers/thermal/thermal_core.c
> > +++ b/drivers/thermal/thermal_core.c
> > @@ -1056,9 +1056,42 @@ static struct attribute_group
> > thermal_zone_mode_attribute_group = {
> >  	.is_visible = thermal_zone_mode_is_visible,
> >  };
> >  
> > +/* We expose passive only if passive trips are present */
> > +static struct attribute *thermal_zone_passive_attrs[] = {
> > +	&dev_attr_passive.attr,
> > +	NULL,
> > +};
> > +
> > +static umode_t thermal_zone_passive_is_visible(struct kobject
> > *kobj,
> > +					       struct attribute
> > *attr,
> > +					       int attrno)
> > +{
> > +	struct device *dev = container_of(kobj, struct device,
> > kobj);
> > +	struct thermal_zone_device *tz;
> > +	enum thermal_trip_type trip_type;
> > +	int count;
> > +
> > +	tz = container_of(dev, struct thermal_zone_device,
> > device);
> > +
> > +	for (count = 0; count < tz->trips; count++) {
> > +		tz->ops->get_trip_type(tz, count, &trip_type);
> > +
> > +		if (trip_type == THERMAL_TRIP_PASSIVE)
> > +			return attr->mode;
> we should
> 			return 0;
> > 
> > +	}
> > +
> > +	return 0;
> and
> 	return attr->mode;
> 
refreshed patch attached, please review.
From 98415315a7ce1027d2e788476980b7815d9e9627 Mon Sep 17 00:00:00 2001
From: Eduardo Valentin <edubezval@gmail.com>
Date: Mon, 30 May 2016 23:18:14 -0700
Subject: [PATCH] thermal: core: move passive attr to tz->device.groups

This patch moves the passive attribute to tz->device.groups. Moving the
passive attribute also requires a .is_visible() callback implementation
for its attribute group.

The logic behind the visibility of passive attribute is kept the same.
We only expose the passive attribute if the thermal driver has exposed
at least one passive trip point.

Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/thermal/thermal_core.c | 42 +++++++++++++++++++++++++++++++++---------
 1 file changed, 33 insertions(+), 9 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 19fea9e..40299a0 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1056,9 +1056,42 @@ static struct attribute_group thermal_zone_mode_attribute_group = {
 	.is_visible = thermal_zone_mode_is_visible,
 };
 
+/* We expose passive only if passive trips are present */
+static struct attribute *thermal_zone_passive_attrs[] = {
+	&dev_attr_passive.attr,
+	NULL,
+};
+
+static umode_t thermal_zone_passive_is_visible(struct kobject *kobj,
+					       struct attribute *attr,
+					       int attrno)
+{
+	struct device *dev = container_of(kobj, struct device, kobj);
+	struct thermal_zone_device *tz;
+	enum thermal_trip_type trip_type;
+	int count;
+
+	tz = container_of(dev, struct thermal_zone_device, device);
+
+	for (count = 0; count < tz->trips; count++) {
+		tz->ops->get_trip_type(tz, count, &trip_type);
+
+		if (trip_type == THERMAL_TRIP_PASSIVE)
+			return 0;
+	}
+
+	return attr->mode;
+}
+
+static struct attribute_group thermal_zone_passive_attribute_group = {
+	.attrs = thermal_zone_passive_attrs,
+	.is_visible = thermal_zone_passive_is_visible,
+};
+
 static const struct attribute_group *thermal_zone_attribute_groups[] = {
 	&thermal_zone_attribute_group,
 	&thermal_zone_mode_attribute_group,
+	&thermal_zone_passive_attribute_group,
 	NULL
 };
 
@@ -1843,7 +1876,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
 	int trip_temp;
 	int result;
 	int count;
-	int passive = 0;
 	struct thermal_governor *governor;
 
 	if (!type || strlen(type) == 0)
@@ -1904,8 +1936,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
 	for (count = 0; count < trips; count++) {
 		if (tz->ops->get_trip_type(tz, count, &trip_type))
 			set_bit(count, &tz->trips_disabled);
-		if (trip_type == THERMAL_TRIP_PASSIVE)
-			passive = 1;
 		if (tz->ops->get_trip_temp(tz, count, &trip_temp))
 			set_bit(count, &tz->trips_disabled);
 		/* Check for bogus trip points */
@@ -1913,12 +1943,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
 			set_bit(count, &tz->trips_disabled);
 	}
 
-	if (!passive) {
-		result = device_create_file(&tz->device, &dev_attr_passive);
-		if (result)
-			goto unregister;
-	}
-
 	/* Update 'this' zone's governor information */
 	mutex_lock(&thermal_governor_lock);
 
-- 
2.7.4

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web