FreeBSD-head-riscv64-build - Build #9623 (r336573) - Failure
Konstantin Belousov
kostikbel at gmail.com
Sun Jul 22 15:45:19 UTC 2018
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
> > @@ -104,6 +104,10 @@
> > #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.
With that change, I think that your patch should go in regardless of
the second issue below.
>
> 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.
>
>
> 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)
> @@ -104,6 +104,10 @@
> #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
> @@ -140,6 +144,8 @@
> #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
> @@ -208,6 +214,8 @@
> #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
More information about the freebsd-current
mailing list