All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-02-20 15:07   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

Hello !

These patches rework the ibmpowernv driver to support the new device 
tree as proposed by this patchset on the skiboot mailing list :

  https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html

They are based on Linux 3.19 and were tested on IBM Power and Open Power 
systems running trusty.

The main issue is that the new device tree is incompatible with the 
previous ibmpowernv drivers. The consequence is no powernv sensors 
on systems with such a opal/linux configuration.

Cheers,

C.


Cédric Le Goater (3):
  powerpc/powernv: Check OPAL sensor calls exist
  powerpc/powernv: handle OPAL_SUCCESS return in opal_sensor_read
  hwmon: (ibmpowernv) add DTS support

 arch/powerpc/platforms/powernv/opal-sensor.c |   32 ++-
 drivers/hwmon/ibmpowernv.c                   |  336 ++++++++++++++------------
 2 files changed, 202 insertions(+), 166 deletions(-)

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-20 15:07   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

SGVsbG8gIQoKVGhlc2UgcGF0Y2hlcyByZXdvcmsgdGhlIGlibXBvd2VybnYgZHJpdmVyIHRvIHN1
cHBvcnQgdGhlIG5ldyBkZXZpY2UgCnRyZWUgYXMgcHJvcG9zZWQgYnkgdGhpcyBwYXRjaHNldCBv
biB0aGUgc2tpYm9vdCBtYWlsaW5nIGxpc3QgOgoKICBodHRwczovL2xpc3RzLm96bGFicy5vcmcv
cGlwZXJtYWlsL3NraWJvb3QvMjAxNS1GZWJydWFyeS8wMDA0NTcuaHRtbAoKVGhleSBhcmUgYmFz
ZWQgb24gTGludXggMy4xOSBhbmQgd2VyZSB0ZXN0ZWQgb24gSUJNIFBvd2VyIGFuZCBPcGVuIFBv
d2VyIApzeXN0ZW1zIHJ1bm5pbmcgdHJ1c3R5LgoKVGhlIG1haW4gaXNzdWUgaXMgdGhhdCB0aGUg
bmV3IGRldmljZSB0cmVlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSAKcHJldmlvdXMgaWJtcG93
ZXJudiBkcml2ZXJzLiBUaGUgY29uc2VxdWVuY2UgaXMgbm8gcG93ZXJudiBzZW5zb3JzIApvbiBz
eXN0ZW1zIHdpdGggc3VjaCBhIG9wYWwvbGludXggY29uZmlndXJhdGlvbi4KCkNoZWVycywKCkMu
CgoKQ8OpZHJpYyBMZSBHb2F0ZXIgKDMpOgogIHBvd2VycGMvcG93ZXJudjogQ2hlY2sgT1BBTCBz
ZW5zb3IgY2FsbHMgZXhpc3QKICBwb3dlcnBjL3Bvd2VybnY6IGhhbmRsZSBPUEFMX1NVQ0NFU1Mg
cmV0dXJuIGluIG9wYWxfc2Vuc29yX3JlYWQKICBod21vbjogKGlibXBvd2VybnYpIGFkZCBEVFMg
c3VwcG9ydAoKIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLXNlbnNvci5jIHwg
ICAzMiArKy0KIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jICAgICAgICAgICAgICAgICAgIHwg
IDMzNiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5z
ZXJ0aW9ucygrKSwgMTY2IGRlbGV0aW9ucygtKQoKLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxp
c3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcv
bWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-02-20 15:07   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 arch/powerpc/platforms/powernv/opal-sensor.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
index 4ab67ef7abc9..544292f2020f 100644
--- a/arch/powerpc/platforms/powernv/opal-sensor.c
+++ b/arch/powerpc/platforms/powernv/opal-sensor.c
@@ -72,6 +72,9 @@ static __init int opal_sensor_init(void)
 	struct platform_device *pdev;
 	struct device_node *sensor;
 
+	if (!opal_check_token(OPAL_SENSOR_READ))
+		return -ENODEV;
+
 	sensor = of_find_node_by_path("/ibm,opal/sensors");
 	if (!sensor) {
 		pr_err("Opal node 'sensors' not found\n");
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
@ 2015-02-20 15:07   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

U2lnbmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0Bmci5pYm0uY29tPgotLS0KIGFy
Y2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLXNlbnNvci5jIHwgICAgMyArKysKIDEg
ZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMv
cGxhdGZvcm1zL3Bvd2VybnYvb3BhbC1zZW5zb3IuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMv
cG93ZXJudi9vcGFsLXNlbnNvci5jCmluZGV4IDRhYjY3ZWY3YWJjOS4uNTQ0MjkyZjIwMjBmIDEw
MDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvb3BhbC1zZW5zb3IuYwor
KysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvb3BhbC1zZW5zb3IuYwpAQCAtNzIs
NiArNzIsOSBAQCBzdGF0aWMgX19pbml0IGludCBvcGFsX3NlbnNvcl9pbml0KHZvaWQpCiAJc3Ry
dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKnNlbnNvcjsK
IAorCWlmICghb3BhbF9jaGVja190b2tlbihPUEFMX1NFTlNPUl9SRUFEKSkKKwkJcmV0dXJuIC1F
Tk9ERVY7CisKIAlzZW5zb3IgPSBvZl9maW5kX25vZGVfYnlfcGF0aCgiL2libSxvcGFsL3NlbnNv
cnMiKTsKIAlpZiAoIXNlbnNvcikgewogCQlwcl9lcnIoIk9wYWwgbm9kZSAnc2Vuc29ycycgbm90
IGZvdW5kXG4iKTsKLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1z
ZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9s
bS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [RFC PATCH 2/3] powerpc/powernv: handle OPAL_SUCCESS return in opal_sensor_read
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-02-20 15:07   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

Currently, when a sensor value is read, the kernel calls OPAL, which in
turn builds a message for the FSP, and waits for a message back. However,
some sensors can be read synchronously (core temperatures for instance)
and don't need to wait for a response.

This patch modifies the opal call to accept an OPAL_SUCCESS return value
and not wait for a response if this is the case.

But, we still uselessly reserve a token (for the response) and take a
lock, which might raise the need of a new 'opal_sensor_read_sync' call.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 arch/powerpc/platforms/powernv/opal-sensor.c |   29 +++++++++++++++++---------
 1 file changed, 19 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
index 544292f2020f..a4ed83a7dfb4 100644
--- a/arch/powerpc/platforms/powernv/opal-sensor.c
+++ b/arch/powerpc/platforms/powernv/opal-sensor.c
@@ -46,18 +46,27 @@ int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data)
 
 	mutex_lock(&opal_sensor_mutex);
 	ret = opal_sensor_read(sensor_hndl, token, &data);
-	if (ret != OPAL_ASYNC_COMPLETION)
-		goto out_token;
+	switch (ret) {
+	case OPAL_ASYNC_COMPLETION:
+		ret = opal_async_wait_response(token, &msg);
+		if (ret) {
+			pr_err("%s: Failed to wait for the async response, %d\n",
+			       __func__, ret);
+			goto out_token;
+		}
 
-	ret = opal_async_wait_response(token, &msg);
-	if (ret) {
-		pr_err("%s: Failed to wait for the async response, %d\n",
-				__func__, ret);
-		goto out_token;
-	}
+		ret = be64_to_cpu(msg.params[1]);
+
+		*sensor_data = be32_to_cpu(data);
+		break;
 
-	*sensor_data = be32_to_cpu(data);
-	ret = be64_to_cpu(msg.params[1]);
+	case OPAL_SUCCESS:
+		*sensor_data = be32_to_cpu(data);
+		break;
+
+	default:
+		break;
+	}
 
 out_token:
 	mutex_unlock(&opal_sensor_mutex);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [RFC PATCH 2/3] powerpc/powernv: handle OPAL_SUCCESS return in opal_sensor_read
@ 2015-02-20 15:07   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

Q3VycmVudGx5LCB3aGVuIGEgc2Vuc29yIHZhbHVlIGlzIHJlYWQsIHRoZSBrZXJuZWwgY2FsbHMg
T1BBTCwgd2hpY2ggaW4KdHVybiBidWlsZHMgYSBtZXNzYWdlIGZvciB0aGUgRlNQLCBhbmQgd2Fp
dHMgZm9yIGEgbWVzc2FnZSBiYWNrLiBIb3dldmVyLApzb21lIHNlbnNvcnMgY2FuIGJlIHJlYWQg
c3luY2hyb25vdXNseSAoY29yZSB0ZW1wZXJhdHVyZXMgZm9yIGluc3RhbmNlKQphbmQgZG9uJ3Qg
bmVlZCB0byB3YWl0IGZvciBhIHJlc3BvbnNlLgoKVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgb3Bh
bCBjYWxsIHRvIGFjY2VwdCBhbiBPUEFMX1NVQ0NFU1MgcmV0dXJuIHZhbHVlCmFuZCBub3Qgd2Fp
dCBmb3IgYSByZXNwb25zZSBpZiB0aGlzIGlzIHRoZSBjYXNlLgoKQnV0LCB3ZSBzdGlsbCB1c2Vs
ZXNzbHkgcmVzZXJ2ZSBhIHRva2VuIChmb3IgdGhlIHJlc3BvbnNlKSBhbmQgdGFrZSBhCmxvY2ss
IHdoaWNoIG1pZ2h0IHJhaXNlIHRoZSBuZWVkIG9mIGEgbmV3ICdvcGFsX3NlbnNvcl9yZWFkX3N5
bmMnIGNhbGwuCgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGZyLmlibS5j
b20+Ci0tLQogYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L29wYWwtc2Vuc29yLmMgfCAg
IDI5ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0
aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRm
b3Jtcy9wb3dlcm52L29wYWwtc2Vuc29yLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2Vy
bnYvb3BhbC1zZW5zb3IuYwppbmRleCA1NDQyOTJmMjAyMGYuLmE0ZWQ4M2E3ZGZiNCAxMDA2NDQK
LS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L29wYWwtc2Vuc29yLmMKKysrIGIv
YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L29wYWwtc2Vuc29yLmMKQEAgLTQ2LDE4ICs0
NiwyNyBAQCBpbnQgb3BhbF9nZXRfc2Vuc29yX2RhdGEodTMyIHNlbnNvcl9obmRsLCB1MzIgKnNl
bnNvcl9kYXRhKQogCiAJbXV0ZXhfbG9jaygmb3BhbF9zZW5zb3JfbXV0ZXgpOwogCXJldCA9IG9w
YWxfc2Vuc29yX3JlYWQoc2Vuc29yX2huZGwsIHRva2VuLCAmZGF0YSk7Ci0JaWYgKHJldCAhPSBP
UEFMX0FTWU5DX0NPTVBMRVRJT04pCi0JCWdvdG8gb3V0X3Rva2VuOworCXN3aXRjaCAocmV0KSB7
CisJY2FzZSBPUEFMX0FTWU5DX0NPTVBMRVRJT046CisJCXJldCA9IG9wYWxfYXN5bmNfd2FpdF9y
ZXNwb25zZSh0b2tlbiwgJm1zZyk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiJXM6IEZhaWxl
ZCB0byB3YWl0IGZvciB0aGUgYXN5bmMgcmVzcG9uc2UsICVkXG4iLAorCQkJICAgICAgIF9fZnVu
Y19fLCByZXQpOworCQkJZ290byBvdXRfdG9rZW47CisJCX0KIAotCXJldCA9IG9wYWxfYXN5bmNf
d2FpdF9yZXNwb25zZSh0b2tlbiwgJm1zZyk7Ci0JaWYgKHJldCkgewotCQlwcl9lcnIoIiVzOiBG
YWlsZWQgdG8gd2FpdCBmb3IgdGhlIGFzeW5jIHJlc3BvbnNlLCAlZFxuIiwKLQkJCQlfX2Z1bmNf
XywgcmV0KTsKLQkJZ290byBvdXRfdG9rZW47Ci0JfQorCQlyZXQgPSBiZTY0X3RvX2NwdShtc2cu
cGFyYW1zWzFdKTsKKworCQkqc2Vuc29yX2RhdGEgPSBiZTMyX3RvX2NwdShkYXRhKTsKKwkJYnJl
YWs7CiAKLQkqc2Vuc29yX2RhdGEgPSBiZTMyX3RvX2NwdShkYXRhKTsKLQlyZXQgPSBiZTY0X3Rv
X2NwdShtc2cucGFyYW1zWzFdKTsKKwljYXNlIE9QQUxfU1VDQ0VTUzoKKwkJKnNlbnNvcl9kYXRh
ID0gYmUzMl90b19jcHUoZGF0YSk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJYnJlYWs7CisJ
fQogCiBvdXRfdG9rZW46CiAJbXV0ZXhfdW5sb2NrKCZvcGFsX3NlbnNvcl9tdXRleCk7Ci0tIAox
LjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDov
L2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [RFC PATCH 3/3] hwmon: (ibmpowernv) add DTS support
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-02-20 15:07   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

This patch reworks the ibmpowernv driver to support the new device tree
for sensors exposed by OPAL. It also adds new sensors : the core and
memory buffers DTS.

Hopefully, the proposed framework is good enough to easily add sensors
for other resources such as volts, planar temperatures, etc.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |  336 ++++++++++++++++++++++++--------------------
 1 file changed, 180 insertions(+), 156 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index febe8175d36c..9a6ee33f8219 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -32,247 +32,276 @@
 #include <linux/err.h>
 
 #define MAX_ATTR_LEN	32
-
-/* Sensor suffix name from DT */
-#define DT_FAULT_ATTR_SUFFIX		"faulted"
-#define DT_DATA_ATTR_SUFFIX		"data"
-#define DT_THRESHOLD_ATTR_SUFFIX	"thrs"
+#define MAX_LABEL_LEN	64
+#define MAX_ATTRS	3	/* sensor-data, sensor-status, label */
 
 /*
  * Enumerates all the types of sensors in the POWERNV platform and does index
- * into 'struct sensor_group'
+ * into 'struct sensor_type'
  */
 enum sensors {
 	FAN,
-	AMBIENT_TEMP,
+	TEMP,
 	POWER_SUPPLY,
 	POWER_INPUT,
 	MAX_SENSOR_TYPE,
 };
 
-static struct sensor_group {
+static struct sensor_type {
+	enum sensors type;
 	const char *name;
-	const char *compatible;
-	struct attribute_group group;
-	u32 attr_count;
-} sensor_groups[] = {
-	{"fan", "ibm,opal-sensor-cooling-fan"},
-	{"temp", "ibm,opal-sensor-amb-temp"},
-	{"in", "ibm,opal-sensor-power-supply"},
-	{"power", "ibm,opal-sensor-power"}
+	u32 count;
+} sensor_types[] = {
+	{ FAN,			"fan"	},
+	{ TEMP,			"temp"	},
+	{ POWER_SUPPLY,		"power"	},
+	{ POWER_INPUT,		"in"	},
+	{ MAX_SENSOR_TYPE,	NULL	}
 };
 
 struct sensor_data {
-	u32 id; /* An opaque id of the firmware for each sensor */
+	u32 data;
+	u32 status;
+	char label[MAX_LABEL_LEN];
 	enum sensors type;
-	char name[MAX_ATTR_LEN];
-	struct device_attribute dev_attr;
+	char attr_name[MAX_ATTRS][MAX_ATTR_LEN];
+	struct sensor_device_attribute sd_attrs[MAX_ATTRS];
 };
 
 struct platform_data {
-	const struct attribute_group *attr_groups[MAX_SENSOR_TYPE + 1];
+	struct attribute_group attr_group;
+	const struct attribute_group *groups[2];
 	u32 sensors_count; /* Total count of sensors from each group */
+	struct attribute **attrs;
+	struct sensor_data **sensors;
 };
 
 static ssize_t show_sensor(struct device *dev, struct device_attribute *devattr,
 			   char *buf)
 {
-	struct sensor_data *sdata = container_of(devattr, struct sensor_data,
-						 dev_attr);
+	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+	struct platform_data *pdata = dev_get_drvdata(dev);
+	struct sensor_data *sdata = pdata->sensors[attr->index];
 	ssize_t ret;
 	u32 x;
 
-	ret = opal_get_sensor_data(sdata->id, &x);
+	ret = opal_get_sensor_data(sdata->data, &x);
 	if (ret)
 		return ret;
 
 	/* Convert temperature to milli-degrees */
-	if (sdata->type == AMBIENT_TEMP)
+	if (sdata->type == TEMP)
 		x *= 1000;
 	/* Convert power to micro-watts */
-	else if (sdata->type == POWER_INPUT)
+	else if (sdata->type == POWER_SUPPLY)
 		x *= 1000000;
 
 	return sprintf(buf, "%u\n", x);
 }
 
-static int get_sensor_index_attr(const char *name, u32 *index,
-					char *attr)
+static ssize_t show_alarm(struct device *dev, struct device_attribute *devattr,
+			   char *buf)
 {
-	char *hash_pos = strchr(name, '#');
-	char buf[8] = { 0 };
-	char *dash_pos;
-	u32 copy_len;
-	int err;
-
-	if (!hash_pos)
-		return -EINVAL;
-
-	dash_pos = strchr(hash_pos, '-');
-	if (!dash_pos)
-		return -EINVAL;
-
-	copy_len = dash_pos - hash_pos - 1;
-	if (copy_len >= sizeof(buf))
-		return -EINVAL;
+	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+	struct platform_data *pdata = dev_get_drvdata(dev);
+	struct sensor_data *sdata = pdata->sensors[attr->index];
+	ssize_t ret;
+	u32 x;
 
-	strncpy(buf, hash_pos + 1, copy_len);
+	ret = opal_get_sensor_data(sdata->status, &x);
+	if (ret)
+		return ret;
 
-	err = kstrtou32(buf, 10, index);
-	if (err)
-		return err;
+	/*
+	 * Depending on the sensor type, the status bits can have
+	 * different meanings. Let's not be too subtil for the moment,
+	 * testing against 0x6 should raise an alarm.
+	 */
+	return sprintf(buf, "%u\n", x & 0x6);
+}
 
-	strncpy(attr, dash_pos + 1, MAX_ATTR_LEN);
+static ssize_t show_label(struct device *dev, struct device_attribute *devattr,
+			   char *buf)
+{
+	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+	struct platform_data *pdata = dev_get_drvdata(dev);
+	struct sensor_data *sdata = pdata->sensors[attr->index];
 
-	return 0;
+	return sprintf(buf, "%s\n", sdata->label);
 }
 
-/*
- * This function translates the DT node name into the 'hwmon' attribute name.
- * IBMPOWERNV device node appear like cooling-fan#2-data, amb-temp#1-thrs etc.
- * which need to be mapped as fan2_input, temp1_max respectively before
- * populating them inside hwmon device class.
- */
-static int create_hwmon_attr_name(struct device *dev, enum sensors type,
-					 const char *node_name,
-					 char *hwmon_attr_name)
+static struct sensor_type *__init get_sensor_type(struct platform_device *pdev,
+	struct device_node *np)
 {
-	char attr_suffix[MAX_ATTR_LEN];
-	char *attr_name;
-	u32 index;
-	int err;
+	const char *type;
+	int i;
 
-	err = get_sensor_index_attr(node_name, &index, attr_suffix);
-	if (err) {
-		dev_err(dev, "Sensor device node name '%s' is invalid\n",
-			node_name);
-		return err;
-	}
+	if (np->name == NULL)
+		return NULL;
+
+	if (!of_device_is_compatible(np, "ibm,opal-sensor"))
+		return NULL;
 
-	if (!strcmp(attr_suffix, DT_FAULT_ATTR_SUFFIX)) {
-		attr_name = "fault";
-	} else if (!strcmp(attr_suffix, DT_DATA_ATTR_SUFFIX)) {
-		attr_name = "input";
-	} else if (!strcmp(attr_suffix, DT_THRESHOLD_ATTR_SUFFIX)) {
-		if (type == AMBIENT_TEMP)
-			attr_name = "max";
-		else if (type == FAN)
-			attr_name = "min";
-		else
-			return -ENOENT;
-	} else {
-		return -ENOENT;
+	if (of_property_read_string(np, "sensor-type", &type)) {
+		dev_info(&pdev->dev,
+			 "'sensor-type' missing in the node '%s'\n",
+			 np->name);
+		return NULL;
 	}
 
-	snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
-		 sensor_groups[type].name, index, attr_name);
-	return 0;
+	for (i = 0 ; i < MAX_SENSOR_TYPE; i++)
+		if (!strcmp(type, sensor_types[i].name))
+			return &sensor_types[i];
+
+	return NULL;
 }
 
-static int populate_attr_groups(struct platform_device *pdev)
+static void __init make_sensor_label(struct device_node *np,
+		    struct sensor_data *sdata, const char *label)
 {
-	struct platform_data *pdata = platform_get_drvdata(pdev);
-	const struct attribute_group **pgroups = pdata->attr_groups;
-	struct device_node *opal, *np;
-	enum sensors type;
+	u32 id;
+	size_t n;
 
-	opal = of_find_node_by_path("/ibm,opal/sensors");
-	for_each_child_of_node(opal, np) {
-		if (np->name == NULL)
-			continue;
+	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
 
-		for (type = 0; type < MAX_SENSOR_TYPE; type++)
-			if (of_device_is_compatible(np,
-					sensor_groups[type].compatible)) {
-				sensor_groups[type].attr_count++;
-				break;
-			}
-	}
+	/*
+	 * Core temp pretty pretty
+	 */
+	if (!of_property_read_u32(np, "ibm,pir", &id)) {
+		int i;
 
-	of_node_put(opal);
+		for_each_possible_cpu(i)
+			if (paca[i].hw_cpu_id == id)
+				break;
 
-	for (type = 0; type < MAX_SENSOR_TYPE; type++) {
-		sensor_groups[type].group.attrs = devm_kzalloc(&pdev->dev,
-					sizeof(struct attribute *) *
-					(sensor_groups[type].attr_count + 1),
-					GFP_KERNEL);
-		if (!sensor_groups[type].group.attrs)
-			return -ENOMEM;
-
-		pgroups[type] = &sensor_groups[type].group;
-		pdata->sensors_count += sensor_groups[type].attr_count;
-		sensor_groups[type].attr_count = 0;
+		n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
+			      " %d-%d", i, i+7);
 	}
 
-	return 0;
+	/*
+	 * Membuffer pretty print
+	 */
+	if (!of_property_read_u32(np, "ibm,chip-id", &id))
+		n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
+			      " %d", id & 0xffff);
 }
 
-/*
- * Iterate through the device tree for each child of 'sensors' node, create
- * a sysfs attribute file, the file is named by translating the DT node name
- * to the name required by the higher 'hwmon' driver like fan1_input, temp1_max
- * etc..
- */
-static int create_device_attrs(struct platform_device *pdev)
+static int __init populate_attr_groups(struct platform_device *pdev)
 {
 	struct platform_data *pdata = platform_get_drvdata(pdev);
-	const struct attribute_group **pgroups = pdata->attr_groups;
 	struct device_node *opal, *np;
-	struct sensor_data *sdata;
-	u32 sensor_id;
-	enum sensors type;
-	u32 count = 0;
 	int err = 0;
+	int i = 0;
 
 	opal = of_find_node_by_path("/ibm,opal/sensors");
-	sdata = devm_kzalloc(&pdev->dev, pdata->sensors_count * sizeof(*sdata),
-			     GFP_KERNEL);
-	if (!sdata) {
+	if (!opal) {
+		dev_dbg(&pdev->dev, "Opal node 'sensors' not found\n");
+		return -ENODEV;
+	}
+
+	for_each_child_of_node(opal, np) {
+		if (of_device_is_compatible(np, "ibm,opal-sensor"))
+			pdata->sensors_count++;
+	}
+
+	pdata->attrs = devm_kzalloc(&pdev->dev,
+	    sizeof(*pdata->attrs) * pdata->sensors_count * MAX_ATTRS + 1,
+	    GFP_KERNEL);
+	if (!pdata->attrs) {
+		err = -ENOMEM;
+		goto exit_put_node;
+	}
+	pdata->sensors = devm_kzalloc(&pdev->dev,
+	    sizeof(*pdata->sensors) * pdata->sensors_count * MAX_ATTRS + 1,
+	    GFP_KERNEL);
+	if (!pdata->sensors) {
 		err = -ENOMEM;
 		goto exit_put_node;
 	}
 
-	for_each_child_of_node(opal, np) {
-		if (np->name == NULL)
-			continue;
 
-		for (type = 0; type < MAX_SENSOR_TYPE; type++)
-			if (of_device_is_compatible(np,
-					sensor_groups[type].compatible))
-				break;
+	for_each_child_of_node(opal, np) {
+		struct sensor_data *sdata;
+		struct sensor_type *stype;
+		u32 sensor_data;
+		const char *label;
 
-		if (type == MAX_SENSOR_TYPE)
+		stype = get_sensor_type(pdev, np);
+		if (!stype)
 			continue;
 
-		if (of_property_read_u32(np, "sensor-id", &sensor_id)) {
+		if (of_property_read_u32(np, "sensor-data", &sensor_data)) {
 			dev_info(&pdev->dev,
-				 "'sensor-id' missing in the node '%s'\n",
+				 "'sensor-data' missing in the node '%s'\n",
 				 np->name);
 			continue;
 		}
 
-		sdata[count].id = sensor_id;
-		sdata[count].type = type;
-		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
-					     sdata[count].name);
-		if (err)
+		sdata = devm_kzalloc(&pdev->dev, sizeof(*sdata), GFP_KERNEL);
+		if (sdata == NULL) {
+			err = -ENOMEM;
 			goto exit_put_node;
+		}
+
+		stype->count++;
+		sdata->data = sensor_data;
+		sdata->type = stype->type;
+
+		snprintf(sdata->attr_name[0], MAX_ATTR_LEN, "%s%d_input",
+			 stype->name, stype->count);
+
+		sysfs_attr_init(&sdata->sd_attrs[0].dev_attr.attr);
+		sdata->sd_attrs[0].dev_attr.attr.name = sdata->attr_name[0];
+		sdata->sd_attrs[0].dev_attr.attr.mode = S_IRUGO;
+		sdata->sd_attrs[0].dev_attr.show = show_sensor;
+		sdata->sd_attrs[0].index = i;
+
+		pdata->attrs[i] = &sdata->sd_attrs[0].dev_attr.attr;
+		pdata->sensors[i++] = sdata;
+
+		if (!of_property_read_u32(np, "sensor-status",
+					  &sdata->status)) {
+			snprintf(sdata->attr_name[1], MAX_ATTR_LEN,
+				 "%s%d_alarm", stype->name, stype->count);
+
+			sysfs_attr_init(&sdata->sd_attrs[1].dev_attr.attr);
+			sdata->sd_attrs[1].dev_attr.attr.name =
+				sdata->attr_name[1];
+			sdata->sd_attrs[1].dev_attr.attr.mode = S_IRUGO;
+			sdata->sd_attrs[1].dev_attr.show = show_alarm;
+			sdata->sd_attrs[1].index = i;
+
+			pdata->attrs[i] = &sdata->sd_attrs[1].dev_attr.attr;
+			pdata->sensors[i++] = sdata;
+		}
+
+		if (!of_property_read_string(np, "label", &label)) {
+			snprintf(sdata->attr_name[2], MAX_ATTR_LEN,
+				 "%s%d_label", stype->name, stype->count);
 
-		sysfs_attr_init(&sdata[count].dev_attr.attr);
-		sdata[count].dev_attr.attr.name = sdata[count].name;
-		sdata[count].dev_attr.attr.mode = S_IRUGO;
-		sdata[count].dev_attr.show = show_sensor;
+			make_sensor_label(np, sdata, label);
 
-		pgroups[type]->attrs[sensor_groups[type].attr_count++] =
-				&sdata[count++].dev_attr.attr;
+			sysfs_attr_init(&sdata->sd_attrs[2].dev_attr.attr);
+			sdata->sd_attrs[2].dev_attr.attr.name =
+				sdata->attr_name[2];
+			sdata->sd_attrs[2].dev_attr.attr.mode = S_IRUGO;
+			sdata->sd_attrs[2].dev_attr.show = show_label;
+			sdata->sd_attrs[2].index = i;
+
+			pdata->attrs[i] = &sdata->sd_attrs[2].dev_attr.attr;
+			pdata->sensors[i++] = sdata;
+		}
 	}
 
+	pdata->attr_group.attrs = pdata->attrs;
+	pdata->groups[0] = &pdata->attr_group;
+
 exit_put_node:
 	of_node_put(opal);
 	return err;
 }
 
-static int ibmpowernv_probe(struct platform_device *pdev)
+static int __init ibmpowernv_probe(struct platform_device *pdev)
 {
 	struct platform_data *pdata;
 	struct device *hwmon_dev;
@@ -288,15 +317,10 @@ static int ibmpowernv_probe(struct platform_device *pdev)
 	if (err)
 		return err;
 
-	/* Create sysfs attribute data for each sensor found in the DT */
-	err = create_device_attrs(pdev);
-	if (err)
-		return err;
-
 	/* Finally, register with hwmon */
 	hwmon_dev = devm_hwmon_device_register_with_groups(&pdev->dev, DRVNAME,
 							   pdata,
-							   pdata->attr_groups);
+							   pdata->groups);
 
 	return PTR_ERR_OR_ZERO(hwmon_dev);
 }
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [RFC PATCH 3/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-20 15:07   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-02-20 15:07 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stewart Smith, lm-sensors, Cédric Le Goater, Guenter Roeck,
	Neelesh Gupta, skiboot, Jean Delvare

VGhpcyBwYXRjaCByZXdvcmtzIHRoZSBpYm1wb3dlcm52IGRyaXZlciB0byBzdXBwb3J0IHRoZSBu
ZXcgZGV2aWNlIHRyZWUKZm9yIHNlbnNvcnMgZXhwb3NlZCBieSBPUEFMLiBJdCBhbHNvIGFkZHMg
bmV3IHNlbnNvcnMgOiB0aGUgY29yZSBhbmQKbWVtb3J5IGJ1ZmZlcnMgRFRTLgoKSG9wZWZ1bGx5
LCB0aGUgcHJvcG9zZWQgZnJhbWV3b3JrIGlzIGdvb2QgZW5vdWdoIHRvIGVhc2lseSBhZGQgc2Vu
c29ycwpmb3Igb3RoZXIgcmVzb3VyY2VzIHN1Y2ggYXMgdm9sdHMsIHBsYW5hciB0ZW1wZXJhdHVy
ZXMsIGV0Yy4KClNpZ25lZC1vZmYtYnk6IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAZnIuaWJtLmNv
bT4KLS0tCiBkcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYyB8ICAzMzYgKysrKysrKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxODAgaW5zZXJ0
aW9ucygrKSwgMTU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vaWJt
cG93ZXJudi5jIGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKaW5kZXggZmViZTgxNzVkMzZj
Li45YTZlZTMzZjgyMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCisr
KyBiL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCkBAIC0zMiwyNDcgKzMyLDI3NiBAQAogI2lu
Y2x1ZGUgPGxpbnV4L2Vyci5oPgogCiAjZGVmaW5lIE1BWF9BVFRSX0xFTgkzMgotCi0vKiBTZW5z
b3Igc3VmZml4IG5hbWUgZnJvbSBEVCAqLwotI2RlZmluZSBEVF9GQVVMVF9BVFRSX1NVRkZJWAkJ
ImZhdWx0ZWQiCi0jZGVmaW5lIERUX0RBVEFfQVRUUl9TVUZGSVgJCSJkYXRhIgotI2RlZmluZSBE
VF9USFJFU0hPTERfQVRUUl9TVUZGSVgJInRocnMiCisjZGVmaW5lIE1BWF9MQUJFTF9MRU4JNjQK
KyNkZWZpbmUgTUFYX0FUVFJTCTMJLyogc2Vuc29yLWRhdGEsIHNlbnNvci1zdGF0dXMsIGxhYmVs
ICovCiAKIC8qCiAgKiBFbnVtZXJhdGVzIGFsbCB0aGUgdHlwZXMgb2Ygc2Vuc29ycyBpbiB0aGUg
UE9XRVJOViBwbGF0Zm9ybSBhbmQgZG9lcyBpbmRleAotICogaW50byAnc3RydWN0IHNlbnNvcl9n
cm91cCcKKyAqIGludG8gJ3N0cnVjdCBzZW5zb3JfdHlwZScKICAqLwogZW51bSBzZW5zb3JzIHsK
IAlGQU4sCi0JQU1CSUVOVF9URU1QLAorCVRFTVAsCiAJUE9XRVJfU1VQUExZLAogCVBPV0VSX0lO
UFVULAogCU1BWF9TRU5TT1JfVFlQRSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2dyb3Vw
IHsKK3N0YXRpYyBzdHJ1Y3Qgc2Vuc29yX3R5cGUgeworCWVudW0gc2Vuc29ycyB0eXBlOwogCWNv
bnN0IGNoYXIgKm5hbWU7Ci0JY29uc3QgY2hhciAqY29tcGF0aWJsZTsKLQlzdHJ1Y3QgYXR0cmli
dXRlX2dyb3VwIGdyb3VwOwotCXUzMiBhdHRyX2NvdW50OwotfSBzZW5zb3JfZ3JvdXBzW10gPSB7
Ci0JeyJmYW4iLCAiaWJtLG9wYWwtc2Vuc29yLWNvb2xpbmctZmFuIn0sCi0JeyJ0ZW1wIiwgImli
bSxvcGFsLXNlbnNvci1hbWItdGVtcCJ9LAotCXsiaW4iLCAiaWJtLG9wYWwtc2Vuc29yLXBvd2Vy
LXN1cHBseSJ9LAotCXsicG93ZXIiLCAiaWJtLG9wYWwtc2Vuc29yLXBvd2VyIn0KKwl1MzIgY291
bnQ7Cit9IHNlbnNvcl90eXBlc1tdID0geworCXsgRkFOLAkJCSJmYW4iCX0sCisJeyBURU1QLAkJ
CSJ0ZW1wIgl9LAorCXsgUE9XRVJfU1VQUExZLAkJInBvd2VyIgl9LAorCXsgUE9XRVJfSU5QVVQs
CQkiaW4iCX0sCisJeyBNQVhfU0VOU09SX1RZUEUsCU5VTEwJfQogfTsKIAogc3RydWN0IHNlbnNv
cl9kYXRhIHsKLQl1MzIgaWQ7IC8qIEFuIG9wYXF1ZSBpZCBvZiB0aGUgZmlybXdhcmUgZm9yIGVh
Y2ggc2Vuc29yICovCisJdTMyIGRhdGE7CisJdTMyIHN0YXR1czsKKwljaGFyIGxhYmVsW01BWF9M
QUJFTF9MRU5dOwogCWVudW0gc2Vuc29ycyB0eXBlOwotCWNoYXIgbmFtZVtNQVhfQVRUUl9MRU5d
OwotCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyOworCWNoYXIgYXR0cl9uYW1lW01B
WF9BVFRSU11bTUFYX0FUVFJfTEVOXTsKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUg
c2RfYXR0cnNbTUFYX0FUVFJTXTsKIH07CiAKIHN0cnVjdCBwbGF0Zm9ybV9kYXRhIHsKLQljb25z
dCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICphdHRyX2dyb3Vwc1tNQVhfU0VOU09SX1RZUEUgKyAx
XTsKKwlzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGF0dHJfZ3JvdXA7CisJY29uc3Qgc3RydWN0IGF0
dHJpYnV0ZV9ncm91cCAqZ3JvdXBzWzJdOwogCXUzMiBzZW5zb3JzX2NvdW50OyAvKiBUb3RhbCBj
b3VudCBvZiBzZW5zb3JzIGZyb20gZWFjaCBncm91cCAqLworCXN0cnVjdCBhdHRyaWJ1dGUgKiph
dHRyczsKKwlzdHJ1Y3Qgc2Vuc29yX2RhdGEgKipzZW5zb3JzOwogfTsKIAogc3RhdGljIHNzaXpl
X3Qgc2hvd19zZW5zb3Ioc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0
ZSAqZGV2YXR0ciwKIAkJCSAgIGNoYXIgKmJ1ZikKIHsKLQlzdHJ1Y3Qgc2Vuc29yX2RhdGEgKnNk
YXRhID0gY29udGFpbmVyX29mKGRldmF0dHIsIHN0cnVjdCBzZW5zb3JfZGF0YSwKLQkJCQkJCSBk
ZXZfYXR0cik7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9fc2Vu
c29yX2Rldl9hdHRyKGRldmF0dHIpOworCXN0cnVjdCBwbGF0Zm9ybV9kYXRhICpwZGF0YSA9IGRl
dl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBzZW5zb3JfZGF0YSAqc2RhdGEgPSBwZGF0YS0+
c2Vuc29yc1thdHRyLT5pbmRleF07CiAJc3NpemVfdCByZXQ7CiAJdTMyIHg7CiAKLQlyZXQgPSBv
cGFsX2dldF9zZW5zb3JfZGF0YShzZGF0YS0+aWQsICZ4KTsKKwlyZXQgPSBvcGFsX2dldF9zZW5z
b3JfZGF0YShzZGF0YS0+ZGF0YSwgJngpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAkv
KiBDb252ZXJ0IHRlbXBlcmF0dXJlIHRvIG1pbGxpLWRlZ3JlZXMgKi8KLQlpZiAoc2RhdGEtPnR5
cGUgPT0gQU1CSUVOVF9URU1QKQorCWlmIChzZGF0YS0+dHlwZSA9PSBURU1QKQogCQl4ICo9IDEw
MDA7CiAJLyogQ29udmVydCBwb3dlciB0byBtaWNyby13YXR0cyAqLwotCWVsc2UgaWYgKHNkYXRh
LT50eXBlID09IFBPV0VSX0lOUFVUKQorCWVsc2UgaWYgKHNkYXRhLT50eXBlID09IFBPV0VSX1NV
UFBMWSkKIAkJeCAqPSAxMDAwMDAwOwogCiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJXVcbiIsIHgp
OwogfQogCi1zdGF0aWMgaW50IGdldF9zZW5zb3JfaW5kZXhfYXR0cihjb25zdCBjaGFyICpuYW1l
LCB1MzIgKmluZGV4LAotCQkJCQljaGFyICphdHRyKQorc3RhdGljIHNzaXplX3Qgc2hvd19hbGFy
bShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLAor
CQkJICAgY2hhciAqYnVmKQogewotCWNoYXIgKmhhc2hfcG9zID0gc3RyY2hyKG5hbWUsICcjJyk7
Ci0JY2hhciBidWZbOF0gPSB7IDAgfTsKLQljaGFyICpkYXNoX3BvczsKLQl1MzIgY29weV9sZW47
Ci0JaW50IGVycjsKLQotCWlmICghaGFzaF9wb3MpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JZGFz
aF9wb3MgPSBzdHJjaHIoaGFzaF9wb3MsICctJyk7Ci0JaWYgKCFkYXNoX3BvcykKLQkJcmV0dXJu
IC1FSU5WQUw7Ci0KLQljb3B5X2xlbiA9IGRhc2hfcG9zIC0gaGFzaF9wb3MgLSAxOwotCWlmIChj
b3B5X2xlbiA+PSBzaXplb2YoYnVmKSkKLQkJcmV0dXJuIC1FSU5WQUw7CisJc3RydWN0IHNlbnNv
cl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGRldmF0dHIpOwor
CXN0cnVjdCBwbGF0Zm9ybV9kYXRhICpwZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0
cnVjdCBzZW5zb3JfZGF0YSAqc2RhdGEgPSBwZGF0YS0+c2Vuc29yc1thdHRyLT5pbmRleF07CisJ
c3NpemVfdCByZXQ7CisJdTMyIHg7CiAKLQlzdHJuY3B5KGJ1ZiwgaGFzaF9wb3MgKyAxLCBjb3B5
X2xlbik7CisJcmV0ID0gb3BhbF9nZXRfc2Vuc29yX2RhdGEoc2RhdGEtPnN0YXR1cywgJngpOwor
CWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAKLQllcnIgPSBrc3RydG91MzIoYnVmLCAxMCwgaW5k
ZXgpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CisJLyoKKwkgKiBEZXBlbmRpbmcgb24gdGhl
IHNlbnNvciB0eXBlLCB0aGUgc3RhdHVzIGJpdHMgY2FuIGhhdmUKKwkgKiBkaWZmZXJlbnQgbWVh
bmluZ3MuIExldCdzIG5vdCBiZSB0b28gc3VidGlsIGZvciB0aGUgbW9tZW50LAorCSAqIHRlc3Rp
bmcgYWdhaW5zdCAweDYgc2hvdWxkIHJhaXNlIGFuIGFsYXJtLgorCSAqLworCXJldHVybiBzcHJp
bnRmKGJ1ZiwgIiV1XG4iLCB4ICYgMHg2KTsKK30KIAotCXN0cm5jcHkoYXR0ciwgZGFzaF9wb3Mg
KyAxLCBNQVhfQVRUUl9MRU4pOworc3RhdGljIHNzaXplX3Qgc2hvd19sYWJlbChzdHJ1Y3QgZGV2
aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLAorCQkJICAgY2hhciAq
YnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNv
cl9kZXZfYXR0cihkZXZhdHRyKTsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSBkZXZf
Z2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3Qgc2Vuc29yX2RhdGEgKnNkYXRhID0gcGRhdGEtPnNl
bnNvcnNbYXR0ci0+aW5kZXhdOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHNwcmludGYoYnVmLCAi
JXNcbiIsIHNkYXRhLT5sYWJlbCk7CiB9CiAKLS8qCi0gKiBUaGlzIGZ1bmN0aW9uIHRyYW5zbGF0
ZXMgdGhlIERUIG5vZGUgbmFtZSBpbnRvIHRoZSAnaHdtb24nIGF0dHJpYnV0ZSBuYW1lLgotICog
SUJNUE9XRVJOViBkZXZpY2Ugbm9kZSBhcHBlYXIgbGlrZSBjb29saW5nLWZhbiMyLWRhdGEsIGFt
Yi10ZW1wIzEtdGhycyBldGMuCi0gKiB3aGljaCBuZWVkIHRvIGJlIG1hcHBlZCBhcyBmYW4yX2lu
cHV0LCB0ZW1wMV9tYXggcmVzcGVjdGl2ZWx5IGJlZm9yZQotICogcG9wdWxhdGluZyB0aGVtIGlu
c2lkZSBod21vbiBkZXZpY2UgY2xhc3MuCi0gKi8KLXN0YXRpYyBpbnQgY3JlYXRlX2h3bW9uX2F0
dHJfbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gc2Vuc29ycyB0eXBlLAotCQkJCQkgY29u
c3QgY2hhciAqbm9kZV9uYW1lLAotCQkJCQkgY2hhciAqaHdtb25fYXR0cl9uYW1lKQorc3RhdGlj
IHN0cnVjdCBzZW5zb3JfdHlwZSAqX19pbml0IGdldF9zZW5zb3JfdHlwZShzdHJ1Y3QgcGxhdGZv
cm1fZGV2aWNlICpwZGV2LAorCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiB7Ci0JY2hhciBhdHRy
X3N1ZmZpeFtNQVhfQVRUUl9MRU5dOwotCWNoYXIgKmF0dHJfbmFtZTsKLQl1MzIgaW5kZXg7Ci0J
aW50IGVycjsKKwljb25zdCBjaGFyICp0eXBlOworCWludCBpOwogCi0JZXJyID0gZ2V0X3NlbnNv
cl9pbmRleF9hdHRyKG5vZGVfbmFtZSwgJmluZGV4LCBhdHRyX3N1ZmZpeCk7Ci0JaWYgKGVycikg
ewotCQlkZXZfZXJyKGRldiwgIlNlbnNvciBkZXZpY2Ugbm9kZSBuYW1lICclcycgaXMgaW52YWxp
ZFxuIiwKLQkJCW5vZGVfbmFtZSk7Ci0JCXJldHVybiBlcnI7Ci0JfQorCWlmIChucC0+bmFtZSA9
PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUo
bnAsICJpYm0sb3BhbC1zZW5zb3IiKSkKKwkJcmV0dXJuIE5VTEw7CiAKLQlpZiAoIXN0cmNtcChh
dHRyX3N1ZmZpeCwgRFRfRkFVTFRfQVRUUl9TVUZGSVgpKSB7Ci0JCWF0dHJfbmFtZSA9ICJmYXVs
dCI7Ci0JfSBlbHNlIGlmICghc3RyY21wKGF0dHJfc3VmZml4LCBEVF9EQVRBX0FUVFJfU1VGRklY
KSkgewotCQlhdHRyX25hbWUgPSAiaW5wdXQiOwotCX0gZWxzZSBpZiAoIXN0cmNtcChhdHRyX3N1
ZmZpeCwgRFRfVEhSRVNIT0xEX0FUVFJfU1VGRklYKSkgewotCQlpZiAodHlwZSA9PSBBTUJJRU5U
X1RFTVApCi0JCQlhdHRyX25hbWUgPSAibWF4IjsKLQkJZWxzZSBpZiAodHlwZSA9PSBGQU4pCi0J
CQlhdHRyX25hbWUgPSAibWluIjsKLQkJZWxzZQotCQkJcmV0dXJuIC1FTk9FTlQ7Ci0JfSBlbHNl
IHsKLQkJcmV0dXJuIC1FTk9FTlQ7CisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKG5wLCAi
c2Vuc29yLXR5cGUiLCAmdHlwZSkpIHsKKwkJZGV2X2luZm8oJnBkZXYtPmRldiwKKwkJCSAiJ3Nl
bnNvci10eXBlJyBtaXNzaW5nIGluIHRoZSBub2RlICclcydcbiIsCisJCQkgbnAtPm5hbWUpOwor
CQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlzbnByaW50Zihod21vbl9hdHRyX25hbWUsIE1BWF9BVFRS
X0xFTiwgIiVzJWRfJXMiLAotCQkgc2Vuc29yX2dyb3Vwc1t0eXBlXS5uYW1lLCBpbmRleCwgYXR0
cl9uYW1lKTsKLQlyZXR1cm4gMDsKKwlmb3IgKGkgPSAwIDsgaSA8IE1BWF9TRU5TT1JfVFlQRTsg
aSsrKQorCQlpZiAoIXN0cmNtcCh0eXBlLCBzZW5zb3JfdHlwZXNbaV0ubmFtZSkpCisJCQlyZXR1
cm4gJnNlbnNvcl90eXBlc1tpXTsKKworCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgaW50IHBv
cHVsYXRlX2F0dHJfZ3JvdXBzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCitzdGF0aWMg
dm9pZCBfX2luaXQgbWFrZV9zZW5zb3JfbGFiZWwoc3RydWN0IGRldmljZV9ub2RlICpucCwKKwkJ
ICAgIHN0cnVjdCBzZW5zb3JfZGF0YSAqc2RhdGEsIGNvbnN0IGNoYXIgKmxhYmVsKQogewotCXN0
cnVjdCBwbGF0Zm9ybV9kYXRhICpwZGF0YSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwot
CWNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipwZ3JvdXBzID0gcGRhdGEtPmF0dHJfZ3Jv
dXBzOwotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqb3BhbCwgKm5wOwotCWVudW0gc2Vuc29ycyB0eXBl
OworCXUzMiBpZDsKKwlzaXplX3QgbjsKIAotCW9wYWwgPSBvZl9maW5kX25vZGVfYnlfcGF0aCgi
L2libSxvcGFsL3NlbnNvcnMiKTsKLQlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKG9wYWwsIG5wKSB7
Ci0JCWlmIChucC0+bmFtZSA9PSBOVUxMKQotCQkJY29udGludWU7CisJbiA9IHNucHJpbnRmKHNk
YXRhLT5sYWJlbCwgc2l6ZW9mKHNkYXRhLT5sYWJlbCksICIlcyIsIGxhYmVsKTsKIAotCQlmb3Ig
KHR5cGUgPSAwOyB0eXBlIDwgTUFYX1NFTlNPUl9UWVBFOyB0eXBlKyspCi0JCQlpZiAob2ZfZGV2
aWNlX2lzX2NvbXBhdGlibGUobnAsCi0JCQkJCXNlbnNvcl9ncm91cHNbdHlwZV0uY29tcGF0aWJs
ZSkpIHsKLQkJCQlzZW5zb3JfZ3JvdXBzW3R5cGVdLmF0dHJfY291bnQrKzsKLQkJCQlicmVhazsK
LQkJCX0KLQl9CisJLyoKKwkgKiBDb3JlIHRlbXAgcHJldHR5IHByZXR0eQorCSAqLworCWlmICgh
b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJpYm0scGlyIiwgJmlkKSkgeworCQlpbnQgaTsKIAot
CW9mX25vZGVfcHV0KG9wYWwpOworCQlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoaSkKKwkJCWlmIChw
YWNhW2ldLmh3X2NwdV9pZCA9PSBpZCkKKwkJCQlicmVhazsKIAotCWZvciAodHlwZSA9IDA7IHR5
cGUgPCBNQVhfU0VOU09SX1RZUEU7IHR5cGUrKykgewotCQlzZW5zb3JfZ3JvdXBzW3R5cGVdLmdy
b3VwLmF0dHJzID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsCi0JCQkJCXNpemVvZihzdHJ1Y3Qg
YXR0cmlidXRlICopICoKLQkJCQkJKHNlbnNvcl9ncm91cHNbdHlwZV0uYXR0cl9jb3VudCArIDEp
LAotCQkJCQlHRlBfS0VSTkVMKTsKLQkJaWYgKCFzZW5zb3JfZ3JvdXBzW3R5cGVdLmdyb3VwLmF0
dHJzKQotCQkJcmV0dXJuIC1FTk9NRU07Ci0KLQkJcGdyb3Vwc1t0eXBlXSA9ICZzZW5zb3JfZ3Jv
dXBzW3R5cGVdLmdyb3VwOwotCQlwZGF0YS0+c2Vuc29yc19jb3VudCArPSBzZW5zb3JfZ3JvdXBz
W3R5cGVdLmF0dHJfY291bnQ7Ci0JCXNlbnNvcl9ncm91cHNbdHlwZV0uYXR0cl9jb3VudCA9IDA7
CisJCW4gKz0gc25wcmludGYoc2RhdGEtPmxhYmVsICsgbiwgc2l6ZW9mKHNkYXRhLT5sYWJlbCkg
LSBuLAorCQkJICAgICAgIiAlZC0lZCIsIGksIGkrNyk7CiAJfQogCi0JcmV0dXJuIDA7CisJLyoK
KwkgKiBNZW1idWZmZXIgcHJldHR5IHByaW50CisJICovCisJaWYgKCFvZl9wcm9wZXJ0eV9yZWFk
X3UzMihucCwgImlibSxjaGlwLWlkIiwgJmlkKSkKKwkJbiArPSBzbnByaW50ZihzZGF0YS0+bGFi
ZWwgKyBuLCBzaXplb2Yoc2RhdGEtPmxhYmVsKSAtIG4sCisJCQkgICAgICAiICVkIiwgaWQgJiAw
eGZmZmYpOwogfQogCi0vKgotICogSXRlcmF0ZSB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSBmb3Ig
ZWFjaCBjaGlsZCBvZiAnc2Vuc29ycycgbm9kZSwgY3JlYXRlCi0gKiBhIHN5c2ZzIGF0dHJpYnV0
ZSBmaWxlLCB0aGUgZmlsZSBpcyBuYW1lZCBieSB0cmFuc2xhdGluZyB0aGUgRFQgbm9kZSBuYW1l
Ci0gKiB0byB0aGUgbmFtZSByZXF1aXJlZCBieSB0aGUgaGlnaGVyICdod21vbicgZHJpdmVyIGxp
a2UgZmFuMV9pbnB1dCwgdGVtcDFfbWF4Ci0gKiBldGMuLgotICovCi1zdGF0aWMgaW50IGNyZWF0
ZV9kZXZpY2VfYXR0cnMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3N0YXRpYyBpbnQg
X19pbml0IHBvcHVsYXRlX2F0dHJfZ3JvdXBzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp
CiB7CiAJc3RydWN0IHBsYXRmb3JtX2RhdGEgKnBkYXRhID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo
cGRldik7Ci0JY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKnBncm91cHMgPSBwZGF0YS0+
YXR0cl9ncm91cHM7CiAJc3RydWN0IGRldmljZV9ub2RlICpvcGFsLCAqbnA7Ci0Jc3RydWN0IHNl
bnNvcl9kYXRhICpzZGF0YTsKLQl1MzIgc2Vuc29yX2lkOwotCWVudW0gc2Vuc29ycyB0eXBlOwot
CXUzMiBjb3VudCA9IDA7CiAJaW50IGVyciA9IDA7CisJaW50IGkgPSAwOwogCiAJb3BhbCA9IG9m
X2ZpbmRfbm9kZV9ieV9wYXRoKCIvaWJtLG9wYWwvc2Vuc29ycyIpOwotCXNkYXRhID0gZGV2bV9r
emFsbG9jKCZwZGV2LT5kZXYsIHBkYXRhLT5zZW5zb3JzX2NvdW50ICogc2l6ZW9mKCpzZGF0YSks
Ci0JCQkgICAgIEdGUF9LRVJORUwpOwotCWlmICghc2RhdGEpIHsKKwlpZiAoIW9wYWwpIHsKKwkJ
ZGV2X2RiZygmcGRldi0+ZGV2LCAiT3BhbCBub2RlICdzZW5zb3JzJyBub3QgZm91bmRcbiIpOwor
CQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKG9wYWwsIG5w
KSB7CisJCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgImlibSxvcGFsLXNlbnNvciIp
KQorCQkJcGRhdGEtPnNlbnNvcnNfY291bnQrKzsKKwl9CisKKwlwZGF0YS0+YXR0cnMgPSBkZXZt
X2t6YWxsb2MoJnBkZXYtPmRldiwKKwkgICAgc2l6ZW9mKCpwZGF0YS0+YXR0cnMpICogcGRhdGEt
PnNlbnNvcnNfY291bnQgKiBNQVhfQVRUUlMgKyAxLAorCSAgICBHRlBfS0VSTkVMKTsKKwlpZiAo
IXBkYXRhLT5hdHRycykgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIGV4aXRfcHV0X25vZGU7
CisJfQorCXBkYXRhLT5zZW5zb3JzID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsCisJICAgIHNp
emVvZigqcGRhdGEtPnNlbnNvcnMpICogcGRhdGEtPnNlbnNvcnNfY291bnQgKiBNQVhfQVRUUlMg
KyAxLAorCSAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIXBkYXRhLT5zZW5zb3JzKSB7CiAJCWVyciA9
IC1FTk9NRU07CiAJCWdvdG8gZXhpdF9wdXRfbm9kZTsKIAl9CiAKLQlmb3JfZWFjaF9jaGlsZF9v
Zl9ub2RlKG9wYWwsIG5wKSB7Ci0JCWlmIChucC0+bmFtZSA9PSBOVUxMKQotCQkJY29udGludWU7
CiAKLQkJZm9yICh0eXBlID0gMDsgdHlwZSA8IE1BWF9TRU5TT1JfVFlQRTsgdHlwZSsrKQotCQkJ
aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLAotCQkJCQlzZW5zb3JfZ3JvdXBzW3R5cGVd
LmNvbXBhdGlibGUpKQotCQkJCWJyZWFrOworCWZvcl9lYWNoX2NoaWxkX29mX25vZGUob3BhbCwg
bnApIHsKKwkJc3RydWN0IHNlbnNvcl9kYXRhICpzZGF0YTsKKwkJc3RydWN0IHNlbnNvcl90eXBl
ICpzdHlwZTsKKwkJdTMyIHNlbnNvcl9kYXRhOworCQljb25zdCBjaGFyICpsYWJlbDsKIAotCQlp
ZiAodHlwZSA9PSBNQVhfU0VOU09SX1RZUEUpCisJCXN0eXBlID0gZ2V0X3NlbnNvcl90eXBlKHBk
ZXYsIG5wKTsKKwkJaWYgKCFzdHlwZSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChvZl9wcm9wZXJ0
eV9yZWFkX3UzMihucCwgInNlbnNvci1pZCIsICZzZW5zb3JfaWQpKSB7CisJCWlmIChvZl9wcm9w
ZXJ0eV9yZWFkX3UzMihucCwgInNlbnNvci1kYXRhIiwgJnNlbnNvcl9kYXRhKSkgewogCQkJZGV2
X2luZm8oJnBkZXYtPmRldiwKLQkJCQkgIidzZW5zb3ItaWQnIG1pc3NpbmcgaW4gdGhlIG5vZGUg
JyVzJ1xuIiwKKwkJCQkgIidzZW5zb3ItZGF0YScgbWlzc2luZyBpbiB0aGUgbm9kZSAnJXMnXG4i
LAogCQkJCSBucC0+bmFtZSk7CiAJCQljb250aW51ZTsKIAkJfQogCi0JCXNkYXRhW2NvdW50XS5p
ZCA9IHNlbnNvcl9pZDsKLQkJc2RhdGFbY291bnRdLnR5cGUgPSB0eXBlOwotCQllcnIgPSBjcmVh
dGVfaHdtb25fYXR0cl9uYW1lKCZwZGV2LT5kZXYsIHR5cGUsIG5wLT5uYW1lLAotCQkJCQkgICAg
IHNkYXRhW2NvdW50XS5uYW1lKTsKLQkJaWYgKGVycikKKwkJc2RhdGEgPSBkZXZtX2t6YWxsb2Mo
JnBkZXYtPmRldiwgc2l6ZW9mKCpzZGF0YSksIEdGUF9LRVJORUwpOworCQlpZiAoc2RhdGEgPT0g
TlVMTCkgeworCQkJZXJyID0gLUVOT01FTTsKIAkJCWdvdG8gZXhpdF9wdXRfbm9kZTsKKwkJfQor
CisJCXN0eXBlLT5jb3VudCsrOworCQlzZGF0YS0+ZGF0YSA9IHNlbnNvcl9kYXRhOworCQlzZGF0
YS0+dHlwZSA9IHN0eXBlLT50eXBlOworCisJCXNucHJpbnRmKHNkYXRhLT5hdHRyX25hbWVbMF0s
IE1BWF9BVFRSX0xFTiwgIiVzJWRfaW5wdXQiLAorCQkJIHN0eXBlLT5uYW1lLCBzdHlwZS0+Y291
bnQpOworCisJCXN5c2ZzX2F0dHJfaW5pdCgmc2RhdGEtPnNkX2F0dHJzWzBdLmRldl9hdHRyLmF0
dHIpOworCQlzZGF0YS0+c2RfYXR0cnNbMF0uZGV2X2F0dHIuYXR0ci5uYW1lID0gc2RhdGEtPmF0
dHJfbmFtZVswXTsKKwkJc2RhdGEtPnNkX2F0dHJzWzBdLmRldl9hdHRyLmF0dHIubW9kZSA9IFNf
SVJVR087CisJCXNkYXRhLT5zZF9hdHRyc1swXS5kZXZfYXR0ci5zaG93ID0gc2hvd19zZW5zb3I7
CisJCXNkYXRhLT5zZF9hdHRyc1swXS5pbmRleCA9IGk7CisKKwkJcGRhdGEtPmF0dHJzW2ldID0g
JnNkYXRhLT5zZF9hdHRyc1swXS5kZXZfYXR0ci5hdHRyOworCQlwZGF0YS0+c2Vuc29yc1tpKytd
ID0gc2RhdGE7CisKKwkJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgInNlbnNvci1zdGF0
dXMiLAorCQkJCQkgICZzZGF0YS0+c3RhdHVzKSkgeworCQkJc25wcmludGYoc2RhdGEtPmF0dHJf
bmFtZVsxXSwgTUFYX0FUVFJfTEVOLAorCQkJCSAiJXMlZF9hbGFybSIsIHN0eXBlLT5uYW1lLCBz
dHlwZS0+Y291bnQpOworCisJCQlzeXNmc19hdHRyX2luaXQoJnNkYXRhLT5zZF9hdHRyc1sxXS5k
ZXZfYXR0ci5hdHRyKTsKKwkJCXNkYXRhLT5zZF9hdHRyc1sxXS5kZXZfYXR0ci5hdHRyLm5hbWUg
PQorCQkJCXNkYXRhLT5hdHRyX25hbWVbMV07CisJCQlzZGF0YS0+c2RfYXR0cnNbMV0uZGV2X2F0
dHIuYXR0ci5tb2RlID0gU19JUlVHTzsKKwkJCXNkYXRhLT5zZF9hdHRyc1sxXS5kZXZfYXR0ci5z
aG93ID0gc2hvd19hbGFybTsKKwkJCXNkYXRhLT5zZF9hdHRyc1sxXS5pbmRleCA9IGk7CisKKwkJ
CXBkYXRhLT5hdHRyc1tpXSA9ICZzZGF0YS0+c2RfYXR0cnNbMV0uZGV2X2F0dHIuYXR0cjsKKwkJ
CXBkYXRhLT5zZW5zb3JzW2krK10gPSBzZGF0YTsKKwkJfQorCisJCWlmICghb2ZfcHJvcGVydHlf
cmVhZF9zdHJpbmcobnAsICJsYWJlbCIsICZsYWJlbCkpIHsKKwkJCXNucHJpbnRmKHNkYXRhLT5h
dHRyX25hbWVbMl0sIE1BWF9BVFRSX0xFTiwKKwkJCQkgIiVzJWRfbGFiZWwiLCBzdHlwZS0+bmFt
ZSwgc3R5cGUtPmNvdW50KTsKIAotCQlzeXNmc19hdHRyX2luaXQoJnNkYXRhW2NvdW50XS5kZXZf
YXR0ci5hdHRyKTsKLQkJc2RhdGFbY291bnRdLmRldl9hdHRyLmF0dHIubmFtZSA9IHNkYXRhW2Nv
dW50XS5uYW1lOwotCQlzZGF0YVtjb3VudF0uZGV2X2F0dHIuYXR0ci5tb2RlID0gU19JUlVHTzsK
LQkJc2RhdGFbY291bnRdLmRldl9hdHRyLnNob3cgPSBzaG93X3NlbnNvcjsKKwkJCW1ha2Vfc2Vu
c29yX2xhYmVsKG5wLCBzZGF0YSwgbGFiZWwpOwogCi0JCXBncm91cHNbdHlwZV0tPmF0dHJzW3Nl
bnNvcl9ncm91cHNbdHlwZV0uYXR0cl9jb3VudCsrXSA9Ci0JCQkJJnNkYXRhW2NvdW50KytdLmRl
dl9hdHRyLmF0dHI7CisJCQlzeXNmc19hdHRyX2luaXQoJnNkYXRhLT5zZF9hdHRyc1syXS5kZXZf
YXR0ci5hdHRyKTsKKwkJCXNkYXRhLT5zZF9hdHRyc1syXS5kZXZfYXR0ci5hdHRyLm5hbWUgPQor
CQkJCXNkYXRhLT5hdHRyX25hbWVbMl07CisJCQlzZGF0YS0+c2RfYXR0cnNbMl0uZGV2X2F0dHIu
YXR0ci5tb2RlID0gU19JUlVHTzsKKwkJCXNkYXRhLT5zZF9hdHRyc1syXS5kZXZfYXR0ci5zaG93
ID0gc2hvd19sYWJlbDsKKwkJCXNkYXRhLT5zZF9hdHRyc1syXS5pbmRleCA9IGk7CisKKwkJCXBk
YXRhLT5hdHRyc1tpXSA9ICZzZGF0YS0+c2RfYXR0cnNbMl0uZGV2X2F0dHIuYXR0cjsKKwkJCXBk
YXRhLT5zZW5zb3JzW2krK10gPSBzZGF0YTsKKwkJfQogCX0KIAorCXBkYXRhLT5hdHRyX2dyb3Vw
LmF0dHJzID0gcGRhdGEtPmF0dHJzOworCXBkYXRhLT5ncm91cHNbMF0gPSAmcGRhdGEtPmF0dHJf
Z3JvdXA7CisKIGV4aXRfcHV0X25vZGU6CiAJb2Zfbm9kZV9wdXQob3BhbCk7CiAJcmV0dXJuIGVy
cjsKIH0KIAotc3RhdGljIGludCBpYm1wb3dlcm52X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp
Y2UgKnBkZXYpCitzdGF0aWMgaW50IF9faW5pdCBpYm1wb3dlcm52X3Byb2JlKHN0cnVjdCBwbGF0
Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IHBsYXRmb3JtX2RhdGEgKnBkYXRhOwogCXN0
cnVjdCBkZXZpY2UgKmh3bW9uX2RldjsKQEAgLTI4OCwxNSArMzE3LDEwIEBAIHN0YXRpYyBpbnQg
aWJtcG93ZXJudl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmIChlcnIp
CiAJCXJldHVybiBlcnI7CiAKLQkvKiBDcmVhdGUgc3lzZnMgYXR0cmlidXRlIGRhdGEgZm9yIGVh
Y2ggc2Vuc29yIGZvdW5kIGluIHRoZSBEVCAqLwotCWVyciA9IGNyZWF0ZV9kZXZpY2VfYXR0cnMo
cGRldik7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKLQogCS8qIEZpbmFsbHksIHJlZ2lzdGVy
IHdpdGggaHdtb24gKi8KIAlod21vbl9kZXYgPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93
aXRoX2dyb3VwcygmcGRldi0+ZGV2LCBEUlZOQU1FLAogCQkJCQkJCSAgIHBkYXRhLAotCQkJCQkJ
CSAgIHBkYXRhLT5hdHRyX2dyb3Vwcyk7CisJCQkJCQkJICAgcGRhdGEtPmdyb3Vwcyk7CiAKIAly
ZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uX2Rldik7CiB9Ci0tIAoxLjcuMTAuNAoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFp
bGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNv
cnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
@ 2015-02-20 16:52     ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-20 16:52 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
> Hello !
> 
> These patches rework the ibmpowernv driver to support the new device 
> tree as proposed by this patchset on the skiboot mailing list :
> 
>   https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
> 
> They are based on Linux 3.19 and were tested on IBM Power and Open Power 
> systems running trusty.
> 
> The main issue is that the new device tree is incompatible with the 
> previous ibmpowernv drivers. The consequence is no powernv sensors 
> on systems with such a opal/linux configuration.
> 
I don't think that would be acceptable. There must be lots of such
systems out there. Why does it have to be incompatible ?
Can't it support both the old and new versions ?

Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-20 16:52     ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-20 16:52 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
> Hello !
> 
> These patches rework the ibmpowernv driver to support the new device 
> tree as proposed by this patchset on the skiboot mailing list :
> 
>   https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
> 
> They are based on Linux 3.19 and were tested on IBM Power and Open Power 
> systems running trusty.
> 
> The main issue is that the new device tree is incompatible with the 
> previous ibmpowernv drivers. The consequence is no powernv sensors 
> on systems with such a opal/linux configuration.
> 
I don't think that would be acceptable. There must be lots of such
systems out there. Why does it have to be incompatible ?
Can't it support both the old and new versions ?

Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
@ 2015-02-20 16:53     ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-20 16:53 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Fri, Feb 20, 2015 at 04:07:35PM +0100, Cédric Le Goater wrote:

You should explain here why this patch is needed.

> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>  arch/powerpc/platforms/powernv/opal-sensor.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
> index 4ab67ef7abc9..544292f2020f 100644
> --- a/arch/powerpc/platforms/powernv/opal-sensor.c
> +++ b/arch/powerpc/platforms/powernv/opal-sensor.c
> @@ -72,6 +72,9 @@ static __init int opal_sensor_init(void)
>  	struct platform_device *pdev;
>  	struct device_node *sensor;
>  
> +	if (!opal_check_token(OPAL_SENSOR_READ))
> +		return -ENODEV;
> +
>  	sensor = of_find_node_by_path("/ibm,opal/sensors");
>  	if (!sensor) {
>  		pr_err("Opal node 'sensors' not found\n");
> -- 
> 1.7.10.4
> 

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
@ 2015-02-20 16:53     ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-20 16:53 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Fri, Feb 20, 2015 at 04:07:35PM +0100, Cédric Le Goater wrote:

You should explain here why this patch is needed.

> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>  arch/powerpc/platforms/powernv/opal-sensor.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
> index 4ab67ef7abc9..544292f2020f 100644
> --- a/arch/powerpc/platforms/powernv/opal-sensor.c
> +++ b/arch/powerpc/platforms/powernv/opal-sensor.c
> @@ -72,6 +72,9 @@ static __init int opal_sensor_init(void)
>  	struct platform_device *pdev;
>  	struct device_node *sensor;
>  
> +	if (!opal_check_token(OPAL_SENSOR_READ))
> +		return -ENODEV;
> +
>  	sensor = of_find_node_by_path("/ibm,opal/sensors");
>  	if (!sensor) {
>  		pr_err("Opal node 'sensors' not found\n");
> -- 
> 1.7.10.4
> 

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
  2015-02-20 16:52     ` [lm-sensors] " Guenter Roeck
@ 2015-02-20 20:15       ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-20 20:15 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 05:52 PM, Guenter Roeck wrote:
> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>> Hello !
>>
>> These patches rework the ibmpowernv driver to support the new device 
>> tree as proposed by this patchset on the skiboot mailing list :
>>
>>   https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>
>> They are based on Linux 3.19 and were tested on IBM Power and Open Power 
>> systems running trusty.
>>
>> The main issue is that the new device tree is incompatible with the 
>> previous ibmpowernv drivers. The consequence is no powernv sensors 
>> on systems with such a opal/linux configuration.
>>
> I don't think that would be acceptable. There must be lots of such
> systems out there. Why does it have to be incompatible ?
> Can't it support both the old and new versions ?

I should have provided more explanation in the Linux patchset. Sorry 
for that. Here is the rationale behind this brutal code change.

The initial ibmpowernv driver was designed in the early days of the
powernv platform and the device tree it is using to expose the sensors 
has some limitations that makes it difficult to add new ones. The current 
layout of the device tree is also tightly coupled to IBM Power systems 
and their service processor (FSP). Open Power systems are different and 
need a different solution.

It is to get more sensors out the P8 (and there are quite a few) that 
the OPAL patchset [1] proposes a new device tree. On the Linux side, it 
feels simpler to make a jump forward and break the compatibility than 
to maintain multiple branches of code just to keep alive an early v1 
of the ibmpowernv driver.    

Open Power systems won't be impacted as ibmpowernv does not support them.


Cheers,

C.


[1] https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-20 20:15       ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-20 20:15 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 05:52 PM, Guenter Roeck wrote:
> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>> Hello !
>>
>> These patches rework the ibmpowernv driver to support the new device 
>> tree as proposed by this patchset on the skiboot mailing list :
>>
>>   https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>
>> They are based on Linux 3.19 and were tested on IBM Power and Open Power 
>> systems running trusty.
>>
>> The main issue is that the new device tree is incompatible with the 
>> previous ibmpowernv drivers. The consequence is no powernv sensors 
>> on systems with such a opal/linux configuration.
>>
> I don't think that would be acceptable. There must be lots of such
> systems out there. Why does it have to be incompatible ?
> Can't it support both the old and new versions ?

I should have provided more explanation in the Linux patchset. Sorry 
for that. Here is the rationale behind this brutal code change.

The initial ibmpowernv driver was designed in the early days of the
powernv platform and the device tree it is using to expose the sensors 
has some limitations that makes it difficult to add new ones. The current 
layout of the device tree is also tightly coupled to IBM Power systems 
and their service processor (FSP). Open Power systems are different and 
need a different solution.

It is to get more sensors out the P8 (and there are quite a few) that 
the OPAL patchset [1] proposes a new device tree. On the Linux side, it 
feels simpler to make a jump forward and break the compatibility than 
to maintain multiple branches of code just to keep alive an early v1 
of the ibmpowernv driver.    

Open Power systems won't be impacted as ibmpowernv does not support them.


Cheers,

C.


[1] https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
  2015-02-20 16:53     ` [lm-sensors] " Guenter Roeck
@ 2015-02-20 20:18       ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-20 20:18 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 05:53 PM, Guenter Roeck wrote:
> On Fri, Feb 20, 2015 at 04:07:35PM +0100, Cédric Le Goater wrote:
> 
> You should explain here why this patch is needed.

Yes. What it does is to check that the firmware exposes the service
this driver is using (OPAL_SENSOR_READ). I will fix it.

Thanks,

C. 


> 
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
>> ---
>>  arch/powerpc/platforms/powernv/opal-sensor.c |    3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
>> index 4ab67ef7abc9..544292f2020f 100644
>> --- a/arch/powerpc/platforms/powernv/opal-sensor.c
>> +++ b/arch/powerpc/platforms/powernv/opal-sensor.c
>> @@ -72,6 +72,9 @@ static __init int opal_sensor_init(void)
>>  	struct platform_device *pdev;
>>  	struct device_node *sensor;
>>  
>> +	if (!opal_check_token(OPAL_SENSOR_READ))
>> +		return -ENODEV;
>> +
>>  	sensor = of_find_node_by_path("/ibm,opal/sensors");
>>  	if (!sensor) {
>>  		pr_err("Opal node 'sensors' not found\n");
>> -- 
>> 1.7.10.4
>>
> 

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
@ 2015-02-20 20:18       ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-20 20:18 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 05:53 PM, Guenter Roeck wrote:
> On Fri, Feb 20, 2015 at 04:07:35PM +0100, Cédric Le Goater wrote:
> 
> You should explain here why this patch is needed.

Yes. What it does is to check that the firmware exposes the service
this driver is using (OPAL_SENSOR_READ). I will fix it.

Thanks,

C. 


> 
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
>> ---
>>  arch/powerpc/platforms/powernv/opal-sensor.c |    3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
>> index 4ab67ef7abc9..544292f2020f 100644
>> --- a/arch/powerpc/platforms/powernv/opal-sensor.c
>> +++ b/arch/powerpc/platforms/powernv/opal-sensor.c
>> @@ -72,6 +72,9 @@ static __init int opal_sensor_init(void)
>>  	struct platform_device *pdev;
>>  	struct device_node *sensor;
>>  
>> +	if (!opal_check_token(OPAL_SENSOR_READ))
>> +		return -ENODEV;
>> +
>>  	sensor = of_find_node_by_path("/ibm,opal/sensors");
>>  	if (!sensor) {
>>  		pr_err("Opal node 'sensors' not found\n");
>> -- 
>> 1.7.10.4
>>
> 


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
  2015-02-20 20:15       ` [lm-sensors] " Cedric Le Goater
@ 2015-02-20 23:52         ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-20 23:52 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>> Hello !
>>>
>>> These patches rework the ibmpowernv driver to support the new device
>>> tree as proposed by this patchset on the skiboot mailing list :
>>>
>>>    https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>
>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>> systems running trusty.
>>>
>>> The main issue is that the new device tree is incompatible with the
>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>> on systems with such a opal/linux configuration.
>>>
>> I don't think that would be acceptable. There must be lots of such
>> systems out there. Why does it have to be incompatible ?
>> Can't it support both the old and new versions ?
>
> I should have provided more explanation in the Linux patchset. Sorry
> for that. Here is the rationale behind this brutal code change.
>
> The initial ibmpowernv driver was designed in the early days of the
> powernv platform and the device tree it is using to expose the sensors
> has some limitations that makes it difficult to add new ones. The current
> layout of the device tree is also tightly coupled to IBM Power systems
> and their service processor (FSP). Open Power systems are different and
> need a different solution.
>
> It is to get more sensors out the P8 (and there are quite a few) that
> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
> feels simpler to make a jump forward and break the compatibility than
> to maintain multiple branches of code just to keep alive an early v1
> of the ibmpowernv driver.
>

Would it possibly be appropriate to write a different driver for the new
device tree ?

Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-20 23:52         ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-20 23:52 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>> Hello !
>>>
>>> These patches rework the ibmpowernv driver to support the new device
>>> tree as proposed by this patchset on the skiboot mailing list :
>>>
>>>    https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>
>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>> systems running trusty.
>>>
>>> The main issue is that the new device tree is incompatible with the
>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>> on systems with such a opal/linux configuration.
>>>
>> I don't think that would be acceptable. There must be lots of such
>> systems out there. Why does it have to be incompatible ?
>> Can't it support both the old and new versions ?
>
> I should have provided more explanation in the Linux patchset. Sorry
> for that. Here is the rationale behind this brutal code change.
>
> The initial ibmpowernv driver was designed in the early days of the
> powernv platform and the device tree it is using to expose the sensors
> has some limitations that makes it difficult to add new ones. The current
> layout of the device tree is also tightly coupled to IBM Power systems
> and their service processor (FSP). Open Power systems are different and
> need a different solution.
>
> It is to get more sensors out the P8 (and there are quite a few) that
> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
> feels simpler to make a jump forward and break the compatibility than
> to maintain multiple branches of code just to keep alive an early v1
> of the ibmpowernv driver.
>

Would it possibly be appropriate to write a different driver for the new
device tree ?

Guenter


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
  2015-02-20 23:52         ` [lm-sensors] " Guenter Roeck
@ 2015-02-21  7:14           ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-21  7:14 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/21/2015 12:52 AM, Guenter Roeck wrote:
> On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
>> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>>> Hello !
>>>>
>>>> These patches rework the ibmpowernv driver to support the new device
>>>> tree as proposed by this patchset on the skiboot mailing list :
>>>>
>>>>    https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>>
>>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>>> systems running trusty.
>>>>
>>>> The main issue is that the new device tree is incompatible with the
>>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>>> on systems with such a opal/linux configuration.
>>>>
>>> I don't think that would be acceptable. There must be lots of such
>>> systems out there. Why does it have to be incompatible ?
>>> Can't it support both the old and new versions ?
>>
>> I should have provided more explanation in the Linux patchset. Sorry
>> for that. Here is the rationale behind this brutal code change.
>>
>> The initial ibmpowernv driver was designed in the early days of the
>> powernv platform and the device tree it is using to expose the sensors
>> has some limitations that makes it difficult to add new ones. The current
>> layout of the device tree is also tightly coupled to IBM Power systems
>> and their service processor (FSP). Open Power systems are different and
>> need a different solution.
>>
>> It is to get more sensors out the P8 (and there are quite a few) that
>> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
>> feels simpler to make a jump forward and break the compatibility than
>> to maintain multiple branches of code just to keep alive an early v1
>> of the ibmpowernv driver.
>>
> 
> Would it possibly be appropriate to write a different driver for the new
> device tree ?

Sure. That is an option. 

There are no conflicts between the trees so we can live with two drivers 
using the same sensors/ root node. With time we will deprecate the initial
one.

Is that the preferred option ? How would we name the new driver ? 

	1. powernv
	2. powernv-hwmon
	3. openpowernv
	4. ibmpowernv2 

Thanks,

C.

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-21  7:14           ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-21  7:14 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/21/2015 12:52 AM, Guenter Roeck wrote:
> On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
>> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>>> Hello !
>>>>
>>>> These patches rework the ibmpowernv driver to support the new device
>>>> tree as proposed by this patchset on the skiboot mailing list :
>>>>
>>>>    https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>>
>>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>>> systems running trusty.
>>>>
>>>> The main issue is that the new device tree is incompatible with the
>>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>>> on systems with such a opal/linux configuration.
>>>>
>>> I don't think that would be acceptable. There must be lots of such
>>> systems out there. Why does it have to be incompatible ?
>>> Can't it support both the old and new versions ?
>>
>> I should have provided more explanation in the Linux patchset. Sorry
>> for that. Here is the rationale behind this brutal code change.
>>
>> The initial ibmpowernv driver was designed in the early days of the
>> powernv platform and the device tree it is using to expose the sensors
>> has some limitations that makes it difficult to add new ones. The current
>> layout of the device tree is also tightly coupled to IBM Power systems
>> and their service processor (FSP). Open Power systems are different and
>> need a different solution.
>>
>> It is to get more sensors out the P8 (and there are quite a few) that
>> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
>> feels simpler to make a jump forward and break the compatibility than
>> to maintain multiple branches of code just to keep alive an early v1
>> of the ibmpowernv driver.
>>
> 
> Would it possibly be appropriate to write a different driver for the new
> device tree ?

Sure. That is an option. 

There are no conflicts between the trees so we can live with two drivers 
using the same sensors/ root node. With time we will deprecate the initial
one.

Is that the preferred option ? How would we name the new driver ? 

	1. powernv
	2. powernv-hwmon
	3. openpowernv
	4. ibmpowernv2 

Thanks,

C.



_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
  2015-02-21  7:14           ` [lm-sensors] " Cedric Le Goater
@ 2015-02-21 11:03             ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-21 11:03 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 11:14 PM, Cedric Le Goater wrote:
> On 02/21/2015 12:52 AM, Guenter Roeck wrote:
>> On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
>>> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>>>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>>>> Hello !
>>>>>
>>>>> These patches rework the ibmpowernv driver to support the new device
>>>>> tree as proposed by this patchset on the skiboot mailing list :
>>>>>
>>>>>     https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>>>
>>>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>>>> systems running trusty.
>>>>>
>>>>> The main issue is that the new device tree is incompatible with the
>>>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>>>> on systems with such a opal/linux configuration.
>>>>>
>>>> I don't think that would be acceptable. There must be lots of such
>>>> systems out there. Why does it have to be incompatible ?
>>>> Can't it support both the old and new versions ?
>>>
>>> I should have provided more explanation in the Linux patchset. Sorry
>>> for that. Here is the rationale behind this brutal code change.
>>>
>>> The initial ibmpowernv driver was designed in the early days of the
>>> powernv platform and the device tree it is using to expose the sensors
>>> has some limitations that makes it difficult to add new ones. The current
>>> layout of the device tree is also tightly coupled to IBM Power systems
>>> and their service processor (FSP). Open Power systems are different and
>>> need a different solution.
>>>
>>> It is to get more sensors out the P8 (and there are quite a few) that
>>> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
>>> feels simpler to make a jump forward and break the compatibility than
>>> to maintain multiple branches of code just to keep alive an early v1
>>> of the ibmpowernv driver.
>>>
>>
>> Would it possibly be appropriate to write a different driver for the new
>> device tree ?
>
> Sure. That is an option.
>
> There are no conflicts between the trees so we can live with two drivers
> using the same sensors/ root node. With time we will deprecate the initial
> one.
>
You lost me a bit. Are you saying you are going to replace the devicetree
properties with something that is incompatible but retain the same
compatible properties ? If so, how do you expect this to work ?
How do you expect to be able to determine which version of devicetree
is loaded, and thus which driver is needed ?

I'll have to understand this way better. The link above doesn't explain
what the differences are, nor how the driver is supposed to know what
to do.

Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-21 11:03             ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-02-21 11:03 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/20/2015 11:14 PM, Cedric Le Goater wrote:
> On 02/21/2015 12:52 AM, Guenter Roeck wrote:
>> On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
>>> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>>>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>>>> Hello !
>>>>>
>>>>> These patches rework the ibmpowernv driver to support the new device
>>>>> tree as proposed by this patchset on the skiboot mailing list :
>>>>>
>>>>>     https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>>>
>>>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>>>> systems running trusty.
>>>>>
>>>>> The main issue is that the new device tree is incompatible with the
>>>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>>>> on systems with such a opal/linux configuration.
>>>>>
>>>> I don't think that would be acceptable. There must be lots of such
>>>> systems out there. Why does it have to be incompatible ?
>>>> Can't it support both the old and new versions ?
>>>
>>> I should have provided more explanation in the Linux patchset. Sorry
>>> for that. Here is the rationale behind this brutal code change.
>>>
>>> The initial ibmpowernv driver was designed in the early days of the
>>> powernv platform and the device tree it is using to expose the sensors
>>> has some limitations that makes it difficult to add new ones. The current
>>> layout of the device tree is also tightly coupled to IBM Power systems
>>> and their service processor (FSP). Open Power systems are different and
>>> need a different solution.
>>>
>>> It is to get more sensors out the P8 (and there are quite a few) that
>>> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
>>> feels simpler to make a jump forward and break the compatibility than
>>> to maintain multiple branches of code just to keep alive an early v1
>>> of the ibmpowernv driver.
>>>
>>
>> Would it possibly be appropriate to write a different driver for the new
>> device tree ?
>
> Sure. That is an option.
>
> There are no conflicts between the trees so we can live with two drivers
> using the same sensors/ root node. With time we will deprecate the initial
> one.
>
You lost me a bit. Are you saying you are going to replace the devicetree
properties with something that is incompatible but retain the same
compatible properties ? If so, how do you expect this to work ?
How do you expect to be able to determine which version of devicetree
is loaded, and thus which driver is needed ?

I'll have to understand this way better. The link above doesn't explain
what the differences are, nor how the driver is supposed to know what
to do.

Guenter


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
  2015-02-21 11:03             ` [lm-sensors] " Guenter Roeck
@ 2015-02-23 10:54               ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-23 10:54 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/21/2015 12:03 PM, Guenter Roeck wrote:
> On 02/20/2015 11:14 PM, Cedric Le Goater wrote:
>> On 02/21/2015 12:52 AM, Guenter Roeck wrote:
>>> On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
>>>> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>>>>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>>>>> Hello !
>>>>>>
>>>>>> These patches rework the ibmpowernv driver to support the new device
>>>>>> tree as proposed by this patchset on the skiboot mailing list :
>>>>>>
>>>>>>     https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>>>>
>>>>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>>>>> systems running trusty.
>>>>>>
>>>>>> The main issue is that the new device tree is incompatible with the
>>>>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>>>>> on systems with such a opal/linux configuration.
>>>>>>
>>>>> I don't think that would be acceptable. There must be lots of such
>>>>> systems out there. Why does it have to be incompatible ?
>>>>> Can't it support both the old and new versions ?
>>>>
>>>> I should have provided more explanation in the Linux patchset. Sorry
>>>> for that. Here is the rationale behind this brutal code change.
>>>>
>>>> The initial ibmpowernv driver was designed in the early days of the
>>>> powernv platform and the device tree it is using to expose the sensors
>>>> has some limitations that makes it difficult to add new ones. The current
>>>> layout of the device tree is also tightly coupled to IBM Power systems
>>>> and their service processor (FSP). Open Power systems are different and
>>>> need a different solution.
>>>>
>>>> It is to get more sensors out the P8 (and there are quite a few) that
>>>> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
>>>> feels simpler to make a jump forward and break the compatibility than
>>>> to maintain multiple branches of code just to keep alive an early v1
>>>> of the ibmpowernv driver.
>>>>
>>>
>>> Would it possibly be appropriate to write a different driver for the new
>>> device tree ?
>>
>> Sure. That is an option.
>>
>> There are no conflicts between the trees so we can live with two drivers
>> using the same sensors/ root node. With time we will deprecate the initial
>> one.
>>
> You lost me a bit. Are you saying you are going to replace the devicetree
> properties with something that is incompatible but retain the same
> compatible properties ? If so, how do you expect this to work ?
> How do you expect to be able to determine which version of devicetree
> is loaded, and thus which driver is needed ?
>
> I'll have to understand this way better. The link above doesn't explain
> what the differences are, nor how the driver is supposed to know what
> to do.
 
Sure. My bad. I did not provide enough information in this RFC. Thanks for
your patience ! 


The current hwmon driver ibmpowernv relies on a device tree provided by 
the OPAL firmware. Today, this tree has the following layout :

	ibm,opal/sensors/
	|-- amb-temp#1-data
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- amb-temp#1-thrs
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- cooling-fan#10-data
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- cooling-fan#10-faulted
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- cooling-fan#10-thrs
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	...

It has some limitations and we want to change it to something more flexible, 
giving us the ability to add new sensors. The new device tree layout is 
described here :

	https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html


Both layouts use the same root node "ibm,opal/sensors" but the underlying
nodes have nothing in common, which means that the current driver ibmpowernv
will not 'see' any sensors on a system with an OPAL firmware exposing the new 
device tree. One will need new code for it. 

We have a few options to add support for this new tree :

 1. modify the current driver to parse the two trees. It seems overly complex 
    and the resulting code will be a pain to maintain. 

 2. add a new driver. As the two drivers can cohabitate, it is a viable solution.
    We will let the old driver rot in its corner and deprecate it one day. Kind
    of ugly to keep this code around.

 3. replace the current driver with a new one. The simplest and most brutal but 
    it also means we loose sensor support for IBM P8 systems running the old OPAL 
    firmware. I don't think it is a problem as these systems are bound to update 
    their firmware due to the amount of development currently being done on the 
    OPAL side.

    Open Power systems are not impacted.


Is that clearer ? and I would go for option 3.

Thanks,

C.
   






C. 

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support
@ 2015-02-23 10:54               ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-23 10:54 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 02/21/2015 12:03 PM, Guenter Roeck wrote:
> On 02/20/2015 11:14 PM, Cedric Le Goater wrote:
>> On 02/21/2015 12:52 AM, Guenter Roeck wrote:
>>> On 02/20/2015 12:15 PM, Cedric Le Goater wrote:
>>>> On 02/20/2015 05:52 PM, Guenter Roeck wrote:
>>>>> On Fri, Feb 20, 2015 at 04:07:34PM +0100, Cédric Le Goater wrote:
>>>>>> Hello !
>>>>>>
>>>>>> These patches rework the ibmpowernv driver to support the new device
>>>>>> tree as proposed by this patchset on the skiboot mailing list :
>>>>>>
>>>>>>     https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html
>>>>>>
>>>>>> They are based on Linux 3.19 and were tested on IBM Power and Open Power
>>>>>> systems running trusty.
>>>>>>
>>>>>> The main issue is that the new device tree is incompatible with the
>>>>>> previous ibmpowernv drivers. The consequence is no powernv sensors
>>>>>> on systems with such a opal/linux configuration.
>>>>>>
>>>>> I don't think that would be acceptable. There must be lots of such
>>>>> systems out there. Why does it have to be incompatible ?
>>>>> Can't it support both the old and new versions ?
>>>>
>>>> I should have provided more explanation in the Linux patchset. Sorry
>>>> for that. Here is the rationale behind this brutal code change.
>>>>
>>>> The initial ibmpowernv driver was designed in the early days of the
>>>> powernv platform and the device tree it is using to expose the sensors
>>>> has some limitations that makes it difficult to add new ones. The current
>>>> layout of the device tree is also tightly coupled to IBM Power systems
>>>> and their service processor (FSP). Open Power systems are different and
>>>> need a different solution.
>>>>
>>>> It is to get more sensors out the P8 (and there are quite a few) that
>>>> the OPAL patchset [1] proposes a new device tree. On the Linux side, it
>>>> feels simpler to make a jump forward and break the compatibility than
>>>> to maintain multiple branches of code just to keep alive an early v1
>>>> of the ibmpowernv driver.
>>>>
>>>
>>> Would it possibly be appropriate to write a different driver for the new
>>> device tree ?
>>
>> Sure. That is an option.
>>
>> There are no conflicts between the trees so we can live with two drivers
>> using the same sensors/ root node. With time we will deprecate the initial
>> one.
>>
> You lost me a bit. Are you saying you are going to replace the devicetree
> properties with something that is incompatible but retain the same
> compatible properties ? If so, how do you expect this to work ?
> How do you expect to be able to determine which version of devicetree
> is loaded, and thus which driver is needed ?
>
> I'll have to understand this way better. The link above doesn't explain
> what the differences are, nor how the driver is supposed to know what
> to do.
 
Sure. My bad. I did not provide enough information in this RFC. Thanks for
your patience ! 


The current hwmon driver ibmpowernv relies on a device tree provided by 
the OPAL firmware. Today, this tree has the following layout :

	ibm,opal/sensors/
	|-- amb-temp#1-data
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- amb-temp#1-thrs
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- cooling-fan#10-data
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- cooling-fan#10-faulted
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	|-- cooling-fan#10-thrs
	|   |-- compatible
	|   |-- linux,phandle
	|   |-- name
	|   |-- phandle
	|   `-- sensor-id
	...

It has some limitations and we want to change it to something more flexible, 
giving us the ability to add new sensors. The new device tree layout is 
described here :

	https://lists.ozlabs.org/pipermail/skiboot/2015-February/000457.html


Both layouts use the same root node "ibm,opal/sensors" but the underlying
nodes have nothing in common, which means that the current driver ibmpowernv
will not 'see' any sensors on a system with an OPAL firmware exposing the new 
device tree. One will need new code for it. 

We have a few options to add support for this new tree :

 1. modify the current driver to parse the two trees. It seems overly complex 
    and the resulting code will be a pain to maintain. 

 2. add a new driver. As the two drivers can cohabitate, it is a viable solution.
    We will let the old driver rot in its corner and deprecate it one day. Kind
    of ugly to keep this code around.

 3. replace the current driver with a new one. The simplest and most brutal but 
    it also means we loose sensor support for IBM P8 systems running the old OPAL 
    firmware. I don't think it is a problem as these systems are bound to update 
    their firmware due to the amount of development currently being done on the 
    OPAL side.

    Open Power systems are not impacted.


Is that clearer ? and I would go for option 3.

Thanks,

C.
   






C. 


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
@ 2015-02-24  4:54     ` Michael Ellerman
  -1 siblings, 0 replies; 96+ messages in thread
From: Michael Ellerman @ 2015-02-24  4:54 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Guenter Roeck, Neelesh Gupta, skiboot,
	linuxppc-dev, Jean Delvare

On Fri, 2015-02-20 at 16:07 +0100, Cédric Le Goater wrote:
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>  arch/powerpc/platforms/powernv/opal-sensor.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
> index 4ab67ef7abc9..544292f2020f 100644
> --- a/arch/powerpc/platforms/powernv/opal-sensor.c
> +++ b/arch/powerpc/platforms/powernv/opal-sensor.c
> @@ -72,6 +72,9 @@ static __init int opal_sensor_init(void)
>  	struct platform_device *pdev;
>  	struct device_node *sensor;
>  
> +	if (!opal_check_token(OPAL_SENSOR_READ))
> +		return -ENODEV;
> +
>  	sensor = of_find_node_by_path("/ibm,opal/sensors");
>  	if (!sensor) {
>  		pr_err("Opal node 'sensors' not found\n");

Are you actually seeing this in practice?

It's a bit annoying that we have to check for the token, and then also check
the device tree. It would be nice if one implied the presence of the other.

cheers

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
@ 2015-02-24  4:54     ` Michael Ellerman
  0 siblings, 0 replies; 96+ messages in thread
From: Michael Ellerman @ 2015-02-24  4:54 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Guenter Roeck, Neelesh Gupta, skiboot,
	linuxppc-dev, Jean Delvare

T24gRnJpLCAyMDE1LTAyLTIwIGF0IDE2OjA3ICswMTAwLCBDw6lkcmljIExlIEdvYXRlciB3cm90
ZToKPiBTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Cj4g
LS0tCj4gIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLXNlbnNvci5jIHwgICAg
MyArKysKPiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQg
YS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvb3BhbC1zZW5zb3IuYyBiL2FyY2gvcG93
ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9vcGFsLXNlbnNvci5jCj4gaW5kZXggNGFiNjdlZjdhYmM5
Li41NDQyOTJmMjAyMGYgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dl
cm52L29wYWwtc2Vuc29yLmMKPiArKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYv
b3BhbC1zZW5zb3IuYwo+IEBAIC03Miw2ICs3Miw5IEBAIHN0YXRpYyBfX2luaXQgaW50IG9wYWxf
c2Vuc29yX2luaXQodm9pZCkKPiAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gIAlz
dHJ1Y3QgZGV2aWNlX25vZGUgKnNlbnNvcjsKPiAgCj4gKwlpZiAoIW9wYWxfY2hlY2tfdG9rZW4o
T1BBTF9TRU5TT1JfUkVBRCkpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICAJc2Vuc29yID0g
b2ZfZmluZF9ub2RlX2J5X3BhdGgoIi9pYm0sb3BhbC9zZW5zb3JzIik7Cj4gIAlpZiAoIXNlbnNv
cikgewo+ICAJCXByX2VycigiT3BhbCBub2RlICdzZW5zb3JzJyBub3QgZm91bmRcbiIpOwoKQXJl
IHlvdSBhY3R1YWxseSBzZWVpbmcgdGhpcyBpbiBwcmFjdGljZT8KCkl0J3MgYSBiaXQgYW5ub3lp
bmcgdGhhdCB3ZSBoYXZlIHRvIGNoZWNrIGZvciB0aGUgdG9rZW4sIGFuZCB0aGVuIGFsc28gY2hl
Y2sKdGhlIGRldmljZSB0cmVlLiBJdCB3b3VsZCBiZSBuaWNlIGlmIG9uZSBpbXBsaWVkIHRoZSBw
cmVzZW5jZSBvZiB0aGUgb3RoZXIuCgpjaGVlcnMKCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29y
c0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0
aW5mby9sbS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
  2015-02-24  4:54     ` [lm-sensors] " Michael Ellerman
@ 2015-02-25 17:28       ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-25 17:28 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Stewart Smith, lm-sensors, Guenter Roeck, Neelesh Gupta, skiboot,
	linuxppc-dev, Jean Delvare

On 02/24/2015 05:54 AM, Michael Ellerman wrote:
> On Fri, 2015-02-20 at 16:07 +0100, Cédric Le Goater wrote:
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
>> ---
>>  arch/powerpc/platforms/powernv/opal-sensor.c |    3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
>> index 4ab67ef7abc9..544292f2020f 100644
>> --- a/arch/powerpc/platforms/powernv/opal-sensor.c
>> +++ b/arch/powerpc/platforms/powernv/opal-sensor.c
>> @@ -72,6 +72,9 @@ static __init int opal_sensor_init(void)
>>  	struct platform_device *pdev;
>>  	struct device_node *sensor;
>>  
>> +	if (!opal_check_token(OPAL_SENSOR_READ))
>> +		return -ENODEV;
>> +
>>  	sensor = of_find_node_by_path("/ibm,opal/sensors");
>>  	if (!sensor) {
>>  		pr_err("Opal node 'sensors' not found\n");
> 
> Are you actually seeing this in practice?

No. Not this one. I have seen others though. I will send you patches.

> It's a bit annoying that we have to check for the token, and then also check
> the device tree. It would be nice if one implied the presence of the other.

Should we expose the OPAL call token in the device tree ? 

Cheers,

C. 
 

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist
@ 2015-02-25 17:28       ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-02-25 17:28 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Stewart Smith, lm-sensors, Guenter Roeck, Neelesh Gupta, skiboot,
	linuxppc-dev, Jean Delvare

T24gMDIvMjQvMjAxNSAwNTo1NCBBTSwgTWljaGFlbCBFbGxlcm1hbiB3cm90ZToKPiBPbiBGcmks
IDIwMTUtMDItMjAgYXQgMTY6MDcgKzAxMDAsIEPDqWRyaWMgTGUgR29hdGVyIHdyb3RlOgo+PiBT
aWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Cj4+IC0tLQo+
PiAgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L29wYWwtc2Vuc29yLmMgfCAgICAzICsr
Kwo+PiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv
YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L29wYWwtc2Vuc29yLmMgYi9hcmNoL3Bvd2Vy
cGMvcGxhdGZvcm1zL3Bvd2VybnYvb3BhbC1zZW5zb3IuYwo+PiBpbmRleCA0YWI2N2VmN2FiYzku
LjU0NDI5MmYyMDIwZiAxMDA2NDQKPj4gLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dl
cm52L29wYWwtc2Vuc29yLmMKPj4gKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52
L29wYWwtc2Vuc29yLmMKPj4gQEAgLTcyLDYgKzcyLDkgQEAgc3RhdGljIF9faW5pdCBpbnQgb3Bh
bF9zZW5zb3JfaW5pdCh2b2lkKQo+PiAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4+
ICAJc3RydWN0IGRldmljZV9ub2RlICpzZW5zb3I7Cj4+ICAKPj4gKwlpZiAoIW9wYWxfY2hlY2tf
dG9rZW4oT1BBTF9TRU5TT1JfUkVBRCkpCj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCj4+ICAJ
c2Vuc29yID0gb2ZfZmluZF9ub2RlX2J5X3BhdGgoIi9pYm0sb3BhbC9zZW5zb3JzIik7Cj4+ICAJ
aWYgKCFzZW5zb3IpIHsKPj4gIAkJcHJfZXJyKCJPcGFsIG5vZGUgJ3NlbnNvcnMnIG5vdCBmb3Vu
ZFxuIik7Cj4gCj4gQXJlIHlvdSBhY3R1YWxseSBzZWVpbmcgdGhpcyBpbiBwcmFjdGljZT8KCk5v
LiBOb3QgdGhpcyBvbmUuIEkgaGF2ZSBzZWVuIG90aGVycyB0aG91Z2guIEkgd2lsbCBzZW5kIHlv
dSBwYXRjaGVzLgoKPiBJdCdzIGEgYml0IGFubm95aW5nIHRoYXQgd2UgaGF2ZSB0byBjaGVjayBm
b3IgdGhlIHRva2VuLCBhbmQgdGhlbiBhbHNvIGNoZWNrCj4gdGhlIGRldmljZSB0cmVlLiBJdCB3
b3VsZCBiZSBuaWNlIGlmIG9uZSBpbXBsaWVkIHRoZSBwcmVzZW5jZSBvZiB0aGUgb3RoZXIuCgpT
aG91bGQgd2UgZXhwb3NlIHRoZSBPUEFMIGNhbGwgdG9rZW4gaW4gdGhlIGRldmljZSB0cmVlID8g
CgpDaGVlcnMsCgpDLiAKIAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5v
cmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29y
cw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-18 15:47   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

Hello !

The current implementation of the driver uses an index for the hwmon 
attribute which is extracted from the device node name. This index
is calculated by the OPAL firmware and its usage creates a dependency 
with the driver which makes changes a little more complex in OPAL.

This patchset changes the ibmpowernv code to use its own index. It 
starts with a few cleanups, mostly code shuffling around the creation 
of the hwmon sysfs attributes and completes by removing the dependency.

It also prepares ground for future OPAL changes :  

   https://lists.ozlabs.org/pipermail/skiboot/2015-March/000639.html

which will be addressed in a other small patchset.


The patches are based on Linux 4.0.0-rc4 and were tested on IBM Power 
and Open Power systems running Trusty. 

Cheers,

C.


Cédric Le Goater (5):
  hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP
  hwmon: (ibmpowernv) add a get_sensor_type() routine
  hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
  hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
  hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute
    names

 drivers/hwmon/ibmpowernv.c |  122 +++++++++++++++++++++++++++++---------------
 1 file changed, 81 insertions(+), 41 deletions(-)

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
@ 2015-03-18 15:47   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SGVsbG8gIQoKVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRyaXZlciB1c2VzIGFu
IGluZGV4IGZvciB0aGUgaHdtb24gCmF0dHJpYnV0ZSB3aGljaCBpcyBleHRyYWN0ZWQgZnJvbSB0
aGUgZGV2aWNlIG5vZGUgbmFtZS4gVGhpcyBpbmRleAppcyBjYWxjdWxhdGVkIGJ5IHRoZSBPUEFM
IGZpcm13YXJlIGFuZCBpdHMgdXNhZ2UgY3JlYXRlcyBhIGRlcGVuZGVuY3kgCndpdGggdGhlIGRy
aXZlciB3aGljaCBtYWtlcyBjaGFuZ2VzIGEgbGl0dGxlIG1vcmUgY29tcGxleCBpbiBPUEFMLgoK
VGhpcyBwYXRjaHNldCBjaGFuZ2VzIHRoZSBpYm1wb3dlcm52IGNvZGUgdG8gdXNlIGl0cyBvd24g
aW5kZXguIEl0IApzdGFydHMgd2l0aCBhIGZldyBjbGVhbnVwcywgbW9zdGx5IGNvZGUgc2h1ZmZs
aW5nIGFyb3VuZCB0aGUgY3JlYXRpb24gCm9mIHRoZSBod21vbiBzeXNmcyBhdHRyaWJ1dGVzIGFu
ZCBjb21wbGV0ZXMgYnkgcmVtb3ZpbmcgdGhlIGRlcGVuZGVuY3kuCgpJdCBhbHNvIHByZXBhcmVz
IGdyb3VuZCBmb3IgZnV0dXJlIE9QQUwgY2hhbmdlcyA6ICAKCiAgIGh0dHBzOi8vbGlzdHMub3ps
YWJzLm9yZy9waXBlcm1haWwvc2tpYm9vdC8yMDE1LU1hcmNoLzAwMDYzOS5odG1sCgp3aGljaCB3
aWxsIGJlIGFkZHJlc3NlZCBpbiBhIG90aGVyIHNtYWxsIHBhdGNoc2V0LgoKClRoZSBwYXRjaGVz
IGFyZSBiYXNlZCBvbiBMaW51eCA0LjAuMC1yYzQgYW5kIHdlcmUgdGVzdGVkIG9uIElCTSBQb3dl
ciAKYW5kIE9wZW4gUG93ZXIgc3lzdGVtcyBydW5uaW5nIFRydXN0eS4gCgpDaGVlcnMsCgpDLgoK
CkPDqWRyaWMgTGUgR29hdGVyICg1KToKICBod21vbjogKGlibXBvd2VybnYpIHJlcGxhY2UgQU1C
SUVOVF9URU1QIGJ5IFRFTVAKICBod21vbjogKGlibXBvd2VybnYpIGFkZCBhIGdldF9zZW5zb3Jf
dHlwZSgpIHJvdXRpbmUKICBod21vbjogKGlibXBvd2VybnYpIGFkZCBhIGNvbnZlcnRfb3BhbF9h
dHRyX25hbWUoKSByb3V0aW5lCiAgaHdtb246IChpYm1wb3dlcm52KSBjaGFuZ2UgY3JlYXRlX2h3
bW9uX2F0dHJfbmFtZSgpIHByb3RvdHlwZQogIGh3bW9uOiAoaWJtcG93ZXJudikgZG8gbm90IHVz
ZSB0aGUgT1BBTCBpbmRleCBmb3IgaHdtb24gYXR0cmlidXRlCiAgICBuYW1lcwoKIGRyaXZlcnMv
aHdtb24vaWJtcG93ZXJudi5jIHwgIDEyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t
LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDQxIGRlbGV0
aW9ucygtKQoKLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5z
b3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1z
ZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 1/5] hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-18 15:47   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

Ambient is too restrictive as there can be other temperature channels :
core, memory, etc.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index febe8175d36c..f691e18df16b 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -44,7 +44,7 @@
  */
 enum sensors {
 	FAN,
-	AMBIENT_TEMP,
+	TEMP,
 	POWER_SUPPLY,
 	POWER_INPUT,
 	MAX_SENSOR_TYPE,
@@ -87,7 +87,7 @@ static ssize_t show_sensor(struct device *dev, struct device_attribute *devattr,
 		return ret;
 
 	/* Convert temperature to milli-degrees */
-	if (sdata->type == AMBIENT_TEMP)
+	if (sdata->type == TEMP)
 		x *= 1000;
 	/* Convert power to micro-watts */
 	else if (sdata->type == POWER_INPUT)
@@ -154,7 +154,7 @@ static int create_hwmon_attr_name(struct device *dev, enum sensors type,
 	} else if (!strcmp(attr_suffix, DT_DATA_ATTR_SUFFIX)) {
 		attr_name = "input";
 	} else if (!strcmp(attr_suffix, DT_THRESHOLD_ATTR_SUFFIX)) {
-		if (type == AMBIENT_TEMP)
+		if (type == TEMP)
 			attr_name = "max";
 		else if (type == FAN)
 			attr_name = "min";
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 1/5] hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP
@ 2015-03-18 15:47   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

QW1iaWVudCBpcyB0b28gcmVzdHJpY3RpdmUgYXMgdGhlcmUgY2FuIGJlIG90aGVyIHRlbXBlcmF0
dXJlIGNoYW5uZWxzIDoKY29yZSwgbWVtb3J5LCBldGMuCgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmlj
IExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Ci0tLQogZHJpdmVycy9od21vbi9pYm1wb3dlcm52
LmMgfCAgICA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYyBiL2RyaXZl
cnMvaHdtb24vaWJtcG93ZXJudi5jCmluZGV4IGZlYmU4MTc1ZDM2Yy4uZjY5MWUxOGRmMTZiIDEw
MDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYworKysgYi9kcml2ZXJzL2h3bW9u
L2libXBvd2VybnYuYwpAQCAtNDQsNyArNDQsNyBAQAogICovCiBlbnVtIHNlbnNvcnMgewogCUZB
TiwKLQlBTUJJRU5UX1RFTVAsCisJVEVNUCwKIAlQT1dFUl9TVVBQTFksCiAJUE9XRVJfSU5QVVQs
CiAJTUFYX1NFTlNPUl9UWVBFLApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgc3NpemVfdCBzaG93
X3NlbnNvcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZh
dHRyLAogCQlyZXR1cm4gcmV0OwogCiAJLyogQ29udmVydCB0ZW1wZXJhdHVyZSB0byBtaWxsaS1k
ZWdyZWVzICovCi0JaWYgKHNkYXRhLT50eXBlID09IEFNQklFTlRfVEVNUCkKKwlpZiAoc2RhdGEt
PnR5cGUgPT0gVEVNUCkKIAkJeCAqPSAxMDAwOwogCS8qIENvbnZlcnQgcG93ZXIgdG8gbWljcm8t
d2F0dHMgKi8KIAllbHNlIGlmIChzZGF0YS0+dHlwZSA9PSBQT1dFUl9JTlBVVCkKQEAgLTE1NCw3
ICsxNTQsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9od21vbl9hdHRyX25hbWUoc3RydWN0IGRldmlj
ZSAqZGV2LCBlbnVtIHNlbnNvcnMgdHlwZSwKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXR0cl9zdWZm
aXgsIERUX0RBVEFfQVRUUl9TVUZGSVgpKSB7CiAJCWF0dHJfbmFtZSA9ICJpbnB1dCI7CiAJfSBl
bHNlIGlmICghc3RyY21wKGF0dHJfc3VmZml4LCBEVF9USFJFU0hPTERfQVRUUl9TVUZGSVgpKSB7
Ci0JCWlmICh0eXBlID09IEFNQklFTlRfVEVNUCkKKwkJaWYgKHR5cGUgPT0gVEVNUCkKIAkJCWF0
dHJfbmFtZSA9ICJtYXgiOwogCQllbHNlIGlmICh0eXBlID09IEZBTikKIAkJCWF0dHJfbmFtZSA9
ICJtaW4iOwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNv
cnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNl
bnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 2/5] hwmon: (ibmpowernv) add a get_sensor_type() routine
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-18 15:47   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

It will help in adding different compatible properties, coming from a
new device tree layout for example.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index f691e18df16b..07a8219b7f4e 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -169,6 +169,17 @@ static int create_hwmon_attr_name(struct device *dev, enum sensors type,
 	return 0;
 }
 
+static int get_sensor_type(struct device_node *np)
+{
+	enum sensors type;
+
+	for (type = 0; type < MAX_SENSOR_TYPE; type++) {
+		if (of_device_is_compatible(np, sensor_groups[type].compatible))
+			return type;
+	}
+	return MAX_SENSOR_TYPE;
+}
+
 static int populate_attr_groups(struct platform_device *pdev)
 {
 	struct platform_data *pdata = platform_get_drvdata(pdev);
@@ -181,12 +192,9 @@ static int populate_attr_groups(struct platform_device *pdev)
 		if (np->name == NULL)
 			continue;
 
-		for (type = 0; type < MAX_SENSOR_TYPE; type++)
-			if (of_device_is_compatible(np,
-					sensor_groups[type].compatible)) {
-				sensor_groups[type].attr_count++;
-				break;
-			}
+		type = get_sensor_type(np);
+		if (type != MAX_SENSOR_TYPE)
+			sensor_groups[type].attr_count++;
 	}
 
 	of_node_put(opal);
@@ -236,11 +244,7 @@ static int create_device_attrs(struct platform_device *pdev)
 		if (np->name == NULL)
 			continue;
 
-		for (type = 0; type < MAX_SENSOR_TYPE; type++)
-			if (of_device_is_compatible(np,
-					sensor_groups[type].compatible))
-				break;
-
+		type = get_sensor_type(np);
 		if (type == MAX_SENSOR_TYPE)
 			continue;
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 2/5] hwmon: (ibmpowernv) add a get_sensor_type() routine
@ 2015-03-18 15:47   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SXQgd2lsbCBoZWxwIGluIGFkZGluZyBkaWZmZXJlbnQgY29tcGF0aWJsZSBwcm9wZXJ0aWVzLCBj
b21pbmcgZnJvbSBhCm5ldyBkZXZpY2UgdHJlZSBsYXlvdXQgZm9yIGV4YW1wbGUuCgpTaWduZWQt
b2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Ci0tLQogZHJpdmVycy9o
d21vbi9pYm1wb3dlcm52LmMgfCAgIDI2ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZp
bGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMgYi9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYu
YwppbmRleCBmNjkxZTE4ZGYxNmIuLjA3YTgyMTliN2Y0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9o
d21vbi9pYm1wb3dlcm52LmMKKysrIGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKQEAgLTE2
OSw2ICsxNjksMTcgQEAgc3RhdGljIGludCBjcmVhdGVfaHdtb25fYXR0cl9uYW1lKHN0cnVjdCBk
ZXZpY2UgKmRldiwgZW51bSBzZW5zb3JzIHR5cGUsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBp
bnQgZ2V0X3NlbnNvcl90eXBlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCit7CisJZW51bSBzZW5z
b3JzIHR5cGU7CisKKwlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgTUFYX1NFTlNPUl9UWVBFOyB0eXBl
KyspIHsKKwkJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBzZW5zb3JfZ3JvdXBzW3R5
cGVdLmNvbXBhdGlibGUpKQorCQkJcmV0dXJuIHR5cGU7CisJfQorCXJldHVybiBNQVhfU0VOU09S
X1RZUEU7Cit9CisKIHN0YXRpYyBpbnQgcG9wdWxhdGVfYXR0cl9ncm91cHMoc3RydWN0IHBsYXRm
b3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSBwbGF0
Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKQEAgLTE4MSwxMiArMTkyLDkgQEAgc3RhdGljIGludCBw
b3B1bGF0ZV9hdHRyX2dyb3VwcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlpZiAo
bnAtPm5hbWUgPT0gTlVMTCkKIAkJCWNvbnRpbnVlOwogCi0JCWZvciAodHlwZSA9IDA7IHR5cGUg
PCBNQVhfU0VOU09SX1RZUEU7IHR5cGUrKykKLQkJCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJs
ZShucCwKLQkJCQkJc2Vuc29yX2dyb3Vwc1t0eXBlXS5jb21wYXRpYmxlKSkgewotCQkJCXNlbnNv
cl9ncm91cHNbdHlwZV0uYXR0cl9jb3VudCsrOwotCQkJCWJyZWFrOwotCQkJfQorCQl0eXBlID0g
Z2V0X3NlbnNvcl90eXBlKG5wKTsKKwkJaWYgKHR5cGUgIT0gTUFYX1NFTlNPUl9UWVBFKQorCQkJ
c2Vuc29yX2dyb3Vwc1t0eXBlXS5hdHRyX2NvdW50Kys7CiAJfQogCiAJb2Zfbm9kZV9wdXQob3Bh
bCk7CkBAIC0yMzYsMTEgKzI0NCw3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2RldmljZV9hdHRycyhz
dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlpZiAobnAtPm5hbWUgPT0gTlVMTCkKIAkJ
CWNvbnRpbnVlOwogCi0JCWZvciAodHlwZSA9IDA7IHR5cGUgPCBNQVhfU0VOU09SX1RZUEU7IHR5
cGUrKykKLQkJCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwKLQkJCQkJc2Vuc29yX2dy
b3Vwc1t0eXBlXS5jb21wYXRpYmxlKSkKLQkJCQlicmVhazsKLQorCQl0eXBlID0gZ2V0X3NlbnNv
cl90eXBlKG5wKTsKIAkJaWYgKHR5cGUgPT0gTUFYX1NFTlNPUl9UWVBFKQogCQkJY29udGludWU7
CiAKLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9y
ZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-18 15:47   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

It simplifies the create_hwmon_attr_name() routine and it clearly isolates
the conversion done between the OPAL node names and hwmon attributes names.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   39 +++++++++++++++++++++++++--------------
 1 file changed, 25 insertions(+), 14 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index 07a8219b7f4e..edcc4ffa5ad0 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -127,6 +127,28 @@ static int get_sensor_index_attr(const char *name, u32 *index,
 	return 0;
 }
 
+static const char *convert_opal_attr_name(enum sensors type,
+					const char *opal_attr)
+{
+	const char *attr_name = NULL;
+
+	if (!strcmp(opal_attr, DT_FAULT_ATTR_SUFFIX)) {
+		attr_name = "fault";
+	} else if (!strcmp(opal_attr, DT_DATA_ATTR_SUFFIX)) {
+		attr_name = "input";
+	} else if (!strcmp(opal_attr, DT_THRESHOLD_ATTR_SUFFIX)) {
+		if (type == TEMP)
+			attr_name = "max";
+		else if (type == FAN)
+			attr_name = "min";
+		else
+			return NULL;
+	} else {
+		return NULL;
+	}
+	return attr_name;
+}
+
 /*
  * This function translates the DT node name into the 'hwmon' attribute name.
  * IBMPOWERNV device node appear like cooling-fan#2-data, amb-temp#1-thrs etc.
@@ -138,7 +160,7 @@ static int create_hwmon_attr_name(struct device *dev, enum sensors type,
 					 char *hwmon_attr_name)
 {
 	char attr_suffix[MAX_ATTR_LEN];
-	char *attr_name;
+	const char *attr_name;
 	u32 index;
 	int err;
 
@@ -149,20 +171,9 @@ static int create_hwmon_attr_name(struct device *dev, enum sensors type,
 		return err;
 	}
 
-	if (!strcmp(attr_suffix, DT_FAULT_ATTR_SUFFIX)) {
-		attr_name = "fault";
-	} else if (!strcmp(attr_suffix, DT_DATA_ATTR_SUFFIX)) {
-		attr_name = "input";
-	} else if (!strcmp(attr_suffix, DT_THRESHOLD_ATTR_SUFFIX)) {
-		if (type == TEMP)
-			attr_name = "max";
-		else if (type == FAN)
-			attr_name = "min";
-		else
-			return -ENOENT;
-	} else {
+	attr_name = convert_opal_attr_name(type, attr_suffix);
+	if (!attr_name)
 		return -ENOENT;
-	}
 
 	snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
 		 sensor_groups[type].name, index, attr_name);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
@ 2015-03-18 15:47   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SXQgc2ltcGxpZmllcyB0aGUgY3JlYXRlX2h3bW9uX2F0dHJfbmFtZSgpIHJvdXRpbmUgYW5kIGl0
IGNsZWFybHkgaXNvbGF0ZXMKdGhlIGNvbnZlcnNpb24gZG9uZSBiZXR3ZWVuIHRoZSBPUEFMIG5v
ZGUgbmFtZXMgYW5kIGh3bW9uIGF0dHJpYnV0ZXMgbmFtZXMuCgpTaWduZWQtb2ZmLWJ5OiBDw6lk
cmljIExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Ci0tLQogZHJpdmVycy9od21vbi9pYm1wb3dl
cm52LmMgfCAgIDM5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBm
aWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52
LmMKaW5kZXggMDdhODIxOWI3ZjRlLi5lZGNjNGZmYTVhZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
aHdtb24vaWJtcG93ZXJudi5jCisrKyBiL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCkBAIC0x
MjcsNiArMTI3LDI4IEBAIHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl9pbmRleF9hdHRyKGNvbnN0IGNo
YXIgKm5hbWUsIHUzMiAqaW5kZXgsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFy
ICpjb252ZXJ0X29wYWxfYXR0cl9uYW1lKGVudW0gc2Vuc29ycyB0eXBlLAorCQkJCQljb25zdCBj
aGFyICpvcGFsX2F0dHIpCit7CisJY29uc3QgY2hhciAqYXR0cl9uYW1lID0gTlVMTDsKKworCWlm
ICghc3RyY21wKG9wYWxfYXR0ciwgRFRfRkFVTFRfQVRUUl9TVUZGSVgpKSB7CisJCWF0dHJfbmFt
ZSA9ICJmYXVsdCI7CisJfSBlbHNlIGlmICghc3RyY21wKG9wYWxfYXR0ciwgRFRfREFUQV9BVFRS
X1NVRkZJWCkpIHsKKwkJYXR0cl9uYW1lID0gImlucHV0IjsKKwl9IGVsc2UgaWYgKCFzdHJjbXAo
b3BhbF9hdHRyLCBEVF9USFJFU0hPTERfQVRUUl9TVUZGSVgpKSB7CisJCWlmICh0eXBlID09IFRF
TVApCisJCQlhdHRyX25hbWUgPSAibWF4IjsKKwkJZWxzZSBpZiAodHlwZSA9PSBGQU4pCisJCQlh
dHRyX25hbWUgPSAibWluIjsKKwkJZWxzZQorCQkJcmV0dXJuIE5VTEw7CisJfSBlbHNlIHsKKwkJ
cmV0dXJuIE5VTEw7CisJfQorCXJldHVybiBhdHRyX25hbWU7Cit9CisKIC8qCiAgKiBUaGlzIGZ1
bmN0aW9uIHRyYW5zbGF0ZXMgdGhlIERUIG5vZGUgbmFtZSBpbnRvIHRoZSAnaHdtb24nIGF0dHJp
YnV0ZSBuYW1lLgogICogSUJNUE9XRVJOViBkZXZpY2Ugbm9kZSBhcHBlYXIgbGlrZSBjb29saW5n
LWZhbiMyLWRhdGEsIGFtYi10ZW1wIzEtdGhycyBldGMuCkBAIC0xMzgsNyArMTYwLDcgQEAgc3Rh
dGljIGludCBjcmVhdGVfaHdtb25fYXR0cl9uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBz
ZW5zb3JzIHR5cGUsCiAJCQkJCSBjaGFyICpod21vbl9hdHRyX25hbWUpCiB7CiAJY2hhciBhdHRy
X3N1ZmZpeFtNQVhfQVRUUl9MRU5dOwotCWNoYXIgKmF0dHJfbmFtZTsKKwljb25zdCBjaGFyICph
dHRyX25hbWU7CiAJdTMyIGluZGV4OwogCWludCBlcnI7CiAKQEAgLTE0OSwyMCArMTcxLDkgQEAg
c3RhdGljIGludCBjcmVhdGVfaHdtb25fYXR0cl9uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51
bSBzZW5zb3JzIHR5cGUsCiAJCXJldHVybiBlcnI7CiAJfQogCi0JaWYgKCFzdHJjbXAoYXR0cl9z
dWZmaXgsIERUX0ZBVUxUX0FUVFJfU1VGRklYKSkgewotCQlhdHRyX25hbWUgPSAiZmF1bHQiOwot
CX0gZWxzZSBpZiAoIXN0cmNtcChhdHRyX3N1ZmZpeCwgRFRfREFUQV9BVFRSX1NVRkZJWCkpIHsK
LQkJYXR0cl9uYW1lID0gImlucHV0IjsKLQl9IGVsc2UgaWYgKCFzdHJjbXAoYXR0cl9zdWZmaXgs
IERUX1RIUkVTSE9MRF9BVFRSX1NVRkZJWCkpIHsKLQkJaWYgKHR5cGUgPT0gVEVNUCkKLQkJCWF0
dHJfbmFtZSA9ICJtYXgiOwotCQllbHNlIGlmICh0eXBlID09IEZBTikKLQkJCWF0dHJfbmFtZSA9
ICJtaW4iOwotCQllbHNlCi0JCQlyZXR1cm4gLUVOT0VOVDsKLQl9IGVsc2UgeworCWF0dHJfbmFt
ZSA9IGNvbnZlcnRfb3BhbF9hdHRyX25hbWUodHlwZSwgYXR0cl9zdWZmaXgpOworCWlmICghYXR0
cl9uYW1lKQogCQlyZXR1cm4gLUVOT0VOVDsKLQl9CiAKIAlzbnByaW50Zihod21vbl9hdHRyX25h
bWUsIE1BWF9BVFRSX0xFTiwgIiVzJWRfJXMiLAogCQkgc2Vuc29yX2dyb3Vwc1t0eXBlXS5uYW1l
LCBpbmRleCwgYXR0cl9uYW1lKTsKLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vu
c29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9s
aXN0aW5mby9sbS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-18 15:47   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

It simplifies the creation of the hwmon attributes and will help when
support for a new device tree layout is added. The patch also changes
the name of the routine to parse_opal_node_name().

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index edcc4ffa5ad0..570d2360b698 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -155,28 +155,22 @@ static const char *convert_opal_attr_name(enum sensors type,
  * which need to be mapped as fan2_input, temp1_max respectively before
  * populating them inside hwmon device class.
  */
-static int create_hwmon_attr_name(struct device *dev, enum sensors type,
-					 const char *node_name,
-					 char *hwmon_attr_name)
+static int parse_opal_node_name(const char *node_name, enum sensors type,
+	u32 *index, const char **hwmon_attr_name)
 {
 	char attr_suffix[MAX_ATTR_LEN];
 	const char *attr_name;
-	u32 index;
 	int err;
 
-	err = get_sensor_index_attr(node_name, &index, attr_suffix);
-	if (err) {
-		dev_err(dev, "Sensor device node name '%s' is invalid\n",
-			node_name);
+	err = get_sensor_index_attr(node_name, index, attr_suffix);
+	if (err)
 		return err;
-	}
 
 	attr_name = convert_opal_attr_name(type, attr_suffix);
 	if (!attr_name)
 		return -ENOENT;
 
-	snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
-		 sensor_groups[type].name, index, attr_name);
+	*hwmon_attr_name = attr_name;
 	return 0;
 }
 
@@ -252,6 +246,9 @@ static int create_device_attrs(struct platform_device *pdev)
 	}
 
 	for_each_child_of_node(opal, np) {
+		const char *attr_name;
+		u32 opal_index;
+
 		if (np->name == NULL)
 			continue;
 
@@ -268,10 +265,17 @@ static int create_device_attrs(struct platform_device *pdev)
 
 		sdata[count].id = sensor_id;
 		sdata[count].type = type;
-		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
-					     sdata[count].name);
-		if (err)
+
+		err = parse_opal_node_name(np->name, type, &opal_index,
+					   &attr_name);
+		if (err) {
+			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
+				np->name);
 			goto exit_put_node;
+		}
+
+		snprintf(sdata[count].name, MAX_ATTR_LEN, "%s%d_%s",
+			 sensor_groups[type].name, opal_index, attr_name);
 
 		sysfs_attr_init(&sdata[count].dev_attr.attr);
 		sdata[count].dev_attr.attr.name = sdata[count].name;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
@ 2015-03-18 15:47   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SXQgc2ltcGxpZmllcyB0aGUgY3JlYXRpb24gb2YgdGhlIGh3bW9uIGF0dHJpYnV0ZXMgYW5kIHdp
bGwgaGVscCB3aGVuCnN1cHBvcnQgZm9yIGEgbmV3IGRldmljZSB0cmVlIGxheW91dCBpcyBhZGRl
ZC4gVGhlIHBhdGNoIGFsc28gY2hhbmdlcwp0aGUgbmFtZSBvZiB0aGUgcm91dGluZSB0byBwYXJz
ZV9vcGFsX25vZGVfbmFtZSgpLgoKU2lnbmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNs
Z0Bmci5pYm0uY29tPgotLS0KIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIHwgICAzMiArKysr
KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlv
bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vaWJtcG93
ZXJudi5jIGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKaW5kZXggZWRjYzRmZmE1YWQwLi41
NzBkMjM2MGI2OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCisrKyBi
L2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCkBAIC0xNTUsMjggKzE1NSwyMiBAQCBzdGF0aWMg
Y29uc3QgY2hhciAqY29udmVydF9vcGFsX2F0dHJfbmFtZShlbnVtIHNlbnNvcnMgdHlwZSwKICAq
IHdoaWNoIG5lZWQgdG8gYmUgbWFwcGVkIGFzIGZhbjJfaW5wdXQsIHRlbXAxX21heCByZXNwZWN0
aXZlbHkgYmVmb3JlCiAgKiBwb3B1bGF0aW5nIHRoZW0gaW5zaWRlIGh3bW9uIGRldmljZSBjbGFz
cy4KICAqLwotc3RhdGljIGludCBjcmVhdGVfaHdtb25fYXR0cl9uYW1lKHN0cnVjdCBkZXZpY2Ug
KmRldiwgZW51bSBzZW5zb3JzIHR5cGUsCi0JCQkJCSBjb25zdCBjaGFyICpub2RlX25hbWUsCi0J
CQkJCSBjaGFyICpod21vbl9hdHRyX25hbWUpCitzdGF0aWMgaW50IHBhcnNlX29wYWxfbm9kZV9u
YW1lKGNvbnN0IGNoYXIgKm5vZGVfbmFtZSwgZW51bSBzZW5zb3JzIHR5cGUsCisJdTMyICppbmRl
eCwgY29uc3QgY2hhciAqKmh3bW9uX2F0dHJfbmFtZSkKIHsKIAljaGFyIGF0dHJfc3VmZml4W01B
WF9BVFRSX0xFTl07CiAJY29uc3QgY2hhciAqYXR0cl9uYW1lOwotCXUzMiBpbmRleDsKIAlpbnQg
ZXJyOwogCi0JZXJyID0gZ2V0X3NlbnNvcl9pbmRleF9hdHRyKG5vZGVfbmFtZSwgJmluZGV4LCBh
dHRyX3N1ZmZpeCk7Ci0JaWYgKGVycikgewotCQlkZXZfZXJyKGRldiwgIlNlbnNvciBkZXZpY2Ug
bm9kZSBuYW1lICclcycgaXMgaW52YWxpZFxuIiwKLQkJCW5vZGVfbmFtZSk7CisJZXJyID0gZ2V0
X3NlbnNvcl9pbmRleF9hdHRyKG5vZGVfbmFtZSwgaW5kZXgsIGF0dHJfc3VmZml4KTsKKwlpZiAo
ZXJyKQogCQlyZXR1cm4gZXJyOwotCX0KIAogCWF0dHJfbmFtZSA9IGNvbnZlcnRfb3BhbF9hdHRy
X25hbWUodHlwZSwgYXR0cl9zdWZmaXgpOwogCWlmICghYXR0cl9uYW1lKQogCQlyZXR1cm4gLUVO
T0VOVDsKIAotCXNucHJpbnRmKGh3bW9uX2F0dHJfbmFtZSwgTUFYX0FUVFJfTEVOLCAiJXMlZF8l
cyIsCi0JCSBzZW5zb3JfZ3JvdXBzW3R5cGVdLm5hbWUsIGluZGV4LCBhdHRyX25hbWUpOworCSpo
d21vbl9hdHRyX25hbWUgPSBhdHRyX25hbWU7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTI1Miw2ICsy
NDYsOSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9kZXZpY2VfYXR0cnMoc3RydWN0IHBsYXRmb3JtX2Rl
dmljZSAqcGRldikKIAl9CiAKIAlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKG9wYWwsIG5wKSB7CisJ
CWNvbnN0IGNoYXIgKmF0dHJfbmFtZTsKKwkJdTMyIG9wYWxfaW5kZXg7CisKIAkJaWYgKG5wLT5u
YW1lID09IE5VTEwpCiAJCQljb250aW51ZTsKIApAQCAtMjY4LDEwICsyNjUsMTcgQEAgc3RhdGlj
IGludCBjcmVhdGVfZGV2aWNlX2F0dHJzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAK
IAkJc2RhdGFbY291bnRdLmlkID0gc2Vuc29yX2lkOwogCQlzZGF0YVtjb3VudF0udHlwZSA9IHR5
cGU7Ci0JCWVyciA9IGNyZWF0ZV9od21vbl9hdHRyX25hbWUoJnBkZXYtPmRldiwgdHlwZSwgbnAt
Pm5hbWUsCi0JCQkJCSAgICAgc2RhdGFbY291bnRdLm5hbWUpOwotCQlpZiAoZXJyKQorCisJCWVy
ciA9IHBhcnNlX29wYWxfbm9kZV9uYW1lKG5wLT5uYW1lLCB0eXBlLCAmb3BhbF9pbmRleCwKKwkJ
CQkJICAgJmF0dHJfbmFtZSk7CisJCWlmIChlcnIpIHsKKwkJCWRldl9lcnIoJnBkZXYtPmRldiwg
IlNlbnNvciBkZXZpY2Ugbm9kZSBuYW1lICclcycgaXMgaW52YWxpZFxuIiwKKwkJCQlucC0+bmFt
ZSk7CiAJCQlnb3RvIGV4aXRfcHV0X25vZGU7CisJCX0KKworCQlzbnByaW50ZihzZGF0YVtjb3Vu
dF0ubmFtZSwgTUFYX0FUVFJfTEVOLCAiJXMlZF8lcyIsCisJCQkgc2Vuc29yX2dyb3Vwc1t0eXBl
XS5uYW1lLCBvcGFsX2luZGV4LCBhdHRyX25hbWUpOwogCiAJCXN5c2ZzX2F0dHJfaW5pdCgmc2Rh
dGFbY291bnRdLmRldl9hdHRyLmF0dHIpOwogCQlzZGF0YVtjb3VudF0uZGV2X2F0dHIuYXR0ci5u
YW1lID0gc2RhdGFbY291bnRdLm5hbWU7Ci0tIAoxLjcuMTAuNAoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0Cmxt
LXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxt
YW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 5/5] hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute names
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-18 15:47   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

The current OPAL firmware exposes the different sensors of an IBM Power
system using the node names such as :

	sensors/amb-temp#1-data
	sensors/amb-temp#1-thrs
	cooling-fan#1-data
	cooling-fan#1-faulted
	cooling-fan#1-thrs
	cooling-fan#2-data
	...

The ibmpowernv driver, when loaded, parses these names to extract the
sensor index and the sensor attribute name. Unfortunately, this scheme
makes it difficult to add sensors with a different layout (specially of
the same type, like temperature) as the sensor index calculated in OPAL
is directly used in the hwmon sysfs interface.

What this patch does is add a independent hwmon index for each sensor.
The increment of the hwmon index (temp, fan, power, etc.) is kept per
sensor type in the sensor_group table. The sensor_data table is used
to store the association of the hwmon and OPAL indexes, as we need to
have the same hwmon index for different attributes of a same sensor.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index 570d2360b698..ffcebc9d8bf5 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -55,6 +55,7 @@ static struct sensor_group {
 	const char *compatible;
 	struct attribute_group group;
 	u32 attr_count;
+	u32 hwmon_index;
 } sensor_groups[] = {
 	{"fan", "ibm,opal-sensor-cooling-fan"},
 	{"temp", "ibm,opal-sensor-amb-temp"},
@@ -64,6 +65,8 @@ static struct sensor_group {
 
 struct sensor_data {
 	u32 id; /* An opaque id of the firmware for each sensor */
+	u32 hwmon_index;
+	u32 opal_index;
 	enum sensors type;
 	char name[MAX_ATTR_LEN];
 	struct device_attribute dev_attr;
@@ -185,6 +188,19 @@ static int get_sensor_type(struct device_node *np)
 	return MAX_SENSOR_TYPE;
 }
 
+static u32 get_sensor_hwmon_index(struct sensor_data *sdata,
+	struct sensor_data *sdata_table, int count)
+{
+	int i;
+
+	for (i = 0; i < count; i++)
+		if (sdata_table[i].opal_index == sdata->opal_index &&
+		    sdata_table[i].type == sdata->type)
+			return sdata_table[i].hwmon_index;
+
+	return ++sensor_groups[sdata->type].hwmon_index;
+}
+
 static int populate_attr_groups(struct platform_device *pdev)
 {
 	struct platform_data *pdata = platform_get_drvdata(pdev);
@@ -274,8 +290,13 @@ static int create_device_attrs(struct platform_device *pdev)
 			goto exit_put_node;
 		}
 
+		sdata[count].opal_index = opal_index;
+		sdata[count].hwmon_index =
+			get_sensor_hwmon_index(&sdata[count], sdata, count);
+
 		snprintf(sdata[count].name, MAX_ATTR_LEN, "%s%d_%s",
-			 sensor_groups[type].name, opal_index, attr_name);
+			 sensor_groups[type].name, sdata[count].hwmon_index,
+			 attr_name);
 
 		sysfs_attr_init(&sdata[count].dev_attr.attr);
 		sdata[count].dev_attr.attr.name = sdata[count].name;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 5/5] hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute names
@ 2015-03-18 15:47   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-18 15:47 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

VGhlIGN1cnJlbnQgT1BBTCBmaXJtd2FyZSBleHBvc2VzIHRoZSBkaWZmZXJlbnQgc2Vuc29ycyBv
ZiBhbiBJQk0gUG93ZXIKc3lzdGVtIHVzaW5nIHRoZSBub2RlIG5hbWVzIHN1Y2ggYXMgOgoKCXNl
bnNvcnMvYW1iLXRlbXAjMS1kYXRhCglzZW5zb3JzL2FtYi10ZW1wIzEtdGhycwoJY29vbGluZy1m
YW4jMS1kYXRhCgljb29saW5nLWZhbiMxLWZhdWx0ZWQKCWNvb2xpbmctZmFuIzEtdGhycwoJY29v
bGluZy1mYW4jMi1kYXRhCgkuLi4KClRoZSBpYm1wb3dlcm52IGRyaXZlciwgd2hlbiBsb2FkZWQs
IHBhcnNlcyB0aGVzZSBuYW1lcyB0byBleHRyYWN0IHRoZQpzZW5zb3IgaW5kZXggYW5kIHRoZSBz
ZW5zb3IgYXR0cmlidXRlIG5hbWUuIFVuZm9ydHVuYXRlbHksIHRoaXMgc2NoZW1lCm1ha2VzIGl0
IGRpZmZpY3VsdCB0byBhZGQgc2Vuc29ycyB3aXRoIGEgZGlmZmVyZW50IGxheW91dCAoc3BlY2lh
bGx5IG9mCnRoZSBzYW1lIHR5cGUsIGxpa2UgdGVtcGVyYXR1cmUpIGFzIHRoZSBzZW5zb3IgaW5k
ZXggY2FsY3VsYXRlZCBpbiBPUEFMCmlzIGRpcmVjdGx5IHVzZWQgaW4gdGhlIGh3bW9uIHN5c2Zz
IGludGVyZmFjZS4KCldoYXQgdGhpcyBwYXRjaCBkb2VzIGlzIGFkZCBhIGluZGVwZW5kZW50IGh3
bW9uIGluZGV4IGZvciBlYWNoIHNlbnNvci4KVGhlIGluY3JlbWVudCBvZiB0aGUgaHdtb24gaW5k
ZXggKHRlbXAsIGZhbiwgcG93ZXIsIGV0Yy4pIGlzIGtlcHQgcGVyCnNlbnNvciB0eXBlIGluIHRo
ZSBzZW5zb3JfZ3JvdXAgdGFibGUuIFRoZSBzZW5zb3JfZGF0YSB0YWJsZSBpcyB1c2VkCnRvIHN0
b3JlIHRoZSBhc3NvY2lhdGlvbiBvZiB0aGUgaHdtb24gYW5kIE9QQUwgaW5kZXhlcywgYXMgd2Ug
bmVlZCB0bwpoYXZlIHRoZSBzYW1lIGh3bW9uIGluZGV4IGZvciBkaWZmZXJlbnQgYXR0cmlidXRl
cyBvZiBhIHNhbWUgc2Vuc29yLgoKU2lnbmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNs
Z0Bmci5pYm0uY29tPgotLS0KIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIHwgICAyMyArKysr
KysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDEg
ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYyBiL2Ry
aXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCmluZGV4IDU3MGQyMzYwYjY5OC4uZmZjZWJjOWQ4YmY1
IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYworKysgYi9kcml2ZXJzL2h3
bW9uL2libXBvd2VybnYuYwpAQCAtNTUsNiArNTUsNyBAQCBzdGF0aWMgc3RydWN0IHNlbnNvcl9n
cm91cCB7CiAJY29uc3QgY2hhciAqY29tcGF0aWJsZTsKIAlzdHJ1Y3QgYXR0cmlidXRlX2dyb3Vw
IGdyb3VwOwogCXUzMiBhdHRyX2NvdW50OworCXUzMiBod21vbl9pbmRleDsKIH0gc2Vuc29yX2dy
b3Vwc1tdID0gewogCXsiZmFuIiwgImlibSxvcGFsLXNlbnNvci1jb29saW5nLWZhbiJ9LAogCXsi
dGVtcCIsICJpYm0sb3BhbC1zZW5zb3ItYW1iLXRlbXAifSwKQEAgLTY0LDYgKzY1LDggQEAgc3Rh
dGljIHN0cnVjdCBzZW5zb3JfZ3JvdXAgewogCiBzdHJ1Y3Qgc2Vuc29yX2RhdGEgewogCXUzMiBp
ZDsgLyogQW4gb3BhcXVlIGlkIG9mIHRoZSBmaXJtd2FyZSBmb3IgZWFjaCBzZW5zb3IgKi8KKwl1
MzIgaHdtb25faW5kZXg7CisJdTMyIG9wYWxfaW5kZXg7CiAJZW51bSBzZW5zb3JzIHR5cGU7CiAJ
Y2hhciBuYW1lW01BWF9BVFRSX0xFTl07CiAJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0
dHI7CkBAIC0xODUsNiArMTg4LDE5IEBAIHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl90eXBlKHN0cnVj
dCBkZXZpY2Vfbm9kZSAqbnApCiAJcmV0dXJuIE1BWF9TRU5TT1JfVFlQRTsKIH0KIAorc3RhdGlj
IHUzMiBnZXRfc2Vuc29yX2h3bW9uX2luZGV4KHN0cnVjdCBzZW5zb3JfZGF0YSAqc2RhdGEsCisJ
c3RydWN0IHNlbnNvcl9kYXRhICpzZGF0YV90YWJsZSwgaW50IGNvdW50KQoreworCWludCBpOwor
CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCisJCWlmIChzZGF0YV90YWJsZVtpXS5vcGFs
X2luZGV4ID09IHNkYXRhLT5vcGFsX2luZGV4ICYmCisJCSAgICBzZGF0YV90YWJsZVtpXS50eXBl
ID09IHNkYXRhLT50eXBlKQorCQkJcmV0dXJuIHNkYXRhX3RhYmxlW2ldLmh3bW9uX2luZGV4Owor
CisJcmV0dXJuICsrc2Vuc29yX2dyb3Vwc1tzZGF0YS0+dHlwZV0uaHdtb25faW5kZXg7Cit9CisK
IHN0YXRpYyBpbnQgcG9wdWxhdGVfYXR0cl9ncm91cHMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq
cGRldikKIHsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSBwbGF0Zm9ybV9nZXRfZHJ2
ZGF0YShwZGV2KTsKQEAgLTI3NCw4ICsyOTAsMTMgQEAgc3RhdGljIGludCBjcmVhdGVfZGV2aWNl
X2F0dHJzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQlnb3RvIGV4aXRfcHV0X25v
ZGU7CiAJCX0KIAorCQlzZGF0YVtjb3VudF0ub3BhbF9pbmRleCA9IG9wYWxfaW5kZXg7CisJCXNk
YXRhW2NvdW50XS5od21vbl9pbmRleCA9CisJCQlnZXRfc2Vuc29yX2h3bW9uX2luZGV4KCZzZGF0
YVtjb3VudF0sIHNkYXRhLCBjb3VudCk7CisKIAkJc25wcmludGYoc2RhdGFbY291bnRdLm5hbWUs
IE1BWF9BVFRSX0xFTiwgIiVzJWRfJXMiLAotCQkJIHNlbnNvcl9ncm91cHNbdHlwZV0ubmFtZSwg
b3BhbF9pbmRleCwgYXR0cl9uYW1lKTsKKwkJCSBzZW5zb3JfZ3JvdXBzW3R5cGVdLm5hbWUsIHNk
YXRhW2NvdW50XS5od21vbl9pbmRleCwKKwkJCSBhdHRyX25hbWUpOwogCiAJCXN5c2ZzX2F0dHJf
aW5pdCgmc2RhdGFbY291bnRdLmRldl9hdHRyLmF0dHIpOwogCQlzZGF0YVtjb3VudF0uZGV2X2F0
dHIuYXR0ci5uYW1lID0gc2RhdGFbY291bnRdLm5hbWU7Ci0tIAoxLjcuMTAuNAoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGlu
ZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMu
b3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
  2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
@ 2015-03-19  3:58     ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-19  3:58 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

On 03/18/2015 08:47 AM, Cédric Le Goater wrote:
> It simplifies the create_hwmon_attr_name() routine and it clearly isolates
> the conversion done between the OPAL node names and hwmon attributes names.
>
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>   drivers/hwmon/ibmpowernv.c |   39 +++++++++++++++++++++++++--------------
>   1 file changed, 25 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
> index 07a8219b7f4e..edcc4ffa5ad0 100644
> --- a/drivers/hwmon/ibmpowernv.c
> +++ b/drivers/hwmon/ibmpowernv.c
> @@ -127,6 +127,28 @@ static int get_sensor_index_attr(const char *name, u32 *index,
>   	return 0;
>   }
>
> +static const char *convert_opal_attr_name(enum sensors type,
> +					const char *opal_attr)

Would be great if you could align all the continuation lines with '('.

> +{
> +	const char *attr_name = NULL;
> +
> +	if (!strcmp(opal_attr, DT_FAULT_ATTR_SUFFIX)) {
> +		attr_name = "fault";
> +	} else if (!strcmp(opal_attr, DT_DATA_ATTR_SUFFIX)) {
> +		attr_name = "input";
> +	} else if (!strcmp(opal_attr, DT_THRESHOLD_ATTR_SUFFIX)) {
> +		if (type == TEMP)
> +			attr_name = "max";
> +		else if (type == FAN)
> +			attr_name = "min";
> +		else
> +			return NULL;
> +	} else {
> +		return NULL;
> +	}

Those else cases returning NULL are unnecessary; attr_name
is already initialized with NULL, so you can just return it.


> +	return attr_name;
> +}
> +
>   /*
>    * This function translates the DT node name into the 'hwmon' attribute name.
>    * IBMPOWERNV device node appear like cooling-fan#2-data, amb-temp#1-thrs etc.
> @@ -138,7 +160,7 @@ static int create_hwmon_attr_name(struct device *dev, enum sensors type,
>   					 char *hwmon_attr_name)
>   {
>   	char attr_suffix[MAX_ATTR_LEN];
> -	char *attr_name;
> +	const char *attr_name;
>   	u32 index;
>   	int err;
>
> @@ -149,20 +171,9 @@ static int create_hwmon_attr_name(struct device *dev, enum sensors type,
>   		return err;
>   	}
>
> -	if (!strcmp(attr_suffix, DT_FAULT_ATTR_SUFFIX)) {
> -		attr_name = "fault";
> -	} else if (!strcmp(attr_suffix, DT_DATA_ATTR_SUFFIX)) {
> -		attr_name = "input";
> -	} else if (!strcmp(attr_suffix, DT_THRESHOLD_ATTR_SUFFIX)) {
> -		if (type == TEMP)
> -			attr_name = "max";
> -		else if (type == FAN)
> -			attr_name = "min";
> -		else
> -			return -ENOENT;
> -	} else {
> +	attr_name = convert_opal_attr_name(type, attr_suffix);
> +	if (!attr_name)
>   		return -ENOENT;
> -	}
>
>   	snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
>   		 sensor_groups[type].name, index, attr_name);
>

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
@ 2015-03-19  3:58     ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-19  3:58 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

T24gMDMvMTgvMjAxNSAwODo0NyBBTSwgQ8OpZHJpYyBMZSBHb2F0ZXIgd3JvdGU6Cj4gSXQgc2lt
cGxpZmllcyB0aGUgY3JlYXRlX2h3bW9uX2F0dHJfbmFtZSgpIHJvdXRpbmUgYW5kIGl0IGNsZWFy
bHkgaXNvbGF0ZXMKPiB0aGUgY29udmVyc2lvbiBkb25lIGJldHdlZW4gdGhlIE9QQUwgbm9kZSBu
YW1lcyBhbmQgaHdtb24gYXR0cmlidXRlcyBuYW1lcy4KPgo+IFNpZ25lZC1vZmYtYnk6IEPDqWRy
aWMgTGUgR29hdGVyIDxjbGdAZnIuaWJtLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvaHdtb24vaWJt
cG93ZXJudi5jIHwgICAzOSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0K
PiAgIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKPgo+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYyBiL2RyaXZlcnMvaHdtb24v
aWJtcG93ZXJudi5jCj4gaW5kZXggMDdhODIxOWI3ZjRlLi5lZGNjNGZmYTVhZDAgMTAwNjQ0Cj4g
LS0tIGEvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKPiArKysgYi9kcml2ZXJzL2h3bW9uL2li
bXBvd2VybnYuYwo+IEBAIC0xMjcsNiArMTI3LDI4IEBAIHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl9p
bmRleF9hdHRyKGNvbnN0IGNoYXIgKm5hbWUsIHUzMiAqaW5kZXgsCj4gICAJcmV0dXJuIDA7Cj4g
ICB9Cj4KPiArc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRfb3BhbF9hdHRyX25hbWUoZW51bSBz
ZW5zb3JzIHR5cGUsCj4gKwkJCQkJY29uc3QgY2hhciAqb3BhbF9hdHRyKQoKV291bGQgYmUgZ3Jl
YXQgaWYgeW91IGNvdWxkIGFsaWduIGFsbCB0aGUgY29udGludWF0aW9uIGxpbmVzIHdpdGggJygn
LgoKPiArewo+ICsJY29uc3QgY2hhciAqYXR0cl9uYW1lID0gTlVMTDsKPiArCj4gKwlpZiAoIXN0
cmNtcChvcGFsX2F0dHIsIERUX0ZBVUxUX0FUVFJfU1VGRklYKSkgewo+ICsJCWF0dHJfbmFtZSA9
ICJmYXVsdCI7Cj4gKwl9IGVsc2UgaWYgKCFzdHJjbXAob3BhbF9hdHRyLCBEVF9EQVRBX0FUVFJf
U1VGRklYKSkgewo+ICsJCWF0dHJfbmFtZSA9ICJpbnB1dCI7Cj4gKwl9IGVsc2UgaWYgKCFzdHJj
bXAob3BhbF9hdHRyLCBEVF9USFJFU0hPTERfQVRUUl9TVUZGSVgpKSB7Cj4gKwkJaWYgKHR5cGUg
PT0gVEVNUCkKPiArCQkJYXR0cl9uYW1lID0gIm1heCI7Cj4gKwkJZWxzZSBpZiAodHlwZSA9PSBG
QU4pCj4gKwkJCWF0dHJfbmFtZSA9ICJtaW4iOwo+ICsJCWVsc2UKPiArCQkJcmV0dXJuIE5VTEw7
Cj4gKwl9IGVsc2Ugewo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQoKVGhvc2UgZWxzZSBjYXNlcyBy
ZXR1cm5pbmcgTlVMTCBhcmUgdW5uZWNlc3Nhcnk7IGF0dHJfbmFtZQppcyBhbHJlYWR5IGluaXRp
YWxpemVkIHdpdGggTlVMTCwgc28geW91IGNhbiBqdXN0IHJldHVybiBpdC4KCgo+ICsJcmV0dXJu
IGF0dHJfbmFtZTsKPiArfQo+ICsKPiAgIC8qCj4gICAgKiBUaGlzIGZ1bmN0aW9uIHRyYW5zbGF0
ZXMgdGhlIERUIG5vZGUgbmFtZSBpbnRvIHRoZSAnaHdtb24nIGF0dHJpYnV0ZSBuYW1lLgo+ICAg
ICogSUJNUE9XRVJOViBkZXZpY2Ugbm9kZSBhcHBlYXIgbGlrZSBjb29saW5nLWZhbiMyLWRhdGEs
IGFtYi10ZW1wIzEtdGhycyBldGMuCj4gQEAgLTEzOCw3ICsxNjAsNyBAQCBzdGF0aWMgaW50IGNy
ZWF0ZV9od21vbl9hdHRyX25hbWUoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIHNlbnNvcnMgdHlw
ZSwKPiAgIAkJCQkJIGNoYXIgKmh3bW9uX2F0dHJfbmFtZSkKPiAgIHsKPiAgIAljaGFyIGF0dHJf
c3VmZml4W01BWF9BVFRSX0xFTl07Cj4gLQljaGFyICphdHRyX25hbWU7Cj4gKwljb25zdCBjaGFy
ICphdHRyX25hbWU7Cj4gICAJdTMyIGluZGV4Owo+ICAgCWludCBlcnI7Cj4KPiBAQCAtMTQ5LDIw
ICsxNzEsOSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9od21vbl9hdHRyX25hbWUoc3RydWN0IGRldmlj
ZSAqZGV2LCBlbnVtIHNlbnNvcnMgdHlwZSwKPiAgIAkJcmV0dXJuIGVycjsKPiAgIAl9Cj4KPiAt
CWlmICghc3RyY21wKGF0dHJfc3VmZml4LCBEVF9GQVVMVF9BVFRSX1NVRkZJWCkpIHsKPiAtCQlh
dHRyX25hbWUgPSAiZmF1bHQiOwo+IC0JfSBlbHNlIGlmICghc3RyY21wKGF0dHJfc3VmZml4LCBE
VF9EQVRBX0FUVFJfU1VGRklYKSkgewo+IC0JCWF0dHJfbmFtZSA9ICJpbnB1dCI7Cj4gLQl9IGVs
c2UgaWYgKCFzdHJjbXAoYXR0cl9zdWZmaXgsIERUX1RIUkVTSE9MRF9BVFRSX1NVRkZJWCkpIHsK
PiAtCQlpZiAodHlwZSA9PSBURU1QKQo+IC0JCQlhdHRyX25hbWUgPSAibWF4IjsKPiAtCQllbHNl
IGlmICh0eXBlID09IEZBTikKPiAtCQkJYXR0cl9uYW1lID0gIm1pbiI7Cj4gLQkJZWxzZQo+IC0J
CQlyZXR1cm4gLUVOT0VOVDsKPiAtCX0gZWxzZSB7Cj4gKwlhdHRyX25hbWUgPSBjb252ZXJ0X29w
YWxfYXR0cl9uYW1lKHR5cGUsIGF0dHJfc3VmZml4KTsKPiArCWlmICghYXR0cl9uYW1lKQo+ICAg
CQlyZXR1cm4gLUVOT0VOVDsKPiAtCX0KPgo+ICAgCXNucHJpbnRmKGh3bW9uX2F0dHJfbmFtZSwg
TUFYX0FUVFJfTEVOLCAiJXMlZF8lcyIsCj4gICAJCSBzZW5zb3JfZ3JvdXBzW3R5cGVdLm5hbWUs
IGluZGV4LCBhdHRyX25hbWUpOwo+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5z
b3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1z
ZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
  2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
@ 2015-03-19  4:02     ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-19  4:02 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

On 03/18/2015 08:47 AM, Cédric Le Goater wrote:
> It simplifies the creation of the hwmon attributes and will help when
> support for a new device tree layout is added. The patch also changes
> the name of the routine to parse_opal_node_name().
>
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>   drivers/hwmon/ibmpowernv.c |   32 ++++++++++++++++++--------------
>   1 file changed, 18 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
> index edcc4ffa5ad0..570d2360b698 100644
> --- a/drivers/hwmon/ibmpowernv.c
> +++ b/drivers/hwmon/ibmpowernv.c
> @@ -155,28 +155,22 @@ static const char *convert_opal_attr_name(enum sensors type,
>    * which need to be mapped as fan2_input, temp1_max respectively before
>    * populating them inside hwmon device class.
>    */
> -static int create_hwmon_attr_name(struct device *dev, enum sensors type,
> -					 const char *node_name,
> -					 char *hwmon_attr_name)
> +static int parse_opal_node_name(const char *node_name, enum sensors type,
> +	u32 *index, const char **hwmon_attr_name)
>   {

Please have the function return const char * and merge the error code with ERR_PTR.

>   	char attr_suffix[MAX_ATTR_LEN];
>   	const char *attr_name;
> -	u32 index;
>   	int err;
>
> -	err = get_sensor_index_attr(node_name, &index, attr_suffix);
> -	if (err) {
> -		dev_err(dev, "Sensor device node name '%s' is invalid\n",
> -			node_name);
> +	err = get_sensor_index_attr(node_name, index, attr_suffix);
> +	if (err)
>   		return err;
> -	}
>
>   	attr_name = convert_opal_attr_name(type, attr_suffix);
>   	if (!attr_name)
>   		return -ENOENT;
>
> -	snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
> -		 sensor_groups[type].name, index, attr_name);
> +	*hwmon_attr_name = attr_name;
>   	return 0;
>   }
>
> @@ -252,6 +246,9 @@ static int create_device_attrs(struct platform_device *pdev)
>   	}
>
>   	for_each_child_of_node(opal, np) {
> +		const char *attr_name;
> +		u32 opal_index;
> +
>   		if (np->name == NULL)
>   			continue;
>
> @@ -268,10 +265,17 @@ static int create_device_attrs(struct platform_device *pdev)
>
>   		sdata[count].id = sensor_id;
>   		sdata[count].type = type;
> -		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
> -					     sdata[count].name);
> -		if (err)
> +
> +		err = parse_opal_node_name(np->name, type, &opal_index,
> +					   &attr_name);
> +		if (err) {
> +			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
> +				np->name);
>   			goto exit_put_node;
> +		}
> +
> +		snprintf(sdata[count].name, MAX_ATTR_LEN, "%s%d_%s",
> +			 sensor_groups[type].name, opal_index, attr_name);
>
>   		sysfs_attr_init(&sdata[count].dev_attr.attr);
>   		sdata[count].dev_attr.attr.name = sdata[count].name;
>

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
@ 2015-03-19  4:02     ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-19  4:02 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

T24gMDMvMTgvMjAxNSAwODo0NyBBTSwgQ8OpZHJpYyBMZSBHb2F0ZXIgd3JvdGU6Cj4gSXQgc2lt
cGxpZmllcyB0aGUgY3JlYXRpb24gb2YgdGhlIGh3bW9uIGF0dHJpYnV0ZXMgYW5kIHdpbGwgaGVs
cCB3aGVuCj4gc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlIHRyZWUgbGF5b3V0IGlzIGFkZGVkLiBU
aGUgcGF0Y2ggYWxzbyBjaGFuZ2VzCj4gdGhlIG5hbWUgb2YgdGhlIHJvdXRpbmUgdG8gcGFyc2Vf
b3BhbF9ub2RlX25hbWUoKS4KPgo+IFNpZ25lZC1vZmYtYnk6IEPDqWRyaWMgTGUgR29hdGVyIDxj
bGdAZnIuaWJtLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIHwgICAz
MiArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDE4
IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv
aHdtb24vaWJtcG93ZXJudi5jIGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKPiBpbmRleCBl
ZGNjNGZmYTVhZDAuLjU3MGQyMzYwYjY5OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3bW9uL2li
bXBvd2VybnYuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCj4gQEAgLTE1NSwy
OCArMTU1LDIyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb252ZXJ0X29wYWxfYXR0cl9uYW1lKGVu
dW0gc2Vuc29ycyB0eXBlLAo+ICAgICogd2hpY2ggbmVlZCB0byBiZSBtYXBwZWQgYXMgZmFuMl9p
bnB1dCwgdGVtcDFfbWF4IHJlc3BlY3RpdmVseSBiZWZvcmUKPiAgICAqIHBvcHVsYXRpbmcgdGhl
bSBpbnNpZGUgaHdtb24gZGV2aWNlIGNsYXNzLgo+ICAgICovCj4gLXN0YXRpYyBpbnQgY3JlYXRl
X2h3bW9uX2F0dHJfbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gc2Vuc29ycyB0eXBlLAo+
IC0JCQkJCSBjb25zdCBjaGFyICpub2RlX25hbWUsCj4gLQkJCQkJIGNoYXIgKmh3bW9uX2F0dHJf
bmFtZSkKPiArc3RhdGljIGludCBwYXJzZV9vcGFsX25vZGVfbmFtZShjb25zdCBjaGFyICpub2Rl
X25hbWUsIGVudW0gc2Vuc29ycyB0eXBlLAo+ICsJdTMyICppbmRleCwgY29uc3QgY2hhciAqKmh3
bW9uX2F0dHJfbmFtZSkKPiAgIHsKClBsZWFzZSBoYXZlIHRoZSBmdW5jdGlvbiByZXR1cm4gY29u
c3QgY2hhciAqIGFuZCBtZXJnZSB0aGUgZXJyb3IgY29kZSB3aXRoIEVSUl9QVFIuCgo+ICAgCWNo
YXIgYXR0cl9zdWZmaXhbTUFYX0FUVFJfTEVOXTsKPiAgIAljb25zdCBjaGFyICphdHRyX25hbWU7
Cj4gLQl1MzIgaW5kZXg7Cj4gICAJaW50IGVycjsKPgo+IC0JZXJyID0gZ2V0X3NlbnNvcl9pbmRl
eF9hdHRyKG5vZGVfbmFtZSwgJmluZGV4LCBhdHRyX3N1ZmZpeCk7Cj4gLQlpZiAoZXJyKSB7Cj4g
LQkJZGV2X2VycihkZXYsICJTZW5zb3IgZGV2aWNlIG5vZGUgbmFtZSAnJXMnIGlzIGludmFsaWRc
biIsCj4gLQkJCW5vZGVfbmFtZSk7Cj4gKwllcnIgPSBnZXRfc2Vuc29yX2luZGV4X2F0dHIobm9k
ZV9uYW1lLCBpbmRleCwgYXR0cl9zdWZmaXgpOwo+ICsJaWYgKGVycikKPiAgIAkJcmV0dXJuIGVy
cjsKPiAtCX0KPgo+ICAgCWF0dHJfbmFtZSA9IGNvbnZlcnRfb3BhbF9hdHRyX25hbWUodHlwZSwg
YXR0cl9zdWZmaXgpOwo+ICAgCWlmICghYXR0cl9uYW1lKQo+ICAgCQlyZXR1cm4gLUVOT0VOVDsK
Pgo+IC0Jc25wcmludGYoaHdtb25fYXR0cl9uYW1lLCBNQVhfQVRUUl9MRU4sICIlcyVkXyVzIiwK
PiAtCQkgc2Vuc29yX2dyb3Vwc1t0eXBlXS5uYW1lLCBpbmRleCwgYXR0cl9uYW1lKTsKPiArCSpo
d21vbl9hdHRyX25hbWUgPSBhdHRyX25hbWU7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4KPiBAQCAt
MjUyLDYgKzI0Niw5IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2RldmljZV9hdHRycyhzdHJ1Y3QgcGxh
dGZvcm1fZGV2aWNlICpwZGV2KQo+ICAgCX0KPgo+ICAgCWZvcl9lYWNoX2NoaWxkX29mX25vZGUo
b3BhbCwgbnApIHsKPiArCQljb25zdCBjaGFyICphdHRyX25hbWU7Cj4gKwkJdTMyIG9wYWxfaW5k
ZXg7Cj4gKwo+ICAgCQlpZiAobnAtPm5hbWUgPT0gTlVMTCkKPiAgIAkJCWNvbnRpbnVlOwo+Cj4g
QEAgLTI2OCwxMCArMjY1LDE3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2RldmljZV9hdHRycyhzdHJ1
Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Cj4gICAJCXNkYXRhW2NvdW50XS5pZCA9IHNlbnNv
cl9pZDsKPiAgIAkJc2RhdGFbY291bnRdLnR5cGUgPSB0eXBlOwo+IC0JCWVyciA9IGNyZWF0ZV9o
d21vbl9hdHRyX25hbWUoJnBkZXYtPmRldiwgdHlwZSwgbnAtPm5hbWUsCj4gLQkJCQkJICAgICBz
ZGF0YVtjb3VudF0ubmFtZSk7Cj4gLQkJaWYgKGVycikKPiArCj4gKwkJZXJyID0gcGFyc2Vfb3Bh
bF9ub2RlX25hbWUobnAtPm5hbWUsIHR5cGUsICZvcGFsX2luZGV4LAo+ICsJCQkJCSAgICZhdHRy
X25hbWUpOwo+ICsJCWlmIChlcnIpIHsKPiArCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiU2Vuc29y
IGRldmljZSBub2RlIG5hbWUgJyVzJyBpcyBpbnZhbGlkXG4iLAo+ICsJCQkJbnAtPm5hbWUpOwo+
ICAgCQkJZ290byBleGl0X3B1dF9ub2RlOwo+ICsJCX0KPiArCj4gKwkJc25wcmludGYoc2RhdGFb
Y291bnRdLm5hbWUsIE1BWF9BVFRSX0xFTiwgIiVzJWRfJXMiLAo+ICsJCQkgc2Vuc29yX2dyb3Vw
c1t0eXBlXS5uYW1lLCBvcGFsX2luZGV4LCBhdHRyX25hbWUpOwo+Cj4gICAJCXN5c2ZzX2F0dHJf
aW5pdCgmc2RhdGFbY291bnRdLmRldl9hdHRyLmF0dHIpOwo+ICAgCQlzZGF0YVtjb3VudF0uZGV2
X2F0dHIuYXR0ci5uYW1lID0gc2RhdGFbY291bnRdLm5hbWU7Cj4KCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdAps
bS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWls
bWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
  2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
@ 2015-03-19  4:05     ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-19  4:05 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

On 03/18/2015 08:47 AM, Cédric Le Goater wrote:
> Hello !
>
> The current implementation of the driver uses an index for the hwmon
> attribute which is extracted from the device node name. This index
> is calculated by the OPAL firmware and its usage creates a dependency
> with the driver which makes changes a little more complex in OPAL.
>
> This patchset changes the ibmpowernv code to use its own index. It
> starts with a few cleanups, mostly code shuffling around the creation
> of the hwmon sysfs attributes and completes by removing the dependency.
>
> It also prepares ground for future OPAL changes :
>
>     https://lists.ozlabs.org/pipermail/skiboot/2015-March/000639.html
>
> which will be addressed in a other small patchset.
>
>
> The patches are based on Linux 4.0.0-rc4 and were tested on IBM Power
> and Open Power systems running Trusty.
>

I commented on two of the patches; the others are ok.

Please re-send the entire series after addressing my comments.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
@ 2015-03-19  4:05     ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-19  4:05 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

T24gMDMvMTgvMjAxNSAwODo0NyBBTSwgQ8OpZHJpYyBMZSBHb2F0ZXIgd3JvdGU6Cj4gSGVsbG8g
IQo+Cj4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRyaXZlciB1c2VzIGFuIGlu
ZGV4IGZvciB0aGUgaHdtb24KPiBhdHRyaWJ1dGUgd2hpY2ggaXMgZXh0cmFjdGVkIGZyb20gdGhl
IGRldmljZSBub2RlIG5hbWUuIFRoaXMgaW5kZXgKPiBpcyBjYWxjdWxhdGVkIGJ5IHRoZSBPUEFM
IGZpcm13YXJlIGFuZCBpdHMgdXNhZ2UgY3JlYXRlcyBhIGRlcGVuZGVuY3kKPiB3aXRoIHRoZSBk
cml2ZXIgd2hpY2ggbWFrZXMgY2hhbmdlcyBhIGxpdHRsZSBtb3JlIGNvbXBsZXggaW4gT1BBTC4K
Pgo+IFRoaXMgcGF0Y2hzZXQgY2hhbmdlcyB0aGUgaWJtcG93ZXJudiBjb2RlIHRvIHVzZSBpdHMg
b3duIGluZGV4LiBJdAo+IHN0YXJ0cyB3aXRoIGEgZmV3IGNsZWFudXBzLCBtb3N0bHkgY29kZSBz
aHVmZmxpbmcgYXJvdW5kIHRoZSBjcmVhdGlvbgo+IG9mIHRoZSBod21vbiBzeXNmcyBhdHRyaWJ1
dGVzIGFuZCBjb21wbGV0ZXMgYnkgcmVtb3ZpbmcgdGhlIGRlcGVuZGVuY3kuCj4KPiBJdCBhbHNv
IHByZXBhcmVzIGdyb3VuZCBmb3IgZnV0dXJlIE9QQUwgY2hhbmdlcyA6Cj4KPiAgICAgaHR0cHM6
Ly9saXN0cy5vemxhYnMub3JnL3BpcGVybWFpbC9za2lib290LzIwMTUtTWFyY2gvMDAwNjM5Lmh0
bWwKPgo+IHdoaWNoIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgb3RoZXIgc21hbGwgcGF0Y2hzZXQu
Cj4KPgo+IFRoZSBwYXRjaGVzIGFyZSBiYXNlZCBvbiBMaW51eCA0LjAuMC1yYzQgYW5kIHdlcmUg
dGVzdGVkIG9uIElCTSBQb3dlcgo+IGFuZCBPcGVuIFBvd2VyIHN5c3RlbXMgcnVubmluZyBUcnVz
dHkuCj4KCkkgY29tbWVudGVkIG9uIHR3byBvZiB0aGUgcGF0Y2hlczsgdGhlIG90aGVycyBhcmUg
b2suCgpQbGVhc2UgcmUtc2VuZCB0aGUgZW50aXJlIHNlcmllcyBhZnRlciBhZGRyZXNzaW5nIG15
IGNvbW1lbnRzLgoKVGhhbmtzLApHdWVudGVyCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNA
bG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGlu
Zm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH v2 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-19 17:44   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

Hello !

The current implementation of the driver uses an index for the hwmon 
attribute which is extracted from the device node name. This index
is calculated by the OPAL firmware and its usage creates a dependency 
with the driver which makes changes a little more complex in OPAL.

This patchset changes the ibmpowernv code to use its own index. It 
starts with a few cleanups, mostly code shuffling around the creation 
of the hwmon sysfs attributes and completes by removing the dependency.

It also prepares ground for future OPAL changes :  

   https://lists.ozlabs.org/pipermail/skiboot/2015-March/000639.html

which will be addressed in a other small patchset.


The patches are based on Linux 4.0.0-rc4 and were tested on IBM Power 
and Open Power systems running Trusty. 

Cheers,

C.


Changes since v1:

 - fixed alignment
 - killed a couple of useless "return NULL"
 - changed returned value of parse_opal_node_name()
 - used *_PTR macros to check for errors

Cédric Le Goater (5):
  hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP
  hwmon: (ibmpowernv) add a get_sensor_type() routine
  hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
  hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
  hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute
    names

 drivers/hwmon/ibmpowernv.c |  122 +++++++++++++++++++++++++++++---------------
 1 file changed, 81 insertions(+), 41 deletions(-)

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH v2 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
@ 2015-03-19 17:44   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SGVsbG8gIQoKVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRyaXZlciB1c2VzIGFu
IGluZGV4IGZvciB0aGUgaHdtb24gCmF0dHJpYnV0ZSB3aGljaCBpcyBleHRyYWN0ZWQgZnJvbSB0
aGUgZGV2aWNlIG5vZGUgbmFtZS4gVGhpcyBpbmRleAppcyBjYWxjdWxhdGVkIGJ5IHRoZSBPUEFM
IGZpcm13YXJlIGFuZCBpdHMgdXNhZ2UgY3JlYXRlcyBhIGRlcGVuZGVuY3kgCndpdGggdGhlIGRy
aXZlciB3aGljaCBtYWtlcyBjaGFuZ2VzIGEgbGl0dGxlIG1vcmUgY29tcGxleCBpbiBPUEFMLgoK
VGhpcyBwYXRjaHNldCBjaGFuZ2VzIHRoZSBpYm1wb3dlcm52IGNvZGUgdG8gdXNlIGl0cyBvd24g
aW5kZXguIEl0IApzdGFydHMgd2l0aCBhIGZldyBjbGVhbnVwcywgbW9zdGx5IGNvZGUgc2h1ZmZs
aW5nIGFyb3VuZCB0aGUgY3JlYXRpb24gCm9mIHRoZSBod21vbiBzeXNmcyBhdHRyaWJ1dGVzIGFu
ZCBjb21wbGV0ZXMgYnkgcmVtb3ZpbmcgdGhlIGRlcGVuZGVuY3kuCgpJdCBhbHNvIHByZXBhcmVz
IGdyb3VuZCBmb3IgZnV0dXJlIE9QQUwgY2hhbmdlcyA6ICAKCiAgIGh0dHBzOi8vbGlzdHMub3ps
YWJzLm9yZy9waXBlcm1haWwvc2tpYm9vdC8yMDE1LU1hcmNoLzAwMDYzOS5odG1sCgp3aGljaCB3
aWxsIGJlIGFkZHJlc3NlZCBpbiBhIG90aGVyIHNtYWxsIHBhdGNoc2V0LgoKClRoZSBwYXRjaGVz
IGFyZSBiYXNlZCBvbiBMaW51eCA0LjAuMC1yYzQgYW5kIHdlcmUgdGVzdGVkIG9uIElCTSBQb3dl
ciAKYW5kIE9wZW4gUG93ZXIgc3lzdGVtcyBydW5uaW5nIFRydXN0eS4gCgpDaGVlcnMsCgpDLgoK
CkNoYW5nZXMgc2luY2UgdjE6CgogLSBmaXhlZCBhbGlnbm1lbnQKIC0ga2lsbGVkIGEgY291cGxl
IG9mIHVzZWxlc3MgInJldHVybiBOVUxMIgogLSBjaGFuZ2VkIHJldHVybmVkIHZhbHVlIG9mIHBh
cnNlX29wYWxfbm9kZV9uYW1lKCkKIC0gdXNlZCAqX1BUUiBtYWNyb3MgdG8gY2hlY2sgZm9yIGVy
cm9ycwoKQ8OpZHJpYyBMZSBHb2F0ZXIgKDUpOgogIGh3bW9uOiAoaWJtcG93ZXJudikgcmVwbGFj
ZSBBTUJJRU5UX1RFTVAgYnkgVEVNUAogIGh3bW9uOiAoaWJtcG93ZXJudikgYWRkIGEgZ2V0X3Nl
bnNvcl90eXBlKCkgcm91dGluZQogIGh3bW9uOiAoaWJtcG93ZXJudikgYWRkIGEgY29udmVydF9v
cGFsX2F0dHJfbmFtZSgpIHJvdXRpbmUKICBod21vbjogKGlibXBvd2VybnYpIGNoYW5nZSBjcmVh
dGVfaHdtb25fYXR0cl9uYW1lKCkgcHJvdG90eXBlCiAgaHdtb246IChpYm1wb3dlcm52KSBkbyBu
b3QgdXNlIHRoZSBPUEFMIGluZGV4IGZvciBod21vbiBhdHRyaWJ1dGUKICAgIG5hbWVzCgogZHJp
dmVycy9od21vbi9pYm1wb3dlcm52LmMgfCAgMTIyICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgNDEg
ZGVsZXRpb25zKC0pCgotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxt
LXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZv
L2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH v2 1/5] hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-19 17:44   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

Ambient is too restrictive as there can be other temperature channels :
core, memory, etc.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux.git/drivers/hwmon/ibmpowernv.c
===================================================================
--- linux.git.orig/drivers/hwmon/ibmpowernv.c
+++ linux.git/drivers/hwmon/ibmpowernv.c
@@ -44,7 +44,7 @@
  */
 enum sensors {
 	FAN,
-	AMBIENT_TEMP,
+	TEMP,
 	POWER_SUPPLY,
 	POWER_INPUT,
 	MAX_SENSOR_TYPE,
@@ -87,7 +87,7 @@ static ssize_t show_sensor(struct device
 		return ret;
 
 	/* Convert temperature to milli-degrees */
-	if (sdata->type == AMBIENT_TEMP)
+	if (sdata->type == TEMP)
 		x *= 1000;
 	/* Convert power to micro-watts */
 	else if (sdata->type == POWER_INPUT)
@@ -154,7 +154,7 @@ static int create_hwmon_attr_name(struct
 	} else if (!strcmp(attr_suffix, DT_DATA_ATTR_SUFFIX)) {
 		attr_name = "input";
 	} else if (!strcmp(attr_suffix, DT_THRESHOLD_ATTR_SUFFIX)) {
-		if (type == AMBIENT_TEMP)
+		if (type == TEMP)
 			attr_name = "max";
 		else if (type == FAN)
 			attr_name = "min";

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH v2 1/5] hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP
@ 2015-03-19 17:44   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

QW1iaWVudCBpcyB0b28gcmVzdHJpY3RpdmUgYXMgdGhlcmUgY2FuIGJlIG90aGVyIHRlbXBlcmF0
dXJlIGNoYW5uZWxzIDoKY29yZSwgbWVtb3J5LCBldGMuCgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmlj
IExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Ci0tLQogZHJpdmVycy9od21vbi9pYm1wb3dlcm52
LmMgfCAgICA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxl
dGlvbnMoLSkKCkluZGV4OiBsaW51eC5naXQvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gbGludXguZ2l0Lm9yaWcvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKKysr
IGxpbnV4LmdpdC9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYwpAQCAtNDQsNyArNDQsNyBAQAog
ICovCiBlbnVtIHNlbnNvcnMgewogCUZBTiwKLQlBTUJJRU5UX1RFTVAsCisJVEVNUCwKIAlQT1dF
Ul9TVVBQTFksCiAJUE9XRVJfSU5QVVQsCiAJTUFYX1NFTlNPUl9UWVBFLApAQCAtODcsNyArODcs
NyBAQCBzdGF0aWMgc3NpemVfdCBzaG93X3NlbnNvcihzdHJ1Y3QgZGV2aWNlCiAJCXJldHVybiBy
ZXQ7CiAKIAkvKiBDb252ZXJ0IHRlbXBlcmF0dXJlIHRvIG1pbGxpLWRlZ3JlZXMgKi8KLQlpZiAo
c2RhdGEtPnR5cGUgPT0gQU1CSUVOVF9URU1QKQorCWlmIChzZGF0YS0+dHlwZSA9PSBURU1QKQog
CQl4ICo9IDEwMDA7CiAJLyogQ29udmVydCBwb3dlciB0byBtaWNyby13YXR0cyAqLwogCWVsc2Ug
aWYgKHNkYXRhLT50eXBlID09IFBPV0VSX0lOUFVUKQpAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRp
YyBpbnQgY3JlYXRlX2h3bW9uX2F0dHJfbmFtZShzdHJ1Y3QKIAl9IGVsc2UgaWYgKCFzdHJjbXAo
YXR0cl9zdWZmaXgsIERUX0RBVEFfQVRUUl9TVUZGSVgpKSB7CiAJCWF0dHJfbmFtZSA9ICJpbnB1
dCI7CiAJfSBlbHNlIGlmICghc3RyY21wKGF0dHJfc3VmZml4LCBEVF9USFJFU0hPTERfQVRUUl9T
VUZGSVgpKSB7Ci0JCWlmICh0eXBlID09IEFNQklFTlRfVEVNUCkKKwkJaWYgKHR5cGUgPT0gVEVN
UCkKIAkJCWF0dHJfbmFtZSA9ICJtYXgiOwogCQllbHNlIGlmICh0eXBlID09IEZBTikKIAkJCWF0
dHJfbmFtZSA9ICJtaW4iOwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5v
cmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29y
cw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH v2 2/5] hwmon: (ibmpowernv) add a get_sensor_type() routine
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-19 17:44   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

It will help in adding different compatible properties, coming from a
new device tree layout for example.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

Index: linux.git/drivers/hwmon/ibmpowernv.c
===================================================================
--- linux.git.orig/drivers/hwmon/ibmpowernv.c
+++ linux.git/drivers/hwmon/ibmpowernv.c
@@ -169,6 +169,17 @@ static int create_hwmon_attr_name(struct
 	return 0;
 }
 
+static int get_sensor_type(struct device_node *np)
+{
+	enum sensors type;
+
+	for (type = 0; type < MAX_SENSOR_TYPE; type++) {
+		if (of_device_is_compatible(np, sensor_groups[type].compatible))
+			return type;
+	}
+	return MAX_SENSOR_TYPE;
+}
+
 static int populate_attr_groups(struct platform_device *pdev)
 {
 	struct platform_data *pdata = platform_get_drvdata(pdev);
@@ -181,12 +192,9 @@ static int populate_attr_groups(struct p
 		if (np->name == NULL)
 			continue;
 
-		for (type = 0; type < MAX_SENSOR_TYPE; type++)
-			if (of_device_is_compatible(np,
-					sensor_groups[type].compatible)) {
-				sensor_groups[type].attr_count++;
-				break;
-			}
+		type = get_sensor_type(np);
+		if (type != MAX_SENSOR_TYPE)
+			sensor_groups[type].attr_count++;
 	}
 
 	of_node_put(opal);
@@ -236,11 +244,7 @@ static int create_device_attrs(struct pl
 		if (np->name == NULL)
 			continue;
 
-		for (type = 0; type < MAX_SENSOR_TYPE; type++)
-			if (of_device_is_compatible(np,
-					sensor_groups[type].compatible))
-				break;
-
+		type = get_sensor_type(np);
 		if (type == MAX_SENSOR_TYPE)
 			continue;
 

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH v2 2/5] hwmon: (ibmpowernv) add a get_sensor_type() routine
@ 2015-03-19 17:44   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SXQgd2lsbCBoZWxwIGluIGFkZGluZyBkaWZmZXJlbnQgY29tcGF0aWJsZSBwcm9wZXJ0aWVzLCBj
b21pbmcgZnJvbSBhCm5ldyBkZXZpY2UgdHJlZSBsYXlvdXQgZm9yIGV4YW1wbGUuCgpTaWduZWQt
b2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Ci0tLQogZHJpdmVycy9o
d21vbi9pYm1wb3dlcm52LmMgfCAgIDI2ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZp
bGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpJbmRleDogbGlu
dXguZ2l0L2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4Lmdp
dC5vcmlnL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCisrKyBsaW51eC5naXQvZHJpdmVycy9o
d21vbi9pYm1wb3dlcm52LmMKQEAgLTE2OSw2ICsxNjksMTcgQEAgc3RhdGljIGludCBjcmVhdGVf
aHdtb25fYXR0cl9uYW1lKHN0cnVjdAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGdldF9z
ZW5zb3JfdHlwZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQoreworCWVudW0gc2Vuc29ycyB0eXBl
OworCisJZm9yICh0eXBlID0gMDsgdHlwZSA8IE1BWF9TRU5TT1JfVFlQRTsgdHlwZSsrKSB7CisJ
CWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgc2Vuc29yX2dyb3Vwc1t0eXBlXS5jb21w
YXRpYmxlKSkKKwkJCXJldHVybiB0eXBlOworCX0KKwlyZXR1cm4gTUFYX1NFTlNPUl9UWVBFOwor
fQorCiBzdGF0aWMgaW50IHBvcHVsYXRlX2F0dHJfZ3JvdXBzKHN0cnVjdCBwbGF0Zm9ybV9kZXZp
Y2UgKnBkZXYpCiB7CiAJc3RydWN0IHBsYXRmb3JtX2RhdGEgKnBkYXRhID0gcGxhdGZvcm1fZ2V0
X2RydmRhdGEocGRldik7CkBAIC0xODEsMTIgKzE5Miw5IEBAIHN0YXRpYyBpbnQgcG9wdWxhdGVf
YXR0cl9ncm91cHMoc3RydWN0IHAKIAkJaWYgKG5wLT5uYW1lID09IE5VTEwpCiAJCQljb250aW51
ZTsKIAotCQlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgTUFYX1NFTlNPUl9UWVBFOyB0eXBlKyspCi0J
CQlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsCi0JCQkJCXNlbnNvcl9ncm91cHNbdHlw
ZV0uY29tcGF0aWJsZSkpIHsKLQkJCQlzZW5zb3JfZ3JvdXBzW3R5cGVdLmF0dHJfY291bnQrKzsK
LQkJCQlicmVhazsKLQkJCX0KKwkJdHlwZSA9IGdldF9zZW5zb3JfdHlwZShucCk7CisJCWlmICh0
eXBlICE9IE1BWF9TRU5TT1JfVFlQRSkKKwkJCXNlbnNvcl9ncm91cHNbdHlwZV0uYXR0cl9jb3Vu
dCsrOwogCX0KIAogCW9mX25vZGVfcHV0KG9wYWwpOwpAQCAtMjM2LDExICsyNDQsNyBAQCBzdGF0
aWMgaW50IGNyZWF0ZV9kZXZpY2VfYXR0cnMoc3RydWN0IHBsCiAJCWlmIChucC0+bmFtZSA9PSBO
VUxMKQogCQkJY29udGludWU7CiAKLQkJZm9yICh0eXBlID0gMDsgdHlwZSA8IE1BWF9TRU5TT1Jf
VFlQRTsgdHlwZSsrKQotCQkJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLAotCQkJCQlz
ZW5zb3JfZ3JvdXBzW3R5cGVdLmNvbXBhdGlibGUpKQotCQkJCWJyZWFrOwotCisJCXR5cGUgPSBn
ZXRfc2Vuc29yX3R5cGUobnApOwogCQlpZiAodHlwZSA9PSBNQVhfU0VOU09SX1RZUEUpCiAJCQlj
b250aW51ZTsKIAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0
cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH v2 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-19 17:44   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

It simplifies the create_hwmon_attr_name() routine and it clearly isolates
the conversion done between the OPAL node names and hwmon attributes names.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---

Changes since v1:

 - fixed alignment
 - killed a couple of useless "return NULL"

 drivers/hwmon/ibmpowernv.c |   36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)

Index: linux.git/drivers/hwmon/ibmpowernv.c
===================================================================
--- linux.git.orig/drivers/hwmon/ibmpowernv.c
+++ linux.git/drivers/hwmon/ibmpowernv.c
@@ -127,6 +127,25 @@ static int get_sensor_index_attr(const c
 	return 0;
 }
 
+static const char *convert_opal_attr_name(enum sensors type,
+					  const char *opal_attr)
+{
+	const char *attr_name = NULL;
+
+	if (!strcmp(opal_attr, DT_FAULT_ATTR_SUFFIX)) {
+		attr_name = "fault";
+	} else if (!strcmp(opal_attr, DT_DATA_ATTR_SUFFIX)) {
+		attr_name = "input";
+	} else if (!strcmp(opal_attr, DT_THRESHOLD_ATTR_SUFFIX)) {
+		if (type == TEMP)
+			attr_name = "max";
+		else if (type == FAN)
+			attr_name = "min";
+	}
+
+	return attr_name;
+}
+
 /*
  * This function translates the DT node name into the 'hwmon' attribute name.
  * IBMPOWERNV device node appear like cooling-fan#2-data, amb-temp#1-thrs etc.
@@ -138,7 +157,7 @@ static int create_hwmon_attr_name(struct
 					 char *hwmon_attr_name)
 {
 	char attr_suffix[MAX_ATTR_LEN];
-	char *attr_name;
+	const char *attr_name;
 	u32 index;
 	int err;
 
@@ -149,20 +168,9 @@ static int create_hwmon_attr_name(struct
 		return err;
 	}
 
-	if (!strcmp(attr_suffix, DT_FAULT_ATTR_SUFFIX)) {
-		attr_name = "fault";
-	} else if (!strcmp(attr_suffix, DT_DATA_ATTR_SUFFIX)) {
-		attr_name = "input";
-	} else if (!strcmp(attr_suffix, DT_THRESHOLD_ATTR_SUFFIX)) {
-		if (type == TEMP)
-			attr_name = "max";
-		else if (type == FAN)
-			attr_name = "min";
-		else
-			return -ENOENT;
-	} else {
+	attr_name = convert_opal_attr_name(type, attr_suffix);
+	if (!attr_name)
 		return -ENOENT;
-	}
 
 	snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
 		 sensor_groups[type].name, index, attr_name);

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH v2 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine
@ 2015-03-19 17:44   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SXQgc2ltcGxpZmllcyB0aGUgY3JlYXRlX2h3bW9uX2F0dHJfbmFtZSgpIHJvdXRpbmUgYW5kIGl0
IGNsZWFybHkgaXNvbGF0ZXMKdGhlIGNvbnZlcnNpb24gZG9uZSBiZXR3ZWVuIHRoZSBPUEFMIG5v
ZGUgbmFtZXMgYW5kIGh3bW9uIGF0dHJpYnV0ZXMgbmFtZXMuCgpTaWduZWQtb2ZmLWJ5OiBDw6lk
cmljIExlIEdvYXRlciA8Y2xnQGZyLmlibS5jb20+Ci0tLQoKQ2hhbmdlcyBzaW5jZSB2MToKCiAt
IGZpeGVkIGFsaWdubWVudAogLSBraWxsZWQgYSBjb3VwbGUgb2YgdXNlbGVzcyAicmV0dXJuIE5V
TEwiCgogZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMgfCAgIDM2ICsrKysrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDE0
IGRlbGV0aW9ucygtKQoKSW5kZXg6IGxpbnV4LmdpdC9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBsaW51eC5naXQub3JpZy9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYu
YworKysgbGludXguZ2l0L2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCkBAIC0xMjcsNiArMTI3
LDI1IEBAIHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl9pbmRleF9hdHRyKGNvbnN0IGMKIAlyZXR1cm4g
MDsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRfb3BhbF9hdHRyX25hbWUoZW51bSBz
ZW5zb3JzIHR5cGUsCisJCQkJCSAgY29uc3QgY2hhciAqb3BhbF9hdHRyKQoreworCWNvbnN0IGNo
YXIgKmF0dHJfbmFtZSA9IE5VTEw7CisKKwlpZiAoIXN0cmNtcChvcGFsX2F0dHIsIERUX0ZBVUxU
X0FUVFJfU1VGRklYKSkgeworCQlhdHRyX25hbWUgPSAiZmF1bHQiOworCX0gZWxzZSBpZiAoIXN0
cmNtcChvcGFsX2F0dHIsIERUX0RBVEFfQVRUUl9TVUZGSVgpKSB7CisJCWF0dHJfbmFtZSA9ICJp
bnB1dCI7CisJfSBlbHNlIGlmICghc3RyY21wKG9wYWxfYXR0ciwgRFRfVEhSRVNIT0xEX0FUVFJf
U1VGRklYKSkgeworCQlpZiAodHlwZSA9PSBURU1QKQorCQkJYXR0cl9uYW1lID0gIm1heCI7CisJ
CWVsc2UgaWYgKHR5cGUgPT0gRkFOKQorCQkJYXR0cl9uYW1lID0gIm1pbiI7CisJfQorCisJcmV0
dXJuIGF0dHJfbmFtZTsKK30KKwogLyoKICAqIFRoaXMgZnVuY3Rpb24gdHJhbnNsYXRlcyB0aGUg
RFQgbm9kZSBuYW1lIGludG8gdGhlICdod21vbicgYXR0cmlidXRlIG5hbWUuCiAgKiBJQk1QT1dF
Uk5WIGRldmljZSBub2RlIGFwcGVhciBsaWtlIGNvb2xpbmctZmFuIzItZGF0YSwgYW1iLXRlbXAj
MS10aHJzIGV0Yy4KQEAgLTEzOCw3ICsxNTcsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9od21vbl9h
dHRyX25hbWUoc3RydWN0CiAJCQkJCSBjaGFyICpod21vbl9hdHRyX25hbWUpCiB7CiAJY2hhciBh
dHRyX3N1ZmZpeFtNQVhfQVRUUl9MRU5dOwotCWNoYXIgKmF0dHJfbmFtZTsKKwljb25zdCBjaGFy
ICphdHRyX25hbWU7CiAJdTMyIGluZGV4OwogCWludCBlcnI7CiAKQEAgLTE0OSwyMCArMTY4LDkg
QEAgc3RhdGljIGludCBjcmVhdGVfaHdtb25fYXR0cl9uYW1lKHN0cnVjdAogCQlyZXR1cm4gZXJy
OwogCX0KIAotCWlmICghc3RyY21wKGF0dHJfc3VmZml4LCBEVF9GQVVMVF9BVFRSX1NVRkZJWCkp
IHsKLQkJYXR0cl9uYW1lID0gImZhdWx0IjsKLQl9IGVsc2UgaWYgKCFzdHJjbXAoYXR0cl9zdWZm
aXgsIERUX0RBVEFfQVRUUl9TVUZGSVgpKSB7Ci0JCWF0dHJfbmFtZSA9ICJpbnB1dCI7Ci0JfSBl
bHNlIGlmICghc3RyY21wKGF0dHJfc3VmZml4LCBEVF9USFJFU0hPTERfQVRUUl9TVUZGSVgpKSB7
Ci0JCWlmICh0eXBlID09IFRFTVApCi0JCQlhdHRyX25hbWUgPSAibWF4IjsKLQkJZWxzZSBpZiAo
dHlwZSA9PSBGQU4pCi0JCQlhdHRyX25hbWUgPSAibWluIjsKLQkJZWxzZQotCQkJcmV0dXJuIC1F
Tk9FTlQ7Ci0JfSBlbHNlIHsKKwlhdHRyX25hbWUgPSBjb252ZXJ0X29wYWxfYXR0cl9uYW1lKHR5
cGUsIGF0dHJfc3VmZml4KTsKKwlpZiAoIWF0dHJfbmFtZSkKIAkJcmV0dXJuIC1FTk9FTlQ7Ci0J
fQogCiAJc25wcmludGYoaHdtb25fYXR0cl9uYW1lLCBNQVhfQVRUUl9MRU4sICIlcyVkXyVzIiwK
IAkJIHNlbnNvcl9ncm91cHNbdHlwZV0ubmFtZSwgaW5kZXgsIGF0dHJfbmFtZSk7CgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWls
aW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29y
cy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH v2 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-19 17:44   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

It simplifies the creation of the hwmon attributes and will help when
support for a new device tree layout is added. The patch also changes
the name of the routine to parse_opal_node_name().

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---

Changes since v1:

 - changed returned value of parse_opal_node_name()
 - used *_PTR macros to check for errors

 drivers/hwmon/ibmpowernv.c |   37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

Index: linux.git/drivers/hwmon/ibmpowernv.c
===================================================================
--- linux.git.orig/drivers/hwmon/ibmpowernv.c
+++ linux.git/drivers/hwmon/ibmpowernv.c
@@ -152,29 +152,22 @@ static const char *convert_opal_attr_nam
  * which need to be mapped as fan2_input, temp1_max respectively before
  * populating them inside hwmon device class.
  */
-static int create_hwmon_attr_name(struct device *dev, enum sensors type,
-					 const char *node_name,
-					 char *hwmon_attr_name)
+static const char *parse_opal_node_name(const char *node_name,
+					enum sensors type, u32 *index)
 {
 	char attr_suffix[MAX_ATTR_LEN];
 	const char *attr_name;
-	u32 index;
 	int err;
 
-	err = get_sensor_index_attr(node_name, &index, attr_suffix);
-	if (err) {
-		dev_err(dev, "Sensor device node name '%s' is invalid\n",
-			node_name);
-		return err;
-	}
+	err = get_sensor_index_attr(node_name, index, attr_suffix);
+	if (err)
+		return ERR_PTR(err);
 
 	attr_name = convert_opal_attr_name(type, attr_suffix);
 	if (!attr_name)
-		return -ENOENT;
+		return ERR_PTR(-ENOENT);
 
-	snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
-		 sensor_groups[type].name, index, attr_name);
-	return 0;
+	return attr_name;
 }
 
 static int get_sensor_type(struct device_node *np)
@@ -249,6 +242,9 @@ static int create_device_attrs(struct pl
 	}
 
 	for_each_child_of_node(opal, np) {
+		const char *attr_name;
+		u32 opal_index;
+
 		if (np->name == NULL)
 			continue;
 
@@ -265,10 +261,17 @@ static int create_device_attrs(struct pl
 
 		sdata[count].id = sensor_id;
 		sdata[count].type = type;
-		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
-					     sdata[count].name);
-		if (err)
+
+		attr_name = parse_opal_node_name(np->name, type, &opal_index);
+		if (IS_ERR(attr_name)) {
+			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
+				np->name);
+			err = IS_ERR(attr_name);
 			goto exit_put_node;
+		}
+
+		snprintf(sdata[count].name, MAX_ATTR_LEN, "%s%d_%s",
+			 sensor_groups[type].name, opal_index, attr_name);
 
 		sysfs_attr_init(&sdata[count].dev_attr.attr);
 		sdata[count].dev_attr.attr.name = sdata[count].name;

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH v2 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
@ 2015-03-19 17:44   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SXQgc2ltcGxpZmllcyB0aGUgY3JlYXRpb24gb2YgdGhlIGh3bW9uIGF0dHJpYnV0ZXMgYW5kIHdp
bGwgaGVscCB3aGVuCnN1cHBvcnQgZm9yIGEgbmV3IGRldmljZSB0cmVlIGxheW91dCBpcyBhZGRl
ZC4gVGhlIHBhdGNoIGFsc28gY2hhbmdlcwp0aGUgbmFtZSBvZiB0aGUgcm91dGluZSB0byBwYXJz
ZV9vcGFsX25vZGVfbmFtZSgpLgoKU2lnbmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNs
Z0Bmci5pYm0uY29tPgotLS0KCkNoYW5nZXMgc2luY2UgdjE6CgogLSBjaGFuZ2VkIHJldHVybmVk
IHZhbHVlIG9mIHBhcnNlX29wYWxfbm9kZV9uYW1lKCkKIC0gdXNlZCAqX1BUUiBtYWNyb3MgdG8g
Y2hlY2sgZm9yIGVycm9ycwoKIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIHwgICAzNyArKysr
KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjAgaW5z
ZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpJbmRleDogbGludXguZ2l0L2RyaXZlcnMvaHdt
b24vaWJtcG93ZXJudi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LmdpdC5vcmlnL2RyaXZlcnMvaHdt
b24vaWJtcG93ZXJudi5jCisrKyBsaW51eC5naXQvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMK
QEAgLTE1MiwyOSArMTUyLDIyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb252ZXJ0X29wYWxfYXR0
cl9uYW0KICAqIHdoaWNoIG5lZWQgdG8gYmUgbWFwcGVkIGFzIGZhbjJfaW5wdXQsIHRlbXAxX21h
eCByZXNwZWN0aXZlbHkgYmVmb3JlCiAgKiBwb3B1bGF0aW5nIHRoZW0gaW5zaWRlIGh3bW9uIGRl
dmljZSBjbGFzcy4KICAqLwotc3RhdGljIGludCBjcmVhdGVfaHdtb25fYXR0cl9uYW1lKHN0cnVj
dCBkZXZpY2UgKmRldiwgZW51bSBzZW5zb3JzIHR5cGUsCi0JCQkJCSBjb25zdCBjaGFyICpub2Rl
X25hbWUsCi0JCQkJCSBjaGFyICpod21vbl9hdHRyX25hbWUpCitzdGF0aWMgY29uc3QgY2hhciAq
cGFyc2Vfb3BhbF9ub2RlX25hbWUoY29uc3QgY2hhciAqbm9kZV9uYW1lLAorCQkJCQllbnVtIHNl
bnNvcnMgdHlwZSwgdTMyICppbmRleCkKIHsKIAljaGFyIGF0dHJfc3VmZml4W01BWF9BVFRSX0xF
Tl07CiAJY29uc3QgY2hhciAqYXR0cl9uYW1lOwotCXUzMiBpbmRleDsKIAlpbnQgZXJyOwogCi0J
ZXJyID0gZ2V0X3NlbnNvcl9pbmRleF9hdHRyKG5vZGVfbmFtZSwgJmluZGV4LCBhdHRyX3N1ZmZp
eCk7Ci0JaWYgKGVycikgewotCQlkZXZfZXJyKGRldiwgIlNlbnNvciBkZXZpY2Ugbm9kZSBuYW1l
ICclcycgaXMgaW52YWxpZFxuIiwKLQkJCW5vZGVfbmFtZSk7Ci0JCXJldHVybiBlcnI7Ci0JfQor
CWVyciA9IGdldF9zZW5zb3JfaW5kZXhfYXR0cihub2RlX25hbWUsIGluZGV4LCBhdHRyX3N1ZmZp
eCk7CisJaWYgKGVycikKKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAogCWF0dHJfbmFtZSA9IGNv
bnZlcnRfb3BhbF9hdHRyX25hbWUodHlwZSwgYXR0cl9zdWZmaXgpOwogCWlmICghYXR0cl9uYW1l
KQotCQlyZXR1cm4gLUVOT0VOVDsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CiAKLQlzbnBy
aW50Zihod21vbl9hdHRyX25hbWUsIE1BWF9BVFRSX0xFTiwgIiVzJWRfJXMiLAotCQkgc2Vuc29y
X2dyb3Vwc1t0eXBlXS5uYW1lLCBpbmRleCwgYXR0cl9uYW1lKTsKLQlyZXR1cm4gMDsKKwlyZXR1
cm4gYXR0cl9uYW1lOwogfQogCiBzdGF0aWMgaW50IGdldF9zZW5zb3JfdHlwZShzdHJ1Y3QgZGV2
aWNlX25vZGUgKm5wKQpAQCAtMjQ5LDYgKzI0Miw5IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2Rldmlj
ZV9hdHRycyhzdHJ1Y3QgcGwKIAl9CiAKIAlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKG9wYWwsIG5w
KSB7CisJCWNvbnN0IGNoYXIgKmF0dHJfbmFtZTsKKwkJdTMyIG9wYWxfaW5kZXg7CisKIAkJaWYg
KG5wLT5uYW1lID09IE5VTEwpCiAJCQljb250aW51ZTsKIApAQCAtMjY1LDEwICsyNjEsMTcgQEAg
c3RhdGljIGludCBjcmVhdGVfZGV2aWNlX2F0dHJzKHN0cnVjdCBwbAogCiAJCXNkYXRhW2NvdW50
XS5pZCA9IHNlbnNvcl9pZDsKIAkJc2RhdGFbY291bnRdLnR5cGUgPSB0eXBlOwotCQllcnIgPSBj
cmVhdGVfaHdtb25fYXR0cl9uYW1lKCZwZGV2LT5kZXYsIHR5cGUsIG5wLT5uYW1lLAotCQkJCQkg
ICAgIHNkYXRhW2NvdW50XS5uYW1lKTsKLQkJaWYgKGVycikKKworCQlhdHRyX25hbWUgPSBwYXJz
ZV9vcGFsX25vZGVfbmFtZShucC0+bmFtZSwgdHlwZSwgJm9wYWxfaW5kZXgpOworCQlpZiAoSVNf
RVJSKGF0dHJfbmFtZSkpIHsKKwkJCWRldl9lcnIoJnBkZXYtPmRldiwgIlNlbnNvciBkZXZpY2Ug
bm9kZSBuYW1lICclcycgaXMgaW52YWxpZFxuIiwKKwkJCQlucC0+bmFtZSk7CisJCQllcnIgPSBJ
U19FUlIoYXR0cl9uYW1lKTsKIAkJCWdvdG8gZXhpdF9wdXRfbm9kZTsKKwkJfQorCisJCXNucHJp
bnRmKHNkYXRhW2NvdW50XS5uYW1lLCBNQVhfQVRUUl9MRU4sICIlcyVkXyVzIiwKKwkJCSBzZW5z
b3JfZ3JvdXBzW3R5cGVdLm5hbWUsIG9wYWxfaW5kZXgsIGF0dHJfbmFtZSk7CiAKIAkJc3lzZnNf
YXR0cl9pbml0KCZzZGF0YVtjb3VudF0uZGV2X2F0dHIuYXR0cik7CiAJCXNkYXRhW2NvdW50XS5k
ZXZfYXR0ci5hdHRyLm5hbWUgPSBzZGF0YVtjb3VudF0ubmFtZTsKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdAps
bS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWls
bWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH v2 5/5] hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute names
       [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
@ 2015-03-19 17:44   ` Cédric Le Goater
  2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

The current OPAL firmware exposes the different sensors of an IBM Power
system using node names such as :

	sensors/amb-temp#1-data
	sensors/amb-temp#1-thrs
	cooling-fan#1-data
	cooling-fan#1-faulted
	cooling-fan#1-thrs
	cooling-fan#2-data
	...

The ibmpowernv driver, when loaded, parses these names to extract the
sensor index and the sensor attribute name. Unfortunately, this scheme
makes it difficult to add sensors with a different layout (specially of
the same type, like temperature) as the sensor index calculated in OPAL
is directly used in the hwmon sysfs interface.

What this patch does is add a independent hwmon index for each sensor.
The increment of the hwmon index (temp, fan, power, etc.) is kept per
sensor type in the sensor_group table. The sensor_data table is used
to store the association of the hwmon and OPAL indexes, as we need to
have the same hwmon index for different attributes of a same sensor.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

Index: linux.git/drivers/hwmon/ibmpowernv.c
===================================================================
--- linux.git.orig/drivers/hwmon/ibmpowernv.c
+++ linux.git/drivers/hwmon/ibmpowernv.c
@@ -55,6 +55,7 @@ static struct sensor_group {
 	const char *compatible;
 	struct attribute_group group;
 	u32 attr_count;
+	u32 hwmon_index;
 } sensor_groups[] = {
 	{"fan", "ibm,opal-sensor-cooling-fan"},
 	{"temp", "ibm,opal-sensor-amb-temp"},
@@ -64,6 +65,8 @@ static struct sensor_group {
 
 struct sensor_data {
 	u32 id; /* An opaque id of the firmware for each sensor */
+	u32 hwmon_index;
+	u32 opal_index;
 	enum sensors type;
 	char name[MAX_ATTR_LEN];
 	struct device_attribute dev_attr;
@@ -181,6 +184,19 @@ static int get_sensor_type(struct device
 	return MAX_SENSOR_TYPE;
 }
 
+static u32 get_sensor_hwmon_index(struct sensor_data *sdata,
+	struct sensor_data *sdata_table, int count)
+{
+	int i;
+
+	for (i = 0; i < count; i++)
+		if (sdata_table[i].opal_index == sdata->opal_index &&
+		    sdata_table[i].type == sdata->type)
+			return sdata_table[i].hwmon_index;
+
+	return ++sensor_groups[sdata->type].hwmon_index;
+}
+
 static int populate_attr_groups(struct platform_device *pdev)
 {
 	struct platform_data *pdata = platform_get_drvdata(pdev);
@@ -270,8 +286,13 @@ static int create_device_attrs(struct pl
 			goto exit_put_node;
 		}
 
+		sdata[count].opal_index = opal_index;
+		sdata[count].hwmon_index =
+			get_sensor_hwmon_index(&sdata[count], sdata, count);
+
 		snprintf(sdata[count].name, MAX_ATTR_LEN, "%s%d_%s",
-			 sensor_groups[type].name, opal_index, attr_name);
+			 sensor_groups[type].name, sdata[count].hwmon_index,
+			 attr_name);
 
 		sysfs_attr_init(&sdata[count].dev_attr.attr);
 		sdata[count].dev_attr.attr.name = sdata[count].name;

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH v2 5/5] hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute names
@ 2015-03-19 17:44   ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-03-19 17:44 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

VGhlIGN1cnJlbnQgT1BBTCBmaXJtd2FyZSBleHBvc2VzIHRoZSBkaWZmZXJlbnQgc2Vuc29ycyBv
ZiBhbiBJQk0gUG93ZXIKc3lzdGVtIHVzaW5nIG5vZGUgbmFtZXMgc3VjaCBhcyA6CgoJc2Vuc29y
cy9hbWItdGVtcCMxLWRhdGEKCXNlbnNvcnMvYW1iLXRlbXAjMS10aHJzCgljb29saW5nLWZhbiMx
LWRhdGEKCWNvb2xpbmctZmFuIzEtZmF1bHRlZAoJY29vbGluZy1mYW4jMS10aHJzCgljb29saW5n
LWZhbiMyLWRhdGEKCS4uLgoKVGhlIGlibXBvd2VybnYgZHJpdmVyLCB3aGVuIGxvYWRlZCwgcGFy
c2VzIHRoZXNlIG5hbWVzIHRvIGV4dHJhY3QgdGhlCnNlbnNvciBpbmRleCBhbmQgdGhlIHNlbnNv
ciBhdHRyaWJ1dGUgbmFtZS4gVW5mb3J0dW5hdGVseSwgdGhpcyBzY2hlbWUKbWFrZXMgaXQgZGlm
ZmljdWx0IHRvIGFkZCBzZW5zb3JzIHdpdGggYSBkaWZmZXJlbnQgbGF5b3V0IChzcGVjaWFsbHkg
b2YKdGhlIHNhbWUgdHlwZSwgbGlrZSB0ZW1wZXJhdHVyZSkgYXMgdGhlIHNlbnNvciBpbmRleCBj
YWxjdWxhdGVkIGluIE9QQUwKaXMgZGlyZWN0bHkgdXNlZCBpbiB0aGUgaHdtb24gc3lzZnMgaW50
ZXJmYWNlLgoKV2hhdCB0aGlzIHBhdGNoIGRvZXMgaXMgYWRkIGEgaW5kZXBlbmRlbnQgaHdtb24g
aW5kZXggZm9yIGVhY2ggc2Vuc29yLgpUaGUgaW5jcmVtZW50IG9mIHRoZSBod21vbiBpbmRleCAo
dGVtcCwgZmFuLCBwb3dlciwgZXRjLikgaXMga2VwdCBwZXIKc2Vuc29yIHR5cGUgaW4gdGhlIHNl
bnNvcl9ncm91cCB0YWJsZS4gVGhlIHNlbnNvcl9kYXRhIHRhYmxlIGlzIHVzZWQKdG8gc3RvcmUg
dGhlIGFzc29jaWF0aW9uIG9mIHRoZSBod21vbiBhbmQgT1BBTCBpbmRleGVzLCBhcyB3ZSBuZWVk
IHRvCmhhdmUgdGhlIHNhbWUgaHdtb24gaW5kZXggZm9yIGRpZmZlcmVudCBhdHRyaWJ1dGVzIG9m
IGEgc2FtZSBzZW5zb3IuCgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGZy
LmlibS5jb20+Ci0tLQogZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMgfCAgIDIzICsrKysrKysr
KysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMSBkZWxl
dGlvbigtKQoKSW5kZXg6IGxpbnV4LmdpdC9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBsaW51eC5naXQub3JpZy9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYworKysg
bGludXguZ2l0L2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCkBAIC01NSw2ICs1NSw3IEBAIHN0
YXRpYyBzdHJ1Y3Qgc2Vuc29yX2dyb3VwIHsKIAljb25zdCBjaGFyICpjb21wYXRpYmxlOwogCXN0
cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXA7CiAJdTMyIGF0dHJfY291bnQ7CisJdTMyIGh3bW9u
X2luZGV4OwogfSBzZW5zb3JfZ3JvdXBzW10gPSB7CiAJeyJmYW4iLCAiaWJtLG9wYWwtc2Vuc29y
LWNvb2xpbmctZmFuIn0sCiAJeyJ0ZW1wIiwgImlibSxvcGFsLXNlbnNvci1hbWItdGVtcCJ9LApA
QCAtNjQsNiArNjUsOCBAQCBzdGF0aWMgc3RydWN0IHNlbnNvcl9ncm91cCB7CiAKIHN0cnVjdCBz
ZW5zb3JfZGF0YSB7CiAJdTMyIGlkOyAvKiBBbiBvcGFxdWUgaWQgb2YgdGhlIGZpcm13YXJlIGZv
ciBlYWNoIHNlbnNvciAqLworCXUzMiBod21vbl9pbmRleDsKKwl1MzIgb3BhbF9pbmRleDsKIAll
bnVtIHNlbnNvcnMgdHlwZTsKIAljaGFyIG5hbWVbTUFYX0FUVFJfTEVOXTsKIAlzdHJ1Y3QgZGV2
aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cjsKQEAgLTE4MSw2ICsxODQsMTkgQEAgc3RhdGljIGludCBn
ZXRfc2Vuc29yX3R5cGUoc3RydWN0IGRldmljZQogCXJldHVybiBNQVhfU0VOU09SX1RZUEU7CiB9
CiAKK3N0YXRpYyB1MzIgZ2V0X3NlbnNvcl9od21vbl9pbmRleChzdHJ1Y3Qgc2Vuc29yX2RhdGEg
KnNkYXRhLAorCXN0cnVjdCBzZW5zb3JfZGF0YSAqc2RhdGFfdGFibGUsIGludCBjb3VudCkKK3sK
KwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorCQlpZiAoc2RhdGFfdGFi
bGVbaV0ub3BhbF9pbmRleCA9PSBzZGF0YS0+b3BhbF9pbmRleCAmJgorCQkgICAgc2RhdGFfdGFi
bGVbaV0udHlwZSA9PSBzZGF0YS0+dHlwZSkKKwkJCXJldHVybiBzZGF0YV90YWJsZVtpXS5od21v
bl9pbmRleDsKKworCXJldHVybiArK3NlbnNvcl9ncm91cHNbc2RhdGEtPnR5cGVdLmh3bW9uX2lu
ZGV4OworfQorCiBzdGF0aWMgaW50IHBvcHVsYXRlX2F0dHJfZ3JvdXBzKHN0cnVjdCBwbGF0Zm9y
bV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IHBsYXRmb3JtX2RhdGEgKnBkYXRhID0gcGxhdGZv
cm1fZ2V0X2RydmRhdGEocGRldik7CkBAIC0yNzAsOCArMjg2LDEzIEBAIHN0YXRpYyBpbnQgY3Jl
YXRlX2RldmljZV9hdHRycyhzdHJ1Y3QgcGwKIAkJCWdvdG8gZXhpdF9wdXRfbm9kZTsKIAkJfQog
CisJCXNkYXRhW2NvdW50XS5vcGFsX2luZGV4ID0gb3BhbF9pbmRleDsKKwkJc2RhdGFbY291bnRd
Lmh3bW9uX2luZGV4ID0KKwkJCWdldF9zZW5zb3JfaHdtb25faW5kZXgoJnNkYXRhW2NvdW50XSwg
c2RhdGEsIGNvdW50KTsKKwogCQlzbnByaW50ZihzZGF0YVtjb3VudF0ubmFtZSwgTUFYX0FUVFJf
TEVOLCAiJXMlZF8lcyIsCi0JCQkgc2Vuc29yX2dyb3Vwc1t0eXBlXS5uYW1lLCBvcGFsX2luZGV4
LCBhdHRyX25hbWUpOworCQkJIHNlbnNvcl9ncm91cHNbdHlwZV0ubmFtZSwgc2RhdGFbY291bnRd
Lmh3bW9uX2luZGV4LAorCQkJIGF0dHJfbmFtZSk7CiAKIAkJc3lzZnNfYXR0cl9pbml0KCZzZGF0
YVtjb3VudF0uZGV2X2F0dHIuYXR0cik7CiAJCXNkYXRhW2NvdW50XS5kZXZfYXR0ci5hdHRyLm5h
bWUgPSBzZGF0YVtjb3VudF0ubmFtZTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNl
bnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xt
LXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH v2 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
  2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
@ 2015-03-20  8:06     ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-03-20  8:06 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Jean Delvare, Neelesh Gupta, skiboot,
	linuxppc-dev, Guenter Roeck

[ ... ] 


> @@ -265,10 +261,17 @@ static int create_device_attrs(struct pl
> 
>  		sdata[count].id = sensor_id;
>  		sdata[count].type = type;
> -		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
> -					     sdata[count].name);
> -		if (err)
> +
> +		attr_name = parse_opal_node_name(np->name, type, &opal_index);
> +		if (IS_ERR(attr_name)) {
> +			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
> +				np->name);
> +			err = IS_ERR(attr_name);
                              ^^^^^^

Arg. Bad copy/paste. This should be PTR_ERR() ... 

Do you want a full patchset resend or just a resend of this patch ? or a fix maybe.

Sorry for the noise ...

C.  

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH v2 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
@ 2015-03-20  8:06     ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-03-20  8:06 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Jean Delvare, Neelesh Gupta, skiboot,
	linuxppc-dev, Guenter Roeck

[ ... ] 


> @@ -265,10 +261,17 @@ static int create_device_attrs(struct pl
> 
>  		sdata[count].id = sensor_id;
>  		sdata[count].type = type;
> -		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
> -					     sdata[count].name);
> -		if (err)
> +
> +		attr_name = parse_opal_node_name(np->name, type, &opal_index);
> +		if (IS_ERR(attr_name)) {
> +			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
> +				np->name);
> +			err = IS_ERR(attr_name);
                              ^^^^^^

Arg. Bad copy/paste. This should be PTR_ERR() ... 

Do you want a full patchset resend or just a resend of this patch ? or a fix maybe.

Sorry for the noise ...

C.  


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH v2 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
  2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
@ 2015-03-20 15:26     ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-20 15:26 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Thu, Mar 19, 2015 at 06:44:40PM +0100, Cédric Le Goater wrote:
> Hello !
> 
> The current implementation of the driver uses an index for the hwmon 
> attribute which is extracted from the device node name. This index
> is calculated by the OPAL firmware and its usage creates a dependency 
> with the driver which makes changes a little more complex in OPAL.
> 
> This patchset changes the ibmpowernv code to use its own index. It 
> starts with a few cleanups, mostly code shuffling around the creation 
> of the hwmon sysfs attributes and completes by removing the dependency.
> 
Series applied to hwmon-next (with patch #4 fixed up).

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH v2 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
@ 2015-03-20 15:26     ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-20 15:26 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Thu, Mar 19, 2015 at 06:44:40PM +0100, Cédric Le Goater wrote:
> Hello !
> 
> The current implementation of the driver uses an index for the hwmon 
> attribute which is extracted from the device node name. This index
> is calculated by the OPAL firmware and its usage creates a dependency 
> with the driver which makes changes a little more complex in OPAL.
> 
> This patchset changes the ibmpowernv code to use its own index. It 
> starts with a few cleanups, mostly code shuffling around the creation 
> of the hwmon sysfs attributes and completes by removing the dependency.
> 
Series applied to hwmon-next (with patch #4 fixed up).

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH v2 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
  2015-03-20  8:06     ` [lm-sensors] " Cedric Le Goater
@ 2015-03-20 15:27       ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-20 15:27 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Fri, Mar 20, 2015 at 09:06:38AM +0100, Cedric Le Goater wrote:
> [ ... ] 
> 
> 
> > @@ -265,10 +261,17 @@ static int create_device_attrs(struct pl
> > 
> >  		sdata[count].id = sensor_id;
> >  		sdata[count].type = type;
> > -		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
> > -					     sdata[count].name);
> > -		if (err)
> > +
> > +		attr_name = parse_opal_node_name(np->name, type, &opal_index);
> > +		if (IS_ERR(attr_name)) {
> > +			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
> > +				np->name);
> > +			err = IS_ERR(attr_name);
>                               ^^^^^^
> 
> Arg. Bad copy/paste. This should be PTR_ERR() ... 
> 
> Do you want a full patchset resend or just a resend of this patch ? or a fix maybe.
> 
No need to resend; I fixed it up.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH v2 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
@ 2015-03-20 15:27       ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-03-20 15:27 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Fri, Mar 20, 2015 at 09:06:38AM +0100, Cedric Le Goater wrote:
> [ ... ] 
> 
> 
> > @@ -265,10 +261,17 @@ static int create_device_attrs(struct pl
> > 
> >  		sdata[count].id = sensor_id;
> >  		sdata[count].type = type;
> > -		err = create_hwmon_attr_name(&pdev->dev, type, np->name,
> > -					     sdata[count].name);
> > -		if (err)
> > +
> > +		attr_name = parse_opal_node_name(np->name, type, &opal_index);
> > +		if (IS_ERR(attr_name)) {
> > +			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
> > +				np->name);
> > +			err = IS_ERR(attr_name);
>                               ^^^^^^
> 
> Arg. Bad copy/paste. This should be PTR_ERR() ... 
> 
> Do you want a full patchset resend or just a resend of this patch ? or a fix maybe.
> 
No need to resend; I fixed it up.

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH v2 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
  2015-03-20 15:26     ` [lm-sensors] " Guenter Roeck
@ 2015-03-20 16:52       ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-03-20 16:52 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 03/20/2015 04:26 PM, Guenter Roeck wrote:
> On Thu, Mar 19, 2015 at 06:44:40PM +0100, Cédric Le Goater wrote:
>> Hello !
>>
>> The current implementation of the driver uses an index for the hwmon 
>> attribute which is extracted from the device node name. This index
>> is calculated by the OPAL firmware and its usage creates a dependency 
>> with the driver which makes changes a little more complex in OPAL.
>>
>> This patchset changes the ibmpowernv code to use its own index. It 
>> starts with a few cleanups, mostly code shuffling around the creation 
>> of the hwmon sysfs attributes and completes by removing the dependency.
>>
> Series applied to hwmon-next (with patch #4 fixed up).

Thanks !

C.

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH v2 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index
@ 2015-03-20 16:52       ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-03-20 16:52 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 03/20/2015 04:26 PM, Guenter Roeck wrote:
> On Thu, Mar 19, 2015 at 06:44:40PM +0100, Cédric Le Goater wrote:
>> Hello !
>>
>> The current implementation of the driver uses an index for the hwmon 
>> attribute which is extracted from the device node name. This index
>> is calculated by the OPAL firmware and its usage creates a dependency 
>> with the driver which makes changes a little more complex in OPAL.
>>
>> This patchset changes the ibmpowernv code to use its own index. It 
>> starts with a few cleanups, mostly code shuffling around the creation 
>> of the hwmon sysfs attributes and completes by removing the dependency.
>>
> Series applied to hwmon-next (with patch #4 fixed up).

Thanks !

C.


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 0/4]  hwmon: (ibmpowernv) add DTS support
  2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
@ 2015-04-01 10:15     ` Cédric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

Hello !

These patches extend the ibmpowernv driver to support the new OPAL firmware 
which now exposes in its device tree the Digital Temperature Sensors of 
a P8 system.

They are based on Linux 4.0.0-rc6 + the initial cleanup serie :

     http://lists.lm-sensors.org/pipermail/lm-sensors/2015-March/043670.html

and were tested on IBM Power and Open Power systems running Trusty.

Cheers,

C.

Cédric Le Goater (4):
  hwmon: (ibmpowernv) add a helper routine create_hwmon_attr
  hwmon: (ibmpowernv) add support for the new device tree
  hwmon: (ibmpowernv) add a label attribute
  hwmon: (ibmpowernv) pretty print labels

 drivers/hwmon/ibmpowernv.c |  143 ++++++++++++++++++++++++++++++++++++++------
 1 file changed, 125 insertions(+), 18 deletions(-)

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 0/4]  hwmon: (ibmpowernv) add DTS support
@ 2015-04-01 10:15     ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

SGVsbG8gIQoKVGhlc2UgcGF0Y2hlcyBleHRlbmQgdGhlIGlibXBvd2VybnYgZHJpdmVyIHRvIHN1
cHBvcnQgdGhlIG5ldyBPUEFMIGZpcm13YXJlIAp3aGljaCBub3cgZXhwb3NlcyBpbiBpdHMgZGV2
aWNlIHRyZWUgdGhlIERpZ2l0YWwgVGVtcGVyYXR1cmUgU2Vuc29ycyBvZiAKYSBQOCBzeXN0ZW0u
CgpUaGV5IGFyZSBiYXNlZCBvbiBMaW51eCA0LjAuMC1yYzYgKyB0aGUgaW5pdGlhbCBjbGVhbnVw
IHNlcmllIDoKCiAgICAgaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL3BpcGVybWFpbC9sbS1z
ZW5zb3JzLzIwMTUtTWFyY2gvMDQzNjcwLmh0bWwKCmFuZCB3ZXJlIHRlc3RlZCBvbiBJQk0gUG93
ZXIgYW5kIE9wZW4gUG93ZXIgc3lzdGVtcyBydW5uaW5nIFRydXN0eS4KCkNoZWVycywKCkMuCgpD
w6lkcmljIExlIEdvYXRlciAoNCk6CiAgaHdtb246IChpYm1wb3dlcm52KSBhZGQgYSBoZWxwZXIg
cm91dGluZSBjcmVhdGVfaHdtb25fYXR0cgogIGh3bW9uOiAoaWJtcG93ZXJudikgYWRkIHN1cHBv
cnQgZm9yIHRoZSBuZXcgZGV2aWNlIHRyZWUKICBod21vbjogKGlibXBvd2VybnYpIGFkZCBhIGxh
YmVsIGF0dHJpYnV0ZQogIGh3bW9uOiAoaWJtcG93ZXJudikgcHJldHR5IHByaW50IGxhYmVscwoK
IGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIHwgIDE0MyArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCsp
LCAxOCBkZWxldGlvbnMoLSkKCi0tIAoxLjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNv
cnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlz
dGluZm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 1/4] hwmon: (ibmpowernv) add a helper routine create_hwmon_attr
  2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
@ 2015-04-01 10:15     ` Cédric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

This should shorten a bit the code necessary to create a hmwon attribute.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index a6e7245f172d..c9aa4d837c6f 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -232,6 +232,20 @@ static int populate_attr_groups(struct platform_device *pdev)
 	return 0;
 }
 
+static void create_hwmon_attr(struct sensor_data *sdata, const char *attr_name,
+	ssize_t (*show)(struct device *dev, struct device_attribute *attr,
+			char *buf))
+{
+	snprintf(sdata->name, MAX_ATTR_LEN, "%s%d_%s",
+		 sensor_groups[sdata->type].name, sdata->hwmon_index,
+		 attr_name);
+
+	sysfs_attr_init(&sdata->dev_attr.attr);
+	sdata->dev_attr.attr.name = sdata->name;
+	sdata->dev_attr.attr.mode = S_IRUGO;
+	sdata->dev_attr.show = show;
+}
+
 /*
  * Iterate through the device tree for each child of 'sensors' node, create
  * a sysfs attribute file, the file is named by translating the DT node name
@@ -290,14 +304,7 @@ static int create_device_attrs(struct platform_device *pdev)
 		sdata[count].hwmon_index =
 			get_sensor_hwmon_index(&sdata[count], sdata, count);
 
-		snprintf(sdata[count].name, MAX_ATTR_LEN, "%s%d_%s",
-			 sensor_groups[type].name, sdata[count].hwmon_index,
-			 attr_name);
-
-		sysfs_attr_init(&sdata[count].dev_attr.attr);
-		sdata[count].dev_attr.attr.name = sdata[count].name;
-		sdata[count].dev_attr.attr.mode = S_IRUGO;
-		sdata[count].dev_attr.show = show_sensor;
+		create_hwmon_attr(&sdata[count], attr_name, show_sensor);
 
 		pgroups[type]->attrs[sensor_groups[type].attr_count++] =
 				&sdata[count++].dev_attr.attr;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 1/4] hwmon: (ibmpowernv) add a helper routine create_hwmon_attr
@ 2015-04-01 10:15     ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

VGhpcyBzaG91bGQgc2hvcnRlbiBhIGJpdCB0aGUgY29kZSBuZWNlc3NhcnkgdG8gY3JlYXRlIGEg
aG13b24gYXR0cmlidXRlLgoKU2lnbmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0Bm
ci5pYm0uY29tPgotLS0KIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIHwgICAyMyArKysrKysr
KysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDggZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMgYi9kcml2
ZXJzL2h3bW9uL2libXBvd2VybnYuYwppbmRleCBhNmU3MjQ1ZjE3MmQuLmM5YWE0ZDgzN2M2ZiAx
MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKKysrIGIvZHJpdmVycy9od21v
bi9pYm1wb3dlcm52LmMKQEAgLTIzMiw2ICsyMzIsMjAgQEAgc3RhdGljIGludCBwb3B1bGF0ZV9h
dHRyX2dyb3VwcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJldHVybiAwOwogfQog
CitzdGF0aWMgdm9pZCBjcmVhdGVfaHdtb25fYXR0cihzdHJ1Y3Qgc2Vuc29yX2RhdGEgKnNkYXRh
LCBjb25zdCBjaGFyICphdHRyX25hbWUsCisJc3NpemVfdCAoKnNob3cpKHN0cnVjdCBkZXZpY2Ug
KmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQljaGFyICpidWYpKQorewor
CXNucHJpbnRmKHNkYXRhLT5uYW1lLCBNQVhfQVRUUl9MRU4sICIlcyVkXyVzIiwKKwkJIHNlbnNv
cl9ncm91cHNbc2RhdGEtPnR5cGVdLm5hbWUsIHNkYXRhLT5od21vbl9pbmRleCwKKwkJIGF0dHJf
bmFtZSk7CisKKwlzeXNmc19hdHRyX2luaXQoJnNkYXRhLT5kZXZfYXR0ci5hdHRyKTsKKwlzZGF0
YS0+ZGV2X2F0dHIuYXR0ci5uYW1lID0gc2RhdGEtPm5hbWU7CisJc2RhdGEtPmRldl9hdHRyLmF0
dHIubW9kZSA9IFNfSVJVR087CisJc2RhdGEtPmRldl9hdHRyLnNob3cgPSBzaG93OworfQorCiAv
KgogICogSXRlcmF0ZSB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSBmb3IgZWFjaCBjaGlsZCBvZiAn
c2Vuc29ycycgbm9kZSwgY3JlYXRlCiAgKiBhIHN5c2ZzIGF0dHJpYnV0ZSBmaWxlLCB0aGUgZmls
ZSBpcyBuYW1lZCBieSB0cmFuc2xhdGluZyB0aGUgRFQgbm9kZSBuYW1lCkBAIC0yOTAsMTQgKzMw
NCw3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2RldmljZV9hdHRycyhzdHJ1Y3QgcGxhdGZvcm1fZGV2
aWNlICpwZGV2KQogCQlzZGF0YVtjb3VudF0uaHdtb25faW5kZXggPQogCQkJZ2V0X3NlbnNvcl9o
d21vbl9pbmRleCgmc2RhdGFbY291bnRdLCBzZGF0YSwgY291bnQpOwogCi0JCXNucHJpbnRmKHNk
YXRhW2NvdW50XS5uYW1lLCBNQVhfQVRUUl9MRU4sICIlcyVkXyVzIiwKLQkJCSBzZW5zb3JfZ3Jv
dXBzW3R5cGVdLm5hbWUsIHNkYXRhW2NvdW50XS5od21vbl9pbmRleCwKLQkJCSBhdHRyX25hbWUp
OwotCi0JCXN5c2ZzX2F0dHJfaW5pdCgmc2RhdGFbY291bnRdLmRldl9hdHRyLmF0dHIpOwotCQlz
ZGF0YVtjb3VudF0uZGV2X2F0dHIuYXR0ci5uYW1lID0gc2RhdGFbY291bnRdLm5hbWU7Ci0JCXNk
YXRhW2NvdW50XS5kZXZfYXR0ci5hdHRyLm1vZGUgPSBTX0lSVUdPOwotCQlzZGF0YVtjb3VudF0u
ZGV2X2F0dHIuc2hvdyA9IHNob3dfc2Vuc29yOworCQljcmVhdGVfaHdtb25fYXR0cigmc2RhdGFb
Y291bnRdLCBhdHRyX25hbWUsIHNob3dfc2Vuc29yKTsKIAogCQlwZ3JvdXBzW3R5cGVdLT5hdHRy
c1tzZW5zb3JfZ3JvdXBzW3R5cGVdLmF0dHJfY291bnQrK10gPQogCQkJCSZzZGF0YVtjb3VudCsr
XS5kZXZfYXR0ci5hdHRyOwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3Jz
QGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree
  2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
@ 2015-04-01 10:15     ` Cédric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

The new OPAL device tree for sensors has a different layout and uses new
property names, for the type and for the handler used to capture the
sensor data.

This patch modifies the ibmpowernv driver to support such a tree in a
way preserving compatibility with older OPAL firmwares.

This is achieved by changing the error path of the routine parsing
an OPAL node name. The node is simply considered being from the new
device tree layout and fallback values are used.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   47 +++++++++++++++++++++++++++++++++++---------
 1 file changed, 38 insertions(+), 9 deletions(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index c9aa4d837c6f..f38aa27343f2 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -176,11 +176,26 @@ static const char *parse_opal_node_name(const char *node_name,
 static int get_sensor_type(struct device_node *np)
 {
 	enum sensors type;
+	const char *str;
 
 	for (type = 0; type < MAX_SENSOR_TYPE; type++) {
 		if (of_device_is_compatible(np, sensor_groups[type].compatible))
 			return type;
 	}
+
+	/*
+	 * Let's check if we have a newer device tree
+	 */
+	if (!of_device_is_compatible(np, "ibm,opal-sensor"))
+		return MAX_SENSOR_TYPE;
+
+	if (of_property_read_string(np, "sensor-type", &str))
+		return MAX_SENSOR_TYPE;
+
+	for (type = 0; type < MAX_SENSOR_TYPE; type++)
+		if (!strcmp(str, sensor_groups[type].name))
+			return type;
+
 	return MAX_SENSOR_TYPE;
 }
 
@@ -189,11 +204,16 @@ static u32 get_sensor_hwmon_index(struct sensor_data *sdata,
 {
 	int i;
 
-	for (i = 0; i < count; i++)
-		if (sdata_table[i].opal_index == sdata->opal_index &&
-		    sdata_table[i].type == sdata->type)
-			return sdata_table[i].hwmon_index;
+	/*
+	 * We don't use the OPAL index on newer device trees
+	 */
+	if (sdata->opal_index != -1) {
+		for (i = 0; i < count; i++)
+			if (sdata_table[i].opal_index == sdata->opal_index &&
+			    sdata_table[i].type == sdata->type)
+				return sdata_table[i].hwmon_index;
 
+	}
 	return ++sensor_groups[sdata->type].hwmon_index;
 }
 
@@ -282,7 +302,12 @@ static int create_device_attrs(struct platform_device *pdev)
 		if (type == MAX_SENSOR_TYPE)
 			continue;
 
-		if (of_property_read_u32(np, "sensor-id", &sensor_id)) {
+		/*
+		 * Newer device trees use a "sensor-data" property
+		 * name for input.
+		 */
+		if (of_property_read_u32(np, "sensor-id", &sensor_id) &&
+		    of_property_read_u32(np, "sensor-data", &sensor_id)) {
 			dev_info(&pdev->dev,
 				 "'sensor-id' missing in the node '%s'\n",
 				 np->name);
@@ -292,12 +317,16 @@ static int create_device_attrs(struct platform_device *pdev)
 		sdata[count].id = sensor_id;
 		sdata[count].type = type;
 
+		/*
+		 * If we can not parse the node name, it means we are
+		 * running on a newer device tree. We can just forget
+		 * about the OPAL index and use a defaut value for the
+		 * hwmon attribute name
+		 */
 		attr_name = parse_opal_node_name(np->name, type, &opal_index);
 		if (IS_ERR(attr_name)) {
-			dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
-				np->name);
-			err = PTR_ERR(attr_name);
-			goto exit_put_node;
+			attr_name = "input";
+			opal_index = -1;
 		}
 
 		sdata[count].opal_index = opal_index;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree
@ 2015-04-01 10:15     ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

VGhlIG5ldyBPUEFMIGRldmljZSB0cmVlIGZvciBzZW5zb3JzIGhhcyBhIGRpZmZlcmVudCBsYXlv
dXQgYW5kIHVzZXMgbmV3CnByb3BlcnR5IG5hbWVzLCBmb3IgdGhlIHR5cGUgYW5kIGZvciB0aGUg
aGFuZGxlciB1c2VkIHRvIGNhcHR1cmUgdGhlCnNlbnNvciBkYXRhLgoKVGhpcyBwYXRjaCBtb2Rp
ZmllcyB0aGUgaWJtcG93ZXJudiBkcml2ZXIgdG8gc3VwcG9ydCBzdWNoIGEgdHJlZSBpbiBhCndh
eSBwcmVzZXJ2aW5nIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBPUEFMIGZpcm13YXJlcy4KClRo
aXMgaXMgYWNoaWV2ZWQgYnkgY2hhbmdpbmcgdGhlIGVycm9yIHBhdGggb2YgdGhlIHJvdXRpbmUg
cGFyc2luZwphbiBPUEFMIG5vZGUgbmFtZS4gVGhlIG5vZGUgaXMgc2ltcGx5IGNvbnNpZGVyZWQg
YmVpbmcgZnJvbSB0aGUgbmV3CmRldmljZSB0cmVlIGxheW91dCBhbmQgZmFsbGJhY2sgdmFsdWVz
IGFyZSB1c2VkLgoKU2lnbmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0Bmci5pYm0u
Y29tPgotLS0KIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jIHwgICA0NyArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM4IGluc2Vy
dGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9pYm1w
b3dlcm52LmMgYi9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYwppbmRleCBjOWFhNGQ4MzdjNmYu
LmYzOGFhMjczNDNmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKKysr
IGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKQEAgLTE3NiwxMSArMTc2LDI2IEBAIHN0YXRp
YyBjb25zdCBjaGFyICpwYXJzZV9vcGFsX25vZGVfbmFtZShjb25zdCBjaGFyICpub2RlX25hbWUs
CiBzdGF0aWMgaW50IGdldF9zZW5zb3JfdHlwZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQogewog
CWVudW0gc2Vuc29ycyB0eXBlOworCWNvbnN0IGNoYXIgKnN0cjsKIAogCWZvciAodHlwZSA9IDA7
IHR5cGUgPCBNQVhfU0VOU09SX1RZUEU7IHR5cGUrKykgewogCQlpZiAob2ZfZGV2aWNlX2lzX2Nv
bXBhdGlibGUobnAsIHNlbnNvcl9ncm91cHNbdHlwZV0uY29tcGF0aWJsZSkpCiAJCQlyZXR1cm4g
dHlwZTsKIAl9CisKKwkvKgorCSAqIExldCdzIGNoZWNrIGlmIHdlIGhhdmUgYSBuZXdlciBkZXZp
Y2UgdHJlZQorCSAqLworCWlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsICJpYm0sb3Bh
bC1zZW5zb3IiKSkKKwkJcmV0dXJuIE1BWF9TRU5TT1JfVFlQRTsKKworCWlmIChvZl9wcm9wZXJ0
eV9yZWFkX3N0cmluZyhucCwgInNlbnNvci10eXBlIiwgJnN0cikpCisJCXJldHVybiBNQVhfU0VO
U09SX1RZUEU7CisKKwlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgTUFYX1NFTlNPUl9UWVBFOyB0eXBl
KyspCisJCWlmICghc3RyY21wKHN0ciwgc2Vuc29yX2dyb3Vwc1t0eXBlXS5uYW1lKSkKKwkJCXJl
dHVybiB0eXBlOworCiAJcmV0dXJuIE1BWF9TRU5TT1JfVFlQRTsKIH0KIApAQCAtMTg5LDExICsy
MDQsMTYgQEAgc3RhdGljIHUzMiBnZXRfc2Vuc29yX2h3bW9uX2luZGV4KHN0cnVjdCBzZW5zb3Jf
ZGF0YSAqc2RhdGEsCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
LQkJaWYgKHNkYXRhX3RhYmxlW2ldLm9wYWxfaW5kZXggPT0gc2RhdGEtPm9wYWxfaW5kZXggJiYK
LQkJICAgIHNkYXRhX3RhYmxlW2ldLnR5cGUgPT0gc2RhdGEtPnR5cGUpCi0JCQlyZXR1cm4gc2Rh
dGFfdGFibGVbaV0uaHdtb25faW5kZXg7CisJLyoKKwkgKiBXZSBkb24ndCB1c2UgdGhlIE9QQUwg
aW5kZXggb24gbmV3ZXIgZGV2aWNlIHRyZWVzCisJICovCisJaWYgKHNkYXRhLT5vcGFsX2luZGV4
ICE9IC0xKSB7CisJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorCQkJaWYgKHNkYXRhX3Rh
YmxlW2ldLm9wYWxfaW5kZXggPT0gc2RhdGEtPm9wYWxfaW5kZXggJiYKKwkJCSAgICBzZGF0YV90
YWJsZVtpXS50eXBlID09IHNkYXRhLT50eXBlKQorCQkJCXJldHVybiBzZGF0YV90YWJsZVtpXS5o
d21vbl9pbmRleDsKIAorCX0KIAlyZXR1cm4gKytzZW5zb3JfZ3JvdXBzW3NkYXRhLT50eXBlXS5o
d21vbl9pbmRleDsKIH0KIApAQCAtMjgyLDcgKzMwMiwxMiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9k
ZXZpY2VfYXR0cnMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJaWYgKHR5cGUgPT0g
TUFYX1NFTlNPUl9UWVBFKQogCQkJY29udGludWU7CiAKLQkJaWYgKG9mX3Byb3BlcnR5X3JlYWRf
dTMyKG5wLCAic2Vuc29yLWlkIiwgJnNlbnNvcl9pZCkpIHsKKwkJLyoKKwkJICogTmV3ZXIgZGV2
aWNlIHRyZWVzIHVzZSBhICJzZW5zb3ItZGF0YSIgcHJvcGVydHkKKwkJICogbmFtZSBmb3IgaW5w
dXQuCisJCSAqLworCQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJzZW5zb3ItaWQiLCAm
c2Vuc29yX2lkKSAmJgorCQkgICAgb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJzZW5zb3ItZGF0
YSIsICZzZW5zb3JfaWQpKSB7CiAJCQlkZXZfaW5mbygmcGRldi0+ZGV2LAogCQkJCSAiJ3NlbnNv
ci1pZCcgbWlzc2luZyBpbiB0aGUgbm9kZSAnJXMnXG4iLAogCQkJCSBucC0+bmFtZSk7CkBAIC0y
OTIsMTIgKzMxNywxNiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9kZXZpY2VfYXR0cnMoc3RydWN0IHBs
YXRmb3JtX2RldmljZSAqcGRldikKIAkJc2RhdGFbY291bnRdLmlkID0gc2Vuc29yX2lkOwogCQlz
ZGF0YVtjb3VudF0udHlwZSA9IHR5cGU7CiAKKwkJLyoKKwkJICogSWYgd2UgY2FuIG5vdCBwYXJz
ZSB0aGUgbm9kZSBuYW1lLCBpdCBtZWFucyB3ZSBhcmUKKwkJICogcnVubmluZyBvbiBhIG5ld2Vy
IGRldmljZSB0cmVlLiBXZSBjYW4ganVzdCBmb3JnZXQKKwkJICogYWJvdXQgdGhlIE9QQUwgaW5k
ZXggYW5kIHVzZSBhIGRlZmF1dCB2YWx1ZSBmb3IgdGhlCisJCSAqIGh3bW9uIGF0dHJpYnV0ZSBu
YW1lCisJCSAqLwogCQlhdHRyX25hbWUgPSBwYXJzZV9vcGFsX25vZGVfbmFtZShucC0+bmFtZSwg
dHlwZSwgJm9wYWxfaW5kZXgpOwogCQlpZiAoSVNfRVJSKGF0dHJfbmFtZSkpIHsKLQkJCWRldl9l
cnIoJnBkZXYtPmRldiwgIlNlbnNvciBkZXZpY2Ugbm9kZSBuYW1lICclcycgaXMgaW52YWxpZFxu
IiwKLQkJCQlucC0+bmFtZSk7Ci0JCQllcnIgPSBQVFJfRVJSKGF0dHJfbmFtZSk7Ci0JCQlnb3Rv
IGV4aXRfcHV0X25vZGU7CisJCQlhdHRyX25hbWUgPSAiaW5wdXQiOworCQkJb3BhbF9pbmRleCA9
IC0xOwogCQl9CiAKIAkJc2RhdGFbY291bnRdLm9wYWxfaW5kZXggPSBvcGFsX2luZGV4OwotLSAK
MS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6
Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 3/4] hwmon: (ibmpowernv) add a label attribute
  2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
@ 2015-04-01 10:15     ` Cédric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

Currently, sensors are only identified by their type and index.

The new OPAL device tree can expose extra properties to identify
some sensors by their name or location. This patch adds the creation
of a new hwmon *_label attribute when such properties are detected.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   51 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index f38aa27343f2..be6fe559b52a 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -32,6 +32,7 @@
 #include <linux/err.h>
 
 #define MAX_ATTR_LEN	32
+#define MAX_LABEL_LEN	64
 
 /* Sensor suffix name from DT */
 #define DT_FAULT_ATTR_SUFFIX		"faulted"
@@ -68,6 +69,7 @@ struct sensor_data {
 	u32 hwmon_index;
 	u32 opal_index;
 	enum sensors type;
+	char label[MAX_LABEL_LEN];
 	char name[MAX_ATTR_LEN];
 	struct device_attribute dev_attr;
 };
@@ -99,6 +101,23 @@ static ssize_t show_sensor(struct device *dev, struct device_attribute *devattr,
 	return sprintf(buf, "%u\n", x);
 }
 
+static ssize_t show_label(struct device *dev, struct device_attribute *devattr,
+			   char *buf)
+{
+	struct sensor_data *sdata = container_of(devattr, struct sensor_data,
+						 dev_attr);
+
+	return sprintf(buf, "%s\n", sdata->label);
+}
+
+static void __init make_sensor_label(struct device_node *np,
+		    struct sensor_data *sdata, const char *label)
+{
+	size_t n;
+
+	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
+}
+
 static int get_sensor_index_attr(const char *name, u32 *index,
 					char *attr)
 {
@@ -226,11 +245,21 @@ static int populate_attr_groups(struct platform_device *pdev)
 
 	opal = of_find_node_by_path("/ibm,opal/sensors");
 	for_each_child_of_node(opal, np) {
+		const char *label;
+
 		if (np->name == NULL)
 			continue;
 
 		type = get_sensor_type(np);
-		if (type != MAX_SENSOR_TYPE)
+		if (type == MAX_SENSOR_TYPE)
+			continue;
+
+		sensor_groups[type].attr_count++;
+
+		/*
+		 * add a new attribute for labels
+		 */
+		if (!of_property_read_string(np, "label", &label))
 			sensor_groups[type].attr_count++;
 	}
 
@@ -294,6 +323,7 @@ static int create_device_attrs(struct platform_device *pdev)
 	for_each_child_of_node(opal, np) {
 		const char *attr_name;
 		u32 opal_index;
+		const char *label;
 
 		if (np->name == NULL)
 			continue;
@@ -337,6 +367,25 @@ static int create_device_attrs(struct platform_device *pdev)
 
 		pgroups[type]->attrs[sensor_groups[type].attr_count++] =
 				&sdata[count++].dev_attr.attr;
+
+		if (!of_property_read_string(np, "label", &label)) {
+			/*
+			 * For the label attribute, we can reuse the
+			 * "properties" of the previous "input"
+			 * attribute. They are related to the same
+			 * sensor.
+			 */
+			sdata[count].type = type;
+			sdata[count].opal_index = sdata[count - 1].opal_index;
+			sdata[count].hwmon_index = sdata[count - 1].hwmon_index;
+
+			make_sensor_label(np, &sdata[count], label);
+
+			create_hwmon_attr(&sdata[count], "label", show_label);
+
+			pgroups[type]->attrs[sensor_groups[type].attr_count++] =
+				&sdata[count++].dev_attr.attr;
+		}
 	}
 
 exit_put_node:
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 3/4] hwmon: (ibmpowernv) add a label attribute
@ 2015-04-01 10:15     ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

Q3VycmVudGx5LCBzZW5zb3JzIGFyZSBvbmx5IGlkZW50aWZpZWQgYnkgdGhlaXIgdHlwZSBhbmQg
aW5kZXguCgpUaGUgbmV3IE9QQUwgZGV2aWNlIHRyZWUgY2FuIGV4cG9zZSBleHRyYSBwcm9wZXJ0
aWVzIHRvIGlkZW50aWZ5CnNvbWUgc2Vuc29ycyBieSB0aGVpciBuYW1lIG9yIGxvY2F0aW9uLiBU
aGlzIHBhdGNoIGFkZHMgdGhlIGNyZWF0aW9uCm9mIGEgbmV3IGh3bW9uICpfbGFiZWwgYXR0cmli
dXRlIHdoZW4gc3VjaCBwcm9wZXJ0aWVzIGFyZSBkZXRlY3RlZC4KClNpZ25lZC1vZmYtYnk6IEPD
qWRyaWMgTGUgR29hdGVyIDxjbGdAZnIuaWJtLmNvbT4KLS0tCiBkcml2ZXJzL2h3bW9uL2libXBv
d2VybnYuYyB8ICAgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Ky0KIDEgZmlsZSBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm
IC0tZ2l0IGEvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMgYi9kcml2ZXJzL2h3bW9uL2libXBv
d2VybnYuYwppbmRleCBmMzhhYTI3MzQzZjIuLmJlNmZlNTU5YjUyYSAxMDA2NDQKLS0tIGEvZHJp
dmVycy9od21vbi9pYm1wb3dlcm52LmMKKysrIGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxsaW51eC9lcnIuaD4KIAogI2RlZmluZSBNQVhf
QVRUUl9MRU4JMzIKKyNkZWZpbmUgTUFYX0xBQkVMX0xFTgk2NAogCiAvKiBTZW5zb3Igc3VmZml4
IG5hbWUgZnJvbSBEVCAqLwogI2RlZmluZSBEVF9GQVVMVF9BVFRSX1NVRkZJWAkJImZhdWx0ZWQi
CkBAIC02OCw2ICs2OSw3IEBAIHN0cnVjdCBzZW5zb3JfZGF0YSB7CiAJdTMyIGh3bW9uX2luZGV4
OwogCXUzMiBvcGFsX2luZGV4OwogCWVudW0gc2Vuc29ycyB0eXBlOworCWNoYXIgbGFiZWxbTUFY
X0xBQkVMX0xFTl07CiAJY2hhciBuYW1lW01BWF9BVFRSX0xFTl07CiAJc3RydWN0IGRldmljZV9h
dHRyaWJ1dGUgZGV2X2F0dHI7CiB9OwpAQCAtOTksNiArMTAxLDIzIEBAIHN0YXRpYyBzc2l6ZV90
IHNob3dfc2Vuc29yKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg
KmRldmF0dHIsCiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJXVcbiIsIHgpOwogfQogCitzdGF0aWMg
c3NpemVfdCBzaG93X2xhYmVsKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRy
aWJ1dGUgKmRldmF0dHIsCisJCQkgICBjaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kYXRh
ICpzZGF0YSA9IGNvbnRhaW5lcl9vZihkZXZhdHRyLCBzdHJ1Y3Qgc2Vuc29yX2RhdGEsCisJCQkJ
CQkgZGV2X2F0dHIpOworCisJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIHNkYXRhLT5sYWJl
bCk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBtYWtlX3NlbnNvcl9sYWJlbChzdHJ1Y3QgZGV2
aWNlX25vZGUgKm5wLAorCQkgICAgc3RydWN0IHNlbnNvcl9kYXRhICpzZGF0YSwgY29uc3QgY2hh
ciAqbGFiZWwpCit7CisJc2l6ZV90IG47CisKKwluID0gc25wcmludGYoc2RhdGEtPmxhYmVsLCBz
aXplb2Yoc2RhdGEtPmxhYmVsKSwgIiVzIiwgbGFiZWwpOworfQorCiBzdGF0aWMgaW50IGdldF9z
ZW5zb3JfaW5kZXhfYXR0cihjb25zdCBjaGFyICpuYW1lLCB1MzIgKmluZGV4LAogCQkJCQljaGFy
ICphdHRyKQogewpAQCAtMjI2LDExICsyNDUsMjEgQEAgc3RhdGljIGludCBwb3B1bGF0ZV9hdHRy
X2dyb3VwcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJb3BhbCA9IG9mX2ZpbmRf
bm9kZV9ieV9wYXRoKCIvaWJtLG9wYWwvc2Vuc29ycyIpOwogCWZvcl9lYWNoX2NoaWxkX29mX25v
ZGUob3BhbCwgbnApIHsKKwkJY29uc3QgY2hhciAqbGFiZWw7CisKIAkJaWYgKG5wLT5uYW1lID09
IE5VTEwpCiAJCQljb250aW51ZTsKIAogCQl0eXBlID0gZ2V0X3NlbnNvcl90eXBlKG5wKTsKLQkJ
aWYgKHR5cGUgIT0gTUFYX1NFTlNPUl9UWVBFKQorCQlpZiAodHlwZSA9PSBNQVhfU0VOU09SX1RZ
UEUpCisJCQljb250aW51ZTsKKworCQlzZW5zb3JfZ3JvdXBzW3R5cGVdLmF0dHJfY291bnQrKzsK
KworCQkvKgorCQkgKiBhZGQgYSBuZXcgYXR0cmlidXRlIGZvciBsYWJlbHMKKwkJICovCisJCWlm
ICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcobnAsICJsYWJlbCIsICZsYWJlbCkpCiAJCQlzZW5z
b3JfZ3JvdXBzW3R5cGVdLmF0dHJfY291bnQrKzsKIAl9CiAKQEAgLTI5NCw2ICszMjMsNyBAQCBz
dGF0aWMgaW50IGNyZWF0ZV9kZXZpY2VfYXR0cnMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl
dikKIAlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKG9wYWwsIG5wKSB7CiAJCWNvbnN0IGNoYXIgKmF0
dHJfbmFtZTsKIAkJdTMyIG9wYWxfaW5kZXg7CisJCWNvbnN0IGNoYXIgKmxhYmVsOwogCiAJCWlm
IChucC0+bmFtZSA9PSBOVUxMKQogCQkJY29udGludWU7CkBAIC0zMzcsNiArMzY3LDI1IEBAIHN0
YXRpYyBpbnQgY3JlYXRlX2RldmljZV9hdHRycyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2
KQogCiAJCXBncm91cHNbdHlwZV0tPmF0dHJzW3NlbnNvcl9ncm91cHNbdHlwZV0uYXR0cl9jb3Vu
dCsrXSA9CiAJCQkJJnNkYXRhW2NvdW50KytdLmRldl9hdHRyLmF0dHI7CisKKwkJaWYgKCFvZl9w
cm9wZXJ0eV9yZWFkX3N0cmluZyhucCwgImxhYmVsIiwgJmxhYmVsKSkgeworCQkJLyoKKwkJCSAq
IEZvciB0aGUgbGFiZWwgYXR0cmlidXRlLCB3ZSBjYW4gcmV1c2UgdGhlCisJCQkgKiAicHJvcGVy
dGllcyIgb2YgdGhlIHByZXZpb3VzICJpbnB1dCIKKwkJCSAqIGF0dHJpYnV0ZS4gVGhleSBhcmUg
cmVsYXRlZCB0byB0aGUgc2FtZQorCQkJICogc2Vuc29yLgorCQkJICovCisJCQlzZGF0YVtjb3Vu
dF0udHlwZSA9IHR5cGU7CisJCQlzZGF0YVtjb3VudF0ub3BhbF9pbmRleCA9IHNkYXRhW2NvdW50
IC0gMV0ub3BhbF9pbmRleDsKKwkJCXNkYXRhW2NvdW50XS5od21vbl9pbmRleCA9IHNkYXRhW2Nv
dW50IC0gMV0uaHdtb25faW5kZXg7CisKKwkJCW1ha2Vfc2Vuc29yX2xhYmVsKG5wLCAmc2RhdGFb
Y291bnRdLCBsYWJlbCk7CisKKwkJCWNyZWF0ZV9od21vbl9hdHRyKCZzZGF0YVtjb3VudF0sICJs
YWJlbCIsIHNob3dfbGFiZWwpOworCisJCQlwZ3JvdXBzW3R5cGVdLT5hdHRyc1tzZW5zb3JfZ3Jv
dXBzW3R5cGVdLmF0dHJfY291bnQrK10gPQorCQkJCSZzZGF0YVtjb3VudCsrXS5kZXZfYXR0ci5h
dHRyOworCQl9CiAJfQogCiBleGl0X3B1dF9ub2RlOgotLSAKMS43LjEwLjQKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcg
bGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
@ 2015-04-01 10:15     ` Cédric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

The new OPAL device tree adds a few properties which can be used to add
extra information on the sensor label.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 drivers/hwmon/ibmpowernv.c |   22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
index be6fe559b52a..3e753c215b40 100644
--- a/drivers/hwmon/ibmpowernv.c
+++ b/drivers/hwmon/ibmpowernv.c
@@ -113,9 +113,31 @@ static ssize_t show_label(struct device *dev, struct device_attribute *devattr,
 static void __init make_sensor_label(struct device_node *np,
 		    struct sensor_data *sdata, const char *label)
 {
+	u32 id;
 	size_t n;
 
 	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
+
+	/*
+	 * Core temp pretty print
+	 */
+	if (!of_property_read_u32(np, "ibm,pir", &id)) {
+		int i;
+
+		for_each_possible_cpu(i)
+			if (paca[i].hw_cpu_id == id)
+				break;
+
+		n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
+			      " %d-%d", i, i+7);
+	}
+
+	/*
+	 * Membuffer pretty print
+	 */
+	if (!of_property_read_u32(np, "ibm,chip-id", &id))
+		n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
+			      " %d", id & 0xffff);
 }
 
 static int get_sensor_index_attr(const char *name, u32 *index,
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-01 10:15     ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-01 10:15 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

VGhlIG5ldyBPUEFMIGRldmljZSB0cmVlIGFkZHMgYSBmZXcgcHJvcGVydGllcyB3aGljaCBjYW4g
YmUgdXNlZCB0byBhZGQKZXh0cmEgaW5mb3JtYXRpb24gb24gdGhlIHNlbnNvciBsYWJlbC4KClNp
Z25lZC1vZmYtYnk6IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAZnIuaWJtLmNvbT4KLS0tCiBkcml2
ZXJzL2h3bW9uL2libXBvd2VybnYuYyB8ICAgMjIgKysrKysrKysrKysrKysrKysrKysrKwogMSBm
aWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u
L2libXBvd2VybnYuYyBiL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCmluZGV4IGJlNmZlNTU5
YjUyYS4uM2U3NTNjMjE1YjQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYu
YworKysgYi9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYwpAQCAtMTEzLDkgKzExMywzMSBAQCBz
dGF0aWMgc3NpemVfdCBzaG93X2xhYmVsKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj
ZV9hdHRyaWJ1dGUgKmRldmF0dHIsCiBzdGF0aWMgdm9pZCBfX2luaXQgbWFrZV9zZW5zb3JfbGFi
ZWwoc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJICAgIHN0cnVjdCBzZW5zb3JfZGF0YSAqc2Rh
dGEsIGNvbnN0IGNoYXIgKmxhYmVsKQogeworCXUzMiBpZDsKIAlzaXplX3QgbjsKIAogCW4gPSBz
bnByaW50ZihzZGF0YS0+bGFiZWwsIHNpemVvZihzZGF0YS0+bGFiZWwpLCAiJXMiLCBsYWJlbCk7
CisKKwkvKgorCSAqIENvcmUgdGVtcCBwcmV0dHkgcHJpbnQKKwkgKi8KKwlpZiAoIW9mX3Byb3Bl
cnR5X3JlYWRfdTMyKG5wLCAiaWJtLHBpciIsICZpZCkpIHsKKwkJaW50IGk7CisKKwkJZm9yX2Vh
Y2hfcG9zc2libGVfY3B1KGkpCisJCQlpZiAocGFjYVtpXS5od19jcHVfaWQgPT0gaWQpCisJCQkJ
YnJlYWs7CisKKwkJbiArPSBzbnByaW50ZihzZGF0YS0+bGFiZWwgKyBuLCBzaXplb2Yoc2RhdGEt
PmxhYmVsKSAtIG4sCisJCQkgICAgICAiICVkLSVkIiwgaSwgaSs3KTsKKwl9CisKKwkvKgorCSAq
IE1lbWJ1ZmZlciBwcmV0dHkgcHJpbnQKKwkgKi8KKwlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMy
KG5wLCAiaWJtLGNoaXAtaWQiLCAmaWQpKQorCQluICs9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCAr
IG4sIHNpemVvZihzZGF0YS0+bGFiZWwpIC0gbiwKKwkJCSAgICAgICIgJWQiLCBpZCAmIDB4ZmZm
Zik7CiB9CiAKIHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl9pbmRleF9hdHRyKGNvbnN0IGNoYXIgKm5h
bWUsIHUzMiAqaW5kZXgsCi0tIAoxLjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNA
bG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGlu
Zm8vbG0tc2Vuc29ycw=

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-01 10:15     ` [lm-sensors] " Cédric Le Goater
@ 2015-04-03 15:49       ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-03 15:49 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

On 04/01/2015 03:15 AM, Cédric Le Goater wrote:
> The new OPAL device tree adds a few properties which can be used to add
> extra information on the sensor label.
>
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>   drivers/hwmon/ibmpowernv.c |   22 ++++++++++++++++++++++
>   1 file changed, 22 insertions(+)
>
> diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
> index be6fe559b52a..3e753c215b40 100644
> --- a/drivers/hwmon/ibmpowernv.c
> +++ b/drivers/hwmon/ibmpowernv.c
> @@ -113,9 +113,31 @@ static ssize_t show_label(struct device *dev, struct device_attribute *devattr,
>   static void __init make_sensor_label(struct device_node *np,
>   		    struct sensor_data *sdata, const char *label)
>   {
> +	u32 id;
>   	size_t n;
>
>   	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
> +
> +	/*
> +	 * Core temp pretty print
> +	 */
> +	if (!of_property_read_u32(np, "ibm,pir", &id)) {
> +		int i;
> +
> +		for_each_possible_cpu(i)
> +			if (paca[i].hw_cpu_id == id)
> +				break;
> +
> +		n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
> +			      " %d-%d", i, i+7);

If ibm,pir points to a bad/invalid CPU id you just print an invalid value.
Is that what you want ? Also, what relevance does 'i' have for the user ?
It is the index into the paca array, sure, but what is its relevance
outside this code, especially in the context of you printing both i and i+7 ?

Guenter

> +	}
> +
> +	/*
> +	 * Membuffer pretty print
> +	 */
> +	if (!of_property_read_u32(np, "ibm,chip-id", &id))
> +		n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
> +			      " %d", id & 0xffff);
>   }
>
>   static int get_sensor_index_attr(const char *name, u32 *index,
>

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-03 15:49       ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-03 15:49 UTC (permalink / raw)
  To: Cédric Le Goater, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

T24gMDQvMDEvMjAxNSAwMzoxNSBBTSwgQ8OpZHJpYyBMZSBHb2F0ZXIgd3JvdGU6Cj4gVGhlIG5l
dyBPUEFMIGRldmljZSB0cmVlIGFkZHMgYSBmZXcgcHJvcGVydGllcyB3aGljaCBjYW4gYmUgdXNl
ZCB0byBhZGQKPiBleHRyYSBpbmZvcm1hdGlvbiBvbiB0aGUgc2Vuc29yIGxhYmVsLgo+Cj4gU2ln
bmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0Bmci5pYm0uY29tPgo+IC0tLQo+ICAg
ZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMgfCAgIDIyICsrKysrKysrKysrKysrKysrKysrKysK
PiAgIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvZHJp
dmVycy9od21vbi9pYm1wb3dlcm52LmMgYi9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYwo+IGlu
ZGV4IGJlNmZlNTU5YjUyYS4uM2U3NTNjMjE1YjQwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaHdt
b24vaWJtcG93ZXJudi5jCj4gKysrIGIvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKPiBAQCAt
MTEzLDkgKzExMywzMSBAQCBzdGF0aWMgc3NpemVfdCBzaG93X2xhYmVsKHN0cnVjdCBkZXZpY2Ug
KmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsCj4gICBzdGF0aWMgdm9pZCBf
X2luaXQgbWFrZV9zZW5zb3JfbGFiZWwoc3RydWN0IGRldmljZV9ub2RlICpucCwKPiAgIAkJICAg
IHN0cnVjdCBzZW5zb3JfZGF0YSAqc2RhdGEsIGNvbnN0IGNoYXIgKmxhYmVsKQo+ICAgewo+ICsJ
dTMyIGlkOwo+ICAgCXNpemVfdCBuOwo+Cj4gICAJbiA9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCwg
c2l6ZW9mKHNkYXRhLT5sYWJlbCksICIlcyIsIGxhYmVsKTsKPiArCj4gKwkvKgo+ICsJICogQ29y
ZSB0ZW1wIHByZXR0eSBwcmludAo+ICsJICovCj4gKwlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMy
KG5wLCAiaWJtLHBpciIsICZpZCkpIHsKPiArCQlpbnQgaTsKPiArCj4gKwkJZm9yX2VhY2hfcG9z
c2libGVfY3B1KGkpCj4gKwkJCWlmIChwYWNhW2ldLmh3X2NwdV9pZCA9PSBpZCkKPiArCQkJCWJy
ZWFrOwo+ICsKPiArCQluICs9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCArIG4sIHNpemVvZihzZGF0
YS0+bGFiZWwpIC0gbiwKPiArCQkJICAgICAgIiAlZC0lZCIsIGksIGkrNyk7CgpJZiBpYm0scGly
IHBvaW50cyB0byBhIGJhZC9pbnZhbGlkIENQVSBpZCB5b3UganVzdCBwcmludCBhbiBpbnZhbGlk
IHZhbHVlLgpJcyB0aGF0IHdoYXQgeW91IHdhbnQgPyBBbHNvLCB3aGF0IHJlbGV2YW5jZSBkb2Vz
ICdpJyBoYXZlIGZvciB0aGUgdXNlciA/Ckl0IGlzIHRoZSBpbmRleCBpbnRvIHRoZSBwYWNhIGFy
cmF5LCBzdXJlLCBidXQgd2hhdCBpcyBpdHMgcmVsZXZhbmNlCm91dHNpZGUgdGhpcyBjb2RlLCBl
c3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIHlvdSBwcmludGluZyBib3RoIGkgYW5kIGkrNyA/
CgpHdWVudGVyCgo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBNZW1idWZmZXIgcHJldHR5IHByaW50
Cj4gKwkgKi8KPiArCWlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJpYm0sY2hpcC1pZCIs
ICZpZCkpCj4gKwkJbiArPSBzbnByaW50ZihzZGF0YS0+bGFiZWwgKyBuLCBzaXplb2Yoc2RhdGEt
PmxhYmVsKSAtIG4sCj4gKwkJCSAgICAgICIgJWQiLCBpZCAmIDB4ZmZmZik7Cj4gICB9Cj4KPiAg
IHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl9pbmRleF9hdHRyKGNvbnN0IGNoYXIgKm5hbWUsIHUzMiAq
aW5kZXgsCj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6
Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-03 15:49       ` [lm-sensors] " Guenter Roeck
@ 2015-04-07 14:42         ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-07 14:42 UTC (permalink / raw)
  To: Guenter Roeck, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

On 04/03/2015 05:49 PM, Guenter Roeck wrote:
> On 04/01/2015 03:15 AM, Cédric Le Goater wrote:
>> The new OPAL device tree adds a few properties which can be used to add
>> extra information on the sensor label.
>>
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
>> ---
>>   drivers/hwmon/ibmpowernv.c |   22 ++++++++++++++++++++++
>>   1 file changed, 22 insertions(+)
>>
>> diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c
>> index be6fe559b52a..3e753c215b40 100644
>> --- a/drivers/hwmon/ibmpowernv.c
>> +++ b/drivers/hwmon/ibmpowernv.c
>> @@ -113,9 +113,31 @@ static ssize_t show_label(struct device *dev, struct device_attribute *devattr,
>>   static void __init make_sensor_label(struct device_node *np,
>>               struct sensor_data *sdata, const char *label)
>>   {
>> +    u32 id;
>>       size_t n;
>>
>>       n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
>> +
>> +    /*
>> +     * Core temp pretty print
>> +     */
>> +    if (!of_property_read_u32(np, "ibm,pir", &id)) {
>> +        int i;
>> +
>> +        for_each_possible_cpu(i)
>> +            if (paca[i].hw_cpu_id == id)
>> +                break;
>> +
>> +        n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
>> +                  " %d-%d", i, i+7);
> 
> If ibm,pir points to a bad/invalid CPU id you just print an invalid value.
> Is that what you want ? 

Certainly not :) I am being over optimistic on the underlying layer. 

> Also, what relevance does 'i' have for the user ?
> It is the index into the paca array, sure, but what is its relevance
> outside this code, especially in the context of you printing both i and i+7 ?

It gives a hint on the localization of the core in the system, which
can be useful when developing custom heat sinks. The translation 
from physical to linux cpu id is here to be consistent with the user
layer. The physical id is rarely used at that level.  

I will send a v2 for this patch.

Thanks,

C.
 

> 
> Guenter
> 
>> +    }
>> +
>> +    /*
>> +     * Membuffer pretty print
>> +     */
>> +    if (!of_property_read_u32(np, "ibm,chip-id", &id))
>> +        n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
>> +                  " %d", id & 0xffff);
>>   }
>>
>>   static int get_sensor_index_attr(const char *name, u32 *index,
>>
> 

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-07 14:42         ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-07 14:42 UTC (permalink / raw)
  To: Guenter Roeck, lm-sensors
  Cc: Stewart Smith, Neelesh Gupta, skiboot, linuxppc-dev, Jean Delvare

T24gMDQvMDMvMjAxNSAwNTo0OSBQTSwgR3VlbnRlciBSb2VjayB3cm90ZToKPiBPbiAwNC8wMS8y
MDE1IDAzOjE1IEFNLCBDw6lkcmljIExlIEdvYXRlciB3cm90ZToKPj4gVGhlIG5ldyBPUEFMIGRl
dmljZSB0cmVlIGFkZHMgYSBmZXcgcHJvcGVydGllcyB3aGljaCBjYW4gYmUgdXNlZCB0byBhZGQK
Pj4gZXh0cmEgaW5mb3JtYXRpb24gb24gdGhlIHNlbnNvciBsYWJlbC4KPj4KPj4gU2lnbmVkLW9m
Zi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0Bmci5pYm0uY29tPgo+PiAtLS0KPj4gICBkcml2
ZXJzL2h3bW9uL2libXBvd2VybnYuYyB8ICAgMjIgKysrKysrKysrKysrKysrKysrKysrKwo+PiAg
IDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2
ZXJzL2h3bW9uL2libXBvd2VybnYuYyBiL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCj4+IGlu
ZGV4IGJlNmZlNTU5YjUyYS4uM2U3NTNjMjE1YjQwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2h3
bW9uL2libXBvd2VybnYuYwo+PiArKysgYi9kcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYwo+PiBA
QCAtMTEzLDkgKzExMywzMSBAQCBzdGF0aWMgc3NpemVfdCBzaG93X2xhYmVsKHN0cnVjdCBkZXZp
Y2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsCj4+ICAgc3RhdGljIHZv
aWQgX19pbml0IG1ha2Vfc2Vuc29yX2xhYmVsKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCj4+ICAg
ICAgICAgICAgICAgc3RydWN0IHNlbnNvcl9kYXRhICpzZGF0YSwgY29uc3QgY2hhciAqbGFiZWwp
Cj4+ICAgewo+PiArICAgIHUzMiBpZDsKPj4gICAgICAgc2l6ZV90IG47Cj4+Cj4+ICAgICAgIG4g
PSBzbnByaW50ZihzZGF0YS0+bGFiZWwsIHNpemVvZihzZGF0YS0+bGFiZWwpLCAiJXMiLCBsYWJl
bCk7Cj4+ICsKPj4gKyAgICAvKgo+PiArICAgICAqIENvcmUgdGVtcCBwcmV0dHkgcHJpbnQKPj4g
KyAgICAgKi8KPj4gKyAgICBpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiaWJtLHBpciIs
ICZpZCkpIHsKPj4gKyAgICAgICAgaW50IGk7Cj4+ICsKPj4gKyAgICAgICAgZm9yX2VhY2hfcG9z
c2libGVfY3B1KGkpCj4+ICsgICAgICAgICAgICBpZiAocGFjYVtpXS5od19jcHVfaWQgPT0gaWQp
Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsKPj4gKyAgICAgICAgbiArPSBzbnByaW50
ZihzZGF0YS0+bGFiZWwgKyBuLCBzaXplb2Yoc2RhdGEtPmxhYmVsKSAtIG4sCj4+ICsgICAgICAg
ICAgICAgICAgICAiICVkLSVkIiwgaSwgaSs3KTsKPiAKPiBJZiBpYm0scGlyIHBvaW50cyB0byBh
IGJhZC9pbnZhbGlkIENQVSBpZCB5b3UganVzdCBwcmludCBhbiBpbnZhbGlkIHZhbHVlLgo+IElz
IHRoYXQgd2hhdCB5b3Ugd2FudCA/IAoKQ2VydGFpbmx5IG5vdCA6KSBJIGFtIGJlaW5nIG92ZXIg
b3B0aW1pc3RpYyBvbiB0aGUgdW5kZXJseWluZyBsYXllci4gCgo+IEFsc28sIHdoYXQgcmVsZXZh
bmNlIGRvZXMgJ2knIGhhdmUgZm9yIHRoZSB1c2VyID8KPiBJdCBpcyB0aGUgaW5kZXggaW50byB0
aGUgcGFjYSBhcnJheSwgc3VyZSwgYnV0IHdoYXQgaXMgaXRzIHJlbGV2YW5jZQo+IG91dHNpZGUg
dGhpcyBjb2RlLCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIHlvdSBwcmludGluZyBib3Ro
IGkgYW5kIGkrNyA/CgpJdCBnaXZlcyBhIGhpbnQgb24gdGhlIGxvY2FsaXphdGlvbiBvZiB0aGUg
Y29yZSBpbiB0aGUgc3lzdGVtLCB3aGljaApjYW4gYmUgdXNlZnVsIHdoZW4gZGV2ZWxvcGluZyBj
dXN0b20gaGVhdCBzaW5rcy4gVGhlIHRyYW5zbGF0aW9uIApmcm9tIHBoeXNpY2FsIHRvIGxpbnV4
IGNwdSBpZCBpcyBoZXJlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgdXNlcgpsYXllci4gVGhl
IHBoeXNpY2FsIGlkIGlzIHJhcmVseSB1c2VkIGF0IHRoYXQgbGV2ZWwuICAKCkkgd2lsbCBzZW5k
IGEgdjIgZm9yIHRoaXMgcGF0Y2guCgpUaGFua3MsCgpDLgogCgo+IAo+IEd1ZW50ZXIKPiAKPj4g
KyAgICB9Cj4+ICsKPj4gKyAgICAvKgo+PiArICAgICAqIE1lbWJ1ZmZlciBwcmV0dHkgcHJpbnQK
Pj4gKyAgICAgKi8KPj4gKyAgICBpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiaWJtLGNo
aXAtaWQiLCAmaWQpKQo+PiArICAgICAgICBuICs9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCArIG4s
IHNpemVvZihzZGF0YS0+bGFiZWwpIC0gbiwKPj4gKyAgICAgICAgICAgICAgICAgICIgJWQiLCBp
ZCAmIDB4ZmZmZik7Cj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl9pbmRleF9h
dHRyKGNvbnN0IGNoYXIgKm5hbWUsIHUzMiAqaW5kZXgsCj4+Cj4gCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QK
bG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFp
bG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-07 14:42         ` [lm-sensors] " Cedric Le Goater
@ 2015-04-07 14:45           ` Cédric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-07 14:45 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

The new OPAL device tree adds a few properties which can be used to add
extra information on the sensor label.

In the case of a cpu core sensor, the firmware exposes the physical 
identifier of the core in the "ibm,pir" property. The driver 
translates this identifier in a linux cpu number and prints out a 
range corresponding to the hardware threads of the core (as they
share the same sensor).

The numbering gives a hint on the localization of the core in the 
system (which socket, which chip). 

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---

 Changes since v1:

 - check cpu validity before printing out the attribute label. 
   if invalid, use a "phy" prefix to distinguish a linux cpu 
   number from a physical cpu number. 

 drivers/hwmon/ibmpowernv.c |   34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

Index: linux.git/drivers/hwmon/ibmpowernv.c
===================================================================
--- linux.git.orig/drivers/hwmon/ibmpowernv.c
+++ linux.git/drivers/hwmon/ibmpowernv.c
@@ -113,9 +113,43 @@ static ssize_t show_label(struct device
 static void __init make_sensor_label(struct device_node *np,
 		    struct sensor_data *sdata, const char *label)
 {
+	u32 id;
 	size_t n;
 
 	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
+
+	/*
+	 * Core temp pretty print
+	 */
+	if (!of_property_read_u32(np, "ibm,pir", &id)) {
+		int i = -1;
+
+		for_each_possible_cpu(i)
+			if (paca[i].hw_cpu_id == id)
+				break;
+
+		if (i != -1)
+			/*
+			 * The digital thermal sensors are associated
+			 * with a core. Let's print out the range of
+			 * cpu ids corresponding to the hardware
+			 * threads of the core.
+			 */
+			n += snprintf(sdata->label + n,
+				      sizeof(sdata->label) - n,
+				      " %d-%d", i, i+7);
+		else
+			n += snprintf(sdata->label + n,
+				      sizeof(sdata->label) - n,
+				      " phy%d", id);
+	}
+
+	/*
+	 * Membuffer pretty print
+	 */
+	if (!of_property_read_u32(np, "ibm,chip-id", &id))
+		n += snprintf(sdata->label + n, sizeof(sdata->label) - n,
+			      " %d", id & 0xffff);
 }
 
 static int get_sensor_index_attr(const char *name, u32 *index,

^ permalink raw reply	[flat|nested] 96+ messages in thread

* [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-07 14:45           ` Cédric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cédric Le Goater @ 2015-04-07 14:45 UTC (permalink / raw)
  To: lm-sensors
  Cc: Stewart Smith, Cédric Le Goater, Jean Delvare,
	Neelesh Gupta, skiboot, linuxppc-dev, Guenter Roeck

VGhlIG5ldyBPUEFMIGRldmljZSB0cmVlIGFkZHMgYSBmZXcgcHJvcGVydGllcyB3aGljaCBjYW4g
YmUgdXNlZCB0byBhZGQKZXh0cmEgaW5mb3JtYXRpb24gb24gdGhlIHNlbnNvciBsYWJlbC4KCklu
IHRoZSBjYXNlIG9mIGEgY3B1IGNvcmUgc2Vuc29yLCB0aGUgZmlybXdhcmUgZXhwb3NlcyB0aGUg
cGh5c2ljYWwgCmlkZW50aWZpZXIgb2YgdGhlIGNvcmUgaW4gdGhlICJpYm0scGlyIiBwcm9wZXJ0
eS4gVGhlIGRyaXZlciAKdHJhbnNsYXRlcyB0aGlzIGlkZW50aWZpZXIgaW4gYSBsaW51eCBjcHUg
bnVtYmVyIGFuZCBwcmludHMgb3V0IGEgCnJhbmdlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhhcmR3
YXJlIHRocmVhZHMgb2YgdGhlIGNvcmUgKGFzIHRoZXkKc2hhcmUgdGhlIHNhbWUgc2Vuc29yKS4K
ClRoZSBudW1iZXJpbmcgZ2l2ZXMgYSBoaW50IG9uIHRoZSBsb2NhbGl6YXRpb24gb2YgdGhlIGNv
cmUgaW4gdGhlIApzeXN0ZW0gKHdoaWNoIHNvY2tldCwgd2hpY2ggY2hpcCkuIAoKU2lnbmVkLW9m
Zi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0Bmci5pYm0uY29tPgotLS0KCiBDaGFuZ2VzIHNp
bmNlIHYxOgoKIC0gY2hlY2sgY3B1IHZhbGlkaXR5IGJlZm9yZSBwcmludGluZyBvdXQgdGhlIGF0
dHJpYnV0ZSBsYWJlbC4gCiAgIGlmIGludmFsaWQsIHVzZSBhICJwaHkiIHByZWZpeCB0byBkaXN0
aW5ndWlzaCBhIGxpbnV4IGNwdSAKICAgbnVtYmVyIGZyb20gYSBwaHlzaWNhbCBjcHUgbnVtYmVy
LiAKCiBkcml2ZXJzL2h3bW9uL2libXBvd2VybnYuYyB8ICAgMzQgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKykKCkluZGV4
OiBsaW51eC5naXQvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGlu
dXguZ2l0Lm9yaWcvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKKysrIGxpbnV4LmdpdC9kcml2
ZXJzL2h3bW9uL2libXBvd2VybnYuYwpAQCAtMTEzLDkgKzExMyw0MyBAQCBzdGF0aWMgc3NpemVf
dCBzaG93X2xhYmVsKHN0cnVjdCBkZXZpY2UKIHN0YXRpYyB2b2lkIF9faW5pdCBtYWtlX3NlbnNv
cl9sYWJlbChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAogCQkgICAgc3RydWN0IHNlbnNvcl9kYXRh
ICpzZGF0YSwgY29uc3QgY2hhciAqbGFiZWwpCiB7CisJdTMyIGlkOwogCXNpemVfdCBuOwogCiAJ
biA9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCwgc2l6ZW9mKHNkYXRhLT5sYWJlbCksICIlcyIsIGxh
YmVsKTsKKworCS8qCisJICogQ29yZSB0ZW1wIHByZXR0eSBwcmludAorCSAqLworCWlmICghb2Zf
cHJvcGVydHlfcmVhZF91MzIobnAsICJpYm0scGlyIiwgJmlkKSkgeworCQlpbnQgaSA9IC0xOwor
CisJCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKQorCQkJaWYgKHBhY2FbaV0uaHdfY3B1X2lkID09
IGlkKQorCQkJCWJyZWFrOworCisJCWlmIChpICE9IC0xKQorCQkJLyoKKwkJCSAqIFRoZSBkaWdp
dGFsIHRoZXJtYWwgc2Vuc29ycyBhcmUgYXNzb2NpYXRlZAorCQkJICogd2l0aCBhIGNvcmUuIExl
dCdzIHByaW50IG91dCB0aGUgcmFuZ2Ugb2YKKwkJCSAqIGNwdSBpZHMgY29ycmVzcG9uZGluZyB0
byB0aGUgaGFyZHdhcmUKKwkJCSAqIHRocmVhZHMgb2YgdGhlIGNvcmUuCisJCQkgKi8KKwkJCW4g
Kz0gc25wcmludGYoc2RhdGEtPmxhYmVsICsgbiwKKwkJCQkgICAgICBzaXplb2Yoc2RhdGEtPmxh
YmVsKSAtIG4sCisJCQkJICAgICAgIiAlZC0lZCIsIGksIGkrNyk7CisJCWVsc2UKKwkJCW4gKz0g
c25wcmludGYoc2RhdGEtPmxhYmVsICsgbiwKKwkJCQkgICAgICBzaXplb2Yoc2RhdGEtPmxhYmVs
KSAtIG4sCisJCQkJICAgICAgIiBwaHklZCIsIGlkKTsKKwl9CisKKwkvKgorCSAqIE1lbWJ1ZmZl
ciBwcmV0dHkgcHJpbnQKKwkgKi8KKwlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiaWJt
LGNoaXAtaWQiLCAmaWQpKQorCQluICs9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCArIG4sIHNpemVv
ZihzZGF0YS0+bGFiZWwpIC0gbiwKKwkJCSAgICAgICIgJWQiLCBpZCAmIDB4ZmZmZik7CiB9CiAK
IHN0YXRpYyBpbnQgZ2V0X3NlbnNvcl9pbmRleF9hdHRyKGNvbnN0IGNoYXIgKm5hbWUsIHUzMiAq
aW5kZXgsCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
bG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8v
bGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-07 14:45           ` [lm-sensors] " Cédric Le Goater
@ 2015-04-07 16:44             ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-07 16:44 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Tue, Apr 07, 2015 at 04:45:56PM +0200, Cédric Le Goater wrote:
> The new OPAL device tree adds a few properties which can be used to add
> extra information on the sensor label.
> 
> In the case of a cpu core sensor, the firmware exposes the physical 
> identifier of the core in the "ibm,pir" property. The driver 
> translates this identifier in a linux cpu number and prints out a 
> range corresponding to the hardware threads of the core (as they
> share the same sensor).
> 
> The numbering gives a hint on the localization of the core in the 
> system (which socket, which chip). 
> 
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>

Hi Cedric,

Please do not send follow-up patches as reply, but as separate e-mail.

Further comments below.

> ---
> 
>  Changes since v1:
> 
>  - check cpu validity before printing out the attribute label. 
>    if invalid, use a "phy" prefix to distinguish a linux cpu 
>    number from a physical cpu number. 
> 
>  drivers/hwmon/ibmpowernv.c |   34 ++++++++++++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
> 
> Index: linux.git/drivers/hwmon/ibmpowernv.c
> ===================================================================
> --- linux.git.orig/drivers/hwmon/ibmpowernv.c
> +++ linux.git/drivers/hwmon/ibmpowernv.c
> @@ -113,9 +113,43 @@ static ssize_t show_label(struct device
>  static void __init make_sensor_label(struct device_node *np,
>  		    struct sensor_data *sdata, const char *label)
>  {
> +	u32 id;
>  	size_t n;
>  
>  	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
> +
> +	/*
> +	 * Core temp pretty print
> +	 */
> +	if (!of_property_read_u32(np, "ibm,pir", &id)) {
> +		int i = -1;
> +
> +		for_each_possible_cpu(i)
> +			if (paca[i].hw_cpu_id == id)

I think you should consider using get_hard_smp_processor_id() and avoid
direct access to the paca array.

> +				break;
> +
> +		if (i != -1)

I don't think that works. i is initialized by for_each_possible_cpu(),
either to -1 or 0 depending on the state of CONFIG_SMP. So pre-initializing
it won't make a difference. Its last value is NR_CPUS (SMP) or 1 (non-SMP).

You would need a second variable (which you could pre-initialize)
to determine if the code found a matching ID or not.

> +			/*
> +			 * The digital thermal sensors are associated
> +			 * with a core. Let's print out the range of
> +			 * cpu ids corresponding to the hardware
> +			 * threads of the core.
> +			 */
> +			n += snprintf(sdata->label + n,
> +				      sizeof(sdata->label) - n,
> +				      " %d-%d", i, i+7);

I would really like to see how this looks like in practice.

The id in the devicetree entry is the physical CPU. The resulting index
is the logical CPU number. So let's assume that the logical CPU number
for the first physical CPU is 0. Output would be "0-7". If the second
physical CPU matches logical CPU 1, output would be "1-8". 
How does that make any sense ?

Also, how do you know that the range of CPU IDs is always 8 ?

Can you provide some resulting outputs ?

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-07 16:44             ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-07 16:44 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Tue, Apr 07, 2015 at 04:45:56PM +0200, Cédric Le Goater wrote:
> The new OPAL device tree adds a few properties which can be used to add
> extra information on the sensor label.
> 
> In the case of a cpu core sensor, the firmware exposes the physical 
> identifier of the core in the "ibm,pir" property. The driver 
> translates this identifier in a linux cpu number and prints out a 
> range corresponding to the hardware threads of the core (as they
> share the same sensor).
> 
> The numbering gives a hint on the localization of the core in the 
> system (which socket, which chip). 
> 
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>

Hi Cedric,

Please do not send follow-up patches as reply, but as separate e-mail.

Further comments below.

> ---
> 
>  Changes since v1:
> 
>  - check cpu validity before printing out the attribute label. 
>    if invalid, use a "phy" prefix to distinguish a linux cpu 
>    number from a physical cpu number. 
> 
>  drivers/hwmon/ibmpowernv.c |   34 ++++++++++++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
> 
> Index: linux.git/drivers/hwmon/ibmpowernv.c
> ===================================================================
> --- linux.git.orig/drivers/hwmon/ibmpowernv.c
> +++ linux.git/drivers/hwmon/ibmpowernv.c
> @@ -113,9 +113,43 @@ static ssize_t show_label(struct device
>  static void __init make_sensor_label(struct device_node *np,
>  		    struct sensor_data *sdata, const char *label)
>  {
> +	u32 id;
>  	size_t n;
>  
>  	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
> +
> +	/*
> +	 * Core temp pretty print
> +	 */
> +	if (!of_property_read_u32(np, "ibm,pir", &id)) {
> +		int i = -1;
> +
> +		for_each_possible_cpu(i)
> +			if (paca[i].hw_cpu_id == id)

I think you should consider using get_hard_smp_processor_id() and avoid
direct access to the paca array.

> +				break;
> +
> +		if (i != -1)

I don't think that works. i is initialized by for_each_possible_cpu(),
either to -1 or 0 depending on the state of CONFIG_SMP. So pre-initializing
it won't make a difference. Its last value is NR_CPUS (SMP) or 1 (non-SMP).

You would need a second variable (which you could pre-initialize)
to determine if the code found a matching ID or not.

> +			/*
> +			 * The digital thermal sensors are associated
> +			 * with a core. Let's print out the range of
> +			 * cpu ids corresponding to the hardware
> +			 * threads of the core.
> +			 */
> +			n += snprintf(sdata->label + n,
> +				      sizeof(sdata->label) - n,
> +				      " %d-%d", i, i+7);

I would really like to see how this looks like in practice.

The id in the devicetree entry is the physical CPU. The resulting index
is the logical CPU number. So let's assume that the logical CPU number
for the first physical CPU is 0. Output would be "0-7". If the second
physical CPU matches logical CPU 1, output would be "1-8". 
How does that make any sense ?

Also, how do you know that the range of CPU IDs is always 8 ?

Can you provide some resulting outputs ?

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-07 16:44             ` [lm-sensors] " Guenter Roeck
@ 2015-04-07 18:03               ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-07 18:03 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

Hello Guenter,

On 04/07/2015 06:44 PM, Guenter Roeck wrote:
> On Tue, Apr 07, 2015 at 04:45:56PM +0200, Cédric Le Goater wrote:
>> The new OPAL device tree adds a few properties which can be used to add
>> extra information on the sensor label.
>>
>> In the case of a cpu core sensor, the firmware exposes the physical 
>> identifier of the core in the "ibm,pir" property. The driver 
>> translates this identifier in a linux cpu number and prints out a 
>> range corresponding to the hardware threads of the core (as they
>> share the same sensor).
>>
>> The numbering gives a hint on the localization of the core in the 
>> system (which socket, which chip). 
>>
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> 
> Hi Cedric,
> 
> Please do not send follow-up patches as reply, but as separate e-mail.

Ok. I will start a new thread when I resend this patch.

> Further comments below.
> 
>> ---
>>
>>  Changes since v1:
>>
>>  - check cpu validity before printing out the attribute label. 
>>    if invalid, use a "phy" prefix to distinguish a linux cpu 
>>    number from a physical cpu number. 
>>
>>  drivers/hwmon/ibmpowernv.c |   34 ++++++++++++++++++++++++++++++++++
>>  1 file changed, 34 insertions(+)
>>
>> Index: linux.git/drivers/hwmon/ibmpowernv.c
>> ===================================================================
>> --- linux.git.orig/drivers/hwmon/ibmpowernv.c
>> +++ linux.git/drivers/hwmon/ibmpowernv.c
>> @@ -113,9 +113,43 @@ static ssize_t show_label(struct device
>>  static void __init make_sensor_label(struct device_node *np,
>>  		    struct sensor_data *sdata, const char *label)
>>  {
>> +	u32 id;
>>  	size_t n;
>>  
>>  	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
>> +
>> +	/*
>> +	 * Core temp pretty print
>> +	 */
>> +	if (!of_property_read_u32(np, "ibm,pir", &id)) {
>> +		int i = -1;
>> +
>> +		for_each_possible_cpu(i)
>> +			if (paca[i].hw_cpu_id == id)
> 
> I think you should consider using get_hard_smp_processor_id() and avoid
> direct access to the paca array.

Yes. It will look better. Thanks.

>> +				break;
>> +
>> +		if (i != -1)
> 
> I don't think that works. i is initialized by for_each_possible_cpu(),
> either to -1 or 0 depending on the state of CONFIG_SMP. So pre-initializing
> it won't make a difference. Its last value is NR_CPUS (SMP) or 1 (non-SMP).
> 
> You would need a second variable (which you could pre-initialize)
> to determine if the code found a matching ID or not.

gloups. I did that patch waaaay too quickly, it is completely bogus ... 
I will cook a new version. sorry for the noise. 

>> +			/*
>> +			 * The digital thermal sensors are associated
>> +			 * with a core. Let's print out the range of
>> +			 * cpu ids corresponding to the hardware
>> +			 * threads of the core.
>> +			 */
>> +			n += snprintf(sdata->label + n,
>> +				      sizeof(sdata->label) - n,
>> +				      " %d-%d", i, i+7);
> 
> I would really like to see how this looks like in practice.
> 
> The id in the devicetree entry is the physical CPU. The resulting index
> is the logical CPU number. So let's assume that the logical CPU number
> for the first physical CPU is 0. Output would be "0-7". If the second
> physical CPU matches logical CPU 1, output would be "1-8". 
> How does that make any sense ?

The logical CPU numbers on PowerPC are initialized looping on the cores
found in the device tree and then on the threads of the core. Something 
like :

	logical_cpu = core_index * max_threads_per_core + thread_index 

which gives on a P8  :

	# ppc64_cpu --info
	Core   0:    0*    1*    2*    3*    4*    5*    6*    7* 
	Core   1:    8*    9*   10*   11*   12*   13*   14*   15* 
	Core   2:   16*   17*   18*   19*   20*   21*   22*   23* 
	Core   3:   24*   25*   26*   27*   28*   29*   30*   31* 
	Core   4:   32*   33*   34*   35*   36*   37*   38*   39* 
	Core   5:   40*   41*   42*   43*   44*   45*   46*   47* 
	Core   6:   48*   49*   50*   51*   52*   53*   54*   55* 
	Core   7:   56*   57*   58*   59*   60*   61*   62*   63* 
	Core   8:   64*   65*   66*   67*   68*   69*   70*   71* 
	Core   9:   72*   73*   74*   75*   76*   77*   78*   79* 
	Core  10:   80*   81*   82*   83*   84*   85*   86*   87* 
	Core  11:   88*   89*   90*   91*   92*   93*   94*   95* 
	Core  12:   96*   97*   98*   99*  100*  101*  102*  103* 
	Core  13:  104*  105*  106*  107*  108*  109*  110*  111* 
	Core  14:  112*  113*  114*  115*  116*  117*  118*  119* 
	Core  15:  120*  121*  122*  123*  124*  125*  126*  127* 
	Core  16:  128*  129*  130*  131*  132*  133*  134*  135* 
	Core  17:  136*  137*  138*  139*  140*  141*  142*  143* 
	Core  18:  144*  145*  146*  147*  148*  149*  150*  151* 
	Core  19:  152*  153*  154*  155*  156*  157*  158*  159* 

on a P7  :

	# ppc64_cpu --info
	Core   0:    0*    1*    2*    3* 
	Core   1:    4*    5*    6*    7* 
	Core   2:    8*    9*   10*   11* 
	Core   3:   12*   13*   14*   15* 
	Core   4:   16*   17*   18*   19* 
	Core   5:   20*   21*   22*   23* 


> Also, how do you know that the range of CPU IDs is always 8 ?

This is a shortcut. The code is for the ibmpowernv platform and assumes 
that we are running on a P8 (8 hardware threads). It would be better to 
use a "maximum threads per core" variable but I am not sure this is 
available, as it is a tunable. I will look into it.

> Can you provide some resulting outputs ?

sure. 

On an Open Power system : 

	# sensors
	ibmpowernv-isa-0000
	Adapter: ISA adapter
	Core 8-15:    +29.0°C  
	Core 16-23:   +29.0°C  
	Core 24-31:   +30.0°C  
	Core 32-39:   +30.0°C  
	Core 40-47:   +32.0°C  
	Core 48-55:   +29.0°C  
	Core 56-63:   +29.0°C  
	Centaur 0:    +28.0°C  
	Centaur 1:    +32.0°C  
	Centaur 4:    +28.0°C  
	Centaur 5:    +27.0°C  
	Core 0-7:     +29.0°C  

The Centaur numbering does not look as good as for the core.

On an IBM Power system :

	# sensors
	ibmpowernv-isa-0000
	Adapter: ISA adapter
	fan1:         5960 RPM  (min =    0 RPM)
	fan2:         5252 RPM  (min =    0 RPM)
	fan3:         5960 RPM  (min =    0 RPM)
	fan4:         5242 RPM  (min =    0 RPM)
	fan5:         5008 RPM  (min =    0 RPM)
	fan6:         5000 RPM  (min =    0 RPM)
	fan7:         5232 RPM  (min =    0 RPM)
	fan8:         5986 RPM  (min =    0 RPM)
	fan9:         5232 RPM  (min =    0 RPM)
	fan10:        6094 RPM  (min =    0 RPM)
	fan11:        5242 RPM  (min =    0 RPM)
	fan12:        5882 RPM  (min =    0 RPM)
	fan13:        5212 RPM  (min =    0 RPM)
	fan14:        5973 RPM  (min =    0 RPM)
	Ambient:       +18.0°C  (high =  +0.0°C)
	Core 0-7:      +40.0°C  
	Core 8-15:     +39.0°C  
	Core 16-23:    +39.0°C  
	Core 24-31:    +38.0°C  
	Core 32-39:    +38.0°C  
	Core 40-47:    +37.0°C  
	Core 48-55:    +37.0°C  
	Core 56-63:    +38.0°C  
	Core 64-71:    +38.0°C  
	Core 72-79:    +39.0°C  
	Core 80-87:    +35.0°C  
	Core 88-95:    +34.0°C  
	Core 96-103:   +33.0°C  
	Core 104-111:  +34.0°C  
	Core 112-119:  +33.0°C  
	Core 120-127:  +31.0°C  
	Core 128-135:  +31.0°C  
	Core 136-143:  +39.0°C  
	Core 144-151:  +39.0°C  
	Core 152-159:  +40.0°C  
	power1:       425.00 W  

The Centaur are not exposed yet.

Thanks,

C.

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-07 18:03               ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-07 18:03 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

Hello Guenter,

On 04/07/2015 06:44 PM, Guenter Roeck wrote:
> On Tue, Apr 07, 2015 at 04:45:56PM +0200, Cédric Le Goater wrote:
>> The new OPAL device tree adds a few properties which can be used to add
>> extra information on the sensor label.
>>
>> In the case of a cpu core sensor, the firmware exposes the physical 
>> identifier of the core in the "ibm,pir" property. The driver 
>> translates this identifier in a linux cpu number and prints out a 
>> range corresponding to the hardware threads of the core (as they
>> share the same sensor).
>>
>> The numbering gives a hint on the localization of the core in the 
>> system (which socket, which chip). 
>>
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> 
> Hi Cedric,
> 
> Please do not send follow-up patches as reply, but as separate e-mail.

Ok. I will start a new thread when I resend this patch.

> Further comments below.
> 
>> ---
>>
>>  Changes since v1:
>>
>>  - check cpu validity before printing out the attribute label. 
>>    if invalid, use a "phy" prefix to distinguish a linux cpu 
>>    number from a physical cpu number. 
>>
>>  drivers/hwmon/ibmpowernv.c |   34 ++++++++++++++++++++++++++++++++++
>>  1 file changed, 34 insertions(+)
>>
>> Index: linux.git/drivers/hwmon/ibmpowernv.c
>> ===================================================================
>> --- linux.git.orig/drivers/hwmon/ibmpowernv.c
>> +++ linux.git/drivers/hwmon/ibmpowernv.c
>> @@ -113,9 +113,43 @@ static ssize_t show_label(struct device
>>  static void __init make_sensor_label(struct device_node *np,
>>  		    struct sensor_data *sdata, const char *label)
>>  {
>> +	u32 id;
>>  	size_t n;
>>  
>>  	n = snprintf(sdata->label, sizeof(sdata->label), "%s", label);
>> +
>> +	/*
>> +	 * Core temp pretty print
>> +	 */
>> +	if (!of_property_read_u32(np, "ibm,pir", &id)) {
>> +		int i = -1;
>> +
>> +		for_each_possible_cpu(i)
>> +			if (paca[i].hw_cpu_id == id)
> 
> I think you should consider using get_hard_smp_processor_id() and avoid
> direct access to the paca array.

Yes. It will look better. Thanks.

>> +				break;
>> +
>> +		if (i != -1)
> 
> I don't think that works. i is initialized by for_each_possible_cpu(),
> either to -1 or 0 depending on the state of CONFIG_SMP. So pre-initializing
> it won't make a difference. Its last value is NR_CPUS (SMP) or 1 (non-SMP).
> 
> You would need a second variable (which you could pre-initialize)
> to determine if the code found a matching ID or not.

gloups. I did that patch waaaay too quickly, it is completely bogus ... 
I will cook a new version. sorry for the noise. 

>> +			/*
>> +			 * The digital thermal sensors are associated
>> +			 * with a core. Let's print out the range of
>> +			 * cpu ids corresponding to the hardware
>> +			 * threads of the core.
>> +			 */
>> +			n += snprintf(sdata->label + n,
>> +				      sizeof(sdata->label) - n,
>> +				      " %d-%d", i, i+7);
> 
> I would really like to see how this looks like in practice.
> 
> The id in the devicetree entry is the physical CPU. The resulting index
> is the logical CPU number. So let's assume that the logical CPU number
> for the first physical CPU is 0. Output would be "0-7". If the second
> physical CPU matches logical CPU 1, output would be "1-8". 
> How does that make any sense ?

The logical CPU numbers on PowerPC are initialized looping on the cores
found in the device tree and then on the threads of the core. Something 
like :

	logical_cpu = core_index * max_threads_per_core + thread_index 

which gives on a P8  :

	# ppc64_cpu --info
	Core   0:    0*    1*    2*    3*    4*    5*    6*    7* 
	Core   1:    8*    9*   10*   11*   12*   13*   14*   15* 
	Core   2:   16*   17*   18*   19*   20*   21*   22*   23* 
	Core   3:   24*   25*   26*   27*   28*   29*   30*   31* 
	Core   4:   32*   33*   34*   35*   36*   37*   38*   39* 
	Core   5:   40*   41*   42*   43*   44*   45*   46*   47* 
	Core   6:   48*   49*   50*   51*   52*   53*   54*   55* 
	Core   7:   56*   57*   58*   59*   60*   61*   62*   63* 
	Core   8:   64*   65*   66*   67*   68*   69*   70*   71* 
	Core   9:   72*   73*   74*   75*   76*   77*   78*   79* 
	Core  10:   80*   81*   82*   83*   84*   85*   86*   87* 
	Core  11:   88*   89*   90*   91*   92*   93*   94*   95* 
	Core  12:   96*   97*   98*   99*  100*  101*  102*  103* 
	Core  13:  104*  105*  106*  107*  108*  109*  110*  111* 
	Core  14:  112*  113*  114*  115*  116*  117*  118*  119* 
	Core  15:  120*  121*  122*  123*  124*  125*  126*  127* 
	Core  16:  128*  129*  130*  131*  132*  133*  134*  135* 
	Core  17:  136*  137*  138*  139*  140*  141*  142*  143* 
	Core  18:  144*  145*  146*  147*  148*  149*  150*  151* 
	Core  19:  152*  153*  154*  155*  156*  157*  158*  159* 

on a P7  :

	# ppc64_cpu --info
	Core   0:    0*    1*    2*    3* 
	Core   1:    4*    5*    6*    7* 
	Core   2:    8*    9*   10*   11* 
	Core   3:   12*   13*   14*   15* 
	Core   4:   16*   17*   18*   19* 
	Core   5:   20*   21*   22*   23* 


> Also, how do you know that the range of CPU IDs is always 8 ?

This is a shortcut. The code is for the ibmpowernv platform and assumes 
that we are running on a P8 (8 hardware threads). It would be better to 
use a "maximum threads per core" variable but I am not sure this is 
available, as it is a tunable. I will look into it.

> Can you provide some resulting outputs ?

sure. 

On an Open Power system : 

	# sensors
	ibmpowernv-isa-0000
	Adapter: ISA adapter
	Core 8-15:    +29.0°C  
	Core 16-23:   +29.0°C  
	Core 24-31:   +30.0°C  
	Core 32-39:   +30.0°C  
	Core 40-47:   +32.0°C  
	Core 48-55:   +29.0°C  
	Core 56-63:   +29.0°C  
	Centaur 0:    +28.0°C  
	Centaur 1:    +32.0°C  
	Centaur 4:    +28.0°C  
	Centaur 5:    +27.0°C  
	Core 0-7:     +29.0°C  

The Centaur numbering does not look as good as for the core.

On an IBM Power system :

	# sensors
	ibmpowernv-isa-0000
	Adapter: ISA adapter
	fan1:         5960 RPM  (min =    0 RPM)
	fan2:         5252 RPM  (min =    0 RPM)
	fan3:         5960 RPM  (min =    0 RPM)
	fan4:         5242 RPM  (min =    0 RPM)
	fan5:         5008 RPM  (min =    0 RPM)
	fan6:         5000 RPM  (min =    0 RPM)
	fan7:         5232 RPM  (min =    0 RPM)
	fan8:         5986 RPM  (min =    0 RPM)
	fan9:         5232 RPM  (min =    0 RPM)
	fan10:        6094 RPM  (min =    0 RPM)
	fan11:        5242 RPM  (min =    0 RPM)
	fan12:        5882 RPM  (min =    0 RPM)
	fan13:        5212 RPM  (min =    0 RPM)
	fan14:        5973 RPM  (min =    0 RPM)
	Ambient:       +18.0°C  (high =  +0.0°C)
	Core 0-7:      +40.0°C  
	Core 8-15:     +39.0°C  
	Core 16-23:    +39.0°C  
	Core 24-31:    +38.0°C  
	Core 32-39:    +38.0°C  
	Core 40-47:    +37.0°C  
	Core 48-55:    +37.0°C  
	Core 56-63:    +38.0°C  
	Core 64-71:    +38.0°C  
	Core 72-79:    +39.0°C  
	Core 80-87:    +35.0°C  
	Core 88-95:    +34.0°C  
	Core 96-103:   +33.0°C  
	Core 104-111:  +34.0°C  
	Core 112-119:  +33.0°C  
	Core 120-127:  +31.0°C  
	Core 128-135:  +31.0°C  
	Core 136-143:  +39.0°C  
	Core 144-151:  +39.0°C  
	Core 152-159:  +40.0°C  
	power1:       425.00 W  

The Centaur are not exposed yet.

Thanks,

C.



_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-07 18:03               ` [lm-sensors] " Cedric Le Goater
@ 2015-04-07 19:22                 ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-07 19:22 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

Hi Cedric,

On Tue, Apr 07, 2015 at 08:03:46PM +0200, Cedric Le Goater wrote:
> 
> on a P7  :
> 
> 	# ppc64_cpu --info
> 	Core   0:    0*    1*    2*    3* 
> 	Core   1:    4*    5*    6*    7* 
> 	Core   2:    8*    9*   10*   11* 
> 	Core   3:   12*   13*   14*   15* 
> 	Core   4:   16*   17*   18*   19* 
> 	Core   5:   20*   21*   22*   23* 
> 
How would the 'sensors' output look like on that system ?
Wouldn't it be something like the following ?

 	Core 0-7:    +29.0°C  
 	Core 4-11:   +29.0°C  

> 
> > Also, how do you know that the range of CPU IDs is always 8 ?
> 
> This is a shortcut. The code is for the ibmpowernv platform and assumes 
> that we are running on a P8 (8 hardware threads). It would be better to 
> use a "maximum threads per core" variable but I am not sure this is 
> available, as it is a tunable. I will look into it.
> 
Tunable how ? The core code must have some means to detect this number
when it initialized CPU entries, or am I missing something ?

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-07 19:22                 ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-07 19:22 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

Hi Cedric,

On Tue, Apr 07, 2015 at 08:03:46PM +0200, Cedric Le Goater wrote:
> 
> on a P7  :
> 
> 	# ppc64_cpu --info
> 	Core   0:    0*    1*    2*    3* 
> 	Core   1:    4*    5*    6*    7* 
> 	Core   2:    8*    9*   10*   11* 
> 	Core   3:   12*   13*   14*   15* 
> 	Core   4:   16*   17*   18*   19* 
> 	Core   5:   20*   21*   22*   23* 
> 
How would the 'sensors' output look like on that system ?
Wouldn't it be something like the following ?

 	Core 0-7:    +29.0°C  
 	Core 4-11:   +29.0°C  

> 
> > Also, how do you know that the range of CPU IDs is always 8 ?
> 
> This is a shortcut. The code is for the ibmpowernv platform and assumes 
> that we are running on a P8 (8 hardware threads). It would be better to 
> use a "maximum threads per core" variable but I am not sure this is 
> available, as it is a tunable. I will look into it.
> 
Tunable how ? The core code must have some means to detect this number
when it initialized CPU entries, or am I missing something ?

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [Skiboot] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-07 18:03               ` [lm-sensors] " Cedric Le Goater
@ 2015-04-07 20:22                 ` Benjamin Herrenschmidt
  -1 siblings, 0 replies; 96+ messages in thread
From: Benjamin Herrenschmidt @ 2015-04-07 20:22 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: skiboot, linuxppc-dev, Jean Delvare, Guenter Roeck, lm-sensors

On Tue, 2015-04-07 at 20:03 +0200, Cedric Le Goater wrote:
> 
> This is a shortcut. The code is for the ibmpowernv platform and assumes 
> that we are running on a P8 (8 hardware threads). It would be better to 
> use a "maximum threads per core" variable but I am not sure this is 
> available, as it is a tunable. I will look into it.

Yes, please don't hard code this...

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [Skiboot] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-07 20:22                 ` Benjamin Herrenschmidt
  0 siblings, 0 replies; 96+ messages in thread
From: Benjamin Herrenschmidt @ 2015-04-07 20:22 UTC (permalink / raw)
  To: Cedric Le Goater
  Cc: skiboot, linuxppc-dev, Jean Delvare, Guenter Roeck, lm-sensors

On Tue, 2015-04-07 at 20:03 +0200, Cedric Le Goater wrote:
> 
> This is a shortcut. The code is for the ibmpowernv platform and assumes 
> that we are running on a P8 (8 hardware threads). It would be better to 
> use a "maximum threads per core" variable but I am not sure this is 
> available, as it is a tunable. I will look into it.

Yes, please don't hard code this...

Cheers,
Ben.




_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
  2015-04-07 19:22                 ` [lm-sensors] " Guenter Roeck
@ 2015-04-08  6:57                   ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-08  6:57 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

Hello Guenter,

On 04/07/2015 09:22 PM, Guenter Roeck wrote:
> Hi Cedric,
> 
> On Tue, Apr 07, 2015 at 08:03:46PM +0200, Cedric Le Goater wrote:
>>
>> on a P7  :
>>
>> 	# ppc64_cpu --info
>> 	Core   0:    0*    1*    2*    3* 
>> 	Core   1:    4*    5*    6*    7* 
>> 	Core   2:    8*    9*   10*   11* 
>> 	Core   3:   12*   13*   14*   15* 
>> 	Core   4:   16*   17*   18*   19* 
>> 	Core   5:   20*   21*   22*   23* 
>>
> How would the 'sensors' output look like on that system ?
> Wouldn't it be something like the following ?
> 
>  	Core 0-7:    +29.0°C  
>  	Core 4-11:   +29.0°C  

yep. 

>>> Also, how do you know that the range of CPU IDs is always 8 ?
>>
>> This is a shortcut. The code is for the ibmpowernv platform and assumes 
>> that we are running on a P8 (8 hardware threads). It would be better to 
>> use a "maximum threads per core" variable but I am not sure this is 
>> available, as it is a tunable. I will look into it.
>>
> Tunable how ? 

You can switch on and off threads.

> The core code must have some means to detect this number when it initialized 
> CPU entries, or am I missing something ?

threads_per_core is what the code needs. v3 is on its way.

Thanks !

C.

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-08  6:57                   ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-08  6:57 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

Hello Guenter,

On 04/07/2015 09:22 PM, Guenter Roeck wrote:
> Hi Cedric,
> 
> On Tue, Apr 07, 2015 at 08:03:46PM +0200, Cedric Le Goater wrote:
>>
>> on a P7  :
>>
>> 	# ppc64_cpu --info
>> 	Core   0:    0*    1*    2*    3* 
>> 	Core   1:    4*    5*    6*    7* 
>> 	Core   2:    8*    9*   10*   11* 
>> 	Core   3:   12*   13*   14*   15* 
>> 	Core   4:   16*   17*   18*   19* 
>> 	Core   5:   20*   21*   22*   23* 
>>
> How would the 'sensors' output look like on that system ?
> Wouldn't it be something like the following ?
> 
>  	Core 0-7:    +29.0°C  
>  	Core 4-11:   +29.0°C  

yep. 

>>> Also, how do you know that the range of CPU IDs is always 8 ?
>>
>> This is a shortcut. The code is for the ibmpowernv platform and assumes 
>> that we are running on a P8 (8 hardware threads). It would be better to 
>> use a "maximum threads per core" variable but I am not sure this is 
>> available, as it is a tunable. I will look into it.
>>
> Tunable how ? 

You can switch on and off threads.

> The core code must have some means to detect this number when it initialized 
> CPU entries, or am I missing something ?

threads_per_core is what the code needs. v3 is on its way.

Thanks !

C.





_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree
  2015-04-01 10:15     ` [lm-sensors] " Cédric Le Goater
@ 2015-04-08 15:20 ` Guenter Roeck
  -1 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-08 15:20 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Wed, Apr 01, 2015 at 12:15:04PM +0200, Cédric Le Goater wrote:
> The new OPAL device tree for sensors has a different layout and uses new
> property names, for the type and for the handler used to capture the
> sensor data.
> 
> This patch modifies the ibmpowernv driver to support such a tree in a
> way preserving compatibility with older OPAL firmwares.
> 
> This is achieved by changing the error path of the routine parsing
> an OPAL node name. The node is simply considered being from the new
> device tree layout and fallback values are used.
> 
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>

Hi Cedric,

I was about to apply the series, but then I found the following problem.

> ---
>  drivers/hwmon/ibmpowernv.c |   47 +++++++++++++++++++++++++++++++++++---------
>  1 file changed, 38 insertions(+), 9 deletions(-)
> 
[ ... ]
>  
> @@ -189,11 +204,16 @@ static u32 get_sensor_hwmon_index(struct sensor_data *sdata,
>  {
>  	int i;
>  
> -	for (i = 0; i < count; i++)
> -		if (sdata_table[i].opal_index == sdata->opal_index &&
> -		    sdata_table[i].type == sdata->type)
> -			return sdata_table[i].hwmon_index;
> +	/*
> +	 * We don't use the OPAL index on newer device trees
> +	 */
> +	if (sdata->opal_index != -1) {

opal_index is u32, so this won't work (or at least the result is
unpredictable).

Also, in patch 4/4 (v4), get_logical_cpu() takes unsigned int as parameter,
but get_hard_smp_processor_id() returns an int, causing gcc to complain
if the code is built with W=1.

Please fix and resubmit the entire series.

When you do that, please also ensure that continuation lines
are aligned (in patch 3/4).

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree
@ 2015-04-08 15:20 ` Guenter Roeck
  0 siblings, 0 replies; 96+ messages in thread
From: Guenter Roeck @ 2015-04-08 15:20 UTC (permalink / raw)
  To: Cédric Le Goater
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On Wed, Apr 01, 2015 at 12:15:04PM +0200, Cédric Le Goater wrote:
> The new OPAL device tree for sensors has a different layout and uses new
> property names, for the type and for the handler used to capture the
> sensor data.
> 
> This patch modifies the ibmpowernv driver to support such a tree in a
> way preserving compatibility with older OPAL firmwares.
> 
> This is achieved by changing the error path of the routine parsing
> an OPAL node name. The node is simply considered being from the new
> device tree layout and fallback values are used.
> 
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>

Hi Cedric,

I was about to apply the series, but then I found the following problem.

> ---
>  drivers/hwmon/ibmpowernv.c |   47 +++++++++++++++++++++++++++++++++++---------
>  1 file changed, 38 insertions(+), 9 deletions(-)
> 
[ ... ]
>  
> @@ -189,11 +204,16 @@ static u32 get_sensor_hwmon_index(struct sensor_data *sdata,
>  {
>  	int i;
>  
> -	for (i = 0; i < count; i++)
> -		if (sdata_table[i].opal_index == sdata->opal_index &&
> -		    sdata_table[i].type == sdata->type)
> -			return sdata_table[i].hwmon_index;
> +	/*
> +	 * We don't use the OPAL index on newer device trees
> +	 */
> +	if (sdata->opal_index != -1) {

opal_index is u32, so this won't work (or at least the result is
unpredictable).

Also, in patch 4/4 (v4), get_logical_cpu() takes unsigned int as parameter,
but get_hard_smp_processor_id() returns an int, causing gcc to complain
if the code is built with W=1.

Please fix and resubmit the entire series.

When you do that, please also ensure that continuation lines
are aligned (in patch 3/4).

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree
  2015-04-08 15:20 ` [lm-sensors] " Guenter Roeck
@ 2015-04-08 16:06   ` Cedric Le Goater
  -1 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-08 16:06 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 04/08/2015 05:20 PM, Guenter Roeck wrote:
> On Wed, Apr 01, 2015 at 12:15:04PM +0200, Cédric Le Goater wrote:
>> The new OPAL device tree for sensors has a different layout and uses new
>> property names, for the type and for the handler used to capture the
>> sensor data.
>>
>> This patch modifies the ibmpowernv driver to support such a tree in a
>> way preserving compatibility with older OPAL firmwares.
>>
>> This is achieved by changing the error path of the routine parsing
>> an OPAL node name. The node is simply considered being from the new
>> device tree layout and fallback values are used.
>>
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> 
> Hi Cedric,
> 
> I was about to apply the series, but then I found the following problem.
> 
>> ---
>>  drivers/hwmon/ibmpowernv.c |   47 +++++++++++++++++++++++++++++++++++---------
>>  1 file changed, 38 insertions(+), 9 deletions(-)
>>
> [ ... ]
>>  
>> @@ -189,11 +204,16 @@ static u32 get_sensor_hwmon_index(struct sensor_data *sdata,
>>  {
>>  	int i;
>>  
>> -	for (i = 0; i < count; i++)
>> -		if (sdata_table[i].opal_index == sdata->opal_index &&
>> -		    sdata_table[i].type == sdata->type)
>> -			return sdata_table[i].hwmon_index;
>> +	/*
>> +	 * We don't use the OPAL index on newer device trees
>> +	 */
>> +	if (sdata->opal_index != -1) {
> 
> opal_index is u32, so this won't work (or at least the result is
> unpredictable).
> 
> Also, in patch 4/4 (v4), get_logical_cpu() takes unsigned int as parameter,
> but get_hard_smp_processor_id() returns an int, causing gcc to complain
> if the code is built with W=1.
> 
> Please fix and resubmit the entire series.
> 
> When you do that, please also ensure that continuation lines
> are aligned (in patch 3/4).

Sure. Working on it right now.

Thanks,

C. 

^ permalink raw reply	[flat|nested] 96+ messages in thread

* Re: [lm-sensors] [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree
@ 2015-04-08 16:06   ` Cedric Le Goater
  0 siblings, 0 replies; 96+ messages in thread
From: Cedric Le Goater @ 2015-04-08 16:06 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Stewart Smith, lm-sensors, Neelesh Gupta, skiboot, linuxppc-dev,
	Jean Delvare

On 04/08/2015 05:20 PM, Guenter Roeck wrote:
> On Wed, Apr 01, 2015 at 12:15:04PM +0200, Cédric Le Goater wrote:
>> The new OPAL device tree for sensors has a different layout and uses new
>> property names, for the type and for the handler used to capture the
>> sensor data.
>>
>> This patch modifies the ibmpowernv driver to support such a tree in a
>> way preserving compatibility with older OPAL firmwares.
>>
>> This is achieved by changing the error path of the routine parsing
>> an OPAL node name. The node is simply considered being from the new
>> device tree layout and fallback values are used.
>>
>> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> 
> Hi Cedric,
> 
> I was about to apply the series, but then I found the following problem.
> 
>> ---
>>  drivers/hwmon/ibmpowernv.c |   47 +++++++++++++++++++++++++++++++++++---------
>>  1 file changed, 38 insertions(+), 9 deletions(-)
>>
> [ ... ]
>>  
>> @@ -189,11 +204,16 @@ static u32 get_sensor_hwmon_index(struct sensor_data *sdata,
>>  {
>>  	int i;
>>  
>> -	for (i = 0; i < count; i++)
>> -		if (sdata_table[i].opal_index == sdata->opal_index &&
>> -		    sdata_table[i].type == sdata->type)
>> -			return sdata_table[i].hwmon_index;
>> +	/*
>> +	 * We don't use the OPAL index on newer device trees
>> +	 */
>> +	if (sdata->opal_index != -1) {
> 
> opal_index is u32, so this won't work (or at least the result is
> unpredictable).
> 
> Also, in patch 4/4 (v4), get_logical_cpu() takes unsigned int as parameter,
> but get_hard_smp_processor_id() returns an int, causing gcc to complain
> if the code is built with W=1.
> 
> Please fix and resubmit the entire series.
> 
> When you do that, please also ensure that continuation lines
> are aligned (in patch 3/4).

Sure. Working on it right now.

Thanks,

C. 


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

^ permalink raw reply	[flat|nested] 96+ messages in thread

end of thread, other threads:[~2015-04-08 16:06 UTC | newest]

Thread overview: 96+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1423117857-32759-1-git-send-email-clg@fr.ibm.com>
2015-02-20 15:07 ` [RFC PATCH 0/3] hwmon: (ibmpowernv) add DTS support Cédric Le Goater
2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
2015-02-20 16:52   ` Guenter Roeck
2015-02-20 16:52     ` [lm-sensors] " Guenter Roeck
2015-02-20 20:15     ` Cedric Le Goater
2015-02-20 20:15       ` [lm-sensors] " Cedric Le Goater
2015-02-20 23:52       ` Guenter Roeck
2015-02-20 23:52         ` [lm-sensors] " Guenter Roeck
2015-02-21  7:14         ` Cedric Le Goater
2015-02-21  7:14           ` [lm-sensors] " Cedric Le Goater
2015-02-21 11:03           ` Guenter Roeck
2015-02-21 11:03             ` [lm-sensors] " Guenter Roeck
2015-02-23 10:54             ` Cedric Le Goater
2015-02-23 10:54               ` [lm-sensors] " Cedric Le Goater
2015-02-20 15:07 ` [RFC PATCH 1/3] powerpc/powernv: Check OPAL sensor calls exist Cédric Le Goater
2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
2015-02-20 16:53   ` Guenter Roeck
2015-02-20 16:53     ` [lm-sensors] " Guenter Roeck
2015-02-20 20:18     ` Cedric Le Goater
2015-02-20 20:18       ` [lm-sensors] " Cedric Le Goater
2015-02-24  4:54   ` Michael Ellerman
2015-02-24  4:54     ` [lm-sensors] " Michael Ellerman
2015-02-25 17:28     ` Cedric Le Goater
2015-02-25 17:28       ` [lm-sensors] " Cedric Le Goater
2015-02-20 15:07 ` [RFC PATCH 2/3] powerpc/powernv: handle OPAL_SUCCESS return in opal_sensor_read Cédric Le Goater
2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
2015-02-20 15:07 ` [RFC PATCH 3/3] hwmon: (ibmpowernv) add DTS support Cédric Le Goater
2015-02-20 15:07   ` [lm-sensors] " Cédric Le Goater
2015-03-18 15:47 ` [PATCH 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index Cédric Le Goater
2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
2015-03-19  4:05   ` Guenter Roeck
2015-03-19  4:05     ` [lm-sensors] " Guenter Roeck
2015-03-18 15:47 ` [PATCH 1/5] hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP Cédric Le Goater
2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
2015-03-18 15:47 ` [PATCH 2/5] hwmon: (ibmpowernv) add a get_sensor_type() routine Cédric Le Goater
2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
2015-03-18 15:47 ` [PATCH 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine Cédric Le Goater
2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
2015-03-19  3:58   ` Guenter Roeck
2015-03-19  3:58     ` [lm-sensors] " Guenter Roeck
2015-03-18 15:47 ` [PATCH 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype Cédric Le Goater
2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
2015-03-19  4:02   ` Guenter Roeck
2015-03-19  4:02     ` [lm-sensors] " Guenter Roeck
2015-03-18 15:47 ` [PATCH 5/5] hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute names Cédric Le Goater
2015-03-18 15:47   ` [lm-sensors] " Cédric Le Goater
2015-03-19 17:44 ` [PATCH v2 0/5] hwmon: (ibmpowernv) remove dependency on OPAL index Cédric Le Goater
2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
2015-03-20 15:26   ` Guenter Roeck
2015-03-20 15:26     ` [lm-sensors] " Guenter Roeck
2015-03-20 16:52     ` Cedric Le Goater
2015-03-20 16:52       ` [lm-sensors] " Cedric Le Goater
2015-04-01 10:15   ` [PATCH 0/4] hwmon: (ibmpowernv) add DTS support Cédric Le Goater
2015-04-01 10:15     ` [lm-sensors] " Cédric Le Goater
2015-04-01 10:15   ` [PATCH 1/4] hwmon: (ibmpowernv) add a helper routine create_hwmon_attr Cédric Le Goater
2015-04-01 10:15     ` [lm-sensors] " Cédric Le Goater
2015-04-01 10:15   ` [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree Cédric Le Goater
2015-04-01 10:15     ` [lm-sensors] " Cédric Le Goater
2015-04-01 10:15   ` [PATCH 3/4] hwmon: (ibmpowernv) add a label attribute Cédric Le Goater
2015-04-01 10:15     ` [lm-sensors] " Cédric Le Goater
2015-04-01 10:15   ` [PATCH 4/4] hwmon: (ibmpowernv) pretty print labels Cédric Le Goater
2015-04-01 10:15     ` [lm-sensors] " Cédric Le Goater
2015-04-03 15:49     ` Guenter Roeck
2015-04-03 15:49       ` [lm-sensors] " Guenter Roeck
2015-04-07 14:42       ` Cedric Le Goater
2015-04-07 14:42         ` [lm-sensors] " Cedric Le Goater
2015-04-07 14:45         ` Cédric Le Goater
2015-04-07 14:45           ` [lm-sensors] " Cédric Le Goater
2015-04-07 16:44           ` Guenter Roeck
2015-04-07 16:44             ` [lm-sensors] " Guenter Roeck
2015-04-07 18:03             ` Cedric Le Goater
2015-04-07 18:03               ` [lm-sensors] " Cedric Le Goater
2015-04-07 19:22               ` Guenter Roeck
2015-04-07 19:22                 ` [lm-sensors] " Guenter Roeck
2015-04-08  6:57                 ` Cedric Le Goater
2015-04-08  6:57                   ` [lm-sensors] " Cedric Le Goater
2015-04-07 20:22               ` [Skiboot] " Benjamin Herrenschmidt
2015-04-07 20:22                 ` [lm-sensors] " Benjamin Herrenschmidt
2015-03-19 17:44 ` [PATCH v2 1/5] hwmon: (ibmpowernv) replace AMBIENT_TEMP by TEMP Cédric Le Goater
2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
2015-03-19 17:44 ` [PATCH v2 2/5] hwmon: (ibmpowernv) add a get_sensor_type() routine Cédric Le Goater
2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
2015-03-19 17:44 ` [PATCH v2 3/5] hwmon: (ibmpowernv) add a convert_opal_attr_name() routine Cédric Le Goater
2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
2015-03-19 17:44 ` [PATCH v2 4/5] hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype Cédric Le Goater
2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
2015-03-20  8:06   ` Cedric Le Goater
2015-03-20  8:06     ` [lm-sensors] " Cedric Le Goater
2015-03-20 15:27     ` Guenter Roeck
2015-03-20 15:27       ` [lm-sensors] " Guenter Roeck
2015-03-19 17:44 ` [PATCH v2 5/5] hwmon: (ibmpowernv) do not use the OPAL index for hwmon attribute names Cédric Le Goater
2015-03-19 17:44   ` [lm-sensors] " Cédric Le Goater
2015-04-08 15:20 [PATCH 2/4] hwmon: (ibmpowernv) add support for the new device tree Guenter Roeck
2015-04-08 15:20 ` [lm-sensors] " Guenter Roeck
2015-04-08 16:06 ` Cedric Le Goater
2015-04-08 16:06   ` [lm-sensors] " Cedric Le Goater

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.