All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: richard.earnshaw@arm.com, kbuild-all@lists.01.org,
	kbuild test robot <lkp@intel.com>,
	christophe.lyon@st.com, Jason Wang <jasowang@redhat.com>,
	richard.henderson@linaro.org, daniel.santos@pobox.com,
	Russell King <rmk+kernel@armlinux.org.uk>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [linux-next:master 12804/13809] include/linux/compiler.h:350:38: error: call to '__compiletime_assert_1533' declared with attribute error: BUILD_BUG_ON failed: __alignof__ *vq->avail > VRING_AVAIL_ALIGN_SIZE
Date: Mon, 6 Apr 2020 06:38:26 -0400	[thread overview]
Message-ID: <20200406061817-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <CAMj1kXGUru9K-z4JB6tBrgu9S4_5grPpkkSfe3ZfwB-SrGrPvg@mail.gmail.com>

On Mon, Apr 06, 2020 at 12:00:36PM +0200, Ard Biesheuvel wrote:
> (adding some ARM GCC folks)
> 
> 
> On Sun, 5 Apr 2020 at 18:44, Michael S. Tsirkin <mst@redhat.com> wrote:
> >
> > Hello!
> > I would appreciate ARM maintainers take on the following
> > (sorry if I forgot someone, pls feel free to add people to CC):
> >
> >
> > On Sun, Apr 05, 2020 at 05:01:01AM -0400, Michael S. Tsirkin wrote:
> > > On Sun, Apr 05, 2020 at 07:57:24AM +0800, kbuild test robot wrote:
> > > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > > > head:   dff79597431045a775f2e5d4d9de31bfa0d32a34
> > > > commit: 20c384f1ea1a0bc7320bc445c72dd02d2970d594 [12804/13809] vhost: refine vhost and vringh kconfig
> > > > config: arm-randconfig-a001-20200405 (attached as .config)
> > > > compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
> > > > reproduce:
> > > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > > >         chmod +x ~/bin/make.cross
> > > >         git checkout 20c384f1ea1a0bc7320bc445c72dd02d2970d594
> > > >         # save the attached .config to linux build tree
> > > >         GCC_VERSION=9.3.0 make.cross ARCH=arm
> > > >
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kbuild test robot <lkp@intel.com>
> > > >
> > > > All error/warnings (new ones prefixed by >>):
> > > >
> > > >    In file included from include/linux/kernel.h:11,
> > > >                     from include/linux/list.h:9,
> > > >                     from include/linux/preempt.h:11,
> > > >                     from include/linux/spinlock.h:51,
> > > >                     from include/linux/seqlock.h:36,
> > > >                     from include/linux/time.h:6,
> > > >                     from include/linux/stat.h:19,
> > > >                     from include/linux/fcntl.h:5,
> > > >                     from include/linux/eventfd.h:12,
> > > >                     from drivers/vhost/vhost.c:13:
> > > >    In function 'vhost_vring_set_addr',
> > > >        inlined from 'vhost_vring_set_num_addr' at drivers/vhost/vhost.c:1581:7,
> > > >        inlined from 'vhost_vring_ioctl' at drivers/vhost/vhost.c:1614:10:
> > > > >> include/linux/compiler.h:350:38: error: call to '__compiletime_assert_1533' declared with attribute error: BUILD_BUG_ON failed: __alignof__ *vq->avail > VRING_AVAIL_ALIGN_SIZE
> > > >      350 |  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> > > >          |                                      ^
> > > >    include/linux/compiler.h:331:4: note: in definition of macro '__compiletime_assert'
> > > >      331 |    prefix ## suffix();    \
> > > >          |    ^~~~~~
> > > >    include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert'
> > > >      350 |  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> > > >          |  ^~~~~~~~~~~~~~~~~~~
> > > >    include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
> > > >       39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
> > > >          |                                     ^~~~~~~~~~~~~~~~~~
> > > >    include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
> > > >       50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
> > > >          |  ^~~~~~~~~~~~~~~~
> > > > >> drivers/vhost/vhost.c:1533:2: note: in expansion of macro 'BUILD_BUG_ON'
> > > >     1533 |  BUILD_BUG_ON(__alignof__ *vq->avail > VRING_AVAIL_ALIGN_SIZE);
> > > >          |  ^~~~~~~~~~~~
> > >
> > > This compiler seems to be broken. We have:
> > > #define VRING_AVAIL_ALIGN_SIZE 2
> > > and
> > >
> > >         struct vring_avail __user *avail;
> > >
> > > and
> > > struct vring_avail {
> > >         __virtio16 flags;
> > >         __virtio16 idx;
> > >         __virtio16 ring[];
> > > };
> > >
> > > A compiler that decides to require alignment of > 2 bytes on
> > > a struct of packed u16's is likely broken in a bunch of other
> > > ways that just happen not to trigger a BUILD_BUG.
> > >
> > >
> > > The commit referenced just enables build on more platforms ...
> >
> > OK after some research, it seems that the issue triggers with
> > latest gcc too.
> > To trigger it, supply -mabi=apcs-gnu on command line.
> >
> > Dropping  -mabi=apcs-gnu fixes the build.
> >
> > I am still researching this flag.
> >
> 
> Is there a difference between __alignof__ *vq->avail and
> __alignof__(struct vring_avail) ?

Yes, the same.
I found this:
https://stackoverflow.com/questions/43786747/struct-layout-in-apcs-gnu-abi

Not sure how to interpret it ...
-- 
MST


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Michael S. Tsirkin <mst@redhat.com>
To: kbuild-all@lists.01.org
Subject: Re: [linux-next:master 12804/13809] include/linux/compiler.h:350:38: error: call to '__compiletime_assert_1533' declared with attribute error: BUILD_BUG_ON failed: __alignof__ *vq->avail > VRING_AVAIL_ALIGN_SIZE
Date: Mon, 06 Apr 2020 06:38:26 -0400	[thread overview]
Message-ID: <20200406061817-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <CAMj1kXGUru9K-z4JB6tBrgu9S4_5grPpkkSfe3ZfwB-SrGrPvg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4791 bytes --]

On Mon, Apr 06, 2020 at 12:00:36PM +0200, Ard Biesheuvel wrote:
> (adding some ARM GCC folks)
> 
> 
> On Sun, 5 Apr 2020 at 18:44, Michael S. Tsirkin <mst@redhat.com> wrote:
> >
> > Hello!
> > I would appreciate ARM maintainers take on the following
> > (sorry if I forgot someone, pls feel free to add people to CC):
> >
> >
> > On Sun, Apr 05, 2020 at 05:01:01AM -0400, Michael S. Tsirkin wrote:
> > > On Sun, Apr 05, 2020 at 07:57:24AM +0800, kbuild test robot wrote:
> > > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > > > head:   dff79597431045a775f2e5d4d9de31bfa0d32a34
> > > > commit: 20c384f1ea1a0bc7320bc445c72dd02d2970d594 [12804/13809] vhost: refine vhost and vringh kconfig
> > > > config: arm-randconfig-a001-20200405 (attached as .config)
> > > > compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
> > > > reproduce:
> > > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > > >         chmod +x ~/bin/make.cross
> > > >         git checkout 20c384f1ea1a0bc7320bc445c72dd02d2970d594
> > > >         # save the attached .config to linux build tree
> > > >         GCC_VERSION=9.3.0 make.cross ARCH=arm
> > > >
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kbuild test robot <lkp@intel.com>
> > > >
> > > > All error/warnings (new ones prefixed by >>):
> > > >
> > > >    In file included from include/linux/kernel.h:11,
> > > >                     from include/linux/list.h:9,
> > > >                     from include/linux/preempt.h:11,
> > > >                     from include/linux/spinlock.h:51,
> > > >                     from include/linux/seqlock.h:36,
> > > >                     from include/linux/time.h:6,
> > > >                     from include/linux/stat.h:19,
> > > >                     from include/linux/fcntl.h:5,
> > > >                     from include/linux/eventfd.h:12,
> > > >                     from drivers/vhost/vhost.c:13:
> > > >    In function 'vhost_vring_set_addr',
> > > >        inlined from 'vhost_vring_set_num_addr' at drivers/vhost/vhost.c:1581:7,
> > > >        inlined from 'vhost_vring_ioctl' at drivers/vhost/vhost.c:1614:10:
> > > > >> include/linux/compiler.h:350:38: error: call to '__compiletime_assert_1533' declared with attribute error: BUILD_BUG_ON failed: __alignof__ *vq->avail > VRING_AVAIL_ALIGN_SIZE
> > > >      350 |  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> > > >          |                                      ^
> > > >    include/linux/compiler.h:331:4: note: in definition of macro '__compiletime_assert'
> > > >      331 |    prefix ## suffix();    \
> > > >          |    ^~~~~~
> > > >    include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert'
> > > >      350 |  _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> > > >          |  ^~~~~~~~~~~~~~~~~~~
> > > >    include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
> > > >       39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
> > > >          |                                     ^~~~~~~~~~~~~~~~~~
> > > >    include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
> > > >       50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
> > > >          |  ^~~~~~~~~~~~~~~~
> > > > >> drivers/vhost/vhost.c:1533:2: note: in expansion of macro 'BUILD_BUG_ON'
> > > >     1533 |  BUILD_BUG_ON(__alignof__ *vq->avail > VRING_AVAIL_ALIGN_SIZE);
> > > >          |  ^~~~~~~~~~~~
> > >
> > > This compiler seems to be broken. We have:
> > > #define VRING_AVAIL_ALIGN_SIZE 2
> > > and
> > >
> > >         struct vring_avail __user *avail;
> > >
> > > and
> > > struct vring_avail {
> > >         __virtio16 flags;
> > >         __virtio16 idx;
> > >         __virtio16 ring[];
> > > };
> > >
> > > A compiler that decides to require alignment of > 2 bytes on
> > > a struct of packed u16's is likely broken in a bunch of other
> > > ways that just happen not to trigger a BUILD_BUG.
> > >
> > >
> > > The commit referenced just enables build on more platforms ...
> >
> > OK after some research, it seems that the issue triggers with
> > latest gcc too.
> > To trigger it, supply -mabi=apcs-gnu on command line.
> >
> > Dropping  -mabi=apcs-gnu fixes the build.
> >
> > I am still researching this flag.
> >
> 
> Is there a difference between __alignof__ *vq->avail and
> __alignof__(struct vring_avail) ?

Yes, the same.
I found this:
https://stackoverflow.com/questions/43786747/struct-layout-in-apcs-gnu-abi

Not sure how to interpret it ...
-- 
MST

  reply	other threads:[~2020-04-06 10:38 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-04 23:57 [linux-next:master 12804/13809] include/linux/compiler.h:350:38: error: call to '__compiletime_assert_1533' declared with attribute error: BUILD_BUG_ON failed: __alignof__ *vq->avail > VRING_AVAIL_ALIGN_SIZE kbuild test robot
2020-04-05  9:00 ` Michael S. Tsirkin
2020-04-05 16:43   ` Michael S. Tsirkin
2020-04-05 16:43     ` Michael S. Tsirkin
2020-04-06 10:00     ` Ard Biesheuvel
2020-04-06 10:00       ` Ard Biesheuvel
2020-04-06 10:38       ` Michael S. Tsirkin [this message]
2020-04-06 10:38         ` Michael S. Tsirkin
2020-04-06 10:49         ` Ard Biesheuvel
2020-04-06 10:49           ` Ard Biesheuvel
2020-04-06 10:56           ` Richard Earnshaw
2020-04-06 10:56             ` Richard Earnshaw
2020-04-06 11:43             ` Michael S. Tsirkin
2020-04-06 11:43               ` Michael S. Tsirkin
2020-04-06 11:36           ` Michael S. Tsirkin
2020-04-06 11:36             ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200406061817-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=ardb@kernel.org \
    --cc=christophe.lyon@st.com \
    --cc=daniel.santos@pobox.com \
    --cc=jasowang@redhat.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=lkp@intel.com \
    --cc=richard.earnshaw@arm.com \
    --cc=richard.henderson@linaro.org \
    --cc=rmk+kernel@armlinux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.