@@ -33,6 +33,7 @@ static void wait_for_sclp_int(void)
*/
static void test_wait_state_delivery(void)
{
+ uint16_t cpu1, cpu2;
struct psw psw;
SCCBHeader *h;
int ret;
@@ -44,16 +45,14 @@ static void test_wait_state_delivery(void)
goto out;
}
- if (stap()) {
- report_skip("need to start on CPU #0");
- goto out;
- }
+ cpu1 = smp_cpu_addr_from_idx(1);
+ cpu2 = smp_cpu_addr_from_idx(2);
/*
* We want CPU #2 to be stopped. This should be the case at this
* point, however, we want to sense if it even exists as well.
*/
- ret = smp_cpu_stop(2);
+ ret = smp_cpu_stop(cpu2);
if (ret) {
report_skip("CPU #2 not found");
goto out;
@@ -68,10 +67,10 @@ static void test_wait_state_delivery(void)
/* Start CPU #1 and let it wait for the interrupt. */
psw.mask = extract_psw_mask();
psw.addr = (unsigned long)wait_for_sclp_int;
- ret = smp_cpu_setup(1, psw);
+ ret = smp_cpu_setup(cpu1, psw);
if (ret) {
sclp_clear_busy();
- report_skip("cpu #1 not found");
+ report_skip("CPU #1 not found");
goto out;
}
@@ -85,7 +84,7 @@ static void test_wait_state_delivery(void)
* will take some time as well and smp_cpu_setup() returns when we're
* either already in wait_for_sclp_int() or just about to execute it.
*/
- while(smp_sense_running_status(1));
+ while(smp_sense_running_status(cpu1));
h = alloc_pages_flags(0, AREA_DMA31);
h->length = 4096;
@@ -106,7 +105,7 @@ static void test_wait_state_delivery(void)
out_destroy:
free_page(h);
- smp_cpu_destroy(1);
+ smp_cpu_destroy(cpu1);
out:
report_prefix_pop();
}
Use the recently introduced smp_cpu_addr_from_idx to discover the addresses of the CPUs to use in the test, instead of using hardcoded values. This makes the test more portable. Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> --- s390x/firq.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-)