All of lore.kernel.org
 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

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: Sun, 05 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>

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

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(a)lists.01.org
> 
> 

  reply	other threads:[~2020-04-05 16:44 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 [this message]
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
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=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 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.