linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: kbuild test robot <lkp@intel.com>
Cc: kbuild-all@lists.01.org, Jason Wang <jasowang@redhat.com>,
	daniel.santos@pobox.com,
	Russell King <rmk+kernel@armlinux.org.uk>,
	Ard Biesheuvel <ardb@kernel.org>,
	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: Sun, 5 Apr 2020 12:43:53 -0400	[thread overview]
Message-ID: <20200405123905-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20200405045709-mutt-send-email-mst@kernel.org>

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.




> > vim +/__compiletime_assert_1533 +350 include/linux/compiler.h
> > 
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  336  
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  337  #define _compiletime_assert(condition, msg, prefix, suffix) \
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  338  	__compiletime_assert(condition, msg, prefix, suffix)
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  339  
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  340  /**
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  341   * compiletime_assert - break build and emit msg if condition is false
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  342   * @condition: a compile-time constant condition to check
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  343   * @msg:       a message to emit if condition is false
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  344   *
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  345   * In tradition of POSIX assert, this macro will break the build if the
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  346   * supplied condition is *false*, emitting the supplied error message if the
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  347   * compiler has support to do so.
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  348   */
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  349  #define compiletime_assert(condition, msg) \
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21 @350  	_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> > 9a8ab1c39970a4 Daniel Santos 2013-02-21  351  
> > 
> > :::::: The code at line 350 was first introduced by commit
> > :::::: 9a8ab1c39970a4938a72d94e6fd13be88a797590 bug.h, compiler.h: introduce compiletime_assert & BUILD_BUG_ON_MSG
> > 
> > :::::: TO: Daniel Santos <daniel.santos@pobox.com>
> > :::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
> > 
> > ---
> > 0-DAY CI Kernel Test Service, Intel Corporation
> > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> 
> 


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

       reply	other threads:[~2020-04-05 16:44 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   ` Michael S. Tsirkin [this message]
2020-04-06 10:00     ` [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 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
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=20200405123905-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=ardb@kernel.org \
    --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=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).