Message ID | 20200116120513.2244-2-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: smp: Improve smp code and reset checks | expand |
On 16.01.20 13:05, Janosch Frank wrote: > Let's remove a lot of badly formatted code by introducing the > wait_for_flag() function. > > Also let's remove some stray spaces. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > Reviewed-by: Thomas Huth <thuth@redhat.com> > Reviewed-by: Cornelia Huck <cohuck@redhat.com> > --- > s390x/smp.c | 42 ++++++++++++++++++++++++------------------ > 1 file changed, 24 insertions(+), 18 deletions(-) > > diff --git a/s390x/smp.c b/s390x/smp.c > index ab7e46c..02204fd 100644 > --- a/s390x/smp.c > +++ b/s390x/smp.c > @@ -22,6 +22,13 @@ > > static int testflag = 0; > > +static void wait_for_flag(void) > +{ > + while (!testflag) { > + mb(); > + } > +} > + > static void cpu_loop(void) > { > for (;;) {} > @@ -37,13 +44,11 @@ static void test_func(void) > static void test_start(void) > { > struct psw psw; > - psw.mask = extract_psw_mask(); > + psw.mask = extract_psw_mask(); > psw.addr = (unsigned long)test_func; > > smp_cpu_setup(1, psw); > - while (!testflag) { > - mb(); > - } > + wait_for_flag(); > report(1, "start"); > } > > @@ -98,6 +103,7 @@ static void test_store_status(void) > report(1, "status written"); > free_pages(status, PAGE_SIZE * 2); > report_prefix_pop(); > + smp_cpu_stop(1); This hunk does not seem to belong into this patch. Apart from that, looks good to me.
On 1/16/20 1:13 PM, David Hildenbrand wrote: > On 16.01.20 13:05, Janosch Frank wrote: >> Let's remove a lot of badly formatted code by introducing the >> wait_for_flag() function. >> >> Also let's remove some stray spaces. >> >> Signed-off-by: Janosch Frank <frankja@linux.ibm.com> >> Reviewed-by: Thomas Huth <thuth@redhat.com> >> Reviewed-by: Cornelia Huck <cohuck@redhat.com> >> --- >> s390x/smp.c | 42 ++++++++++++++++++++++++------------------ >> 1 file changed, 24 insertions(+), 18 deletions(-) >> >> diff --git a/s390x/smp.c b/s390x/smp.c >> index ab7e46c..02204fd 100644 >> --- a/s390x/smp.c >> +++ b/s390x/smp.c >> @@ -22,6 +22,13 @@ >> >> static int testflag = 0; >> >> +static void wait_for_flag(void) >> +{ >> + while (!testflag) { >> + mb(); >> + } >> +} >> + >> static void cpu_loop(void) >> { >> for (;;) {} >> @@ -37,13 +44,11 @@ static void test_func(void) >> static void test_start(void) >> { >> struct psw psw; >> - psw.mask = extract_psw_mask(); >> + psw.mask = extract_psw_mask(); >> psw.addr = (unsigned long)test_func; >> >> smp_cpu_setup(1, psw); >> - while (!testflag) { >> - mb(); >> - } >> + wait_for_flag(); >> report(1, "start"); >> } >> >> @@ -98,6 +103,7 @@ static void test_store_status(void) >> report(1, "status written"); >> free_pages(status, PAGE_SIZE * 2); >> report_prefix_pop(); >> + smp_cpu_stop(1); > > This hunk does not seem to belong into this patch. > > Apart from that, looks good to me. Hunk was moved to the next patch and I pushed the branch
diff --git a/s390x/smp.c b/s390x/smp.c index ab7e46c..02204fd 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -22,6 +22,13 @@ static int testflag = 0; +static void wait_for_flag(void) +{ + while (!testflag) { + mb(); + } +} + static void cpu_loop(void) { for (;;) {} @@ -37,13 +44,11 @@ static void test_func(void) static void test_start(void) { struct psw psw; - psw.mask = extract_psw_mask(); + psw.mask = extract_psw_mask(); psw.addr = (unsigned long)test_func; smp_cpu_setup(1, psw); - while (!testflag) { - mb(); - } + wait_for_flag(); report(1, "start"); } @@ -98,6 +103,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(); } @@ -115,24 +121,24 @@ static void ecall(void) testflag = 1; while (lc->ext_int_code != 0x1202) { mb(); } report(1, "ecall"); - testflag= 1; + testflag = 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; + testflag = 0; smp_cpu_destroy(1); smp_cpu_setup(1, psw); - while (!testflag) { mb(); } - testflag= 0; + wait_for_flag(); + testflag = 0; sigp(1, SIGP_EXTERNAL_CALL, 0, NULL); - while(!testflag) {mb();} + wait_for_flag(); smp_cpu_stop(1); report_prefix_pop(); } @@ -147,7 +153,7 @@ static void emcall(void) mask = extract_psw_mask(); mask |= PSW_MASK_EXT; load_psw_mask(mask); - testflag= 1; + testflag = 1; while (lc->ext_int_code != 0x1201) { mb(); } report(1, "ecall"); testflag = 1; @@ -156,18 +162,18 @@ static void emcall(void) 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; + testflag = 0; smp_cpu_destroy(1); smp_cpu_setup(1, psw); - while (!testflag) { mb(); } - testflag= 0; + wait_for_flag(); + testflag = 0; sigp(1, SIGP_EMERGENCY_SIGNAL, 0, NULL); - while(!testflag) { mb(); } + wait_for_flag(); smp_cpu_stop(1); report_prefix_pop(); } @@ -177,7 +183,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 +214,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");