On 2017/06/03 13:20:28 -0700, Paul E. McKenney wrote: > On Sat, Jun 03, 2017 at 04:01:39PM +0900, Akira Yokosawa wrote: >> >From 7c151a100ef7d6c30259a966c68c45421edd7707 Mon Sep 17 00:00:00 2001 >> From: Akira Yokosawa <akiyks@xxxxxxxxx> >> Date: Sat, 3 Jun 2017 13:32:49 +0900 >> Subject: [PATCH 0/2] CodeSamples: Fixes for ppc64 >> >> Hi Paul, >> >> With the help of you, I now have an access to a ppc64 instance on >> OSU Open Source Lab. >> >> I tried to build under CodeSamples/ there. >> But I needed to fix dependency rules I updated recently. >> Also, script for ppc64 in Makefile failed to copy >> api-pthreads/api-gcc.h to api.h. >> Patch 1 fixes them. >> >> Patch 2 removes GCC flags specific to POWER5, and update links >> to pages with regard to optimization for POWER. >> >> And there are a few things I want to confirm regarding CodeSamples. >> >> (1) Is libucru a must now? >> >> If it is the case, we should remove "else" blocks in Makefile >> which copu linux/list.h to api.h. > > These were put in place because old versions of liburcu didn't support > lists. I would guess that there still are some distros using those > old versions, but if not, then you are right that there would be no > point in keeping the "else" blocks. > I asked this because without liburcu installed, build fails with errors and warnings saying: > cc -g -O3 -Wall -g -o lockdeq -DTEST lockdeq.c -lpthread > lockdeq.c:70:23: error: field 'chain' has incomplete type > struct cds_list_head chain; > ^ > lockdeq.c: In function 'init_pdeq': > lockdeq.c:103:3: warning: implicit declaration of function 'CDS_INIT_LIST_HEAD' [-Wimplicit-function-declaration] > CDS_INIT_LIST_HEAD(&d->bkt[i].chain); > ^ > lockdeq.c: In function 'pdeq_pop_l': > lockdeq.c:117:6: warning: implicit declaration of function 'cds_list_empty' [-Wimplicit-function-declaration] > if (cds_list_empty(&p->chain)) > ^ > lockdeq.c:121:3: warning: implicit declaration of function 'cds_list_del' [-Wimplicit-function-declaration] > cds_list_del(e); > ^ > lockdeq.c: In function 'pdeq_push_l': > lockdeq.c:162:2: warning: implicit declaration of function 'cds_list_add_tail' [-Wimplicit-function-declaration] > cds_list_add_tail(e, &p->chain); > ^ > lockdeq.c: In function 'pdeq_push_r': > lockdeq.c:177:2: warning: implicit declaration of function 'cds_list_add' [-Wimplicit-function-declaration] > cds_list_add(e, &p->chain); > ^ > In file included from lockdeq.c:184:0: > deqtorture.h: At top level: > deqtorture.h:24:23: error: field 'l' has incomplete type > struct cds_list_head l; > ^ > deqtorture.h: In function 'concurrent_ppop': > deqtorture.h:110:8: warning: implicit declaration of function 'cds_list_entry' [-Wimplicit-function-declaration] > p1 = cds_list_entry(p0, struct deq_elem, l); > ^ > deqtorture.h:110:27: error: expected expression before 'struct' > p1 = cds_list_entry(p0, struct deq_elem, l); > ^ > deqtorture.h: In function 'simple_deq_perf': > deqtorture.h:359:23: error: storage size of 'd' isn't known > struct cds_list_head d; > ^ > deqtorture.h:359:23: warning: unused variable 'd' [-Wunused-variable] > deqtorture.h: In function 'getdata': > deqtorture.h:477:27: error: expected expression before 'struct' > return cds_list_entry(p, struct deq_elem, l)->data; > ^ > deqtorture.h: In function 'main': > deqtorture.h:483:26: warning: variable 'e3' set but not used [-Wunused-but-set-variable] > struct deq_elem e1, e2, e3; > ^ > deqtorture.h:483:22: warning: variable 'e2' set but not used [-Wunused-but-set-variable] > struct deq_elem e1, e2, e3; > ^ > deqtorture.h:483:18: warning: variable 'e1' set but not used [-Wunused-but-set-variable] > struct deq_elem e1, e2, e3; > ^ > deqtorture.h: In function 'getdata': > deqtorture.h:478:1: warning: control reaches end of non-void function [-Wreturn-type] > } > ^ > Makefile:35: recipe for target 'lockdeq' failed > make[1]: *** [lockdeq] Error 1 Can you look into this? I suppose linux/list.h needs some update. >> (2) Is little endian assuemed? >> >> You suggested to choose ppc64le for the instance on OSU Open Source Lab. >> Is there any code that doesn't work on big-endian platform? > > Things should work on both big-endian and on little-endian. But > Power is slowly shifting from big-endian to little-endian, so I > figured we should look to the future rather than the past. > > Hmmm... Do you have access to some big-endian Linux system? Maybe > a SPARC or some such? No. I asked because if it is known to not work on big-endian, I thought "make" should spit some warning. And I didn't know Ubuntu's POWER support is only for ppc64le... So, never mind. > >> (3) Can we remove gprof-helper.c? >> >> Although I fixed the entry in .gitignore the other day, gprof-helper.c >> lives in the repository from the beginning. Can we get rid of it? > > It was necessary long ago, but it has been one long time since I used > gprof. I tend to use perf instead. So no objection here to removing it. I see. I'll submit a patch to do so. > >> Thanks, Akira >> -- >> Akira Yokosawa (2): >> CodeSamples: Fixes for build on ppc64le >> CodeSamples: Remove cpu specific flag for ppc64 > > Queued and pushed, thank you! BTW, I can create an account for you on the OSUOSL instance (Ubuntu 16.04). I believe you have accesses to ppc64, but having another would do no harm. Let me know your SSH public key if you'd like to. Thanks, Akira > > Thanx, Paul > >> CodeSamples/Makefile | 2 ++ >> CodeSamples/arch-ppc64/Makefile.arch | 7 +++++-- >> CodeSamples/depends.mk | 2 ++ >> 3 files changed, 9 insertions(+), 2 deletions(-) >> >> -- >> 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