On Sun, Jul 22, 2018 at 18:45:05 +0300, Konstantin Belousov wrote: > On Sun, Jul 22, 2018 at 01:01:16AM +0000, Li-Wen Hsu wrote: > > On Sun, Jul 22, 2018 at 02:18:32 +0300, Konstantin Belousov wrote: > > > On Sat, Jul 21, 2018 at 02:16:17AM +0000, jenkins-admin_at_FreeBSD.org wrote: > > > > --- lib/ofed/libmlx5__L --- > > > > In file included from /workspace/src/contrib/ofed/libmlx5/mlx5.h:44:0, > > > > from /workspace/src/contrib/ofed/libmlx5/buf.c:42: > > > > /workspace/obj/workspace/src/riscv.riscv64/tmp/usr/include/infiniband/udma_barrier.h:108:2: error: #error No architecture specific memory barrier defines found! > > > > #error No architecture specific memory barrier defines found! > > > > ^~~~~ > > > > > > The patch below should be enough to fix the build, modulo the syntax > > > errors which I cannot check. The reason is that it seems riscv is not > > > cross-buildable from stable/11 host: > > > --- includes_subdir_include/rpcsvc --- > > > RPCGEN_CPP=cpp\ -target\ riscv64-unknown-freebsd12.0\ --sysroot=/usr/home/konstantinb/build/bsd/DEV/obj/usr/home/konstantinb/build/bsd/DEV/src/riscv.riscv64/tmp\ -B/usr/local rpcgen -C -h -DWANT_NFS3 /usr/home/konstantinb/build/bsd/DEV/src/include/rpcsvc/klm_prot.x -o klm_prot.h > > > --- key_prot.h --- > > > error: unknown target triple 'riscv64-unknown-freebsd12.0', please use -triple or -arch > > > *** [key_prot.h] Error code 1 > > > > > > make[4]: stopped in /usr/home/konstantinb/build/bsd/DEV/src/include/rpcsvc > > > > > > So if somebody who care about riscv and can build the world could > > > confirm the fix, I will commit it. > > > > > > diff --git a/contrib/ofed/include/udma_barrier.h b/contrib/ofed/include/udma_barrier.h > > > index 71d264f8dce..6709d4433a7 100644 > > > --- a/contrib/ofed/include/udma_barrier.h > > > +++ b/contrib/ofed/include/udma_barrier.h > > > _at__at_ -104,6 +104,10 _at__at_ > > > #include <sys/types.h> > > > #include <machine/atomic.h> > > > #define udma_to_device_barrier() dmb() > > > +#elif defined(__riscv__) > > > +#include <sys/types.h> > > > +#include <machine/atomic.h> > > > +#define udma_to_device_barrier() fence() > > > #else > > > #error No architecture specific memory barrier defines found! > > > #endif > > > > Thanks for looking into this. Attached patch is slightly modified. > > RISC-V is using __riscv and there are few more atomic macros need to be > > defined. > Well, the arch(7) manpage documents __riscv__. Compilers typically > provide both __XXX__ and __XXX, while FreeBSD traditionally uses > the __XXX__ form. Please check r322168, __riscv__ is replaced by __riscv and __riscv64 is replaced by (__riscv && __riscv_xlen == 64). Details are in the commit message. Alghough I grep'd sys/ and there are some __riscv__ still existing: sys/vm/vm_unix.c:72:#if !defined(__aarch64__) && !defined(__riscv__) sys/vm/vm_unix.c:81:#else /* defined(__aarch64__) || defined(__riscv__) */ sys/vm/vm_unix.c:83:#endif /* defined(__aarch64__) || defined(__riscv__) */ I guess those also need changing, as well as arch(7) > With that change, I think that your patch should go in regardless of > the second issue below. Thanks, please commit or approve it. > > > > However this seems not enough, there are some c++ errors which may take > > longer to fix: > > > > In file included from /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/cma.h:43:0, > > from /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/acm.c:42: > > /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/cma.h: In function 'fastlock_init': > > /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/cma.h:60:2: error: invalid initializer > > atomic_store(&lock->cnt, 0); > > ^ > > In file included from /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/acm.c:42:0: > > /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/cma.h: In function 'fastlock_acquire': > > /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/cma.h:68:2: error: operand type 'struct <anonymous> *' is incompatible with argument 1 of '__atomic_fetch_add' > > if (atomic_fetch_add(&lock->cnt, 1) > 0) > > ^~ > > /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/cma.h: In function 'fastlock_release': > > /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmacm/cma.h:73:2: error: operand type 'struct <anonymous> *' is incompatible with argument 1 of '__atomic_fetch_sub' > > if (atomic_fetch_sub(&lock->cnt, 1) > 1) > > ^~ > > *** [acm.o] Error code 1 > > > > make[6]: stopped in /usr/home/lwhsu/freebsd-src/lib/ofed/librdmacm > I will look at this later, but it seems that linuxkpi is not ported. > I will disable OFED on RISC-V. Thanks, I think this is the right way to go for now. > > > > > > BTW, stable/11 should be fine to cross-build riscv64, this job uses > > 11.2-RELEASE and riscv64-xtoolchain-gcc package, with > > CROSS_TOOLCHAIN=riscv64-gcc defined. > > > > > > Best, > > Li-Wen > > > > -- > > Li-Wen Hsu <lwhsu_at_FreeBSD.org> > > https://lwhsu.org > > > Index: contrib/ofed/include/udma_barrier.h > > =================================================================== > > --- contrib/ofed/include/udma_barrier.h (revision 336593) > > +++ contrib/ofed/include/udma_barrier.h (working copy) > > _at__at_ -104,6 +104,10 _at__at_ > > #include <sys/types.h> > > #include <machine/atomic.h> > > #define udma_to_device_barrier() dmb() > > +#elif defined(__riscv) > > +#include <sys/types.h> > > +#include <machine/atomic.h> > > +#define udma_to_device_barrier() fence() > > #else > > #error No architecture specific memory barrier defines found! > > #endif > > _at__at_ -140,6 +144,8 _at__at_ > > #define udma_from_device_barrier() mips_sync() > > #elif defined(__arm__) > > #define udma_from_device_barrier() dmb() > > +#elif defined(__riscv) > > +#define udma_from_device_barrier() fence() > > #else > > #error No architecture specific memory barrier defines found! > > #endif > > _at__at_ -208,6 +214,8 _at__at_ > > #define mmio_flush_writes() mips_sync() > > #elif defined(__arm__) > > #define mmio_flush_writes() dmb() > > +#elif defined(__riscv) > > +#define mmio_flush_writes() fence() > > #else > > #error No architecture specific memory barrier defines found! > > #endif >
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:17 UTC