powerpc/pseries: Introduce dlpar_unisolate_drc()
authorDaniel Henrique Barboza <danielhb413@gmail.com>
Fri, 16 Apr 2021 21:02:15 +0000 (18:02 -0300)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 20 Apr 2021 04:22:23 +0000 (14:22 +1000)
Next patch will execute a set-indicator call in hotplug-cpu.c.

Create a dlpar_unisolate_drc() helper to avoid spreading more
rtas_set_indicator() calls outside of dlpar.c.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210416210216.380291-2-danielhb413@gmail.com
arch/powerpc/platforms/pseries/dlpar.c
arch/powerpc/platforms/pseries/pseries.h

index 233503f..3ac7079 100644 (file)
@@ -329,6 +329,20 @@ int dlpar_release_drc(u32 drc_index)
        return 0;
 }
 
+int dlpar_unisolate_drc(u32 drc_index)
+{
+       int dr_status, rc;
+
+       rc = rtas_call(rtas_token("get-sensor-state"), 2, 2, &dr_status,
+                               DR_ENTITY_SENSE, drc_index);
+       if (rc || dr_status != DR_ENTITY_PRESENT)
+               return -1;
+
+       rtas_set_indicator(ISOLATION_STATE, drc_index, UNISOLATE);
+
+       return 0;
+}
+
 int handle_dlpar_errorlog(struct pseries_hp_errorlog *hp_elog)
 {
        int rc;
index 8925a0f..1f051a7 100644 (file)
@@ -52,6 +52,7 @@ extern int dlpar_attach_node(struct device_node *, struct device_node *);
 extern int dlpar_detach_node(struct device_node *);
 extern int dlpar_acquire_drc(u32 drc_index);
 extern int dlpar_release_drc(u32 drc_index);
+extern int dlpar_unisolate_drc(u32 drc_index);
 
 void queue_hotplug_event(struct pseries_hp_errorlog *hp_errlog);
 int handle_dlpar_errorlog(struct pseries_hp_errorlog *hp_errlog);