kernel test robot
2022-Jul-06 06:08 UTC
[PATCH v2 5/5] vduse: Support registering userspace memory for IOTLB
Hi Xie, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v5.19-rc5 next-20220705] [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] url: https://github.com/intel-lab-lkp/linux/commits/Xie-Yongji/VDUSE-Support-registering-userspace-memory-as-bounce-buffer/20220706-130802 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git e35e5b6f695d241ffb1d223207da58a1fbcdff4b config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20220706/202207061418.mTlO0yqK-lkp at intel.com/config) compiler: alpha-linux-gcc (GCC) 11.3.0 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://github.com/intel-lab-lkp/linux/commit/9be699264e4fede9c3be913b2d1003c260d9fa05 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Xie-Yongji/VDUSE-Support-registering-userspace-memory-as-bounce-buffer/20220706-130802 git checkout 9be699264e4fede9c3be913b2d1003c260d9fa05 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=alpha SHELL=/bin/bash drivers/vdpa/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp at intel.com> All warnings (new ones prefixed by >>): drivers/vdpa/vdpa_user/vduse_dev.c: In function 'vduse_dev_dereg_iotlb_mem': drivers/vdpa/vdpa_user/vduse_dev.c:949:9: error: implicit declaration of function 'vfree'; did you mean 'kvfree'? [-Werror=implicit-function-declaration] 949 | vfree(dev->iotlb_mem->pages); | ^~~~~ | kvfree drivers/vdpa/vdpa_user/vduse_dev.c: In function 'vduse_dev_reg_iotlb_mem': drivers/vdpa/vdpa_user/vduse_dev.c:978:21: error: implicit declaration of function '__vmalloc'; did you mean '__kmalloc'? [-Werror=implicit-function-declaration] 978 | page_list = __vmalloc(array_size(npages, sizeof(struct page *)), | ^~~~~~~~~ | __kmalloc>> drivers/vdpa/vdpa_user/vduse_dev.c:978:19: warning: assignment to 'struct page **' from 'int' makes pointer from integer without a cast [-Wint-conversion]978 | page_list = __vmalloc(array_size(npages, sizeof(struct page *)), | ^ cc1: some warnings being treated as errors vim +978 drivers/vdpa/vdpa_user/vduse_dev.c 957 958 static int vduse_dev_reg_iotlb_mem(struct vduse_dev *dev, 959 u64 iova, u64 uaddr, u64 size) 960 { 961 struct page **page_list = NULL; 962 struct vduse_iotlb_mem *mem = NULL; 963 long pinned = 0; 964 unsigned long npages, lock_limit; 965 int ret; 966 967 if (size != dev->domain->bounce_size || 968 iova != 0 || uaddr & ~PAGE_MASK) 969 return -EINVAL; 970 971 mutex_lock(&dev->mem_lock); 972 ret = -EEXIST; 973 if (dev->iotlb_mem) 974 goto unlock; 975 976 ret = -ENOMEM; 977 npages = size >> PAGE_SHIFT; > 978 page_list = __vmalloc(array_size(npages, sizeof(struct page *)), 979 GFP_KERNEL_ACCOUNT); 980 mem = kzalloc(sizeof(*mem), GFP_KERNEL); 981 if (!page_list || !mem) 982 goto unlock; 983 984 mmap_read_lock(current->mm); 985 986 lock_limit = PFN_DOWN(rlimit(RLIMIT_MEMLOCK)); 987 if (npages + atomic64_read(¤t->mm->pinned_vm) > lock_limit) 988 goto out; 989 990 pinned = pin_user_pages(uaddr, npages, FOLL_LONGTERM | FOLL_WRITE, 991 page_list, NULL); 992 if (pinned != npages) { 993 ret = pinned < 0 ? pinned : -ENOMEM; 994 goto out; 995 } 996 997 ret = vduse_domain_add_user_bounce_pages(dev->domain, 998 page_list, pinned); 999 if (ret) 1000 goto out; 1001 1002 atomic64_add(npages, ¤t->mm->pinned_vm); 1003 1004 mem->pages = page_list; 1005 mem->npages = pinned; 1006 mem->iova = iova; 1007 mem->mm = current->mm; 1008 mmgrab(current->mm); 1009 1010 dev->iotlb_mem = mem; 1011 out: 1012 if (ret && pinned > 0) 1013 unpin_user_pages(page_list, pinned); 1014 1015 mmap_read_unlock(current->mm); 1016 unlock: 1017 if (ret) { 1018 vfree(page_list); 1019 kfree(mem); 1020 } 1021 mutex_unlock(&dev->mem_lock); 1022 return ret; 1023 } 1024 -- 0-DAY CI Kernel Test Service https://01.org/lkp