From: "Michael S. Tsirkin" <mst@redhat.com>
To: Richard Earnshaw <Richard.Earnshaw@arm.com>
Cc: "kbuild-all@lists.01.org" <kbuild-all@lists.01.org>,
kbuild test robot <lkp@intel.com>,
"christophe.lyon@st.com" <christophe.lyon@st.com>,
Jason Wang <jasowang@redhat.com>,
"richard.henderson@linaro.org" <richard.henderson@linaro.org>,
"daniel.santos@pobox.com" <daniel.santos@pobox.com>,
Russell King <rmk+kernel@armlinux.org.uk>,
Ard Biesheuvel <ardb@kernel.org>,
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 07:43:42 -0400 [thread overview]
Message-ID: <20200406073637-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <c29c95aa-aeec-2333-5927-58ec764769db@arm.com>
On Mon, Apr 06, 2020 at 11:56:24AM +0100, Richard Earnshaw wrote:
> On 06/04/2020 11:49, Ard Biesheuvel wrote:
> > On Mon, 6 Apr 2020 at 12:38, Michael S. Tsirkin <mst@redhat.com> wrote:
> >>
> >> 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 ...
> >
> > Ah right, I missed that apcs-gnu is the ancient OABI that is been
> > deprecated for a long time.
> >
> > Given that virtio support on such ancient systems is not needed in the
> > first place, let's just add something along the lines of
> >
> > depends on !ARM || AEABI
> >
> > to the virtio Kconfig declaration, and add a comment that it has to do
> > with struct member alignment.
>
> apcs-gnu is deprecated. The plan is to remove it entirely in the not
> too distant future now that all platforms that previously used it have
> migrated to the aapcs.
Problem is that the default ARM build still uses that. That includes
the kbuild infrastructure.
> R.
> IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-04-06 11:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <202004050718.B9NaFC2U%lkp@intel.com>
[not found] ` <20200405045709-mutt-send-email-mst@kernel.org>
2020-04-05 16:43 ` [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 Michael S. Tsirkin
2020-04-06 10:00 ` Ard Biesheuvel
2020-04-06 10:38 ` Michael S. Tsirkin
2020-04-06 10:49 ` Ard Biesheuvel
2020-04-06 10:56 ` Richard Earnshaw
2020-04-06 11:43 ` Michael S. Tsirkin [this message]
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=20200406073637-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=Richard.Earnshaw@arm.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.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).