All of lore.kernel.org
 help / color / mirror / Atom feed
* [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
@ 2016-07-29 21:04 kbuild test robot
  2016-07-31 12:11 ` Michal Hocko
  0 siblings, 1 reply; 9+ messages in thread
From: kbuild test robot @ 2016-07-29 21:04 UTC (permalink / raw)
  Cc: kbuild-all, linux-mm, Michal Hocko, Jason Baron, Andrew Morton

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git auto-latest
head:   a7bf930624bb1d3368b71b79c5e3351b5d03aa9f
commit: 966a2c66863bb2d984b9b49aee271de502cf8747 [238/243] dynamic_debug: add jump label support
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 5.4.0-6) 5.4.0 20160609
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 966a2c66863bb2d984b9b49aee271de502cf8747
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   In file included from include/linux/compiler.h:58:0,
                    from include/linux/linkage.h:4,
                    from include/linux/kernel.h:6,
                    from drivers/crypto/ux500/cryp/cryp_irq.c:11:
   arch/arm/include/asm/jump_label.h: In function 'cryp_enable_irq_src':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cryp_disable_irq_src':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
--
   In file included from include/linux/compiler.h:58:0,
                    from include/linux/err.h:4,
                    from include/linux/clk.h:15,
                    from drivers/crypto/ux500/cryp/cryp_core.c:12:
   arch/arm/include/asm/jump_label.h: In function 'cryp_interrupt_handler':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cfg_iv':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cfg_ivs':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'set_key':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cfg_keys':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cryp_get_device_data':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cryp_dma_out_callback':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cryp_set_dma_transfer':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cryp_dma_done':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   arch/arm/include/asm/jump_label.h: In function 'cryp_dma_write':
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
                                         ^
   arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
     asm_volatile_goto("1:\n\t"
     ^
   include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
    #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)

vim +/asm +243 include/linux/compiler-gcc.h

a744fd17 Rasmus Villemoes 2015-11-05  227   * returning extra information in the low bits (but in that case the
a744fd17 Rasmus Villemoes 2015-11-05  228   * compiler should see some alignment anyway, when the return value is
a744fd17 Rasmus Villemoes 2015-11-05  229   * massaged by 'flags = ptr & 3; ptr &= ~3;').
a744fd17 Rasmus Villemoes 2015-11-05  230   */
a744fd17 Rasmus Villemoes 2015-11-05  231  #define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
a744fd17 Rasmus Villemoes 2015-11-05  232  #endif
a744fd17 Rasmus Villemoes 2015-11-05  233  
cb984d10 Joe Perches      2015-06-25  234  /*
cb984d10 Joe Perches      2015-06-25  235   * GCC 'asm goto' miscompiles certain code sequences:
cb984d10 Joe Perches      2015-06-25  236   *
cb984d10 Joe Perches      2015-06-25  237   *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
cb984d10 Joe Perches      2015-06-25  238   *
cb984d10 Joe Perches      2015-06-25  239   * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
cb984d10 Joe Perches      2015-06-25  240   *
cb984d10 Joe Perches      2015-06-25  241   * (asm goto is automatically volatile - the naming reflects this.)
cb984d10 Joe Perches      2015-06-25  242   */
cb984d10 Joe Perches      2015-06-25 @243  #define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
cb984d10 Joe Perches      2015-06-25  244  
cb984d10 Joe Perches      2015-06-25  245  #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
cb984d10 Joe Perches      2015-06-25  246  #if GCC_VERSION >= 40400
cb984d10 Joe Perches      2015-06-25  247  #define __HAVE_BUILTIN_BSWAP32__
cb984d10 Joe Perches      2015-06-25  248  #define __HAVE_BUILTIN_BSWAP64__
cb984d10 Joe Perches      2015-06-25  249  #endif
8634de6d Josh Poimboeuf   2016-05-06  250  #if GCC_VERSION >= 40800
cb984d10 Joe Perches      2015-06-25  251  #define __HAVE_BUILTIN_BSWAP16__

:::::: The code at line 243 was first introduced by commit
:::::: cb984d101b30eb7478d32df56a0023e4603cba7f compiler-gcc: integrate the various compiler-gcc[345].h files

:::::: TO: Joe Perches <joe@perches.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 57624 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-07-29 21:04 [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm' kbuild test robot
@ 2016-07-31 12:11 ` Michal Hocko
  2016-08-01 11:09   ` Michal Hocko
  2016-08-01 15:00   ` Jason Baron
  0 siblings, 2 replies; 9+ messages in thread
From: Michal Hocko @ 2016-07-31 12:11 UTC (permalink / raw)
  To: kbuild test robot; +Cc: kbuild-all, linux-mm, Jason Baron, Andrew Morton

It seems that this has been already reported and Jason has noticed [1] that
the problem is in the disabled optimizations:

$ grep CRYPTO_DEV_UX500_DEBUG .config
CONFIG_CRYPTO_DEV_UX500_DEBUG=y

if I disable this particular option the code compiles just fine. I have
no idea what is wrong about the code but it seems to depend on
optimizations enabled which sounds a bit scrary...

[1] http://www.spinics.net/lists/linux-mm/msg109590.html

On Sat 30-07-16 05:04:07, Wu Fengguang wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git auto-latest
> head:   a7bf930624bb1d3368b71b79c5e3351b5d03aa9f
> commit: 966a2c66863bb2d984b9b49aee271de502cf8747 [238/243] dynamic_debug: add jump label support
> config: arm-allmodconfig (attached as .config)
> compiler: arm-linux-gnueabi-gcc (Debian 5.4.0-6) 5.4.0 20160609
> reproduce:
>         wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         git checkout 966a2c66863bb2d984b9b49aee271de502cf8747
>         # save the attached .config to linux build tree
>         make.cross ARCH=arm 
> 
> All errors (new ones prefixed by >>):
> 
>    In file included from include/linux/compiler.h:58:0,
>                     from include/linux/linkage.h:4,
>                     from include/linux/kernel.h:6,
>                     from drivers/crypto/ux500/cryp/cryp_irq.c:11:
>    arch/arm/include/asm/jump_label.h: In function 'cryp_enable_irq_src':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
> >> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cryp_disable_irq_src':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
> --
>    In file included from include/linux/compiler.h:58:0,
>                     from include/linux/err.h:4,
>                     from include/linux/clk.h:15,
>                     from drivers/crypto/ux500/cryp/cryp_core.c:12:
>    arch/arm/include/asm/jump_label.h: In function 'cryp_interrupt_handler':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
> >> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cfg_iv':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cfg_ivs':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'set_key':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cfg_keys':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cryp_get_device_data':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_out_callback':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cryp_set_dma_transfer':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_done':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_write':
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>                                          ^
>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>      asm_volatile_goto("1:\n\t"
>      ^
>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> 
> vim +/asm +243 include/linux/compiler-gcc.h
> 
> a744fd17 Rasmus Villemoes 2015-11-05  227   * returning extra information in the low bits (but in that case the
> a744fd17 Rasmus Villemoes 2015-11-05  228   * compiler should see some alignment anyway, when the return value is
> a744fd17 Rasmus Villemoes 2015-11-05  229   * massaged by 'flags = ptr & 3; ptr &= ~3;').
> a744fd17 Rasmus Villemoes 2015-11-05  230   */
> a744fd17 Rasmus Villemoes 2015-11-05  231  #define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
> a744fd17 Rasmus Villemoes 2015-11-05  232  #endif
> a744fd17 Rasmus Villemoes 2015-11-05  233  
> cb984d10 Joe Perches      2015-06-25  234  /*
> cb984d10 Joe Perches      2015-06-25  235   * GCC 'asm goto' miscompiles certain code sequences:
> cb984d10 Joe Perches      2015-06-25  236   *
> cb984d10 Joe Perches      2015-06-25  237   *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
> cb984d10 Joe Perches      2015-06-25  238   *
> cb984d10 Joe Perches      2015-06-25  239   * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
> cb984d10 Joe Perches      2015-06-25  240   *
> cb984d10 Joe Perches      2015-06-25  241   * (asm goto is automatically volatile - the naming reflects this.)
> cb984d10 Joe Perches      2015-06-25  242   */
> cb984d10 Joe Perches      2015-06-25 @243  #define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
> cb984d10 Joe Perches      2015-06-25  244  
> cb984d10 Joe Perches      2015-06-25  245  #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
> cb984d10 Joe Perches      2015-06-25  246  #if GCC_VERSION >= 40400
> cb984d10 Joe Perches      2015-06-25  247  #define __HAVE_BUILTIN_BSWAP32__
> cb984d10 Joe Perches      2015-06-25  248  #define __HAVE_BUILTIN_BSWAP64__
> cb984d10 Joe Perches      2015-06-25  249  #endif
> 8634de6d Josh Poimboeuf   2016-05-06  250  #if GCC_VERSION >= 40800
> cb984d10 Joe Perches      2015-06-25  251  #define __HAVE_BUILTIN_BSWAP16__
> 
> :::::: The code at line 243 was first introduced by commit
> :::::: cb984d101b30eb7478d32df56a0023e4603cba7f compiler-gcc: integrate the various compiler-gcc[345].h files
> 
> :::::: TO: Joe Perches <joe@perches.com>
> :::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-07-31 12:11 ` Michal Hocko
@ 2016-08-01 11:09   ` Michal Hocko
  2016-08-01 11:27     ` Martin Liška
  2016-08-01 15:00   ` Jason Baron
  1 sibling, 1 reply; 9+ messages in thread
From: Michal Hocko @ 2016-08-01 11:09 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, linux-mm, Jason Baron, Andrew Morton, Martin Liška

[CC our gcc guy - I guess he has some theory for this]

On Sun 31-07-16 14:11:25, Michal Hocko wrote:
> It seems that this has been already reported and Jason has noticed [1] that
> the problem is in the disabled optimizations:
> 
> $ grep CRYPTO_DEV_UX500_DEBUG .config
> CONFIG_CRYPTO_DEV_UX500_DEBUG=y
> 
> if I disable this particular option the code compiles just fine. I have
> no idea what is wrong about the code but it seems to depend on
> optimizations enabled which sounds a bit scrary...
> 
> [1] http://www.spinics.net/lists/linux-mm/msg109590.html
> 
> On Sat 30-07-16 05:04:07, Wu Fengguang wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git auto-latest
> > head:   a7bf930624bb1d3368b71b79c5e3351b5d03aa9f
> > commit: 966a2c66863bb2d984b9b49aee271de502cf8747 [238/243] dynamic_debug: add jump label support
> > config: arm-allmodconfig (attached as .config)
> > compiler: arm-linux-gnueabi-gcc (Debian 5.4.0-6) 5.4.0 20160609
> > reproduce:
> >         wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         git checkout 966a2c66863bb2d984b9b49aee271de502cf8747
> >         # save the attached .config to linux build tree
> >         make.cross ARCH=arm 
> > 
> > All errors (new ones prefixed by >>):
> > 
> >    In file included from include/linux/compiler.h:58:0,
> >                     from include/linux/linkage.h:4,
> >                     from include/linux/kernel.h:6,
> >                     from drivers/crypto/ux500/cryp/cryp_irq.c:11:
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_enable_irq_src':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> > >> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_disable_irq_src':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> > --
> >    In file included from include/linux/compiler.h:58:0,
> >                     from include/linux/err.h:4,
> >                     from include/linux/clk.h:15,
> >                     from drivers/crypto/ux500/cryp/cryp_core.c:12:
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_interrupt_handler':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> > >> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cfg_iv':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cfg_ivs':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'set_key':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cfg_keys':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_get_device_data':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_out_callback':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_set_dma_transfer':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_done':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_write':
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> >                                          ^
> >    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
> >      asm_volatile_goto("1:\n\t"
> >      ^
> >    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
> >     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
> > 
> > vim +/asm +243 include/linux/compiler-gcc.h
> > 
> > a744fd17 Rasmus Villemoes 2015-11-05  227   * returning extra information in the low bits (but in that case the
> > a744fd17 Rasmus Villemoes 2015-11-05  228   * compiler should see some alignment anyway, when the return value is
> > a744fd17 Rasmus Villemoes 2015-11-05  229   * massaged by 'flags = ptr & 3; ptr &= ~3;').
> > a744fd17 Rasmus Villemoes 2015-11-05  230   */
> > a744fd17 Rasmus Villemoes 2015-11-05  231  #define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
> > a744fd17 Rasmus Villemoes 2015-11-05  232  #endif
> > a744fd17 Rasmus Villemoes 2015-11-05  233  
> > cb984d10 Joe Perches      2015-06-25  234  /*
> > cb984d10 Joe Perches      2015-06-25  235   * GCC 'asm goto' miscompiles certain code sequences:
> > cb984d10 Joe Perches      2015-06-25  236   *
> > cb984d10 Joe Perches      2015-06-25  237   *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
> > cb984d10 Joe Perches      2015-06-25  238   *
> > cb984d10 Joe Perches      2015-06-25  239   * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
> > cb984d10 Joe Perches      2015-06-25  240   *
> > cb984d10 Joe Perches      2015-06-25  241   * (asm goto is automatically volatile - the naming reflects this.)
> > cb984d10 Joe Perches      2015-06-25  242   */
> > cb984d10 Joe Perches      2015-06-25 @243  #define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
> > cb984d10 Joe Perches      2015-06-25  244  
> > cb984d10 Joe Perches      2015-06-25  245  #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
> > cb984d10 Joe Perches      2015-06-25  246  #if GCC_VERSION >= 40400
> > cb984d10 Joe Perches      2015-06-25  247  #define __HAVE_BUILTIN_BSWAP32__
> > cb984d10 Joe Perches      2015-06-25  248  #define __HAVE_BUILTIN_BSWAP64__
> > cb984d10 Joe Perches      2015-06-25  249  #endif
> > 8634de6d Josh Poimboeuf   2016-05-06  250  #if GCC_VERSION >= 40800
> > cb984d10 Joe Perches      2015-06-25  251  #define __HAVE_BUILTIN_BSWAP16__
> > 
> > :::::: The code at line 243 was first introduced by commit
> > :::::: cb984d101b30eb7478d32df56a0023e4603cba7f compiler-gcc: integrate the various compiler-gcc[345].h files
> > 
> > :::::: TO: Joe Perches <joe@perches.com>
> > :::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
> > 
> > ---
> > 0-DAY kernel test infrastructure                Open Source Technology Center
> > https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
> 
> 
> 
> -- 
> Michal Hocko
> SUSE Labs

-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-08-01 11:09   ` Michal Hocko
@ 2016-08-01 11:27     ` Martin Liška
  2016-08-01 12:41       ` oliver
  2016-08-02 15:18       ` Jason Baron
  0 siblings, 2 replies; 9+ messages in thread
From: Martin Liška @ 2016-08-01 11:27 UTC (permalink / raw)
  To: Michal Hocko, kbuild test robot
  Cc: kbuild-all, linux-mm, Jason Baron, Andrew Morton

On 08/01/2016 01:09 PM, Michal Hocko wrote:
> [CC our gcc guy - I guess he has some theory for this]
> 
> On Sun 31-07-16 14:11:25, Michal Hocko wrote:
>> It seems that this has been already reported and Jason has noticed [1] that
>> the problem is in the disabled optimizations:
>>
>> $ grep CRYPTO_DEV_UX500_DEBUG .config
>> CONFIG_CRYPTO_DEV_UX500_DEBUG=y
>>
>> if I disable this particular option the code compiles just fine. I have
>> no idea what is wrong about the code but it seems to depend on
>> optimizations enabled which sounds a bit scrary...
>>
>> [1] http://www.spinics.net/lists/linux-mm/msg109590.html

Hi.

The difference is that w/o any optimization level, GCC doesn't make %c0 an
intermediate integer operand [1] (see description of "i" constraint).

If I change "i" to "X" (Any operand whatsoever is allowed.) and "%c0" to "%k0" I get following assembly:

cryp_enable_irq_src:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	ldr	r3, .L6
	str	r3, [fp, #-20]
	mov	r3, #1
	strb	r3, [fp, #-21]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	.syntax divided
@ 1607 "/home/marxin/Programming/testcases/asm.i" 1
	1:
	nop
	.pushsection __jump_table,  "aw"
	.word 1b, .L2, r3 # The operand is the register r3
	.popsection
	
	.arm
	.syntax unified
	mov	r3, #0
	b	.L3
.L2:

While using -O2 really make %c0 an intermediate operand:

cryp_enable_irq_src:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, lr}
	mov	r5, r0
	mov	r4, r1
	.syntax divided
@ 1607 "/home/marxin/Programming/testcases/asm.i" 1
	1:
	nop
	.pushsection __jump_table,  "aw"
	.word 1b, .L2, #.LANCHOR0+21  # The operand is the intermediate operand #.LANCHOR0+21
	.popsection

Martin

[1] https://gcc.gnu.org/onlinedocs/gcc/Simple-Constraints.html#Simple-Constraints

>>
>> On Sat 30-07-16 05:04:07, Wu Fengguang wrote:
>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git auto-latest
>>> head:   a7bf930624bb1d3368b71b79c5e3351b5d03aa9f
>>> commit: 966a2c66863bb2d984b9b49aee271de502cf8747 [238/243] dynamic_debug: add jump label support
>>> config: arm-allmodconfig (attached as .config)
>>> compiler: arm-linux-gnueabi-gcc (Debian 5.4.0-6) 5.4.0 20160609
>>> reproduce:
>>>         wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>>>         chmod +x ~/bin/make.cross
>>>         git checkout 966a2c66863bb2d984b9b49aee271de502cf8747
>>>         # save the attached .config to linux build tree
>>>         make.cross ARCH=arm 
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>>    In file included from include/linux/compiler.h:58:0,
>>>                     from include/linux/linkage.h:4,
>>>                     from include/linux/kernel.h:6,
>>>                     from drivers/crypto/ux500/cryp/cryp_irq.c:11:
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_enable_irq_src':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_disable_irq_src':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>> --
>>>    In file included from include/linux/compiler.h:58:0,
>>>                     from include/linux/err.h:4,
>>>                     from include/linux/clk.h:15,
>>>                     from drivers/crypto/ux500/cryp/cryp_core.c:12:
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_interrupt_handler':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cfg_iv':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cfg_ivs':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'set_key':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cfg_keys':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_get_device_data':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_out_callback':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_set_dma_transfer':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_done':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    arch/arm/include/asm/jump_label.h: In function 'cryp_dma_write':
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>                                          ^
>>>    arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>      asm_volatile_goto("1:\n\t"
>>>      ^
>>>    include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>     #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>
>>> vim +/asm +243 include/linux/compiler-gcc.h
>>>
>>> a744fd17 Rasmus Villemoes 2015-11-05  227   * returning extra information in the low bits (but in that case the
>>> a744fd17 Rasmus Villemoes 2015-11-05  228   * compiler should see some alignment anyway, when the return value is
>>> a744fd17 Rasmus Villemoes 2015-11-05  229   * massaged by 'flags = ptr & 3; ptr &= ~3;').
>>> a744fd17 Rasmus Villemoes 2015-11-05  230   */
>>> a744fd17 Rasmus Villemoes 2015-11-05  231  #define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
>>> a744fd17 Rasmus Villemoes 2015-11-05  232  #endif
>>> a744fd17 Rasmus Villemoes 2015-11-05  233  
>>> cb984d10 Joe Perches      2015-06-25  234  /*
>>> cb984d10 Joe Perches      2015-06-25  235   * GCC 'asm goto' miscompiles certain code sequences:
>>> cb984d10 Joe Perches      2015-06-25  236   *
>>> cb984d10 Joe Perches      2015-06-25  237   *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
>>> cb984d10 Joe Perches      2015-06-25  238   *
>>> cb984d10 Joe Perches      2015-06-25  239   * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
>>> cb984d10 Joe Perches      2015-06-25  240   *
>>> cb984d10 Joe Perches      2015-06-25  241   * (asm goto is automatically volatile - the naming reflects this.)
>>> cb984d10 Joe Perches      2015-06-25  242   */
>>> cb984d10 Joe Perches      2015-06-25 @243  #define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
>>> cb984d10 Joe Perches      2015-06-25  244  
>>> cb984d10 Joe Perches      2015-06-25  245  #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
>>> cb984d10 Joe Perches      2015-06-25  246  #if GCC_VERSION >= 40400
>>> cb984d10 Joe Perches      2015-06-25  247  #define __HAVE_BUILTIN_BSWAP32__
>>> cb984d10 Joe Perches      2015-06-25  248  #define __HAVE_BUILTIN_BSWAP64__
>>> cb984d10 Joe Perches      2015-06-25  249  #endif
>>> 8634de6d Josh Poimboeuf   2016-05-06  250  #if GCC_VERSION >= 40800
>>> cb984d10 Joe Perches      2015-06-25  251  #define __HAVE_BUILTIN_BSWAP16__
>>>
>>> :::::: The code at line 243 was first introduced by commit
>>> :::::: cb984d101b30eb7478d32df56a0023e4603cba7f compiler-gcc: integrate the various compiler-gcc[345].h files
>>>
>>> :::::: TO: Joe Perches <joe@perches.com>
>>> :::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
>>>
>>> ---
>>> 0-DAY kernel test infrastructure                Open Source Technology Center
>>> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>>
>>
>>
>> -- 
>> Michal Hocko
>> SUSE Labs
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-08-01 11:27     ` Martin Liška
@ 2016-08-01 12:41       ` oliver
  2016-08-03  5:17         ` Balbir Singh
  2016-08-02 15:18       ` Jason Baron
  1 sibling, 1 reply; 9+ messages in thread
From: oliver @ 2016-08-01 12:41 UTC (permalink / raw)
  To: Martin Liška
  Cc: Michal Hocko, kbuild test robot, kbuild-all, linux-mm,
	Jason Baron, Andrew Morton, Balbir Singh

On Mon, Aug 1, 2016 at 9:27 PM, Martin Liška <mliska@suse.cz> wrote:
> On 08/01/2016 01:09 PM, Michal Hocko wrote:
>> [CC our gcc guy - I guess he has some theory for this]
>>
>> On Sun 31-07-16 14:11:25, Michal Hocko wrote:
>>> It seems that this has been already reported and Jason has noticed [1] that
>>> the problem is in the disabled optimizations:
>>>
>>> $ grep CRYPTO_DEV_UX500_DEBUG .config
>>> CONFIG_CRYPTO_DEV_UX500_DEBUG=y
>>>
>>> if I disable this particular option the code compiles just fine. I have
>>> no idea what is wrong about the code but it seems to depend on
>>> optimizations enabled which sounds a bit scrary...
>>>
>>> [1] http://www.spinics.net/lists/linux-mm/msg109590.html
>
> Hi.
>
> The difference is that w/o any optimization level, GCC doesn't make %c0 an
> intermediate integer operand [1] (see description of "i" constraint).

We recently hit a similar problem on ppc where the compiler couldn't
satisfy an "i" when it was wrapped in an function and optimisations
were disabled. The fix[1] was to change the function signature so that
it's arguments were explicitly const. I don't know enough about gcc to
tell if that behaviour is arch specific or not, but it's worth trying.

Oliver

[1] https://lists.ozlabs.org/pipermail/skiboot/2016-July/004061.html

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-07-31 12:11 ` Michal Hocko
  2016-08-01 11:09   ` Michal Hocko
@ 2016-08-01 15:00   ` Jason Baron
  2016-08-01 15:29     ` Michal Hocko
  1 sibling, 1 reply; 9+ messages in thread
From: Jason Baron @ 2016-08-01 15:00 UTC (permalink / raw)
  To: Michal Hocko, kbuild test robot; +Cc: kbuild-all, linux-mm, Andrew Morton

On 07/31/2016 08:11 AM, Michal Hocko wrote:
> It seems that this has been already reported and Jason has noticed [1] that
> the problem is in the disabled optimizations:
>
> $ grep CRYPTO_DEV_UX500_DEBUG .config
> CONFIG_CRYPTO_DEV_UX500_DEBUG=y
>
> if I disable this particular option the code compiles just fine. I have
> no idea what is wrong about the code but it seems to depend on
> optimizations enabled which sounds a bit scrary...
>
> [1] http://www.spinics.net/lists/linux-mm/msg109590.html


Hi,

There was a patch from Arnd Bergmann to address this
issue by removing the usage of -O0 here, included in
linux-next:

https://marc.info/?l=linux-kernel&m=146701898520633&w=2

Thanks,

-Jason

>
> On Sat 30-07-16 05:04:07, Wu Fengguang wrote:
>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git auto-latest
>> head:   a7bf930624bb1d3368b71b79c5e3351b5d03aa9f
>> commit: 966a2c66863bb2d984b9b49aee271de502cf8747 [238/243] dynamic_debug: add jump label support
>> config: arm-allmodconfig (attached as .config)
>> compiler: arm-linux-gnueabi-gcc (Debian 5.4.0-6) 5.4.0 20160609
>> reproduce:
>>          wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>>          chmod +x ~/bin/make.cross
>>          git checkout 966a2c66863bb2d984b9b49aee271de502cf8747
>>          # save the attached .config to linux build tree
>>          make.cross ARCH=arm
>>
>> All errors (new ones prefixed by >>):
>>
>>     In file included from include/linux/compiler.h:58:0,
>>                      from include/linux/linkage.h:4,
>>                      from include/linux/kernel.h:6,
>>                      from drivers/crypto/ux500/cryp/cryp_irq.c:11:
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_enable_irq_src':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_disable_irq_src':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>> --
>>     In file included from include/linux/compiler.h:58:0,
>>                      from include/linux/err.h:4,
>>                      from include/linux/clk.h:15,
>>                      from drivers/crypto/ux500/cryp/cryp_core.c:12:
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_interrupt_handler':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cfg_iv':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cfg_ivs':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'set_key':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cfg_keys':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_get_device_data':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_dma_out_callback':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_set_dma_transfer':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_dma_done':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     arch/arm/include/asm/jump_label.h: In function 'cryp_dma_write':
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>                                           ^
>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>       asm_volatile_goto("1:\n\t"
>>       ^
>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>
>> vim +/asm +243 include/linux/compiler-gcc.h
>>
>> a744fd17 Rasmus Villemoes 2015-11-05  227   * returning extra information in the low bits (but in that case the
>> a744fd17 Rasmus Villemoes 2015-11-05  228   * compiler should see some alignment anyway, when the return value is
>> a744fd17 Rasmus Villemoes 2015-11-05  229   * massaged by 'flags = ptr & 3; ptr &= ~3;').
>> a744fd17 Rasmus Villemoes 2015-11-05  230   */
>> a744fd17 Rasmus Villemoes 2015-11-05  231  #define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
>> a744fd17 Rasmus Villemoes 2015-11-05  232  #endif
>> a744fd17 Rasmus Villemoes 2015-11-05  233
>> cb984d10 Joe Perches      2015-06-25  234  /*
>> cb984d10 Joe Perches      2015-06-25  235   * GCC 'asm goto' miscompiles certain code sequences:
>> cb984d10 Joe Perches      2015-06-25  236   *
>> cb984d10 Joe Perches      2015-06-25  237   *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
>> cb984d10 Joe Perches      2015-06-25  238   *
>> cb984d10 Joe Perches      2015-06-25  239   * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
>> cb984d10 Joe Perches      2015-06-25  240   *
>> cb984d10 Joe Perches      2015-06-25  241   * (asm goto is automatically volatile - the naming reflects this.)
>> cb984d10 Joe Perches      2015-06-25  242   */
>> cb984d10 Joe Perches      2015-06-25 @243  #define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
>> cb984d10 Joe Perches      2015-06-25  244
>> cb984d10 Joe Perches      2015-06-25  245  #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
>> cb984d10 Joe Perches      2015-06-25  246  #if GCC_VERSION >= 40400
>> cb984d10 Joe Perches      2015-06-25  247  #define __HAVE_BUILTIN_BSWAP32__
>> cb984d10 Joe Perches      2015-06-25  248  #define __HAVE_BUILTIN_BSWAP64__
>> cb984d10 Joe Perches      2015-06-25  249  #endif
>> 8634de6d Josh Poimboeuf   2016-05-06  250  #if GCC_VERSION >= 40800
>> cb984d10 Joe Perches      2015-06-25  251  #define __HAVE_BUILTIN_BSWAP16__
>>
>> :::::: The code at line 243 was first introduced by commit
>> :::::: cb984d101b30eb7478d32df56a0023e4603cba7f compiler-gcc: integrate the various compiler-gcc[345].h files
>>
>> :::::: TO: Joe Perches <joe@perches.com>
>> :::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
>>
>> ---
>> 0-DAY kernel test infrastructure                Open Source Technology Center
>> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>
>
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-08-01 15:00   ` Jason Baron
@ 2016-08-01 15:29     ` Michal Hocko
  0 siblings, 0 replies; 9+ messages in thread
From: Michal Hocko @ 2016-08-01 15:29 UTC (permalink / raw)
  To: Jason Baron; +Cc: kbuild test robot, kbuild-all, linux-mm, Andrew Morton

On Mon 01-08-16 11:00:50, Jason Baron wrote:
> On 07/31/2016 08:11 AM, Michal Hocko wrote:
> > It seems that this has been already reported and Jason has noticed [1] that
> > the problem is in the disabled optimizations:
> > 
> > $ grep CRYPTO_DEV_UX500_DEBUG .config
> > CONFIG_CRYPTO_DEV_UX500_DEBUG=y
> > 
> > if I disable this particular option the code compiles just fine. I have
> > no idea what is wrong about the code but it seems to depend on
> > optimizations enabled which sounds a bit scrary...
> > 
> > [1] http://www.spinics.net/lists/linux-mm/msg109590.html
> 
> 
> Hi,
> 
> There was a patch from Arnd Bergmann to address this
> issue by removing the usage of -O0 here, included in
> linux-next:
> 
> https://marc.info/?l=linux-kernel&m=146701898520633&w=2

AFAIU the code should be fixed as well. See
http://lkml.kernel.org/r/35a0878d-84bd-ad93-8810-23c861ed464e@suse.cz
-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-08-01 11:27     ` Martin Liška
  2016-08-01 12:41       ` oliver
@ 2016-08-02 15:18       ` Jason Baron
  1 sibling, 0 replies; 9+ messages in thread
From: Jason Baron @ 2016-08-02 15:18 UTC (permalink / raw)
  To: Martin Liška, Michal Hocko, kbuild test robot
  Cc: kbuild-all, linux-mm, Andrew Morton



On 08/01/2016 07:27 AM, Martin Li?ka wrote:
> On 08/01/2016 01:09 PM, Michal Hocko wrote:
>> [CC our gcc guy - I guess he has some theory for this]
>>
>> On Sun 31-07-16 14:11:25, Michal Hocko wrote:
>>> It seems that this has been already reported and Jason has noticed [1] that
>>> the problem is in the disabled optimizations:
>>>
>>> $ grep CRYPTO_DEV_UX500_DEBUG .config
>>> CONFIG_CRYPTO_DEV_UX500_DEBUG=y
>>>
>>> if I disable this particular option the code compiles just fine. I have
>>> no idea what is wrong about the code but it seems to depend on
>>> optimizations enabled which sounds a bit scrary...
>>>
>>> [1] http://www.spinics.net/lists/linux-mm/msg109590.html
>
> Hi.
>
> The difference is that w/o any optimization level, GCC doesn't make %c0 an
> intermediate integer operand [1] (see description of "i" constraint).
>
> If I change "i" to "X" (Any operand whatsoever is allowed.) and "%c0" to "%k0" I get following assembly:
>

hmmm...but the the '__jump_table' section there needs to be known
at build time. For example, the 'r3' field in the table is the
'key' which is used to identify the proper branches when we
go to update the branch directions. So this needs to be fixed
at build time...

Thanks,

-Jason

> cryp_enable_irq_src:
> 	@ args = 0, pretend = 0, frame = 48
> 	@ frame_needed = 1, uses_anonymous_args = 0
> 	push	{fp, lr}
> 	add	fp, sp, #4
> 	sub	sp, sp, #48
> 	str	r0, [fp, #-48]
> 	str	r1, [fp, #-52]
> 	ldr	r3, .L6
> 	str	r3, [fp, #-20]
> 	mov	r3, #1
> 	strb	r3, [fp, #-21]
> 	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
> 	ldr	r2, [fp, #-20]
> 	add	r3, r2, r3
> 	.syntax divided
> @ 1607 "/home/marxin/Programming/testcases/asm.i" 1
> 	1:
> 	nop
> 	.pushsection __jump_table,  "aw"
> 	.word 1b, .L2, r3 # The operand is the register r3
> 	.popsection
> 	
> 	.arm
> 	.syntax unified
> 	mov	r3, #0
> 	b	.L3
> .L2:
>
> While using -O2 really make %c0 an intermediate operand:
>
> cryp_enable_irq_src:
> 	@ args = 0, pretend = 0, frame = 0
> 	@ frame_needed = 0, uses_anonymous_args = 0
> 	push	{r4, r5, r6, lr}
> 	mov	r5, r0
> 	mov	r4, r1
> 	.syntax divided
> @ 1607 "/home/marxin/Programming/testcases/asm.i" 1
> 	1:
> 	nop
> 	.pushsection __jump_table,  "aw"
> 	.word 1b, .L2, #.LANCHOR0+21  # The operand is the intermediate operand #.LANCHOR0+21
> 	.popsection
>
> Martin
>
> [1] https://gcc.gnu.org/onlinedocs/gcc/Simple-Constraints.html#Simple-Constraints
>
>>>
>>> On Sat 30-07-16 05:04:07, Wu Fengguang wrote:
>>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git auto-latest
>>>> head:   a7bf930624bb1d3368b71b79c5e3351b5d03aa9f
>>>> commit: 966a2c66863bb2d984b9b49aee271de502cf8747 [238/243] dynamic_debug: add jump label support
>>>> config: arm-allmodconfig (attached as .config)
>>>> compiler: arm-linux-gnueabi-gcc (Debian 5.4.0-6) 5.4.0 20160609
>>>> reproduce:
>>>>          wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>>>>          chmod +x ~/bin/make.cross
>>>>          git checkout 966a2c66863bb2d984b9b49aee271de502cf8747
>>>>          # save the attached .config to linux build tree
>>>>          make.cross ARCH=arm
>>>>
>>>> All errors (new ones prefixed by >>):
>>>>
>>>>     In file included from include/linux/compiler.h:58:0,
>>>>                      from include/linux/linkage.h:4,
>>>>                      from include/linux/kernel.h:6,
>>>>                      from drivers/crypto/ux500/cryp/cryp_irq.c:11:
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_enable_irq_src':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_disable_irq_src':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>> --
>>>>     In file included from include/linux/compiler.h:58:0,
>>>>                      from include/linux/err.h:4,
>>>>                      from include/linux/clk.h:15,
>>>>                      from drivers/crypto/ux500/cryp/cryp_core.c:12:
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_interrupt_handler':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>>> include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cfg_iv':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cfg_ivs':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'set_key':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cfg_keys':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_get_device_data':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_dma_out_callback':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_set_dma_transfer':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_dma_done':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     arch/arm/include/asm/jump_label.h: In function 'cryp_dma_write':
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>                                           ^
>>>>     arch/arm/include/asm/jump_label.h:13:2: note: in expansion of macro 'asm_volatile_goto'
>>>>       asm_volatile_goto("1:\n\t"
>>>>       ^
>>>>     include/linux/compiler-gcc.h:243:38: warning: asm operand 0 probably doesn't match constraints
>>>>      #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
>>>>
>>>> vim +/asm +243 include/linux/compiler-gcc.h
>>>>
>>>> a744fd17 Rasmus Villemoes 2015-11-05  227   * returning extra information in the low bits (but in that case the
>>>> a744fd17 Rasmus Villemoes 2015-11-05  228   * compiler should see some alignment anyway, when the return value is
>>>> a744fd17 Rasmus Villemoes 2015-11-05  229   * massaged by 'flags = ptr & 3; ptr &= ~3;').
>>>> a744fd17 Rasmus Villemoes 2015-11-05  230   */
>>>> a744fd17 Rasmus Villemoes 2015-11-05  231  #define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
>>>> a744fd17 Rasmus Villemoes 2015-11-05  232  #endif
>>>> a744fd17 Rasmus Villemoes 2015-11-05  233
>>>> cb984d10 Joe Perches      2015-06-25  234  /*
>>>> cb984d10 Joe Perches      2015-06-25  235   * GCC 'asm goto' miscompiles certain code sequences:
>>>> cb984d10 Joe Perches      2015-06-25  236   *
>>>> cb984d10 Joe Perches      2015-06-25  237   *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
>>>> cb984d10 Joe Perches      2015-06-25  238   *
>>>> cb984d10 Joe Perches      2015-06-25  239   * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
>>>> cb984d10 Joe Perches      2015-06-25  240   *
>>>> cb984d10 Joe Perches      2015-06-25  241   * (asm goto is automatically volatile - the naming reflects this.)
>>>> cb984d10 Joe Perches      2015-06-25  242   */
>>>> cb984d10 Joe Perches      2015-06-25 @243  #define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
>>>> cb984d10 Joe Perches      2015-06-25  244
>>>> cb984d10 Joe Perches      2015-06-25  245  #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
>>>> cb984d10 Joe Perches      2015-06-25  246  #if GCC_VERSION >= 40400
>>>> cb984d10 Joe Perches      2015-06-25  247  #define __HAVE_BUILTIN_BSWAP32__
>>>> cb984d10 Joe Perches      2015-06-25  248  #define __HAVE_BUILTIN_BSWAP64__
>>>> cb984d10 Joe Perches      2015-06-25  249  #endif
>>>> 8634de6d Josh Poimboeuf   2016-05-06  250  #if GCC_VERSION >= 40800
>>>> cb984d10 Joe Perches      2015-06-25  251  #define __HAVE_BUILTIN_BSWAP16__
>>>>
>>>> :::::: The code at line 243 was first introduced by commit
>>>> :::::: cb984d101b30eb7478d32df56a0023e4603cba7f compiler-gcc: integrate the various compiler-gcc[345].h files
>>>>
>>>> :::::: TO: Joe Perches <joe@perches.com>
>>>> :::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
>>>>
>>>> ---
>>>> 0-DAY kernel test infrastructure                Open Source Technology Center
>>>> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>>>
>>>
>>>
>>> --
>>> Michal Hocko
>>> SUSE Labs
>>
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm'
  2016-08-01 12:41       ` oliver
@ 2016-08-03  5:17         ` Balbir Singh
  0 siblings, 0 replies; 9+ messages in thread
From: Balbir Singh @ 2016-08-03  5:17 UTC (permalink / raw)
  To: oliver, Martin Liška
  Cc: Michal Hocko, kbuild test robot, kbuild-all, linux-mm,
	Jason Baron, Andrew Morton

On Mon, 2016-08-01 at 22:41 +1000, oliver wrote:
> On Mon, Aug 1, 2016 at 9:27 PM, Martin LiA!ka <mliska@suse.cz> wrote:
> >A 
> > On 08/01/2016 01:09 PM, Michal Hocko wrote:
> > >A 
> > > [CC our gcc guy - I guess he has some theory for this]
> > >A 
> > > On Sun 31-07-16 14:11:25, Michal Hocko wrote:
> > > >A 
> > > > It seems that this has been already reported and Jason has noticed [1] that
> > > > the problem is in the disabled optimizations:
> > > >A 
> > > > $ grep CRYPTO_DEV_UX500_DEBUG .config
> > > > CONFIG_CRYPTO_DEV_UX500_DEBUG=y
> > > >A 
> > > > if I disable this particular option the code compiles just fine. I have
> > > > no idea what is wrong about the code but it seems to depend on
> > > > optimizations enabled which sounds a bit scrary...
> > > >A 
> > > > [1] http://www.spinics.net/lists/linux-mm/msg109590.html
> > Hi.
> >A 
> > The difference is that w/o any optimization level, GCC doesn't make %c0 an
> > intermediate integer operand [1] (see description of "i" constraint).
> We recently hit a similar problem on ppc where the compiler couldn't
> satisfy an "i" when it was wrapped in an function and optimisations
> were disabled. The fix[1] was to change the function signature so that
> it's arguments were explicitly const. I don't know enough about gcc to
> tell if that behaviour is arch specific or not, but it's worth trying.
>A 
> Oliver
>A 
> [1] https://lists.ozlabs.org/pipermail/skiboot/2016-July/004061.html

Yes, the way I solved the issue was to look at the RTL and provide
hints to the compiler that the passed argument was a constant and it
needed to be passed as such to the instruction

I would suggest just looking at the RTL and figuring out why the constraints
break

Balbir Singh.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-08-03  5:16 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-29 21:04 [memcg:auto-latest 238/243] include/linux/compiler-gcc.h:243:38: error: impossible constraint in 'asm' kbuild test robot
2016-07-31 12:11 ` Michal Hocko
2016-08-01 11:09   ` Michal Hocko
2016-08-01 11:27     ` Martin Liška
2016-08-01 12:41       ` oliver
2016-08-03  5:17         ` Balbir Singh
2016-08-02 15:18       ` Jason Baron
2016-08-01 15:00   ` Jason Baron
2016-08-01 15:29     ` Michal Hocko

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.