|
|
@@ -198,3 +198,47 @@ presented). The transaction cannot then be continued and will take the failure
|
|
|
handler route. Furthermore, the transactional 2nd register state will be
|
|
|
inaccessible. GDB can currently be used on programs using TM, but not sensibly
|
|
|
in parts within transactions.
|
|
|
+
|
|
|
+POWER9
|
|
|
+======
|
|
|
+
|
|
|
+TM on POWER9 has issues with storing the complete register state. This
|
|
|
+is described in this commit:
|
|
|
+
|
|
|
+ commit 4bb3c7a0208fc13ca70598efd109901a7cd45ae7
|
|
|
+ Author: Paul Mackerras <paulus@ozlabs.org>
|
|
|
+ Date: Wed Mar 21 21:32:01 2018 +1100
|
|
|
+ KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9
|
|
|
+
|
|
|
+To account for this different POWER9 chips have TM enabled in
|
|
|
+different ways.
|
|
|
+
|
|
|
+On POWER9N DD2.01 and below, TM is disabled. ie
|
|
|
+HWCAP2[PPC_FEATURE2_HTM] is not set.
|
|
|
+
|
|
|
+On POWER9N DD2.1 TM is configured by firmware to always abort a
|
|
|
+transaction when tm suspend occurs. So tsuspend will cause a
|
|
|
+transaction to be aborted and rolled back. Kernel exceptions will also
|
|
|
+cause the transaction to be aborted and rolled back and the exception
|
|
|
+will not occur. If userspace constructs a sigcontext that enables TM
|
|
|
+suspend, the sigcontext will be rejected by the kernel. This mode is
|
|
|
+advertised to users with HWCAP2[PPC_FEATURE2_HTM_NO_SUSPEND] set.
|
|
|
+HWCAP2[PPC_FEATURE2_HTM] is not set in this mode.
|
|
|
+
|
|
|
+On POWER9N DD2.2 and above, KVM and POWERVM emulate TM for guests (as
|
|
|
+described in commit 4bb3c7a0208f), hence TM is enabled for guests
|
|
|
+ie. HWCAP2[PPC_FEATURE2_HTM] is set for guest userspace. Guests that
|
|
|
+makes heavy use of TM suspend (tsuspend or kernel suspend) will result
|
|
|
+in traps into the hypervisor and hence will suffer a performance
|
|
|
+degradation. Host userspace has TM disabled
|
|
|
+ie. HWCAP2[PPC_FEATURE2_HTM] is not set. (although we make enable it
|
|
|
+at some point in the future if we bring the emulation into host
|
|
|
+userspace context switching).
|
|
|
+
|
|
|
+POWER9C DD1.2 and above are only available with POWERVM and hence
|
|
|
+Linux only runs as a guest. On these systems TM is emulated like on
|
|
|
+POWER9N DD2.2.
|
|
|
+
|
|
|
+Guest migration from POWER8 to POWER9 will work with POWER9N DD2.2 and
|
|
|
+POWER9C DD1.2. Since earlier POWER9 processors don't support TM
|
|
|
+emulation, migration from POWER8 to POWER9 is not supported there.
|