lkml.org 
[lkml]   [2022]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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@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@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(&current->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, &current->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

\
 
 \ /
  Last update: 2022-07-06 08:11    [W:1.040 / U:0.628 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site