arch/arm/mm/copypage-fa.c:38:6: warning: no previous prototype for function 'fa_copy_user_highpage'

From: kernel test robot
Date: Sat Mar 11 2023 - 14:30:10 EST


Hi Nathan,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: ef5f68cc1f829b492b19cd4df5af4454aa816b93
commit: 5eb6e280432ddc9b755193552f3a070da8d7455c ARM: 9289/1: Allow pre-ARMv5 builds with ld.lld 16.0.0 and newer
date: 6 weeks ago
config: arm-randconfig-r014-20230312 (https://download.01.org/0day-ci/archive/20230312/202303120327.m6pfGEGi-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7)
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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5eb6e280432ddc9b755193552f3a070da8d7455c
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 5eb6e280432ddc9b755193552f3a070da8d7455c
# 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=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash arch/arm/mm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202303120327.m6pfGEGi-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> arch/arm/mm/copypage-fa.c:38:6: warning: no previous prototype for function 'fa_copy_user_highpage' [-Wmissing-prototypes]
void fa_copy_user_highpage(struct page *to, struct page *from,
^
arch/arm/mm/copypage-fa.c:38:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void fa_copy_user_highpage(struct page *to, struct page *from,
^
static
>> arch/arm/mm/copypage-fa.c:55:6: warning: no previous prototype for function 'fa_clear_user_highpage' [-Wmissing-prototypes]
void fa_clear_user_highpage(struct page *page, unsigned long vaddr)
^
arch/arm/mm/copypage-fa.c:55:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void fa_clear_user_highpage(struct page *page, unsigned long vaddr)
^
static
2 warnings generated.


vim +/fa_copy_user_highpage +38 arch/arm/mm/copypage-fa.c

28853ac8fe5221 Paulius Zaleckas 2009-03-25 37
28853ac8fe5221 Paulius Zaleckas 2009-03-25 @38 void fa_copy_user_highpage(struct page *to, struct page *from,
a3be6327163c22 Hans Ulli Kroll 2010-04-27 39 unsigned long vaddr, struct vm_area_struct *vma)
28853ac8fe5221 Paulius Zaleckas 2009-03-25 40 {
28853ac8fe5221 Paulius Zaleckas 2009-03-25 41 void *kto, *kfrom;
28853ac8fe5221 Paulius Zaleckas 2009-03-25 42
5472e862de2bc4 Cong Wang 2011-11-25 43 kto = kmap_atomic(to);
5472e862de2bc4 Cong Wang 2011-11-25 44 kfrom = kmap_atomic(from);
28853ac8fe5221 Paulius Zaleckas 2009-03-25 45 fa_copy_user_page(kto, kfrom);
5472e862de2bc4 Cong Wang 2011-11-25 46 kunmap_atomic(kfrom);
5472e862de2bc4 Cong Wang 2011-11-25 47 kunmap_atomic(kto);
28853ac8fe5221 Paulius Zaleckas 2009-03-25 48 }
28853ac8fe5221 Paulius Zaleckas 2009-03-25 49
28853ac8fe5221 Paulius Zaleckas 2009-03-25 50 /*
28853ac8fe5221 Paulius Zaleckas 2009-03-25 51 * Faraday optimised clear_user_page
28853ac8fe5221 Paulius Zaleckas 2009-03-25 52 *
28853ac8fe5221 Paulius Zaleckas 2009-03-25 53 * Same story as above.
28853ac8fe5221 Paulius Zaleckas 2009-03-25 54 */
28853ac8fe5221 Paulius Zaleckas 2009-03-25 @55 void fa_clear_user_highpage(struct page *page, unsigned long vaddr)
28853ac8fe5221 Paulius Zaleckas 2009-03-25 56 {
5472e862de2bc4 Cong Wang 2011-11-25 57 void *ptr, *kaddr = kmap_atomic(page);
28853ac8fe5221 Paulius Zaleckas 2009-03-25 58 asm volatile("\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 59 mov r1, %2 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 60 mov r2, #0 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 61 mov r3, #0 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 62 mov ip, #0 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 63 mov lr, #0 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 64 1: stmia %0, {r2, r3, ip, lr} @ 4\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 65 mcr p15, 0, %0, c7, c14, 1 @ 1 clean and invalidate D line\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 66 add %0, %0, #16 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 67 stmia %0, {r2, r3, ip, lr} @ 4\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 68 mcr p15, 0, %0, c7, c14, 1 @ 1 clean and invalidate D line\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 69 add %0, %0, #16 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 70 subs r1, r1, #1 @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 71 bne 1b @ 1\n\
28853ac8fe5221 Paulius Zaleckas 2009-03-25 72 mcr p15, 0, r1, c7, c10, 4 @ 1 drain WB"
28853ac8fe5221 Paulius Zaleckas 2009-03-25 73 : "=r" (ptr)
28853ac8fe5221 Paulius Zaleckas 2009-03-25 74 : "0" (kaddr), "I" (PAGE_SIZE / 32)
28853ac8fe5221 Paulius Zaleckas 2009-03-25 75 : "r1", "r2", "r3", "ip", "lr");
5472e862de2bc4 Cong Wang 2011-11-25 76 kunmap_atomic(kaddr);
28853ac8fe5221 Paulius Zaleckas 2009-03-25 77 }
28853ac8fe5221 Paulius Zaleckas 2009-03-25 78

:::::: The code at line 38 was first introduced by commit
:::::: 28853ac8fe5221de74a14f1182d7b2b383dfd85c ARM: Add support for FA526 v2

:::::: TO: Paulius Zaleckas <paulius.zaleckas@xxxxxxxxxxxx>
:::::: CC: Paulius Zaleckas <paulius.zaleckas@xxxxxxxxxxxx>

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