[Skiboot] [PATCH V7 4/4] occ: sensors: Skip the deconfigured core sensors
Shilpasri G Bhat
shilpa.bhat at linux.vnet.ibm.com
Fri Jun 30 20:59:05 AEST 2017
This patch skips the deconfigured cores from the core sensors while
parsing the sensor names in the main memory.
Signed-off-by: Shilpasri G Bhat <shilpa.bhat at linux.vnet.ibm.com>
---
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 c6e02aa..15b6031 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
@@ -466,9 +467,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,
@@ -565,11 +568,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);
@@ -590,6 +604,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