Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Jul 2018 18:16:02 +0100
From:      Li-Wen Hsu <lwhsu@freebsd.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        current@freebsd.org, br@freebsd.org
Subject:   Re: FreeBSD-head-riscv64-build - Build #9623 (r336573) - Failure
Message-ID:  <20180722171601.GA25771@x1c.lwhsu.org>
In-Reply-To: <20180722154505.GE65334@kib.kiev.ua>
References:  <941706773.1.1532139392496.JavaMail.jenkins@jenkins.ci.freebsd.org> <20180721231832.GC65334@kib.kiev.ua> <20180722010116.GA13419@freefall.freebsd.org> <20180722154505.GE65334@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help

--CE+1k2dSO48ffgeK
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

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@FreeBSD.org w=
rote:
> > > > --- 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/infiniba=
nd/udma_barrier.h:108:2: error: #error No architecture specific memory barr=
ier defines found!
> > > >  #error No architecture specific memory barrier defines found!
> > > >   ^~~~~
> > >=20
> > > 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=3Dcpp\ -target\ riscv64-unknown-freebsd12.0\ --sysroot=3D/=
usr/home/konstantinb/build/bsd/DEV/obj/usr/home/konstantinb/build/bsd/DEV/s=
rc/riscv.riscv64/tmp\ -B/usr/local rpcgen -C -h -DWANT_NFS3 /usr/home/konst=
antinb/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 us=
e -triple or -arch
> > > *** [key_prot.h] Error code 1
> > >=20
> > > make[4]: stopped in /usr/home/konstantinb/build/bsd/DEV/src/include/r=
pcsvc
> > >=20
> > > So if somebody who care about riscv and can build the world could
> > > confirm the fix, I will commit it.
> > >=20
> > > diff --git a/contrib/ofed/include/udma_barrier.h b/contrib/ofed/inclu=
de/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
> >=20
> > 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 =3D=3D 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.

> >=20
> > However this seems not enough, there are some c++ errors which may take
> > longer to fix:
> >=20
> > In file included from /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmac=
m/cma.h:43:0,
> >                  from /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmac=
m/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: i=
nvalid initializer
> >   atomic_store(&lock->cnt, 0);
> >   ^
> > In file included from /usr/home/lwhsu/freebsd-src/contrib/ofed/librdmac=
m/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: o=
perand type 'struct <anonymous> *' is incompatible with argument 1 of '__at=
omic_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: o=
perand type 'struct <anonymous> *' is incompatible with argument 1 of '__at=
omic_fetch_sub'
> >   if (atomic_fetch_sub(&lock->cnt, 1) > 1)
> >   ^~
> > *** [acm.o] Error code 1
> >=20
> > 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.

> >=20
> >=20
> > BTW, stable/11 should be fine to cross-build riscv64, this job uses
> > 11.2-RELEASE and riscv64-xtoolchain-gcc package, with
> > CROSS_TOOLCHAIN=3Driscv64-gcc defined.
> >=20
> >=20
> > Best,
> > Li-Wen
> >=20
> > --=20
> > Li-Wen Hsu <lwhsu@FreeBSD.org>
> > https://lwhsu.org
>=20
> > Index: contrib/ofed/include/udma_barrier.h
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > --- 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
>=20

--CE+1k2dSO48ffgeK
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEwJe+rporMbugMm8ojXvMfQEv034FAltUu8dfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEMw
OTdCRUFFOUEyQjMxQkJBMDMyNkYyODhEN0JDQzdEMDEyRkQzN0UACgkQjXvMfQEv
036WmBAA0OxxqHdhAYucJsDcVcACWp2bCshSWZbr3MFTg6YUfJiNp9yH4wyS5BME
e/DzVnQpm1CRJ+ohv6dP8Lsrse0VZmhUQ3fQlAUGE10ecFuurT75DyJLHWkTC919
f2Ka3bwHsB0g8f7eiqCjiO4j3+0IGQEdnqmo7AiAFhQXHKfWSOJSE5X5Bbns/C9/
ZJVs5W+jgrtFWwTyfIEuC0U0Kykl4LBa3Qby0HKyesP3ulAEUwN7Pm8QCyGYn7Kk
NewDzYe7wy4LAnUoh0qklo+U2aFpde7j2uXWWLhw0nEuTbvGTumhz2A9kFHTgfCv
W7YRFGu2gx1ydnzH0YMonDkOiIp5ZdKrko0jvoDiKgvCnDgy3eiPfHtU7eNNP0oV
1MDxF5yh1fZ4zYhFhXwssAgK2cmMdLebMn8C7L659zcgZquLu44TQRJTx6uQwVB/
snPqGoN1vKDHzlzFf5ActYtlVG5UTGOS59w4KMrggM1zS0rrvKkUq7OKgh3Pgsly
UePzKnmwgiEHCGTYsiUczUSM2EnNiFhNRK96E0TRILAxti9+XC0XkPZKCxkGUWkW
4j04Lj6p3gw9glrGioc3CDXp/Zidu0eqVz8NmB3chlljZVGprCjlNv9GumT2Rxvj
vUNxotkHt95Pon7L/yzO9UbBGACRYq0+7FMvR6CozzJ8N/buqfE=
=T5vG
-----END PGP SIGNATURE-----

--CE+1k2dSO48ffgeK--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180722171601.GA25771>