aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2017-10-12 21:17:58 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-10-16 21:51:28 -0500
commit39ffacb9691a3a4e5fe543787dfe4e671b6979b8 (patch)
tree26259a9021e2ed00cee6dec51606319983a1375f
parent073cbf6bb0a1ceddf3c7974d04608ca10062951e (diff)
downloadskiboot-39ffacb9691a3a4e5fe543787dfe4e671b6979b8.zip
skiboot-39ffacb9691a3a4e5fe543787dfe4e671b6979b8.tar.gz
skiboot-39ffacb9691a3a4e5fe543787dfe4e671b6979b8.tar.bz2
cpu: Add OPAL_REINIT_CPUS_TM_SUSPEND_DISABLED
Add a new CPU reinit flag, "TM Suspend Disabled", which requests that CPUs be configured so that TM (Transactional Memory) suspend mode is disabled. Currently this always fails, because skiboot has no way to query the state. A future hostboot change will add a mechanism for skiboot to determine the status and return an appropriate error code. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--core/cpu.c10
-rw-r--r--doc/opal-api/opal-reinit-cpus-70.rst8
-rw-r--r--include/opal-api.h2
3 files changed, 20 insertions, 0 deletions
diff --git a/core/cpu.c b/core/cpu.c
index be0e451..27e0d6c 100644
--- a/core/cpu.c
+++ b/core/cpu.c
@@ -1383,6 +1383,16 @@ static int64_t opal_reinit_cpus(uint64_t flags)
flags &= ~(OPAL_REINIT_CPUS_HILE_BE | OPAL_REINIT_CPUS_HILE_LE);
}
+ if (flags & OPAL_REINIT_CPUS_TM_SUSPEND_DISABLED) {
+ flags &= ~OPAL_REINIT_CPUS_TM_SUSPEND_DISABLED;
+
+ /*
+ * Pending a hostboot change we can't determine the status of
+ * this, so it always fails.
+ */
+ rc = OPAL_UNSUPPORTED;
+ }
+
/* Handle P8 DD1 SLW reinit */
if (flags != 0 && proc_gen == proc_gen_p8 && !hile_supported)
rc = slw_reinit(flags);
diff --git a/doc/opal-api/opal-reinit-cpus-70.rst b/doc/opal-api/opal-reinit-cpus-70.rst
index 0eb6704..bee350d 100644
--- a/doc/opal-api/opal-reinit-cpus-70.rst
+++ b/doc/opal-api/opal-reinit-cpus-70.rst
@@ -17,6 +17,7 @@ Currently, possible flags are: ::
OPAL_REINIT_CPUS_HILE_LE = (1 << 1),
OPAL_REINIT_CPUS_MMU_HASH = (1 << 2),
OPAL_REINIT_CPUS_MMU_RADIX = (1 << 3),
+ OPAL_REINIT_CPUS_TM_SUSPEND_DISABLED = (1 << 4),
};
Extra flags may be added in the future, so other bits *must* be 0.
@@ -30,6 +31,13 @@ are support and other bits *MUST NOT* be set.
On POWER9 CPUs, all options including OPAL_REINIT_CPUS_MMU_HASH and
OPAL_REINIT_CPUS_MMU_RADIX.
+OPAL_REINIT_CPUS_TM_SUSPEND_DISABLED
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This flag requests that CPUs be configured with TM (Transactional Memory)
+suspend mode disabled. This may only be supported on some CPU versions.
+
+
Returns
-------
diff --git a/include/opal-api.h b/include/opal-api.h
index 0ff0db0..0bc036e 100644
--- a/include/opal-api.h
+++ b/include/opal-api.h
@@ -1033,6 +1033,8 @@ enum {
*/
OPAL_REINIT_CPUS_MMU_HASH = (1 << 2),
OPAL_REINIT_CPUS_MMU_RADIX = (1 << 3),
+
+ OPAL_REINIT_CPUS_TM_SUSPEND_DISABLED = (1 << 4),
};
typedef struct oppanel_line {