Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
Hi Bartlomiej, On 2018년 08월 29일 21:50, Bartlomiej Zolnierkiewicz wrote: > > Hi Chanwoo, > > On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote: >> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") changed the node name to devfreq(x). After this commit, it is not >> possible to get the device name through /sys/class/devfreq/devfreq(X)/*. >> >> Add new name attribute in order to get device name. > > Could you please describe the issue encountered in more detail > (what the old device name is needed for)? You can check it on mail thread[1]. [1] https://lkml.org/lkml/2018/5/8/1042 > >> Cc: sta...@vger.kernel.org >> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") >> Signed-off-by: Chanwoo Choi >> --- >> drivers/devfreq/devfreq.c | 11 +++ >> include/linux/devfreq.h | 3 +++ >> 2 files changed, 14 insertions(+) >> >> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c >> index 4c49bb1330b5..2145563d5ee5 100644 >> --- a/drivers/devfreq/devfreq.c >> +++ b/drivers/devfreq/devfreq.c >> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, >> } >> devfreq->max_freq = devfreq->scaling_max_freq; >> >> +devfreq->name = dev_name(devfreq->dev.parent); > > It seems that 'dev' can be used instead of 'devfreq->dev.parent'. devfreq->dev.parent is same with dev. it doesn't matter. > >> +if (IS_ERR_OR_NULL(devfreq->name)) > > Error values are not encoded into pointer returned by dev_name() > (drivers/base/ code is only checking for pointer being NULL). OK. I'll just check whether NULL or not. > >> +return -EINVAL; > > This leaks 'devfreq' object and doesn't encode return value into > pointer returned by devfreq_add_device(), it should be replaced by: Right. I'll fix it. > > err = -EINVAL; > goto err_dev; > >> dev_set_name(>dev, "devfreq%d", >> atomic_inc_return(_no)); >> err = device_register(>dev); > > Best regards, > -- > Bartlomiej Zolnierkiewicz > Samsung R Institute Poland > Samsung Electronics > > > -- Best Regards, Chanwoo Choi Samsung Electronics
Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
Hi Bartlomiej, On 2018년 08월 29일 21:50, Bartlomiej Zolnierkiewicz wrote: > > Hi Chanwoo, > > On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote: >> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") changed the node name to devfreq(x). After this commit, it is not >> possible to get the device name through /sys/class/devfreq/devfreq(X)/*. >> >> Add new name attribute in order to get device name. > > Could you please describe the issue encountered in more detail > (what the old device name is needed for)? You can check it on mail thread[1]. [1] https://lkml.org/lkml/2018/5/8/1042 > >> Cc: sta...@vger.kernel.org >> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") >> Signed-off-by: Chanwoo Choi >> --- >> drivers/devfreq/devfreq.c | 11 +++ >> include/linux/devfreq.h | 3 +++ >> 2 files changed, 14 insertions(+) >> >> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c >> index 4c49bb1330b5..2145563d5ee5 100644 >> --- a/drivers/devfreq/devfreq.c >> +++ b/drivers/devfreq/devfreq.c >> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, >> } >> devfreq->max_freq = devfreq->scaling_max_freq; >> >> +devfreq->name = dev_name(devfreq->dev.parent); > > It seems that 'dev' can be used instead of 'devfreq->dev.parent'. devfreq->dev.parent is same with dev. it doesn't matter. > >> +if (IS_ERR_OR_NULL(devfreq->name)) > > Error values are not encoded into pointer returned by dev_name() > (drivers/base/ code is only checking for pointer being NULL). OK. I'll just check whether NULL or not. > >> +return -EINVAL; > > This leaks 'devfreq' object and doesn't encode return value into > pointer returned by devfreq_add_device(), it should be replaced by: Right. I'll fix it. > > err = -EINVAL; > goto err_dev; > >> dev_set_name(>dev, "devfreq%d", >> atomic_inc_return(_no)); >> err = device_register(>dev); > > Best regards, > -- > Bartlomiej Zolnierkiewicz > Samsung R Institute Poland > Samsung Electronics > > > -- Best Regards, Chanwoo Choi Samsung Electronics
Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
Dear Greg, On 2018년 08월 29일 19:57, Greg KH wrote: > On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote: >> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") changed the node name to devfreq(x). After this commit, it is not >> possible to get the device name through /sys/class/devfreq/devfreq(X)/*. >> >> Add new name attribute in order to get device name. >> >> Cc: sta...@vger.kernel.org >> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") >> Signed-off-by: Chanwoo Choi >> --- >> drivers/devfreq/devfreq.c | 11 +++ >> include/linux/devfreq.h | 3 +++ >> 2 files changed, 14 insertions(+) >> >> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c >> index 4c49bb1330b5..2145563d5ee5 100644 >> --- a/drivers/devfreq/devfreq.c >> +++ b/drivers/devfreq/devfreq.c >> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, >> } >> devfreq->max_freq = devfreq->scaling_max_freq; >> >> +devfreq->name = dev_name(devfreq->dev.parent); >> +if (IS_ERR_OR_NULL(devfreq->name)) >> +return -EINVAL; >> dev_set_name(>dev, "devfreq%d", >> atomic_inc_return(_no)); >> err = device_register(>dev); >> @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev, >> } >> static DEVICE_ATTR_RO(trans_stat); >> >> +static ssize_t name_show(struct device *dev, >> +struct device_attribute *attr, char *buf) >> +{ >> +return sprintf(buf, "%s\n", to_devfreq(dev)->name); >> +} >> +static DEVICE_ATTR_RO(name); > > You need a new Documentation/ABI/ entry for this. Thanks for comment. I'll. Best Regards, Chanwoo Choi Samsung Electronics
Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
Dear Greg, On 2018년 08월 29일 19:57, Greg KH wrote: > On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote: >> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") changed the node name to devfreq(x). After this commit, it is not >> possible to get the device name through /sys/class/devfreq/devfreq(X)/*. >> >> Add new name attribute in order to get device name. >> >> Cc: sta...@vger.kernel.org >> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for >> sysfs") >> Signed-off-by: Chanwoo Choi >> --- >> drivers/devfreq/devfreq.c | 11 +++ >> include/linux/devfreq.h | 3 +++ >> 2 files changed, 14 insertions(+) >> >> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c >> index 4c49bb1330b5..2145563d5ee5 100644 >> --- a/drivers/devfreq/devfreq.c >> +++ b/drivers/devfreq/devfreq.c >> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, >> } >> devfreq->max_freq = devfreq->scaling_max_freq; >> >> +devfreq->name = dev_name(devfreq->dev.parent); >> +if (IS_ERR_OR_NULL(devfreq->name)) >> +return -EINVAL; >> dev_set_name(>dev, "devfreq%d", >> atomic_inc_return(_no)); >> err = device_register(>dev); >> @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev, >> } >> static DEVICE_ATTR_RO(trans_stat); >> >> +static ssize_t name_show(struct device *dev, >> +struct device_attribute *attr, char *buf) >> +{ >> +return sprintf(buf, "%s\n", to_devfreq(dev)->name); >> +} >> +static DEVICE_ATTR_RO(name); > > You need a new Documentation/ABI/ entry for this. Thanks for comment. I'll. Best Regards, Chanwoo Choi Samsung Electronics
Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
Hi Chanwoo, On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote: > commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") changed the node name to devfreq(x). After this commit, it is not > possible to get the device name through /sys/class/devfreq/devfreq(X)/*. > > Add new name attribute in order to get device name. Could you please describe the issue encountered in more detail (what the old device name is needed for)? > Cc: sta...@vger.kernel.org > Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") > Signed-off-by: Chanwoo Choi > --- > drivers/devfreq/devfreq.c | 11 +++ > include/linux/devfreq.h | 3 +++ > 2 files changed, 14 insertions(+) > > diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c > index 4c49bb1330b5..2145563d5ee5 100644 > --- a/drivers/devfreq/devfreq.c > +++ b/drivers/devfreq/devfreq.c > @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, > } > devfreq->max_freq = devfreq->scaling_max_freq; > > + devfreq->name = dev_name(devfreq->dev.parent); It seems that 'dev' can be used instead of 'devfreq->dev.parent'. > + if (IS_ERR_OR_NULL(devfreq->name)) Error values are not encoded into pointer returned by dev_name() (drivers/base/ code is only checking for pointer being NULL). > + return -EINVAL; This leaks 'devfreq' object and doesn't encode return value into pointer returned by devfreq_add_device(), it should be replaced by: err = -EINVAL; goto err_dev; > dev_set_name(>dev, "devfreq%d", > atomic_inc_return(_no)); > err = device_register(>dev); Best regards, -- Bartlomiej Zolnierkiewicz Samsung R Institute Poland Samsung Electronics
Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
Hi Chanwoo, On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote: > commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") changed the node name to devfreq(x). After this commit, it is not > possible to get the device name through /sys/class/devfreq/devfreq(X)/*. > > Add new name attribute in order to get device name. Could you please describe the issue encountered in more detail (what the old device name is needed for)? > Cc: sta...@vger.kernel.org > Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") > Signed-off-by: Chanwoo Choi > --- > drivers/devfreq/devfreq.c | 11 +++ > include/linux/devfreq.h | 3 +++ > 2 files changed, 14 insertions(+) > > diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c > index 4c49bb1330b5..2145563d5ee5 100644 > --- a/drivers/devfreq/devfreq.c > +++ b/drivers/devfreq/devfreq.c > @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, > } > devfreq->max_freq = devfreq->scaling_max_freq; > > + devfreq->name = dev_name(devfreq->dev.parent); It seems that 'dev' can be used instead of 'devfreq->dev.parent'. > + if (IS_ERR_OR_NULL(devfreq->name)) Error values are not encoded into pointer returned by dev_name() (drivers/base/ code is only checking for pointer being NULL). > + return -EINVAL; This leaks 'devfreq' object and doesn't encode return value into pointer returned by devfreq_add_device(), it should be replaced by: err = -EINVAL; goto err_dev; > dev_set_name(>dev, "devfreq%d", > atomic_inc_return(_no)); > err = device_register(>dev); Best regards, -- Bartlomiej Zolnierkiewicz Samsung R Institute Poland Samsung Electronics
Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote: > commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") changed the node name to devfreq(x). After this commit, it is not > possible to get the device name through /sys/class/devfreq/devfreq(X)/*. > > Add new name attribute in order to get device name. > > Cc: sta...@vger.kernel.org > Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") > Signed-off-by: Chanwoo Choi > --- > drivers/devfreq/devfreq.c | 11 +++ > include/linux/devfreq.h | 3 +++ > 2 files changed, 14 insertions(+) > > diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c > index 4c49bb1330b5..2145563d5ee5 100644 > --- a/drivers/devfreq/devfreq.c > +++ b/drivers/devfreq/devfreq.c > @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, > } > devfreq->max_freq = devfreq->scaling_max_freq; > > + devfreq->name = dev_name(devfreq->dev.parent); > + if (IS_ERR_OR_NULL(devfreq->name)) > + return -EINVAL; > dev_set_name(>dev, "devfreq%d", > atomic_inc_return(_no)); > err = device_register(>dev); > @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev, > } > static DEVICE_ATTR_RO(trans_stat); > > +static ssize_t name_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + return sprintf(buf, "%s\n", to_devfreq(dev)->name); > +} > +static DEVICE_ATTR_RO(name); You need a new Documentation/ABI/ entry for this. thanks, greg k-h
Re: [PATCH] PM / devfreq: Add new name attribute for sysfs
On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote: > commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") changed the node name to devfreq(x). After this commit, it is not > possible to get the device name through /sys/class/devfreq/devfreq(X)/*. > > Add new name attribute in order to get device name. > > Cc: sta...@vger.kernel.org > Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for > sysfs") > Signed-off-by: Chanwoo Choi > --- > drivers/devfreq/devfreq.c | 11 +++ > include/linux/devfreq.h | 3 +++ > 2 files changed, 14 insertions(+) > > diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c > index 4c49bb1330b5..2145563d5ee5 100644 > --- a/drivers/devfreq/devfreq.c > +++ b/drivers/devfreq/devfreq.c > @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, > } > devfreq->max_freq = devfreq->scaling_max_freq; > > + devfreq->name = dev_name(devfreq->dev.parent); > + if (IS_ERR_OR_NULL(devfreq->name)) > + return -EINVAL; > dev_set_name(>dev, "devfreq%d", > atomic_inc_return(_no)); > err = device_register(>dev); > @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev, > } > static DEVICE_ATTR_RO(trans_stat); > > +static ssize_t name_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + return sprintf(buf, "%s\n", to_devfreq(dev)->name); > +} > +static DEVICE_ATTR_RO(name); You need a new Documentation/ABI/ entry for this. thanks, greg k-h
[PATCH] PM / devfreq: Add new name attribute for sysfs
commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for sysfs") changed the node name to devfreq(x). After this commit, it is not possible to get the device name through /sys/class/devfreq/devfreq(X)/*. Add new name attribute in order to get device name. Cc: sta...@vger.kernel.org Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for sysfs") Signed-off-by: Chanwoo Choi --- drivers/devfreq/devfreq.c | 11 +++ include/linux/devfreq.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index 4c49bb1330b5..2145563d5ee5 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, } devfreq->max_freq = devfreq->scaling_max_freq; + devfreq->name = dev_name(devfreq->dev.parent); + if (IS_ERR_OR_NULL(devfreq->name)) + return -EINVAL; dev_set_name(>dev, "devfreq%d", atomic_inc_return(_no)); err = device_register(>dev); @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev, } static DEVICE_ATTR_RO(trans_stat); +static ssize_t name_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sprintf(buf, "%s\n", to_devfreq(dev)->name); +} +static DEVICE_ATTR_RO(name); + static struct attribute *devfreq_attrs[] = { _attr_governor.attr, _attr_available_governors.attr, @@ -1271,6 +1281,7 @@ static ssize_t trans_stat_show(struct device *dev, _attr_min_freq.attr, _attr_max_freq.attr, _attr_trans_stat.attr, + _attr_name.attr, NULL, }; ATTRIBUTE_GROUPS(devfreq); diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index 3aae5b3af87c..f79b5a666102 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h @@ -111,6 +111,7 @@ struct devfreq_dev_profile { /** * struct devfreq - Device devfreq structure + * @name: name of the device * @node: list node - contains the devices with devfreq that have been * registered. * @lock: a mutex to protect accessing devfreq. @@ -146,6 +147,8 @@ struct devfreq_dev_profile { * to protect its own private data in void *data as well. */ struct devfreq { + const char *name; + struct list_head node; struct mutex lock; -- 1.9.1
[PATCH] PM / devfreq: Add new name attribute for sysfs
commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for sysfs") changed the node name to devfreq(x). After this commit, it is not possible to get the device name through /sys/class/devfreq/devfreq(X)/*. Add new name attribute in order to get device name. Cc: sta...@vger.kernel.org Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for sysfs") Signed-off-by: Chanwoo Choi --- drivers/devfreq/devfreq.c | 11 +++ include/linux/devfreq.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index 4c49bb1330b5..2145563d5ee5 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev, } devfreq->max_freq = devfreq->scaling_max_freq; + devfreq->name = dev_name(devfreq->dev.parent); + if (IS_ERR_OR_NULL(devfreq->name)) + return -EINVAL; dev_set_name(>dev, "devfreq%d", atomic_inc_return(_no)); err = device_register(>dev); @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev, } static DEVICE_ATTR_RO(trans_stat); +static ssize_t name_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sprintf(buf, "%s\n", to_devfreq(dev)->name); +} +static DEVICE_ATTR_RO(name); + static struct attribute *devfreq_attrs[] = { _attr_governor.attr, _attr_available_governors.attr, @@ -1271,6 +1281,7 @@ static ssize_t trans_stat_show(struct device *dev, _attr_min_freq.attr, _attr_max_freq.attr, _attr_trans_stat.attr, + _attr_name.attr, NULL, }; ATTRIBUTE_GROUPS(devfreq); diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index 3aae5b3af87c..f79b5a666102 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h @@ -111,6 +111,7 @@ struct devfreq_dev_profile { /** * struct devfreq - Device devfreq structure + * @name: name of the device * @node: list node - contains the devices with devfreq that have been * registered. * @lock: a mutex to protect accessing devfreq. @@ -146,6 +147,8 @@ struct devfreq_dev_profile { * to protect its own private data in void *data as well. */ struct devfreq { + const char *name; + struct list_head node; struct mutex lock; -- 1.9.1