[Skiboot] [PATCH V9 7/8] sensors: occ: Skip the deconfigured core sensors

Shilpasri G Bhat shilpa.bhat at linux.vnet.ibm.com
Fri Jul 28 05:15:32 AEST 2017


This patch skips the deconfigured cores from the core sensors while
parsing the sensor names in the main memory as these sensor values are
not updated by OCC.

Signed-off-by: Shilpasri G Bhat <shilpa.bhat at linux.vnet.ibm.com>
---
- No changes from V8

 hw/occ-sensor.c | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/hw/occ-sensor.c b/hw/occ-sensor.c
index 2b7974a..87886db 100644
--- a/hw/occ-sensor.c
+++ b/hw/occ-sensor.c
@@ -19,6 +19,7 @@
 #include <chip.h>
 #include <sensor.h>
 #include <device.h>
+#include <cpu.h>
 
 /*
  * OCC Sensor Data
@@ -474,9 +475,11 @@ static void add_sensor_label(struct dt_node *node, struct occ_sensor_name *md,
 		if (!strncmp(str_maps[i].occ_str, md->name,
 			     strlen(str_maps[i].occ_str))) {
 			char *end;
-			int num;
+			int num = -1;
+
+			if (md->location != OCC_SENSOR_LOC_CORE)
+				num = parse_entity(md->name, &end);
 
-			num = parse_entity(md->name, &end);
 			if (num != -1) {
 				snprintf(sname, sizeof(sname), "%s%s %d %s",
 					 prefix, str_maps[i].opal_str, num,
@@ -573,11 +576,22 @@ void occ_sensors_init(void)
 			char name[30];
 			const char *type, *loc;
 			struct dt_node *node;
+			struct cpu_thread *c = NULL;
 			u32 handler;
 
 			if (!(md[i].type & HWMON_SENSORS_MASK))
 				continue;
 
+			if (md[i].location == OCC_SENSOR_LOC_CORE) {
+				int num = parse_entity(md[i].name, NULL);
+
+				for_each_available_core_in_chip(c, chip->id)
+					if (pir_to_core_id(c->pir) == num)
+						break;
+				if (!c)
+					continue;
+			}
+
 			type = get_sensor_type_string(md[i].type);
 			loc = get_sensor_loc_string(md[i].location);
 			snprintf(name, sizeof(name), "%s-%s", loc, type);
@@ -598,6 +612,9 @@ void occ_sensors_init(void)
 					       "ibm,opal-sensor");
 			dt_add_property_string(node, "occ_label", md[i].name);
 			add_sensor_label(node, &md[i], chip->id);
+
+			if (md[i].location == OCC_SENSOR_LOC_CORE)
+				dt_add_property_cells(node, "ibm,pir", c->pir);
 		}
 		occ_num++;
 	}
-- 
1.8.3.1



More information about the Skiboot mailing list