Hi Akira, Thanks a lot for commenting on the patch. Just sent the patch version 2. Cheers! --Jason On Tue, May 16, 2017 at 11:05 PM, Akira Yokosawa <akiyks@xxxxxxxxx> wrote: > On 2017/05/16 22:04:59 +0800, Junchang Wang wrote: >> Hi Paul and Akira, >> >> This is the updated patch according to the discussion with Akira and >> following is the summary. Please take a look. Comments are welcome! >> >> In function eventual( ), if the value of stopflag become larger than >> zero (the ''if'' branch is taken), then only the "eventual()" thread >> updates stopflag. So, the READ_ONCE() within the WRITE_ONCE() is not >> necessary. Remove it. >> In function count_cleanup( ), there is no need to run smp_mb( ) in >> between statement writing to and statement reading from the same >> variable, stopflag. Remove smp_mb(). >> >> >> Thanks, >> --Jason >> >> On Tue, May 16, 2017 at 9:40 PM, Junchang Wang <junchangwang@xxxxxxxxx> wrote: >>> Signed-off-by: Junchang Wang <junchangwang@xxxxxxxxx> >>> Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx> > > Hi Jason, > > Glad to know you agree with me here! > > Can you resubmit a v2 of the patch to include the message above in the commit > log? It would be easier for Paul to apply. > Also, since I didn't created the patch itself, I'd like you to use the following > tag instead: > > Suggested-by: Akira Yokosawa <akiyks@xxxxxxxxx> > > in front of your Signed-off-by. > > Thanks, Akira > >>> --- >>> CodeSamples/count/count_stat_eventual.c | 8 ++++---- >>> 1 file changed, 4 insertions(+), 4 deletions(-) >>> >>> diff --git a/CodeSamples/count/count_stat_eventual.c b/CodeSamples/count/count_stat_eventual.c >>> index 464de30..1365168 100644 >>> --- a/CodeSamples/count/count_stat_eventual.c >>> +++ b/CodeSamples/count/count_stat_eventual.c >>> @@ -40,16 +40,17 @@ void *eventual(void *arg) >>> { >>> int t; >>> unsigned long sum; >>> + int stopflag_l = 0; >>> >>> - while (READ_ONCE(stopflag) < 3) { >>> + while (stopflag_l < 3) { >>> sum = 0; >>> for_each_thread(t) >>> sum += READ_ONCE(per_thread(counter, t)); >>> WRITE_ONCE(global_count, sum); >>> poll(NULL, 0, 1); >>> - if (READ_ONCE(stopflag)) { >>> + if ((stopflag_l = READ_ONCE(stopflag)) != 0) { >>> smp_mb(); >>> - WRITE_ONCE(stopflag, READ_ONCE(stopflag) + 1); >>> + WRITE_ONCE(stopflag, ++stopflag_l); >>> } >>> } >>> return NULL; >>> @@ -68,7 +69,6 @@ void count_init(void) >>> void count_cleanup(void) >>> { >>> WRITE_ONCE(stopflag, 1); >>> - smp_mb(); >>> while (READ_ONCE(stopflag) < 3) >>> poll(NULL, 0, 1); >>> smp_mb(); >>> -- >>> 2.7.4 >>> >> > -- To unsubscribe from this list: send the line "unsubscribe perfbook" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html