aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanosch Frank <frankja@linux.ibm.com>2020-04-29 10:35:13 -0400
committerDavid Hildenbrand <david@redhat.com>2020-04-30 16:52:14 +0200
commitdeb791fde6d2663ba9a48389b9da3ab14dd1fe2f (patch)
tree9b1359c301a0ac8b33dcc96ec50ec2b53d99c622
parent1916fbead27a55df916f1c46f789a76d5837e384 (diff)
downloadkvm-unit-tests-deb791fde6d2663ba9a48389b9da3ab14dd1fe2f.tar.gz
s390x: smp: Loop if secondary cpu returns into cpu setup again
Up to now a secondary cpu could have returned from the function it was executing and ending up somewhere in cstart64.S. This was mostly circumvented by an endless loop in the function that it executed. Let's add a loop to the end of the cpu setup, so we don't have to rely on added loops in the tests. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <20200429143518.1360468-6-frankja@linux.ibm.com> Signed-off-by: David Hildenbrand <david@redhat.com>
-rw-r--r--s390x/cstart64.S4
1 files changed, 3 insertions, 1 deletions
diff --git a/s390x/cstart64.S b/s390x/cstart64.S
index 9af6bb3..ecffbe0 100644
--- a/s390x/cstart64.S
+++ b/s390x/cstart64.S
@@ -161,7 +161,9 @@ smp_cpu_setup_state:
lctlg %c0, %c0, GEN_LC_SW_INT_CRS
/* We should only go once through cpu setup and not for every restart */
stg %r14, GEN_LC_RESTART_NEW_PSW + 8
- br %r14
+ brasl %r14, %r14
+ /* If the function returns, just loop here */
+0: j 0
pgm_int:
SAVE_REGS