The Documentation/powerpc/transactional_memory.txt says: "Syscalls made from within a suspended transaction are performed as normal and the transaction is not explicitly doomed by the kernel. However, what the kernel does to perform the syscall may result in the transaction being doomed by the hardware."
With this new TM mechanism, the syscall will continue to be executed if the syscall happens on a suspended syscall, but, it will always be doomed now, because the transaction will be reclaimed and recheckpointed, which causes the transaction to be doomed. This test expects that the transaction is not doomed, calling getppid_tm_suspended(), which has the following body: FUNC_START(getppid_tm_suspended) tbegin. beq 1f li r0, __NR_getppid tsuspend. sc tresume. tend. blr 1: li r3, -1 blr This will never succeed and return the syscall output because tresume will abort the transaction, and jumps to the failure handler, returning r3 := -1. This patch updates the test case to not assume that a syscall inside a suspended transaction will not be doomed, because kernel entrace will doom any suspended transaction now on. Signed-off-by: Breno Leitao <lei...@debian.org> --- tools/testing/selftests/powerpc/tm/tm-syscall.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tools/testing/selftests/powerpc/tm/tm-syscall.c b/tools/testing/selftests/powerpc/tm/tm-syscall.c index 454b965a2db3..1439a87eba3a 100644 --- a/tools/testing/selftests/powerpc/tm/tm-syscall.c +++ b/tools/testing/selftests/powerpc/tm/tm-syscall.c @@ -78,12 +78,6 @@ int tm_syscall(void) timeradd(&end, &now, &end); for (count = 0; timercmp(&now, &end, <); count++) { - /* - * Test a syscall within a suspended transaction and verify - * that it succeeds. - */ - FAIL_IF(getppid_tm(true) == -1); /* Should succeed. */ - /* * Test a syscall within an active transaction and verify that * it fails with the correct failure code. -- 2.19.0