[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAKwvOdkff8dwqHGkrnyK++e+yWTTYZwefPJ4wqqXQCQhmePE5A@mail.gmail.com>
Date: Mon, 1 Jun 2020 11:02:20 -0700
From: Nick Desaulniers <ndesaulniers@...gle.com>
To: kbuild test robot <lkp@...el.com>
Cc: "Ritesh, Harjani," <riteshh@...ux.ibm.com>,
kbuild-all@...ts.01.org,
clang-built-linux <clang-built-linux@...glegroups.com>,
linux-ext4@...r.kernel.org, "Theodore Ts'o" <tytso@....edu>,
Philip Li <philip.li@...el.com>
Subject: Re: [ext4:dev 41/50] fs/ext4/mballoc.c:1494:2: error: invalid input
size for constraint 'qi'
nevermind this failure. Clang doesn't support i386 yet (WIP).
On Mon, Jun 1, 2020 at 4:41 AM kbuild test robot <lkp@...el.com> wrote:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
> head: 38bd76b9696c5582dcef4ab1af437e0666021f65
> commit: 42f56b7a4a7db127a9d281da584152dc3d525d25 [41/50] ext4: mballoc: introduce pcpu seqcnt for freeing PA to improve ENOSPC handling
> config: i386-randconfig-a014-20200601 (attached as .config)
> compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 2388a096e7865c043e83ece4e26654bd3d1a20d5)
> 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 i386 cross compiling tool for clang build
> # apt-get install binutils-i386-linux-gnu
> git checkout 42f56b7a4a7db127a9d281da584152dc3d525d25
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kbuild test robot <lkp@...el.com>
>
> All errors (new ones prefixed by >>, old ones prefixed by <<):
>
> >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi'
> this_cpu_inc(discard_pa_seq);
> ^
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp) this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call'
> case 1: stem##1(variable, __VA_ARGS__);break; ^
> <scratch space>:160:1: note: expanded from here
> this_cpu_add_1
> ^
> arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1'
> #define this_cpu_add_1(pcp, val) percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val))); ^
> >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp) this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:378:11: note: expanded from macro '__pcpu_size_call'
> case 2: stem##2(variable, __VA_ARGS__);break; ^
> <scratch space>:185:1: note: expanded from here
> this_cpu_add_2
> ^
> arch/x86/include/asm/percpu.h:433:34: note: expanded from macro 'this_cpu_add_2'
> #define this_cpu_add_2(pcp, val) percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val))); ^
> >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp) this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:379:11: note: expanded from macro '__pcpu_size_call'
> case 4: stem##4(variable, __VA_ARGS__);break; ^
> <scratch space>:210:1: note: expanded from here
> this_cpu_add_4
> ^
> arch/x86/include/asm/percpu.h:434:34: note: expanded from macro 'this_cpu_add_4'
> #define this_cpu_add_4(pcp, val) percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val))); ^
> fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi'
> this_cpu_inc(discard_pa_seq);
> ^
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp) this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call'
> case 1: stem##1(variable, __VA_ARGS__);break; ^
> <scratch space>:12:1: note: expanded from here
> this_cpu_add_1
> ^
> arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1'
> #define this_cpu_add_1(pcp, val) percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val))); ^
> fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp) this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:378:11: note: expanded from macro '__pcpu_size_call'
> case 2: stem##2(variable, __VA_ARGS__);break; ^
> <scratch space>:37:1: note: expanded from here
> this_cpu_add_2
> ^
> arch/x86/include/asm/percpu.h:433:34: note: expanded from macro 'this_cpu_add_2'
> #define this_cpu_add_2(pcp, val) percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val))); ^
> fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp) this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:379:11: note: expanded from macro '__pcpu_size_call'
> case 4: stem##4(variable, __VA_ARGS__);break; ^
> <scratch space>:62:1: note: expanded from here
> this_cpu_add_4
> ^
> arch/x86/include/asm/percpu.h:434:34: note: expanded from macro 'this_cpu_add_4'
> #define this_cpu_add_4(pcp, val) percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val))); ^
> fs/ext4/mballoc.c:3996:2: error: invalid input size for constraint 'qi'
> this_cpu_inc(discard_pa_seq);
> ^
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp) this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call'
> case 1: stem##1(variable, __VA_ARGS__);break; ^
> <scratch space>:150:1: note: expanded from here
> this_cpu_add_1
> ^
> arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1'
> #define this_cpu_add_1(pcp, val) percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val))); ^
> fs/ext4/mballoc.c:3996:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
>
> vim +/qi +1494 fs/ext4/mballoc.c
>
> 1473
> 1474 static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b,
> 1475 int first, int count)
> 1476 {
> 1477 int left_is_free = 0;
> 1478 int right_is_free = 0;
> 1479 int block;
> 1480 int last = first + count - 1;
> 1481 struct super_block *sb = e4b->bd_sb;
> 1482
> 1483 if (WARN_ON(count == 0))
> 1484 return;
> 1485 BUG_ON(last >= (sb->s_blocksize << 3));
> 1486 assert_spin_locked(ext4_group_lock_ptr(sb, e4b->bd_group));
> 1487 /* Don't bother if the block group is corrupt. */
> 1488 if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info)))
> 1489 return;
> 1490
> 1491 mb_check_buddy(e4b);
> 1492 mb_free_blocks_double(inode, e4b, first, count);
> 1493
> > 1494 this_cpu_inc(discard_pa_seq);
> 1495 e4b->bd_info->bb_free += count;
> 1496 if (first < e4b->bd_info->bb_first_free)
> 1497 e4b->bd_info->bb_first_free = first;
> 1498
> 1499 /* access memory sequentially: check left neighbour,
> 1500 * clear range and then check right neighbour
> 1501 */
> 1502 if (first != 0)
> 1503 left_is_free = !mb_test_bit(first - 1, e4b->bd_bitmap);
> 1504 block = mb_test_and_clear_bits(e4b->bd_bitmap, first, count);
> 1505 if (last + 1 < EXT4_SB(sb)->s_mb_maxs[0])
> 1506 right_is_free = !mb_test_bit(last + 1, e4b->bd_bitmap);
> 1507
> 1508 if (unlikely(block != -1)) {
> 1509 struct ext4_sb_info *sbi = EXT4_SB(sb);
> 1510 ext4_fsblk_t blocknr;
> 1511
> 1512 blocknr = ext4_group_first_block_no(sb, e4b->bd_group);
> 1513 blocknr += EXT4_C2B(sbi, block);
> 1514 ext4_grp_locked_error(sb, e4b->bd_group,
> 1515 inode ? inode->i_ino : 0,
> 1516 blocknr,
> 1517 "freeing already freed block "
> 1518 "(bit %u); block bitmap corrupt.",
> 1519 block);
> 1520 ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group,
> 1521 EXT4_GROUP_INFO_BBITMAP_CORRUPT);
> 1522 mb_regenerate_buddy(e4b);
> 1523 goto done;
> 1524 }
> 1525
> 1526 /* let's maintain fragments counter */
> 1527 if (left_is_free && right_is_free)
> 1528 e4b->bd_info->bb_fragments--;
> 1529 else if (!left_is_free && !right_is_free)
> 1530 e4b->bd_info->bb_fragments++;
> 1531
> 1532 /* buddy[0] == bd_bitmap is a special case, so handle
> 1533 * it right away and let mb_buddy_mark_free stay free of
> 1534 * zero order checks.
> 1535 * Check if neighbours are to be coaleasced,
> 1536 * adjust bitmap bb_counters and borders appropriately.
> 1537 */
> 1538 if (first & 1) {
> 1539 first += !left_is_free;
> 1540 e4b->bd_info->bb_counters[0] += left_is_free ? -1 : 1;
> 1541 }
> 1542 if (!(last & 1)) {
> 1543 last -= !right_is_free;
> 1544 e4b->bd_info->bb_counters[0] += right_is_free ? -1 : 1;
> 1545 }
> 1546
> 1547 if (first <= last)
> 1548 mb_buddy_mark_free(e4b, first >> 1, last >> 1);
> 1549
> 1550 done:
> 1551 mb_set_largest_free_order(sb, e4b->bd_info);
> 1552 mb_check_buddy(e4b);
> 1553 }
> 1554
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@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-linux+unsubscribe@...glegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/202006011907.ocBGNEZT%25lkp%40intel.com.
--
Thanks,
~Nick Desaulniers
Powered by blists - more mailing lists