* [kvm-unit-tests PULL 0/9] s390x and CI patches
@ 2020-02-04 7:13 Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 1/9] s390x: smp: Cleanup smp.c Thomas Huth
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david
Hi Paolo,
the following changes since commit 477310421016368983e0be2639b91fc13d47e36d:
Merge tag 's390x-2020-01-30' of https://github.com/davidhildenbrand/kvm-unit-tests into HEAD (2020-01-30 18:11:59 +0100)
are available in the Git repository at:
https://gitlab.com/huth/kvm-unit-tests.git tags/s390x-2020-02-04
for you to fetch changes up to 00e4483399bd57c9b49f8e79c9aacf0024193536:
travis.yml: Prevent 'script' from premature exit (2020-02-04 07:56:37 +0100)
----------------------------------------------------------------
* s390x smp patches from Janosch
* Updates for the gitlab and Travis CI
----------------------------------------------------------------
Janosch Frank (7):
s390x: smp: Cleanup smp.c
s390x: smp: Fix ecall and emcall report strings
s390x: Stop the cpu that is executing exit()
s390x: Add cpu id to interrupt error prints
s390x: smp: Only use smp_cpu_setup once
s390x: smp: Rework cpu start and active tracking
s390x: smp: Wait for cpu setup to finish
Thomas Huth (1):
gitlab-ci.yml: Remove ioapic from the x86 tests
Wainer dos Santos Moschetta (1):
travis.yml: Prevent 'script' from premature exit
.gitlab-ci.yml | 2 +-
.travis.yml | 3 +-
lib/s390x/interrupt.c | 20 ++++++-------
lib/s390x/io.c | 2 +-
lib/s390x/smp.c | 59 +++++++++++++++++++++++--------------
s390x/cstart64.S | 2 ++
s390x/smp.c | 80 +++++++++++++++++++++++++++++++--------------------
7 files changed, 102 insertions(+), 66 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 1/9] s390x: smp: Cleanup smp.c
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 2/9] s390x: smp: Fix ecall and emcall report strings Thomas Huth
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Janosch Frank
From: Janosch Frank <frankja@linux.ibm.com>
Let's remove a lot of badly formatted code by introducing the
wait_for_flag() and set_flag functions.
Also let's remove some stray spaces and always set the testflag before
using it.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Message-Id: <20200201152851.82867-2-frankja@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
s390x/smp.c | 55 ++++++++++++++++++++++++++++++++---------------------
1 file changed, 33 insertions(+), 22 deletions(-)
diff --git a/s390x/smp.c b/s390x/smp.c
index ab7e46c..e37eb56 100644
--- a/s390x/smp.c
+++ b/s390x/smp.c
@@ -22,6 +22,19 @@
static int testflag = 0;
+static void wait_for_flag(void)
+{
+ while (!testflag)
+ mb();
+}
+
+static void set_flag(int val)
+{
+ mb();
+ testflag = val;
+ mb();
+}
+
static void cpu_loop(void)
{
for (;;) {}
@@ -29,21 +42,19 @@ static void cpu_loop(void)
static void test_func(void)
{
- testflag = 1;
- mb();
+ set_flag(1);
cpu_loop();
}
static void test_start(void)
{
struct psw psw;
- psw.mask = extract_psw_mask();
+ psw.mask = extract_psw_mask();
psw.addr = (unsigned long)test_func;
+ set_flag(0);
smp_cpu_setup(1, psw);
- while (!testflag) {
- mb();
- }
+ wait_for_flag();
report(1, "start");
}
@@ -112,27 +123,27 @@ static void ecall(void)
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
load_psw_mask(mask);
- testflag = 1;
+ set_flag(1);
while (lc->ext_int_code != 0x1202) { mb(); }
report(1, "ecall");
- testflag= 1;
+ set_flag(1);
}
static void test_ecall(void)
{
struct psw psw;
- psw.mask = extract_psw_mask();
+ psw.mask = extract_psw_mask();
psw.addr = (unsigned long)ecall;
report_prefix_push("ecall");
- testflag= 0;
+ set_flag(0);
smp_cpu_destroy(1);
smp_cpu_setup(1, psw);
- while (!testflag) { mb(); }
- testflag= 0;
+ wait_for_flag();
+ set_flag(0);
sigp(1, SIGP_EXTERNAL_CALL, 0, NULL);
- while(!testflag) {mb();}
+ wait_for_flag();
smp_cpu_stop(1);
report_prefix_pop();
}
@@ -147,27 +158,27 @@ static void emcall(void)
mask = extract_psw_mask();
mask |= PSW_MASK_EXT;
load_psw_mask(mask);
- testflag= 1;
+ set_flag(1);
while (lc->ext_int_code != 0x1201) { mb(); }
report(1, "ecall");
- testflag = 1;
+ set_flag(1);
}
static void test_emcall(void)
{
struct psw psw;
- psw.mask = extract_psw_mask();
+ psw.mask = extract_psw_mask();
psw.addr = (unsigned long)emcall;
report_prefix_push("emcall");
- testflag= 0;
+ set_flag(0);
smp_cpu_destroy(1);
smp_cpu_setup(1, psw);
- while (!testflag) { mb(); }
- testflag= 0;
+ wait_for_flag();
+ set_flag(0);
sigp(1, SIGP_EMERGENCY_SIGNAL, 0, NULL);
- while(!testflag) { mb(); }
+ wait_for_flag();
smp_cpu_stop(1);
report_prefix_pop();
}
@@ -177,7 +188,7 @@ static void test_reset_initial(void)
struct cpu_status *status = alloc_pages(0);
struct psw psw;
- psw.mask = extract_psw_mask();
+ psw.mask = extract_psw_mask();
psw.addr = (unsigned long)test_func;
report_prefix_push("reset initial");
@@ -208,7 +219,7 @@ static void test_reset(void)
{
struct psw psw;
- psw.mask = extract_psw_mask();
+ psw.mask = extract_psw_mask();
psw.addr = (unsigned long)test_func;
report_prefix_push("cpu reset");
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 2/9] s390x: smp: Fix ecall and emcall report strings
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 1/9] s390x: smp: Cleanup smp.c Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 3/9] s390x: Stop the cpu that is executing exit() Thomas Huth
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Janosch Frank
From: Janosch Frank <frankja@linux.ibm.com>
Instead of "smp: ecall: ecall" we now get "smp: ecall: received".
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Message-Id: <20200201152851.82867-3-frankja@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
s390x/smp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/s390x/smp.c b/s390x/smp.c
index e37eb56..93a9594 100644
--- a/s390x/smp.c
+++ b/s390x/smp.c
@@ -125,7 +125,7 @@ static void ecall(void)
load_psw_mask(mask);
set_flag(1);
while (lc->ext_int_code != 0x1202) { mb(); }
- report(1, "ecall");
+ report(1, "received");
set_flag(1);
}
@@ -160,7 +160,7 @@ static void emcall(void)
load_psw_mask(mask);
set_flag(1);
while (lc->ext_int_code != 0x1201) { mb(); }
- report(1, "ecall");
+ report(1, "received");
set_flag(1);
}
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 3/9] s390x: Stop the cpu that is executing exit()
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 1/9] s390x: smp: Cleanup smp.c Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 2/9] s390x: smp: Fix ecall and emcall report strings Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 4/9] s390x: Add cpu id to interrupt error prints Thomas Huth
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Janosch Frank
From: Janosch Frank <frankja@linux.ibm.com>
CPU 0 is not necessarily the CPU which does the exit if we ran into a
test abort situation. So, let's ask stap() which cpu does the exit and
stop it on exit.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Message-Id: <20200201152851.82867-4-frankja@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
lib/s390x/io.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/s390x/io.c b/lib/s390x/io.c
index 32f09b5..e091c37 100644
--- a/lib/s390x/io.c
+++ b/lib/s390x/io.c
@@ -46,6 +46,6 @@ void exit(int code)
smp_teardown();
printf("\nEXIT: STATUS=%d\n", ((code) << 1) | 1);
while (1) {
- sigp(0, SIGP_STOP, 0, NULL);
+ sigp(stap(), SIGP_STOP, 0, NULL);
}
}
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 4/9] s390x: Add cpu id to interrupt error prints
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
` (2 preceding siblings ...)
2020-02-04 7:13 ` [kvm-unit-tests PULL 3/9] s390x: Stop the cpu that is executing exit() Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 5/9] s390x: smp: Only use smp_cpu_setup once Thomas Huth
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Janosch Frank
From: Janosch Frank <frankja@linux.ibm.com>
It's good to know which cpu broke the test.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20200201152851.82867-5-frankja@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
lib/s390x/interrupt.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/lib/s390x/interrupt.c b/lib/s390x/interrupt.c
index ccb376a..3a40cac 100644
--- a/lib/s390x/interrupt.c
+++ b/lib/s390x/interrupt.c
@@ -109,8 +109,8 @@ void handle_pgm_int(void)
if (!pgm_int_expected) {
/* Force sclp_busy to false, otherwise we will loop forever */
sclp_handle_ext();
- report_abort("Unexpected program interrupt: %d at %#lx, ilen %d\n",
- lc->pgm_int_code, lc->pgm_old_psw.addr,
+ report_abort("Unexpected program interrupt: %d on cpu %d at %#lx, ilen %d\n",
+ lc->pgm_int_code, stap(), lc->pgm_old_psw.addr,
lc->pgm_int_id);
}
@@ -122,8 +122,8 @@ void handle_ext_int(void)
{
if (!ext_int_expected &&
lc->ext_int_code != EXT_IRQ_SERVICE_SIG) {
- report_abort("Unexpected external call interrupt (code %#x): at %#lx",
- lc->ext_int_code, lc->ext_old_psw.addr);
+ report_abort("Unexpected external call interrupt (code %#x): on cpu %d at %#lx",
+ lc->ext_int_code, stap(), lc->ext_old_psw.addr);
return;
}
@@ -140,18 +140,18 @@ void handle_ext_int(void)
void handle_mcck_int(void)
{
- report_abort("Unexpected machine check interrupt: at %#lx",
- lc->mcck_old_psw.addr);
+ report_abort("Unexpected machine check interrupt: on cpu %d at %#lx",
+ stap(), lc->mcck_old_psw.addr);
}
void handle_io_int(void)
{
- report_abort("Unexpected io interrupt: at %#lx",
- lc->io_old_psw.addr);
+ report_abort("Unexpected io interrupt: on cpu %d at %#lx",
+ stap(), lc->io_old_psw.addr);
}
void handle_svc_int(void)
{
- report_abort("Unexpected supervisor call interrupt: at %#lx",
- lc->svc_old_psw.addr);
+ report_abort("Unexpected supervisor call interrupt: on cpu %d at %#lx",
+ stap(), lc->svc_old_psw.addr);
}
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 5/9] s390x: smp: Only use smp_cpu_setup once
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
` (3 preceding siblings ...)
2020-02-04 7:13 ` [kvm-unit-tests PULL 4/9] s390x: Add cpu id to interrupt error prints Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 6/9] s390x: smp: Rework cpu start and active tracking Thomas Huth
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Janosch Frank
From: Janosch Frank <frankja@linux.ibm.com>
Let's stop and start instead of using setup to run a function on a
cpu.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Acked-by: David Hildenbrand <david@redhat.com>
Message-Id: <20200201152851.82867-6-frankja@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
s390x/smp.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/s390x/smp.c b/s390x/smp.c
index 93a9594..fa40753 100644
--- a/s390x/smp.c
+++ b/s390x/smp.c
@@ -53,7 +53,7 @@ static void test_start(void)
psw.addr = (unsigned long)test_func;
set_flag(0);
- smp_cpu_setup(1, psw);
+ smp_cpu_start(1, psw);
wait_for_flag();
report(1, "start");
}
@@ -109,6 +109,7 @@ static void test_store_status(void)
report(1, "status written");
free_pages(status, PAGE_SIZE * 2);
report_prefix_pop();
+ smp_cpu_stop(1);
report_prefix_pop();
}
@@ -137,9 +138,8 @@ static void test_ecall(void)
report_prefix_push("ecall");
set_flag(0);
- smp_cpu_destroy(1);
- smp_cpu_setup(1, psw);
+ smp_cpu_start(1, psw);
wait_for_flag();
set_flag(0);
sigp(1, SIGP_EXTERNAL_CALL, 0, NULL);
@@ -172,9 +172,8 @@ static void test_emcall(void)
report_prefix_push("emcall");
set_flag(0);
- smp_cpu_destroy(1);
- smp_cpu_setup(1, psw);
+ smp_cpu_start(1, psw);
wait_for_flag();
set_flag(0);
sigp(1, SIGP_EMERGENCY_SIGNAL, 0, NULL);
@@ -192,7 +191,7 @@ static void test_reset_initial(void)
psw.addr = (unsigned long)test_func;
report_prefix_push("reset initial");
- smp_cpu_setup(1, psw);
+ smp_cpu_start(1, psw);
sigp_retry(1, SIGP_INITIAL_CPU_RESET, 0, NULL);
sigp(1, SIGP_STORE_STATUS_AT_ADDRESS, (uintptr_t)status, NULL);
@@ -223,7 +222,7 @@ static void test_reset(void)
psw.addr = (unsigned long)test_func;
report_prefix_push("cpu reset");
- smp_cpu_setup(1, psw);
+ smp_cpu_start(1, psw);
sigp_retry(1, SIGP_CPU_RESET, 0, NULL);
report(smp_cpu_stopped(1), "cpu stopped");
@@ -232,6 +231,7 @@ static void test_reset(void)
int main(void)
{
+ struct psw psw;
report_prefix_push("smp");
if (smp_query_num_cpus() == 1) {
@@ -239,6 +239,12 @@ int main(void)
goto done;
}
+ /* Setting up the cpu to give it a stack and lowcore */
+ psw.mask = extract_psw_mask();
+ psw.addr = (unsigned long)cpu_loop;
+ smp_cpu_setup(1, psw);
+ smp_cpu_stop(1);
+
test_start();
test_stop();
test_stop_store_status();
@@ -247,6 +253,7 @@ int main(void)
test_emcall();
test_reset();
test_reset_initial();
+ smp_cpu_destroy(1);
done:
report_prefix_pop();
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 6/9] s390x: smp: Rework cpu start and active tracking
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
` (4 preceding siblings ...)
2020-02-04 7:13 ` [kvm-unit-tests PULL 5/9] s390x: smp: Only use smp_cpu_setup once Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 7/9] s390x: smp: Wait for cpu setup to finish Thomas Huth
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Janosch Frank
From: Janosch Frank <frankja@linux.ibm.com>
The architecture specifies that processing sigp orders may be
asynchronous, and this is indeed the case on some hypervisors, so we
need to wait until the cpu runs before we return from the setup/start
function.
As there was a lot of duplicate code, a common function for cpu
restarts has been introduced.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20200201152851.82867-7-frankja@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
lib/s390x/smp.c | 56 ++++++++++++++++++++++++++++++-------------------
1 file changed, 35 insertions(+), 21 deletions(-)
diff --git a/lib/s390x/smp.c b/lib/s390x/smp.c
index f57f420..4578003 100644
--- a/lib/s390x/smp.c
+++ b/lib/s390x/smp.c
@@ -104,35 +104,52 @@ int smp_cpu_stop_store_status(uint16_t addr)
return rc;
}
+static int smp_cpu_restart_nolock(uint16_t addr, struct psw *psw)
+{
+ int rc;
+ struct cpu *cpu = smp_cpu_from_addr(addr);
+
+ if (!cpu)
+ return -1;
+ if (psw) {
+ cpu->lowcore->restart_new_psw.mask = psw->mask;
+ cpu->lowcore->restart_new_psw.addr = psw->addr;
+ }
+ /*
+ * Stop the cpu, so we don't have a race between a running cpu
+ * and the restart in the test that checks if the cpu is
+ * running after the restart.
+ */
+ smp_cpu_stop_nolock(addr, false);
+ rc = sigp(addr, SIGP_RESTART, 0, NULL);
+ if (rc)
+ return rc;
+ /*
+ * The order has been accepted, but the actual restart may not
+ * have been performed yet, so wait until the cpu is running.
+ */
+ while (!smp_cpu_running(addr))
+ mb();
+ cpu->active = true;
+ return 0;
+}
+
int smp_cpu_restart(uint16_t addr)
{
- int rc = -1;
- struct cpu *cpu;
+ int rc;
spin_lock(&lock);
- cpu = smp_cpu_from_addr(addr);
- if (cpu) {
- rc = sigp(addr, SIGP_RESTART, 0, NULL);
- cpu->active = true;
- }
+ rc = smp_cpu_restart_nolock(addr, NULL);
spin_unlock(&lock);
return rc;
}
int smp_cpu_start(uint16_t addr, struct psw psw)
{
- int rc = -1;
- struct cpu *cpu;
- struct lowcore *lc;
+ int rc;
spin_lock(&lock);
- cpu = smp_cpu_from_addr(addr);
- if (cpu) {
- lc = cpu->lowcore;
- lc->restart_new_psw.mask = psw.mask;
- lc->restart_new_psw.addr = psw.addr;
- rc = sigp(addr, SIGP_RESTART, 0, NULL);
- }
+ rc = smp_cpu_restart_nolock(addr, &psw);
spin_unlock(&lock);
return rc;
}
@@ -192,10 +209,7 @@ int smp_cpu_setup(uint16_t addr, struct psw psw)
lc->sw_int_crs[0] = 0x0000000000040000UL;
/* Start processing */
- rc = sigp_retry(cpu->addr, SIGP_RESTART, 0, NULL);
- if (!rc)
- cpu->active = true;
-
+ smp_cpu_restart_nolock(addr, NULL);
out:
spin_unlock(&lock);
return rc;
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 7/9] s390x: smp: Wait for cpu setup to finish
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
` (5 preceding siblings ...)
2020-02-04 7:13 ` [kvm-unit-tests PULL 6/9] s390x: smp: Rework cpu start and active tracking Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 8/9] gitlab-ci.yml: Remove ioapic from the x86 tests Thomas Huth
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Janosch Frank
From: Janosch Frank <frankja@linux.ibm.com>
We store the user provided psw address into restart new, so a psw
restart does not lead us through setup again.
Also we wait on smp_cpu_setup() until the cpu has finished setup
before returning. This is necessary for z/VM and LPAR where sigp is
asynchronous.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20200201152851.82867-8-frankja@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
lib/s390x/smp.c | 3 +++
s390x/cstart64.S | 2 ++
2 files changed, 5 insertions(+)
diff --git a/lib/s390x/smp.c b/lib/s390x/smp.c
index 4578003..3f86243 100644
--- a/lib/s390x/smp.c
+++ b/lib/s390x/smp.c
@@ -210,6 +210,9 @@ int smp_cpu_setup(uint16_t addr, struct psw psw)
/* Start processing */
smp_cpu_restart_nolock(addr, NULL);
+ /* Wait until the cpu has finished setup and started the provided psw */
+ while (lc->restart_new_psw.addr != psw.addr)
+ mb();
out:
spin_unlock(&lock);
return rc;
diff --git a/s390x/cstart64.S b/s390x/cstart64.S
index 86dd4c4..9af6bb3 100644
--- a/s390x/cstart64.S
+++ b/s390x/cstart64.S
@@ -159,6 +159,8 @@ smp_cpu_setup_state:
xgr %r1, %r1
lmg %r0, %r15, GEN_LC_SW_INT_GRS
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
pgm_int:
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 8/9] gitlab-ci.yml: Remove ioapic from the x86 tests
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
` (6 preceding siblings ...)
2020-02-04 7:13 ` [kvm-unit-tests PULL 7/9] s390x: smp: Wait for cpu setup to finish Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 9/9] travis.yml: Prevent 'script' from premature exit Thomas Huth
2020-02-05 14:58 ` [kvm-unit-tests PULL 0/9] s390x and CI patches Paolo Bonzini
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david
The test recently started to fail (likely do to a recent change to
"x86/ioapic.c). According to Nitesh, it's not required to keep this
test running with TCG, and we already check it with KVM on Travis,
so let's simply disable it here now.
Message-Id: <20191205151610.19299-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
.gitlab-ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cf3264d..3093239 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -64,7 +64,7 @@ build-x86_64:
- ./configure --arch=x86_64
- make -j2
- ACCEL=tcg ./run_tests.sh
- ioapic-split ioapic smptest smptest3 vmexit_cpuid vmexit_mov_from_cr8
+ smptest smptest3 vmexit_cpuid vmexit_mov_from_cr8
vmexit_mov_to_cr8 vmexit_inl_pmtimer vmexit_ipi vmexit_ipi_halt
vmexit_ple_round_robin vmexit_tscdeadline vmexit_tscdeadline_immed
eventinj msr port80 setjmp syscall tsc rmap_chain umip intel_iommu
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [kvm-unit-tests PULL 9/9] travis.yml: Prevent 'script' from premature exit
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
` (7 preceding siblings ...)
2020-02-04 7:13 ` [kvm-unit-tests PULL 8/9] gitlab-ci.yml: Remove ioapic from the x86 tests Thomas Huth
@ 2020-02-04 7:13 ` Thomas Huth
2020-02-05 14:58 ` [kvm-unit-tests PULL 0/9] s390x and CI patches Paolo Bonzini
9 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2020-02-04 7:13 UTC (permalink / raw)
To: kvm, Paolo Bonzini; +Cc: david, Wainer dos Santos Moschetta
From: Wainer dos Santos Moschetta <wainersm@redhat.com>
The 'script' section finishes its execution prematurely whenever
a shell's exit is called. If the intention is to force
Travis to flag a build/test failure then the correct approach
is erroring any command statement. In this change, it combines
the grep's in a single AND statement that in case of false
Travis will interpret as a build error.
Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Message-Id: <20200115144610.41655-1-wainersm@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
.travis.yml | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 091d071..f0cfc82 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -119,5 +119,4 @@ before_script:
script:
- make -j3
- ACCEL="${ACCEL:-tcg}" ./run_tests.sh -v $TESTS | tee results.txt
- - if grep -q FAIL results.txt ; then exit 1 ; fi
- - if ! grep -q PASS results.txt ; then exit 1 ; fi
+ - grep -q PASS results.txt && ! grep -q FAIL results.txt
--
2.18.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [kvm-unit-tests PULL 0/9] s390x and CI patches
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
` (8 preceding siblings ...)
2020-02-04 7:13 ` [kvm-unit-tests PULL 9/9] travis.yml: Prevent 'script' from premature exit Thomas Huth
@ 2020-02-05 14:58 ` Paolo Bonzini
9 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2020-02-05 14:58 UTC (permalink / raw)
To: Thomas Huth, kvm; +Cc: david
On 04/02/20 08:13, Thomas Huth wrote:
> https://gitlab.com/huth/kvm-unit-tests.git tags/s390x-2020-02-04
Pulled, thanks.
Paolo
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-02-05 14:58 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-04 7:13 [kvm-unit-tests PULL 0/9] s390x and CI patches Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 1/9] s390x: smp: Cleanup smp.c Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 2/9] s390x: smp: Fix ecall and emcall report strings Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 3/9] s390x: Stop the cpu that is executing exit() Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 4/9] s390x: Add cpu id to interrupt error prints Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 5/9] s390x: smp: Only use smp_cpu_setup once Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 6/9] s390x: smp: Rework cpu start and active tracking Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 7/9] s390x: smp: Wait for cpu setup to finish Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 8/9] gitlab-ci.yml: Remove ioapic from the x86 tests Thomas Huth
2020-02-04 7:13 ` [kvm-unit-tests PULL 9/9] travis.yml: Prevent 'script' from premature exit Thomas Huth
2020-02-05 14:58 ` [kvm-unit-tests PULL 0/9] s390x and CI patches Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox