[linux-next:master 14213/14656] arch/s390/include/asm/atomic_ops.h:56:45: error: invalid operand for inline asm constraint 'i'

3 views
Skip to first unread message

kernel test robot

unread,
Aug 13, 2020, 7:32:32 AM8/13/20
to Vasily Gorbik, kbuil...@lists.01.org, clang-bu...@googlegroups.com, Heiko Carstens
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: e6d113aca646fb6a92b237340109237fd7a9c770
commit: f0cbd3b83ed47803df941865f720934c69abb803 [14213/14656] s390/atomic: circumvent gcc 10 build regression
config: s390-randconfig-r012-20200813 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 62ef1cb2079123b86878e4bfed3c14db448f1373)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
git checkout f0cbd3b83ed47803df941865f720934c69abb803
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=s390

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All errors (new ones prefixed by >>):

In file included from drivers/tty/tty_buffer.c:8:
In file included from include/linux/tty.h:5:
In file included from include/linux/fs.h:6:
In file included from include/linux/wait_bit.h:8:
In file included from include/linux/wait.h:7:
In file included from include/linux/list.h:9:
In file included from include/linux/kernel.h:12:
In file included from include/linux/bitops.h:29:
In file included from arch/s390/include/asm/bitops.h:39:
>> arch/s390/include/asm/atomic_ops.h:56:45: error: invalid operand for inline asm constraint 'i'
__ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
^
1 error generated.

vim +/i +56 arch/s390/include/asm/atomic_ops.h

126b30c3cb476ce Martin Schwidefsky 2016-11-11 51
eb3b7b848fb3dd0 Martin Schwidefsky 2017-03-24 52 #define __ATOMIC_CONST_OPS(op_name, op_type, op_string) \
eb3b7b848fb3dd0 Martin Schwidefsky 2017-03-24 53 __ATOMIC_CONST_OP(op_name, op_type, op_string, "\n") \
eb3b7b848fb3dd0 Martin Schwidefsky 2017-03-24 54 __ATOMIC_CONST_OP(op_name##_barrier, op_type, op_string, "bcr 14,0\n")
eb3b7b848fb3dd0 Martin Schwidefsky 2017-03-24 55
eb3b7b848fb3dd0 Martin Schwidefsky 2017-03-24 @56 __ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
eb3b7b848fb3dd0 Martin Schwidefsky 2017-03-24 57 __ATOMIC_CONST_OPS(__atomic64_add_const, long, "agsi")
eb3b7b848fb3dd0 Martin Schwidefsky 2017-03-24 58

:::::: The code at line 56 was first introduced by commit
:::::: eb3b7b848fb3dd00f7a57d633d4ae4d194aa7865 s390/rwlock: introduce rwlock wait queueing

:::::: TO: Martin Schwidefsky <schwi...@de.ibm.com>
:::::: CC: Martin Schwidefsky <schwi...@de.ibm.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuil...@lists.01.org
.config.gz

kernel test robot

unread,
Aug 20, 2020, 3:35:01 AM8/20/20
to Vasily Gorbik, kbuil...@lists.01.org, clang-bu...@googlegroups.com, linux-...@vger.kernel.org, Heiko Carstens
Hi Vasily,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 18445bf405cb331117bc98427b1ba6f12418ad17
commit: f0cbd3b83ed47803df941865f720934c69abb803 s390/atomic: circumvent gcc 10 build regression
date: 9 days ago
config: s390-randconfig-r003-20200818 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 4deda57106f7c9b982a49cb907c33e3966c8de7f)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
git checkout f0cbd3b83ed47803df941865f720934c69abb803
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=s390

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All errors (new ones prefixed by >>):

In file included from drivers/tty/tty_buffer.c:8:
In file included from include/linux/tty.h:5:
In file included from include/linux/fs.h:6:
In file included from include/linux/wait_bit.h:8:
In file included from include/linux/wait.h:7:
In file included from include/linux/list.h:9:
In file included from include/linux/kernel.h:12:
In file included from include/linux/bitops.h:29:
In file included from arch/s390/include/asm/bitops.h:39:
>> arch/s390/include/asm/atomic_ops.h:56:45: error: invalid operand for inline asm constraint 'i'
__ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
^
1 error generated.

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f0cbd3b83ed47803df941865f720934c69abb803
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout f0cbd3b83ed47803df941865f720934c69abb803
vim +/i +56 arch/s390/include/asm/atomic_ops.h

126b30c3cb476c Martin Schwidefsky 2016-11-11 51
eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 52 #define __ATOMIC_CONST_OPS(op_name, op_type, op_string) \
eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 53 __ATOMIC_CONST_OP(op_name, op_type, op_string, "\n") \
eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 54 __ATOMIC_CONST_OP(op_name##_barrier, op_type, op_string, "bcr 14,0\n")
eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 55
eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 @56 __ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 57 __ATOMIC_CONST_OPS(__atomic64_add_const, long, "agsi")
eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 58
.config.gz

Nick Desaulniers

unread,
Aug 21, 2020, 9:13:25 PM8/21/20
to Ulrich Weigand, Vasily Gorbik, kbuil...@lists.01.org, clang-built-linux, LKML, Heiko Carstens
It might be interesting to dissect this one. Likely will break the
build otherwise.

> 1 error generated.
>
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f0cbd3b83ed47803df941865f720934c69abb803
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout f0cbd3b83ed47803df941865f720934c69abb803
> vim +/i +56 arch/s390/include/asm/atomic_ops.h
>
> 126b30c3cb476c Martin Schwidefsky 2016-11-11 51
> eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 52 #define __ATOMIC_CONST_OPS(op_name, op_type, op_string) \
> eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 53 __ATOMIC_CONST_OP(op_name, op_type, op_string, "\n") \
> eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 54 __ATOMIC_CONST_OP(op_name##_barrier, op_type, op_string, "bcr 14,0\n")
> eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 55
> eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 @56 __ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
> eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 57 __ATOMIC_CONST_OPS(__atomic64_add_const, long, "agsi")
> eb3b7b848fb3dd Martin Schwidefsky 2017-03-24 58
>
> :::::: The code at line 56 was first introduced by commit
> :::::: eb3b7b848fb3dd00f7a57d633d4ae4d194aa7865 s390/rwlock: introduce rwlock wait queueing
>
> :::::: TO: Martin Schwidefsky <schwi...@de.ibm.com>
> :::::: CC: Martin Schwidefsky <schwi...@de.ibm.com>
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuil...@lists.01.org
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-li...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/202008201500.aOkzA3ZM%25lkp%40intel.com.



--
Thanks,
~Nick Desaulniers

Ulrich Weigand

unread,
Aug 26, 2020, 12:01:05 PM8/26/20
to Nick Desaulniers, clang-built-linux, Vasily Gorbik, Heiko Carstens, kbuil...@lists.01.org, LKML

Nick Desaulniers <ndesau...@google.com> wrote on 22.08.2020 03:13:13:

> >    In file included from drivers/tty/tty_buffer.c:8:
> >    In file included from include/linux/tty.h:5:
> >    In file included from include/linux/fs.h:6:
> >    In file included from include/linux/wait_bit.h:8:
> >    In file included from include/linux/wait.h:7:
> >    In file included from include/linux/list.h:9:
> >    In file included from include/linux/kernel.h:12:
> >    In file included from include/linux/bitops.h:29:
> >    In file included from arch/s390/include/asm/bitops.h:39:
> > >> arch/s390/include/asm/atomic_ops.h:56:45: error: invalid
> operand for inline asm constraint 'i'
> >    __ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
> >                                                ^
>
> It might be interesting to dissect this one.  Likely will break the
> build otherwise.

Do you have a standalone test case?  This seems to work fine for me
with current clang:

define __always_inline                 inline __attribute__((__always_inline__))

#define __ATOMIC_CONST_OP(op_name, op_type, op_string, op_barrier)      \
static __always_inline void op_name(op_type val, op_type *ptr)          \
{                                                                       \
        asm volatile(                                                   \
                op_string "     %[ptr],%[val]\n"                        \
                op_barrier                                              \
                : [ptr] "+Q" (*ptr) : [val] "i" (val) : "cc", "memory");\
}

#define __ATOMIC_CONST_OPS(op_name, op_type, op_string)                 \


        __ATOMIC_CONST_OP(op_name, op_type, op_string, "\n")            \

        __ATOMIC_CONST_OP(op_name##_barrier, op_type, op_string, "bcr 14,0\n")

__ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
__ATOMIC_CONST_OPS(__atomic64_add_const, long, "agsi")

void test (int *x)
{
  __atomic_add_const(123, x);
}


Bye,
Ulrich

Reply all
Reply to author
Forward
0 new messages