Re: [PATCH v6 4/6] lib/dlock-list: Make sibling CPUs share the same linked list

From: kbuild test robot
Date: Sat Oct 07 2017 - 09:45:32 EST


Hi Waiman,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.14-rc3]
[cannot apply to next-20170929]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Waiman-Long/vfs-Use-dlock-list-for-SB-s-s_inodes-list/20171007-210724
config: i386-tinyconfig (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All error/warnings (new ones prefixed by >>):

lib/dlock-list.c: In function 'cpu2idx_init':
>> lib/dlock-list.c:75:16: error: assignment to expression with array type
sibling_mask = topology_sibling_cpumask(cpu);
^
>> lib/dlock-list.c:76:7: warning: the address of 'sibling_mask' will always evaluate as 'true' [-Waddress]
if (sibling_mask) {
^~~~~~~~~~~~

vim +75 lib/dlock-list.c

44
45 /*
46 * Initialize cpu2idx mapping table & nr_dlock_lists.
47 *
48 * It is possible that a dlock-list can be allocated before the cpu2idx is
49 * initialized. In this case, all the cpus are mapped to the first entry
50 * before initialization.
51 *
52 * All the sibling CPUs of a sibling group will map to the same dlock list so
53 * as to reduce the number of dlock lists to be maintained while minimizing
54 * cacheline contention.
55 *
56 * As the sibling masks are set up in the core initcall phase, this function
57 * has to be done in the postcore phase to get the right data.
58 */
59 static int __init cpu2idx_init(void)
60 {
61 int idx, cpu;
62 cpumask_var_t sibling_mask;
63 static struct cpumask mask __initdata;
64
65 cpumask_clear(&mask);
66 idx = 0;
67 for_each_possible_cpu(cpu) {
68 int scpu;
69
70 if (cpumask_test_cpu(cpu, &mask))
71 continue;
72 per_cpu(cpu2idx, cpu) = idx;
73 cpumask_set_cpu(cpu, &mask);
74
> 75 sibling_mask = topology_sibling_cpumask(cpu);
> 76 if (sibling_mask) {
77 for_each_cpu(scpu, sibling_mask) {
78 per_cpu(cpu2idx, scpu) = idx;
79 cpumask_set_cpu(scpu, &mask);
80 }
81 }
82 idx++;
83 }
84
85 /*
86 * nr_dlock_lists can only be set after cpu2idx is properly
87 * initialized.
88 */
89 smp_mb();
90 nr_dlock_lists = idx;
91 pr_info("dlock-list: %d head entries per dlock list.\n",
92 nr_dlock_lists);
93 return 0;
94 }
95 postcore_initcall(cpu2idx_init);
96

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

Attachment: .config.gz
Description: application/gzip