@@ -879,8 +879,10 @@ static int64_t opal_reinit_cpus(uint64_t flags)
}
/* Any flags left ? */
- if (flags != 0)
+ if (flags != 0 && proc_gen == proc_gen_p8)
rc = slw_reinit(flags);
+ else if (flags != 0)
+ rc = OPAL_UNSUPPORTED;
/* And undo the above */
lock(&reinit_lock);
@@ -22,6 +22,8 @@ flags will return OPAL_UNSUPPORTED.
On POWER8 CPUs, only OPAL_REINIT_CPUS_HILE_BE and OPAL_REINIT_CPUS_HILE_LE
are support and other bits *MUST NOT* be set.
+On POWER9 CPUs, other flags may be supported in the future.
+
Returns:
- OPAL_SUCCESS
- OPAL_UNSUPPORTED
@@ -10,6 +10,11 @@ parts of the OPAL API.
Eventually, when the kernel drops support for POWER8 and before, we can then
remove the associated kernel code too.
+OPAL_REINIT_CPUS
+----------------
+Can now be extended beyond HILE BE/LE bits. If invalid flags are set on
+POWER9, OPAL_UNSUPPORTED will be returned.
+
TODO
----
On P8 we got it a bit wrong and would fall into a workaround for P8 DD1 HILE setting if other bits were set in the flags to OPAL_REINIT_CPUS, limiting our opportunity to extend it in the future. Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com> --- core/cpu.c | 4 +++- doc/opal-api/opal-reinit-cpus-70.txt | 2 ++ doc/opal-api/power9-changes.txt | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-)