Re: [PATCH] md/raid6 algorithms: scale test duration for speedier boots

From: kernel test robot
Date: Mon Apr 07 2025 - 15:07:28 EST


Hi Colin,

kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-nonmm-unstable]
[also build test ERROR on akpm-mm/mm-everything linus/master v6.15-rc1 next-20250407]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Colin-Ian-King/md-raid6-algorithms-scale-test-duration-for-speedier-boots/20250407-225435
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-nonmm-unstable
patch link: https://lore.kernel.org/r/20250407143105.60-1-colin.king%40intel.com
patch subject: [PATCH] md/raid6 algorithms: scale test duration for speedier boots
config: i386-buildonly-randconfig-002-20250407 (https://download.01.org/0day-ci/archive/20250408/202504080240.huURqAeM-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250408/202504080240.huURqAeM-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202504080240.huURqAeM-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

ld: lib/raid6/algos.o: in function `raid6_choose_gen':
>> lib/raid6/algos.c:191: undefined reference to `__udivdi3'
>> ld: lib/raid6/algos.c:209: undefined reference to `__udivdi3'
ld: lib/raid6/algos.c:223: undefined reference to `__udivdi3'


vim +191 lib/raid6/algos.c

156
157 static inline const struct raid6_calls *raid6_choose_gen(
158 void *(*const dptrs)[RAID6_TEST_DISKS], const int disks)
159 {
160 unsigned long perf;
161 const unsigned long max_perf = 2500;
162 int start = (disks>>1)-1, stop = disks-3; /* work on the second half of the disks */
163 const struct raid6_calls *const *algo;
164 const struct raid6_calls *best;
165 const u64 ns_per_mb = 1000000000 >> 20;
166 u64 n, ns, t, ns_best = ~0ULL;
167
168 for (best = NULL, algo = raid6_algos; *algo; algo++) {
169 if (!best || (*algo)->priority >= best->priority) {
170 if ((*algo)->valid && !(*algo)->valid())
171 continue;
172
173 if (!IS_ENABLED(CONFIG_RAID6_PQ_BENCHMARK)) {
174 best = *algo;
175 break;
176 }
177
178 preempt_disable();
179 t = local_clock();
180 for (perf = 0; perf < max_perf; perf++) {
181 (*algo)->gen_syndrome(disks, PAGE_SIZE, *dptrs);
182 }
183 ns = local_clock() - t;
184 preempt_enable();
185
186 if (ns < ns_best) {
187 ns_best = ns;
188 best = *algo;
189 }
190 n = max_perf * PAGE_SIZE * ns_per_mb * (disks - 2);
> 191 pr_info("raid6: %-8s gen() %5llu MB/s (%llu ns)\n", (*algo)->name, (ns > 0) ? n / ns : 0, ns);
192 }
193 }
194
195 if (!best) {
196 pr_err("raid6: Yikes! No algorithm found!\n");
197 goto out;
198 }
199
200 raid6_call = *best;
201
202 if (!IS_ENABLED(CONFIG_RAID6_PQ_BENCHMARK)) {
203 pr_info("raid6: skipped pq benchmark and selected %s\n",
204 best->name);
205 goto out;
206 }
207
208 n = max_perf * PAGE_SIZE * ns_per_mb * (disks - 2);
> 209 pr_info("raid6: using algorithm %s gen() %llu MB/s (%llu ns)\n",
210 best->name, (ns_best > 0) ? n / ns_best : 0, ns_best);
211
212 if (best->xor_syndrome) {
213 preempt_disable();
214 t = local_clock();
215 for (perf = 0; perf < max_perf; perf++) {
216 best->xor_syndrome(disks, start, stop,
217 PAGE_SIZE, *dptrs);
218 }
219 ns = local_clock() - t;
220 preempt_enable();
221
222 n = max_perf * PAGE_SIZE * ns_per_mb * (disks - 2);
223 pr_info("raid6: .... xor() %llu MB/s, rmw enabled (%llu ns)\n", (ns > 0) ? n / ns : 0, ns);
224 }
225 out:
226 return best;
227 }
228

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki