All of lore.kernel.org
 help / color / mirror / Atom feed
* [lm-sensors] [PATCH v3] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-08  7:00 ` Cédric Le Goater
  0 siblings, 0 replies; 6+ messages in thread
From: Cédric Le Goater @ 2015-04-08  7:00 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
bmNlIHYyOgoKIC0gZml4IGJvZ3VzIGxvZ2ljYWwgY3B1IHJldHJpZXZhbCAKIC0gdXNlICd0aHJl
YWRzX3Blcl9jb3JlJyB0byBwcmludCBvdXQgY3B1IHJhbmdlCgogQ2hhbmdlcyBzaW5jZSB2MToK
CiAtIGNoZWNrIGNwdSB2YWxpZGl0eSBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBhdHRyaWJ1dGUg
bGFiZWwuIAogICBpZiBpbnZhbGlkLCB1c2UgYSAicGh5IiBwcmVmaXggdG8gZGlzdGluZ3Vpc2gg
YSBsaW51eCBjcHUgCiAgIG51bWJlciBmcm9tIGEgcGh5c2ljYWwgY3B1IG51bWJlci4gCgogZHJp
dmVycy9od21vbi9pYm1wb3dlcm52LmMgfCAgIDQzICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspCgpJbmRl
eDogbGludXguZ2l0L2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp
bnV4LmdpdC5vcmlnL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCisrKyBsaW51eC5naXQvZHJp
dmVycy9od21vbi9pYm1wb3dlcm52LmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxsaW51
eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxhc20vb3BhbC5oPgogI2luY2x1ZGUgPGxp
bnV4L2Vyci5oPgorI2luY2x1ZGUgPGFzbS9jcHV0aHJlYWRzLmg+CiAKICNkZWZpbmUgTUFYX0FU
VFJfTEVOCTMyCiAjZGVmaW5lIE1BWF9MQUJFTF9MRU4JNjQKQEAgLTExMCwxMiArMTExLDU0IEBA
IHN0YXRpYyBzc2l6ZV90IHNob3dfbGFiZWwoc3RydWN0IGRldmljZQogCXJldHVybiBzcHJpbnRm
KGJ1ZiwgIiVzXG4iLCBzZGF0YS0+bGFiZWwpOwogfQogCitzdGF0aWMgaW50IF9faW5pdCBnZXRf
bG9naWNhbF9jcHUodW5zaWduZWQgaW50IGh3Y3B1KQoreworCWludCBjcHU7CisKKwlmb3JfZWFj
aF9wb3NzaWJsZV9jcHUoY3B1KQorCQlpZiAoZ2V0X2hhcmRfc21wX3Byb2Nlc3Nvcl9pZChjcHUp
ID09IGh3Y3B1KQorCQkJcmV0dXJuIGNwdTsKKworCXByX2VycigiJXM6IGNvdWxkIG5vdCBmaW5k
IGEgY3B1IHdpdGggcGh5c2ljYWwgaWQgMHgleFxuIiwKKwkgICAgICAgX19mdW5jX18sIGh3Y3B1
KTsKKwlyZXR1cm4gLUVOT0VOVDsKK30KKwogc3RhdGljIHZvaWQgX19pbml0IG1ha2Vfc2Vuc29y
X2xhYmVsKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCiAJCSAgICBzdHJ1Y3Qgc2Vuc29yX2RhdGEg
KnNkYXRhLCBjb25zdCBjaGFyICpsYWJlbCkKIHsKKwl1MzIgaWQ7CiAJc2l6ZV90IG47CiAKIAlu
ID0gc25wcmludGYoc2RhdGEtPmxhYmVsLCBzaXplb2Yoc2RhdGEtPmxhYmVsKSwgIiVzIiwgbGFi
ZWwpOworCisJLyoKKwkgKiBDb3JlIHRlbXAgcHJldHR5IHByaW50CisJICovCisJaWYgKCFvZl9w
cm9wZXJ0eV9yZWFkX3UzMihucCwgImlibSxwaXIiLCAmaWQpKSB7CisJCWludCBjcHVpZCA9IGdl
dF9sb2dpY2FsX2NwdShpZCk7CisKKwkJaWYgKGNwdWlkID49IDApCisJCQkvKgorCQkJICogVGhl
IGRpZ2l0YWwgdGhlcm1hbCBzZW5zb3JzIGFyZSBhc3NvY2lhdGVkCisJCQkgKiB3aXRoIGEgY29y
ZS4gTGV0J3MgcHJpbnQgb3V0IHRoZSByYW5nZSBvZgorCQkJICogY3B1IGlkcyBjb3JyZXNwb25k
aW5nIHRvIHRoZSBoYXJkd2FyZQorCQkJICogdGhyZWFkcyBvZiB0aGUgY29yZS4KKwkJCSAqLwor
CQkJbiArPSBzbnByaW50ZihzZGF0YS0+bGFiZWwgKyBuLAorCQkJCSAgICAgIHNpemVvZihzZGF0
YS0+bGFiZWwpIC0gbiwgIiAlZC0lZCIsCisJCQkJICAgICAgY3B1aWQsIGNwdWlkICsgdGhyZWFk
c19wZXJfY29yZSAtIDEpOworCQllbHNlCisJCQluICs9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCAr
IG4sCisJCQkJICAgICAgc2l6ZW9mKHNkYXRhLT5sYWJlbCkgLSBuLCAiIHBoeSVkIiwgaWQpOwor
CX0KKworCS8qCisJICogTWVtYnVmZmVyIHByZXR0eSBwcmludAorCSAqLworCWlmICghb2ZfcHJv
cGVydHlfcmVhZF91MzIobnAsICJpYm0sY2hpcC1pZCIsICZpZCkpCisJCW4gKz0gc25wcmludGYo
c2RhdGEtPmxhYmVsICsgbiwgc2l6ZW9mKHNkYXRhLT5sYWJlbCkgLSBuLAorCQkJICAgICAgIiAl
ZCIsIGlkICYgMHhmZmZmKTsKIH0KIAogc3RhdGljIGludCBnZXRfc2Vuc29yX2luZGV4X2F0dHIo
Y29uc3QgY2hhciAqbmFtZSwgdTMyICppbmRleCwKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3Jz
QGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL2xtLXNlbnNvcnM

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

* [PATCH v3] hwmon: (ibmpowernv) pretty print labels
@ 2015-04-08  7:00 ` Cédric Le Goater
  0 siblings, 0 replies; 6+ messages in thread
From: Cédric Le Goater @ 2015-04-08  7:00 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 v2:

 - fix bogus logical cpu retrieval 
 - use 'threads_per_core' to print out cpu range

 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 |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

Index: linux.git/drivers/hwmon/ibmpowernv.c
===================================================================
--- linux.git.orig/drivers/hwmon/ibmpowernv.c
+++ linux.git/drivers/hwmon/ibmpowernv.c
@@ -30,6 +30,7 @@
 #include <linux/platform_device.h>
 #include <asm/opal.h>
 #include <linux/err.h>
+#include <asm/cputhreads.h>
 
 #define MAX_ATTR_LEN	32
 #define MAX_LABEL_LEN	64
@@ -110,12 +111,54 @@ static ssize_t show_label(struct device
 	return sprintf(buf, "%s\n", sdata->label);
 }
 
+static int __init get_logical_cpu(unsigned int hwcpu)
+{
+	int cpu;
+
+	for_each_possible_cpu(cpu)
+		if (get_hard_smp_processor_id(cpu) == hwcpu)
+			return cpu;
+
+	pr_err("%s: could not find a cpu with physical id 0x%x\n",
+	       __func__, hwcpu);
+	return -ENOENT;
+}
+
 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 cpuid = get_logical_cpu(id);
+
+		if (cpuid >= 0)
+			/*
+			 * 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",
+				      cpuid, cpuid + threads_per_core - 1);
+		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] 6+ messages in thread

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

T24gMDQvMDgvMjAxNSAxMjowMCBBTSwgQ8OpZHJpYyBMZSBHb2F0ZXIgd3JvdGU6Cj4gVGhlIG5l
dyBPUEFMIGRldmljZSB0cmVlIGFkZHMgYSBmZXcgcHJvcGVydGllcyB3aGljaCBjYW4gYmUgdXNl
ZCB0byBhZGQKPiBleHRyYSBpbmZvcm1hdGlvbiBvbiB0aGUgc2Vuc29yIGxhYmVsLgo+Cj4gSW4g
dGhlIGNhc2Ugb2YgYSBjcHUgY29yZSBzZW5zb3IsIHRoZSBmaXJtd2FyZSBleHBvc2VzIHRoZSBw
aHlzaWNhbAo+IGlkZW50aWZpZXIgb2YgdGhlIGNvcmUgaW4gdGhlICJpYm0scGlyIiBwcm9wZXJ0
eS4gVGhlIGRyaXZlcgo+IHRyYW5zbGF0ZXMgdGhpcyBpZGVudGlmaWVyIGluIGEgbGludXggY3B1
IG51bWJlciBhbmQgcHJpbnRzIG91dCBhCj4gcmFuZ2UgY29ycmVzcG9uZGluZyB0byB0aGUgaGFy
ZHdhcmUgdGhyZWFkcyBvZiB0aGUgY29yZSAoYXMgdGhleQo+IHNoYXJlIHRoZSBzYW1lIHNlbnNv
cikuCj4KPiBUaGUgbnVtYmVyaW5nIGdpdmVzIGEgaGludCBvbiB0aGUgbG9jYWxpemF0aW9uIG9m
IHRoZSBjb3JlIGluIHRoZQo+IHN5c3RlbSAod2hpY2ggc29ja2V0LCB3aGljaCBjaGlwKS4KPgo+
IFNpZ25lZC1vZmYtYnk6IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAZnIuaWJtLmNvbT4KPiAtLS0K
Pgo+ICAgQ2hhbmdlcyBzaW5jZSB2MjoKPgo+ICAgLSBmaXggYm9ndXMgbG9naWNhbCBjcHUgcmV0
cmlldmFsCj4gICAtIHVzZSAndGhyZWFkc19wZXJfY29yZScgdG8gcHJpbnQgb3V0IGNwdSByYW5n
ZQo+Cj4gICBDaGFuZ2VzIHNpbmNlIHYxOgo+Cj4gICAtIGNoZWNrIGNwdSB2YWxpZGl0eSBiZWZv
cmUgcHJpbnRpbmcgb3V0IHRoZSBhdHRyaWJ1dGUgbGFiZWwuCj4gICAgIGlmIGludmFsaWQsIHVz
ZSBhICJwaHkiIHByZWZpeCB0byBkaXN0aW5ndWlzaCBhIGxpbnV4IGNwdQo+ICAgICBudW1iZXIg
ZnJvbSBhIHBoeXNpY2FsIGNwdSBudW1iZXIuCj4KPiAgIGRyaXZlcnMvaHdtb24vaWJtcG93ZXJu
di5jIHwgICA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g
ICAxIGZpbGUgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKQo+Cj4gSW5kZXg6IGxpbnV4LmdpdC9k
cml2ZXJzL2h3bW9uL2libXBvd2VybnYuYwo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAtLS0gbGludXguZ2l0Lm9y
aWcvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKPiArKysgbGludXguZ2l0L2RyaXZlcnMvaHdt
b24vaWJtcG93ZXJudi5jCj4gQEAgLTMwLDYgKzMwLDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9w
bGF0Zm9ybV9kZXZpY2UuaD4KPiAgICNpbmNsdWRlIDxhc20vb3BhbC5oPgo+ICAgI2luY2x1ZGUg
PGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8YXNtL2NwdXRocmVhZHMuaD4KPgo+ICAgI2RlZmlu
ZSBNQVhfQVRUUl9MRU4JMzIKPiAgICNkZWZpbmUgTUFYX0xBQkVMX0xFTgk2NAo+IEBAIC0xMTAs
MTIgKzExMSw1NCBAQCBzdGF0aWMgc3NpemVfdCBzaG93X2xhYmVsKHN0cnVjdCBkZXZpY2UKPiAg
IAlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgc2RhdGEtPmxhYmVsKTsKPiAgIH0KPgo+ICtz
dGF0aWMgaW50IF9faW5pdCBnZXRfbG9naWNhbF9jcHUodW5zaWduZWQgaW50IGh3Y3B1KQo+ICt7
Cj4gKwlpbnQgY3B1Owo+ICsKPiArCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpCj4gKwkJaWYg
KGdldF9oYXJkX3NtcF9wcm9jZXNzb3JfaWQoY3B1KSA9PSBod2NwdSkKPiArCQkJcmV0dXJuIGNw
dTsKPiArCj4gKwlwcl9lcnIoIiVzOiBjb3VsZCBub3QgZmluZCBhIGNwdSB3aXRoIHBoeXNpY2Fs
IGlkIDB4JXhcbiIsCj4gKwkgICAgICAgX19mdW5jX18sIGh3Y3B1KTsKCkkgbGlrZSBtb3Zpbmcg
dGhpcyBpbnRvIGEgZnVuY3Rpb24sIGJ1dCBJIHJlYWxseSBkaXNsaWtlIHRoaXMgZXJyb3IKbWVz
c2FnZS4gSWYgdGhlIGRldmljZXRyZWUgZGF0YSBpcyB3cm9uZy9iYWQsIHRoZSBsb2cgYW5kIHRo
ZSBjb25zb2xlCndpbGwgYmUgY2xvZ2dlZCB3aXRoIHRoYXQgbWVzc2FnZS4gQW5kIHRoZSB1c2Vy
IHdpbGwgbm90IGJlIGFibGUKdG8gZG8gYW55dGhpbmcgYWJvdXQgaXQuCgpHdWVudGVyCgo+ICsJ
cmV0dXJuIC1FTk9FTlQ7Cj4gK30KPiArCj4gICBzdGF0aWMgdm9pZCBfX2luaXQgbWFrZV9zZW5z
b3JfbGFiZWwoc3RydWN0IGRldmljZV9ub2RlICpucCwKPiAgIAkJICAgIHN0cnVjdCBzZW5zb3Jf
ZGF0YSAqc2RhdGEsIGNvbnN0IGNoYXIgKmxhYmVsKQo+ICAgewo+ICsJdTMyIGlkOwo+ICAgCXNp
emVfdCBuOwo+Cj4gICAJbiA9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCwgc2l6ZW9mKHNkYXRhLT5s
YWJlbCksICIlcyIsIGxhYmVsKTsKPiArCj4gKwkvKgo+ICsJICogQ29yZSB0ZW1wIHByZXR0eSBw
cmludAo+ICsJICovCj4gKwlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiaWJtLHBpciIs
ICZpZCkpIHsKPiArCQlpbnQgY3B1aWQgPSBnZXRfbG9naWNhbF9jcHUoaWQpOwo+ICsKPiArCQlp
ZiAoY3B1aWQgPj0gMCkKPiArCQkJLyoKPiArCQkJICogVGhlIGRpZ2l0YWwgdGhlcm1hbCBzZW5z
b3JzIGFyZSBhc3NvY2lhdGVkCj4gKwkJCSAqIHdpdGggYSBjb3JlLiBMZXQncyBwcmludCBvdXQg
dGhlIHJhbmdlIG9mCj4gKwkJCSAqIGNwdSBpZHMgY29ycmVzcG9uZGluZyB0byB0aGUgaGFyZHdh
cmUKPiArCQkJICogdGhyZWFkcyBvZiB0aGUgY29yZS4KPiArCQkJICovCj4gKwkJCW4gKz0gc25w
cmludGYoc2RhdGEtPmxhYmVsICsgbiwKPiArCQkJCSAgICAgIHNpemVvZihzZGF0YS0+bGFiZWwp
IC0gbiwgIiAlZC0lZCIsCj4gKwkJCQkgICAgICBjcHVpZCwgY3B1aWQgKyB0aHJlYWRzX3Blcl9j
b3JlIC0gMSk7Cj4gKwkJZWxzZQo+ICsJCQluICs9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCArIG4s
Cj4gKwkJCQkgICAgICBzaXplb2Yoc2RhdGEtPmxhYmVsKSAtIG4sICIgcGh5JWQiLCBpZCk7Cj4g
Kwl9Cj4gKwo+ICsJLyoKPiArCSAqIE1lbWJ1ZmZlciBwcmV0dHkgcHJpbnQKPiArCSAqLwo+ICsJ
aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImlibSxjaGlwLWlkIiwgJmlkKSkKPiArCQlu
ICs9IHNucHJpbnRmKHNkYXRhLT5sYWJlbCArIG4sIHNpemVvZihzZGF0YS0+bGFiZWwpIC0gbiwK
PiArCQkJICAgICAgIiAlZCIsIGlkICYgMHhmZmZmKTsKPiAgIH0KPgo+ICAgc3RhdGljIGludCBn
ZXRfc2Vuc29yX2luZGV4X2F0dHIoY29uc3QgY2hhciAqbmFtZSwgdTMyICppbmRleCwKPgo+CgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29y
cyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0t
c2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

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

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

On 04/08/2015 12:00 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.
>
> 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 v2:
>
>   - fix bogus logical cpu retrieval
>   - use 'threads_per_core' to print out cpu range
>
>   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 |   43 +++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 43 insertions(+)
>
> Index: linux.git/drivers/hwmon/ibmpowernv.c
> ===================================================================
> --- linux.git.orig/drivers/hwmon/ibmpowernv.c
> +++ linux.git/drivers/hwmon/ibmpowernv.c
> @@ -30,6 +30,7 @@
>   #include <linux/platform_device.h>
>   #include <asm/opal.h>
>   #include <linux/err.h>
> +#include <asm/cputhreads.h>
>
>   #define MAX_ATTR_LEN	32
>   #define MAX_LABEL_LEN	64
> @@ -110,12 +111,54 @@ static ssize_t show_label(struct device
>   	return sprintf(buf, "%s\n", sdata->label);
>   }
>
> +static int __init get_logical_cpu(unsigned int hwcpu)
> +{
> +	int cpu;
> +
> +	for_each_possible_cpu(cpu)
> +		if (get_hard_smp_processor_id(cpu) == hwcpu)
> +			return cpu;
> +
> +	pr_err("%s: could not find a cpu with physical id 0x%x\n",
> +	       __func__, hwcpu);

I like moving this into a function, but I really dislike this error
message. If the devicetree data is wrong/bad, the log and the console
will be clogged with that message. And the user will not be able
to do anything about it.

Guenter

> +	return -ENOENT;
> +}
> +
>   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 cpuid = get_logical_cpu(id);
> +
> +		if (cpuid >= 0)
> +			/*
> +			 * 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",
> +				      cpuid, cpuid + threads_per_core - 1);
> +		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] 6+ messages in thread

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

T24gMDQvMDgvMjAxNSAwMzoyNiBQTSwgR3VlbnRlciBSb2VjayB3cm90ZToKPiBPbiAwNC8wOC8y
MDE1IDEyOjAwIEFNLCBDw6lkcmljIExlIEdvYXRlciB3cm90ZToKPj4gVGhlIG5ldyBPUEFMIGRl
dmljZSB0cmVlIGFkZHMgYSBmZXcgcHJvcGVydGllcyB3aGljaCBjYW4gYmUgdXNlZCB0byBhZGQK
Pj4gZXh0cmEgaW5mb3JtYXRpb24gb24gdGhlIHNlbnNvciBsYWJlbC4KPj4KPj4gSW4gdGhlIGNh
c2Ugb2YgYSBjcHUgY29yZSBzZW5zb3IsIHRoZSBmaXJtd2FyZSBleHBvc2VzIHRoZSBwaHlzaWNh
bAo+PiBpZGVudGlmaWVyIG9mIHRoZSBjb3JlIGluIHRoZSAiaWJtLHBpciIgcHJvcGVydHkuIFRo
ZSBkcml2ZXIKPj4gdHJhbnNsYXRlcyB0aGlzIGlkZW50aWZpZXIgaW4gYSBsaW51eCBjcHUgbnVt
YmVyIGFuZCBwcmludHMgb3V0IGEKPj4gcmFuZ2UgY29ycmVzcG9uZGluZyB0byB0aGUgaGFyZHdh
cmUgdGhyZWFkcyBvZiB0aGUgY29yZSAoYXMgdGhleQo+PiBzaGFyZSB0aGUgc2FtZSBzZW5zb3Ip
Lgo+Pgo+PiBUaGUgbnVtYmVyaW5nIGdpdmVzIGEgaGludCBvbiB0aGUgbG9jYWxpemF0aW9uIG9m
IHRoZSBjb3JlIGluIHRoZQo+PiBzeXN0ZW0gKHdoaWNoIHNvY2tldCwgd2hpY2ggY2hpcCkuCj4+
Cj4+IFNpZ25lZC1vZmYtYnk6IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAZnIuaWJtLmNvbT4KPj4g
LS0tCj4+Cj4+ICAgQ2hhbmdlcyBzaW5jZSB2MjoKPj4KPj4gICAtIGZpeCBib2d1cyBsb2dpY2Fs
IGNwdSByZXRyaWV2YWwKPj4gICAtIHVzZSAndGhyZWFkc19wZXJfY29yZScgdG8gcHJpbnQgb3V0
IGNwdSByYW5nZQo+Pgo+PiAgIENoYW5nZXMgc2luY2UgdjE6Cj4+Cj4+ICAgLSBjaGVjayBjcHUg
dmFsaWRpdHkgYmVmb3JlIHByaW50aW5nIG91dCB0aGUgYXR0cmlidXRlIGxhYmVsLgo+PiAgICAg
aWYgaW52YWxpZCwgdXNlIGEgInBoeSIgcHJlZml4IHRvIGRpc3Rpbmd1aXNoIGEgbGludXggY3B1
Cj4+ICAgICBudW1iZXIgZnJvbSBhIHBoeXNpY2FsIGNwdSBudW1iZXIuCj4+Cj4+ICAgZHJpdmVy
cy9od21vbi9pYm1wb3dlcm52LmMgfCAgIDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKPj4gICAxIGZpbGUgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKQo+Pgo+
PiBJbmRleDogbGludXguZ2l0L2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCj4+ID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KPj4gLS0tIGxpbnV4LmdpdC5vcmlnL2RyaXZlcnMvaHdtb24vaWJtcG93ZXJudi5jCj4+ICsr
KyBsaW51eC5naXQvZHJpdmVycy9od21vbi9pYm1wb3dlcm52LmMKPj4gQEAgLTMwLDYgKzMwLDcg
QEAKPj4gICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+ICAgI2luY2x1ZGUg
PGFzbS9vcGFsLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+PiArI2luY2x1ZGUgPGFz
bS9jcHV0aHJlYWRzLmg+Cj4+Cj4+ICAgI2RlZmluZSBNQVhfQVRUUl9MRU4gICAgMzIKPj4gICAj
ZGVmaW5lIE1BWF9MQUJFTF9MRU4gICAgNjQKPj4gQEAgLTExMCwxMiArMTExLDU0IEBAIHN0YXRp
YyBzc2l6ZV90IHNob3dfbGFiZWwoc3RydWN0IGRldmljZQo+PiAgICAgICByZXR1cm4gc3ByaW50
ZihidWYsICIlc1xuIiwgc2RhdGEtPmxhYmVsKTsKPj4gICB9Cj4+Cj4+ICtzdGF0aWMgaW50IF9f
aW5pdCBnZXRfbG9naWNhbF9jcHUodW5zaWduZWQgaW50IGh3Y3B1KQo+PiArewo+PiArICAgIGlu
dCBjcHU7Cj4+ICsKPj4gKyAgICBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KQo+PiArICAgICAg
ICBpZiAoZ2V0X2hhcmRfc21wX3Byb2Nlc3Nvcl9pZChjcHUpID09IGh3Y3B1KQo+PiArICAgICAg
ICAgICAgcmV0dXJuIGNwdTsKPj4gKwo+PiArICAgIHByX2VycigiJXM6IGNvdWxkIG5vdCBmaW5k
IGEgY3B1IHdpdGggcGh5c2ljYWwgaWQgMHgleFxuIiwKPj4gKyAgICAgICAgICAgX19mdW5jX18s
IGh3Y3B1KTsKPiAKPiBJIGxpa2UgbW92aW5nIHRoaXMgaW50byBhIGZ1bmN0aW9uLCBidXQgSSBy
ZWFsbHkgZGlzbGlrZSB0aGlzIGVycm9yCj4gbWVzc2FnZS4gSWYgdGhlIGRldmljZXRyZWUgZGF0
YSBpcyB3cm9uZy9iYWQsIHRoZSBsb2cgYW5kIHRoZSBjb25zb2xlCj4gd2lsbCBiZSBjbG9nZ2Vk
IHdpdGggdGhhdCBtZXNzYWdlLiBBbmQgdGhlIHVzZXIgd2lsbCBub3QgYmUgYWJsZQo+IHRvIGRv
IGFueXRoaW5nIGFib3V0IGl0LgoKeWVzLiBJdCBpcyBub3Qgc3VwZXIgdXNlZnVsIGFueXdheSBh
bmQgaXQgaXMgcmVkdW5kYW50IHdpdGggdGhlICJwaHkiIApwcmVmaXggYmVsb3cuIERvIHlvdSB3
YW50IG1lIHRvIGtpbGwgaXQgaW4gYSB2NCA/IAoKVGhhbmtzLAoKQy4gCgo+IAo+IEd1ZW50ZXIK
PiAKPj4gKyAgICByZXR1cm4gLUVOT0VOVDsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyB2b2lkIF9f
aW5pdCBtYWtlX3NlbnNvcl9sYWJlbChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAo+PiAgICAgICAg
ICAgICAgIHN0cnVjdCBzZW5zb3JfZGF0YSAqc2RhdGEsIGNvbnN0IGNoYXIgKmxhYmVsKQo+PiAg
IHsKPj4gKyAgICB1MzIgaWQ7Cj4+ICAgICAgIHNpemVfdCBuOwo+Pgo+PiAgICAgICBuID0gc25w
cmludGYoc2RhdGEtPmxhYmVsLCBzaXplb2Yoc2RhdGEtPmxhYmVsKSwgIiVzIiwgbGFiZWwpOwo+
PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBDb3JlIHRlbXAgcHJldHR5IHByaW50Cj4+ICsgICAg
ICovCj4+ICsgICAgaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImlibSxwaXIiLCAmaWQp
KSB7Cj4+ICsgICAgICAgIGludCBjcHVpZCA9IGdldF9sb2dpY2FsX2NwdShpZCk7Cj4+ICsKPj4g
KyAgICAgICAgaWYgKGNwdWlkID49IDApCj4+ICsgICAgICAgICAgICAvKgo+PiArICAgICAgICAg
ICAgICogVGhlIGRpZ2l0YWwgdGhlcm1hbCBzZW5zb3JzIGFyZSBhc3NvY2lhdGVkCj4+ICsgICAg
ICAgICAgICAgKiB3aXRoIGEgY29yZS4gTGV0J3MgcHJpbnQgb3V0IHRoZSByYW5nZSBvZgo+PiAr
ICAgICAgICAgICAgICogY3B1IGlkcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBoYXJkd2FyZQo+PiAr
ICAgICAgICAgICAgICogdGhyZWFkcyBvZiB0aGUgY29yZS4KPj4gKyAgICAgICAgICAgICAqLwo+
PiArICAgICAgICAgICAgbiArPSBzbnByaW50ZihzZGF0YS0+bGFiZWwgKyBuLAo+PiArICAgICAg
ICAgICAgICAgICAgICAgIHNpemVvZihzZGF0YS0+bGFiZWwpIC0gbiwgIiAlZC0lZCIsCj4+ICsg
ICAgICAgICAgICAgICAgICAgICAgY3B1aWQsIGNwdWlkICsgdGhyZWFkc19wZXJfY29yZSAtIDEp
Owo+PiArICAgICAgICBlbHNlCj4+ICsgICAgICAgICAgICBuICs9IHNucHJpbnRmKHNkYXRhLT5s
YWJlbCArIG4sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNkYXRhLT5sYWJlbCkg
LSBuLCAiIHBoeSVkIiwgaWQpOwo+PiArICAgIH0KPj4gKwo+PiArICAgIC8qCj4+ICsgICAgICog
TWVtYnVmZmVyIHByZXR0eSBwcmludAo+PiArICAgICAqLwo+PiArICAgIGlmICghb2ZfcHJvcGVy
dHlfcmVhZF91MzIobnAsICJpYm0sY2hpcC1pZCIsICZpZCkpCj4+ICsgICAgICAgIG4gKz0gc25w
cmludGYoc2RhdGEtPmxhYmVsICsgbiwgc2l6ZW9mKHNkYXRhLT5sYWJlbCkgLSBuLAo+PiArICAg
ICAgICAgICAgICAgICAgIiAlZCIsIGlkICYgMHhmZmZmKTsKPj4gICB9Cj4+Cj4+ICAgc3RhdGlj
IGludCBnZXRfc2Vuc29yX2luZGV4X2F0dHIoY29uc3QgY2hhciAqbmFtZSwgdTMyICppbmRleCwK
Pj4KPj4KPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6
Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

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

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

On 04/08/2015 03:26 PM, Guenter Roeck wrote:
> On 04/08/2015 12:00 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.
>>
>> 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 v2:
>>
>>   - fix bogus logical cpu retrieval
>>   - use 'threads_per_core' to print out cpu range
>>
>>   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 |   43 +++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 43 insertions(+)
>>
>> Index: linux.git/drivers/hwmon/ibmpowernv.c
>> ===================================================================
>> --- linux.git.orig/drivers/hwmon/ibmpowernv.c
>> +++ linux.git/drivers/hwmon/ibmpowernv.c
>> @@ -30,6 +30,7 @@
>>   #include <linux/platform_device.h>
>>   #include <asm/opal.h>
>>   #include <linux/err.h>
>> +#include <asm/cputhreads.h>
>>
>>   #define MAX_ATTR_LEN    32
>>   #define MAX_LABEL_LEN    64
>> @@ -110,12 +111,54 @@ static ssize_t show_label(struct device
>>       return sprintf(buf, "%s\n", sdata->label);
>>   }
>>
>> +static int __init get_logical_cpu(unsigned int hwcpu)
>> +{
>> +    int cpu;
>> +
>> +    for_each_possible_cpu(cpu)
>> +        if (get_hard_smp_processor_id(cpu) == hwcpu)
>> +            return cpu;
>> +
>> +    pr_err("%s: could not find a cpu with physical id 0x%x\n",
>> +           __func__, hwcpu);
> 
> I like moving this into a function, but I really dislike this error
> message. If the devicetree data is wrong/bad, the log and the console
> will be clogged with that message. And the user will not be able
> to do anything about it.

yes. It is not super useful anyway and it is redundant with the "phy" 
prefix below. Do you want me to kill it in a v4 ? 

Thanks,

C. 

> 
> Guenter
> 
>> +    return -ENOENT;
>> +}
>> +
>>   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 cpuid = get_logical_cpu(id);
>> +
>> +        if (cpuid >= 0)
>> +            /*
>> +             * 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",
>> +                      cpuid, cpuid + threads_per_core - 1);
>> +        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] 6+ messages in thread

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

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-08  7:00 [lm-sensors] [PATCH v3] hwmon: (ibmpowernv) pretty print labels Cédric Le Goater
2015-04-08  7:00 ` Cédric Le Goater
2015-04-08 13:26 ` [lm-sensors] " Guenter Roeck
2015-04-08 13:26   ` Guenter Roeck
2015-04-08 13:33   ` [lm-sensors] " Cedric Le Goater
2015-04-08 13:33     ` 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.