tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 81214a573d19ae2fa5b528286ba23cd1cb17feec commit: 080ae5bb93cd83604c93417bea6a6434e4eb2aca [5006/5092] kprobes,lib: kretprobe scalability improvement config: hexagon-randconfig-r026-20221102 compiler: clang version 15.0.4 (https://github.com/llvm/llvm-project 5c68a1cb123161b54b72ce90e7975d95a8eaf2a4) 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 # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=080ae5bb93cd83604c93417bea6a6434e4eb2aca git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 080ae5bb93cd83604c93417bea6a6434e4eb2aca # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot Note: the linux-next/master HEAD 81214a573d19ae2fa5b528286ba23cd1cb17feec builds fine. It may have been fixed somewhere. All errors (new ones prefixed by >>): >> lib/objpool.c:378:3: error: call to undeclared function 'prefetch'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration] prefetch(&ents[id]); ^ 1 error generated. vim +/prefetch +378 lib/objpool.c 364 365 /* try to retrieve object from slot */ 366 static inline void *__objpool_try_get_slot(struct objpool_slot *os) 367 { 368 uint32_t *ages = SLOT_AGES(os); 369 void **ents = SLOT_ENTS(os); 370 /* do memory load of os_head to local head */ 371 uint32_t head = smp_load_acquire(&os->os_head); 372 373 /* loop if slot isn't empty */ 374 while (head != READ_ONCE(os->os_tail)) { 375 uint32_t id = head & os->os_mask, prev = head; 376 377 /* do prefetching of object ents */ > 378 prefetch(&ents[id]); 379 380 /* 381 * check whether this item was ready for retrieval ? There's 382 * possibility * in theory * we might retrieve wrong object, 383 * in case ages[id] overflows when current task is sleeping, 384 * but it will take very very long to overflow an uint32_t 385 */ 386 if (smp_load_acquire(&ages[id]) == head) { 387 /* node must have been udpated by push() */ 388 void *node = READ_ONCE(ents[id]); 389 /* commit and move forward head of the slot */ 390 if (try_cmpxchg_release(&os->os_head, &head, head + 1)) 391 return node; 392 } 393 394 /* re-load head from memory continue trying */ 395 head = READ_ONCE(os->os_head); 396 /* 397 * head stays unchanged, so it's very likely current pop() 398 * just preempted/interrupted an ongoing push() operation 399 */ 400 if (head == prev) 401 break; 402 } 403 404 return NULL; 405 } 406 -- 0-DAY CI Kernel Test Service https://01.org/lkp