[Skiboot] [PATCH] fast-reboot: occ: Delete OCC child nodes in /ibm, opal/power-mgt

Shilpasri G Bhat shilpa.bhat at linux.vnet.ibm.com
Wed Feb 28 16:35:17 AEDT 2018


Fast-reboot in P8 fails to re-init OCC data as there are chipwise OCC
nodes which are already present in the /ibm,opal/power-mgt node. These
per-chip nodes hold the voltage IDs for each pstate and these can be
changed on OCC pstate table biasing. So delete these before calling
the re-init code to re-parse and populate the pstate data.

Reported-by: Pridhiviraj Paidipeddi <ppaidipe at linux.vnet.ibm.com>
Signed-off-by: Shilpasri G Bhat <shilpa.bhat at linux.vnet.ibm.com>
---
 hw/occ.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/hw/occ.c b/hw/occ.c
index 3e92b9a..37cf73c 100644
--- a/hw/occ.c
+++ b/hw/occ.c
@@ -1664,7 +1664,7 @@ void occ_pstates_init(void)
 		return;
 	/* Handle fast reboots */
 	if (occ_pstates_initialized) {
-		struct dt_node *power_mgt;
+		struct dt_node *power_mgt, *child;
 		int i;
 		const char *props[] = {
 				"ibm,pstate-core-max",
@@ -1682,6 +1682,10 @@ void occ_pstates_init(void)
 		power_mgt = dt_find_by_path(dt_root, "/ibm,opal/power-mgt");
 		for (i = 0; i < ARRAY_SIZE(props); i++)
 			dt_check_del_prop(power_mgt, props[i]);
+
+		dt_for_each_child(power_mgt, child)
+			if (!strncmp(child->name, "occ", 3))
+				dt_free(child);
 	}
 
 	switch (proc_gen) {
-- 
1.8.3.1



More information about the Skiboot mailing list