Re: [RESEND PATCH v9 2/4] uacce: add uacce driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Zhangfei,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on cryptodev/master]
[also build test ERROR on crypto/master char-misc/char-misc-testing v5.5-rc1 next-20191209]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Zhangfei-Gao/Add-uacce-module-for-Accelerator/20191210-160210
base:   https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master
config: s390-allmodconfig (attached as .config)
compiler: s390-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=s390 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All error/warnings (new ones prefixed by >>):

>> drivers/misc/uacce/uacce.c:112:15: error: variable 'uacce_sva_ops' has initializer but incomplete type
    static struct iommu_sva_ops uacce_sva_ops = {
                  ^~~~~~~~~~~~~
>> drivers/misc/uacce/uacce.c:113:3: error: 'struct iommu_sva_ops' has no member named 'mm_exit'
     .mm_exit = uacce_sva_exit,
      ^~~~~~~
>> drivers/misc/uacce/uacce.c:113:13: warning: excess elements in struct initializer
     .mm_exit = uacce_sva_exit,
                ^~~~~~~~~~~~~~
   drivers/misc/uacce/uacce.c:113:13: note: (near initialization for 'uacce_sva_ops')
   drivers/misc/uacce/uacce.c: In function 'uacce_mm_get':
>> drivers/misc/uacce/uacce.c:144:12: error: implicit declaration of function 'iommu_sva_bind_device'; did you mean 'bus_find_device'? [-Werror=implicit-function-declaration]
      handle = iommu_sva_bind_device(uacce->parent, mm, uacce_mm);
               ^~~~~~~~~~~~~~~~~~~~~
               bus_find_device
>> drivers/misc/uacce/uacce.c:144:10: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
      handle = iommu_sva_bind_device(uacce->parent, mm, uacce_mm);
             ^
>> drivers/misc/uacce/uacce.c:148:9: error: implicit declaration of function 'iommu_sva_set_ops'; did you mean 'iommu_setup_dma_ops'? [-Werror=implicit-function-declaration]
      ret = iommu_sva_set_ops(handle, &uacce_sva_ops);
            ^~~~~~~~~~~~~~~~~
            iommu_setup_dma_ops
>> drivers/misc/uacce/uacce.c:152:21: error: implicit declaration of function 'iommu_sva_get_pasid' [-Werror=implicit-function-declaration]
      uacce_mm->pasid = iommu_sva_get_pasid(handle);
                        ^~~~~~~~~~~~~~~~~~~
>> drivers/misc/uacce/uacce.c:153:26: error: 'IOMMU_PASID_INVALID' undeclared (first use in this function); did you mean '_PAGE_INVALID'?
      if (uacce_mm->pasid == IOMMU_PASID_INVALID)
                             ^~~~~~~~~~~~~~~~~~~
                             _PAGE_INVALID
   drivers/misc/uacce/uacce.c:153:26: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/misc/uacce/uacce.c:168:3: error: implicit declaration of function 'iommu_sva_unbind_device'; did you mean 'bus_find_device'? [-Werror=implicit-function-declaration]
      iommu_sva_unbind_device(handle);
      ^~~~~~~~~~~~~~~~~~~~~~~
      bus_find_device
   drivers/misc/uacce/uacce.c: In function 'uacce_alloc':
>> drivers/misc/uacce/uacce.c:502:9: error: implicit declaration of function 'iommu_dev_enable_feature'; did you mean 'module_enable_ro'? [-Werror=implicit-function-declaration]
      ret = iommu_dev_enable_feature(parent, IOMMU_DEV_FEAT_SVA);
            ^~~~~~~~~~~~~~~~~~~~~~~~
            module_enable_ro
>> drivers/misc/uacce/uacce.c:502:42: error: 'IOMMU_DEV_FEAT_SVA' undeclared (first use in this function); did you mean 'NOMMU_VMFLAGS'?
      ret = iommu_dev_enable_feature(parent, IOMMU_DEV_FEAT_SVA);
                                             ^~~~~~~~~~~~~~~~~~
                                             NOMMU_VMFLAGS
>> drivers/misc/uacce/uacce.c:530:3: error: implicit declaration of function 'iommu_dev_disable_feature'; did you mean 'module_disable_ro'? [-Werror=implicit-function-declaration]
      iommu_dev_disable_feature(uacce->parent, IOMMU_DEV_FEAT_SVA);
      ^~~~~~~~~~~~~~~~~~~~~~~~~
      module_disable_ro
   drivers/misc/uacce/uacce.c: In function 'uacce_remove':
   drivers/misc/uacce/uacce.c:592:44: error: 'IOMMU_DEV_FEAT_SVA' undeclared (first use in this function); did you mean 'NOMMU_VMFLAGS'?
      iommu_dev_disable_feature(uacce->parent, IOMMU_DEV_FEAT_SVA);
                                               ^~~~~~~~~~~~~~~~~~
                                               NOMMU_VMFLAGS
   drivers/misc/uacce/uacce.c: At top level:
>> drivers/misc/uacce/uacce.c:112:29: error: storage size of 'uacce_sva_ops' isn't known
    static struct iommu_sva_ops uacce_sva_ops = {
                                ^~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/uacce_sva_ops +112 drivers/misc/uacce/uacce.c

   111	
 > 112	static struct iommu_sva_ops uacce_sva_ops = {
 > 113		.mm_exit = uacce_sva_exit,
   114	};
   115	
   116	static struct uacce_mm *uacce_mm_get(struct uacce_device *uacce,
   117					     struct uacce_queue *q,
   118					     struct mm_struct *mm)
   119	{
   120		struct uacce_mm *uacce_mm = NULL;
   121		struct iommu_sva *handle = NULL;
   122		int ret;
   123	
   124		lockdep_assert_held(&uacce->mm_lock);
   125	
   126		list_for_each_entry(uacce_mm, &uacce->mm_list, list) {
   127			if (uacce_mm->mm == mm) {
   128				mutex_lock(&uacce_mm->lock);
   129				list_add(&q->list, &uacce_mm->queues);
   130				mutex_unlock(&uacce_mm->lock);
   131				return uacce_mm;
   132			}
   133		}
   134	
   135		uacce_mm = kzalloc(sizeof(*uacce_mm), GFP_KERNEL);
   136		if (!uacce_mm)
   137			return NULL;
   138	
   139		if (uacce->flags & UACCE_DEV_SVA) {
   140			/*
   141			 * Safe to pass an incomplete uacce_mm, since mm_exit cannot
   142			 * fire while we hold a reference to the mm.
   143			 */
 > 144			handle = iommu_sva_bind_device(uacce->parent, mm, uacce_mm);
   145			if (IS_ERR(handle))
   146				goto err_free;
   147	
 > 148			ret = iommu_sva_set_ops(handle, &uacce_sva_ops);
   149			if (ret)
   150				goto err_unbind;
   151	
 > 152			uacce_mm->pasid = iommu_sva_get_pasid(handle);
 > 153			if (uacce_mm->pasid == IOMMU_PASID_INVALID)
   154				goto err_unbind;
   155		}
   156	
   157		uacce_mm->mm = mm;
   158		uacce_mm->handle = handle;
   159		INIT_LIST_HEAD(&uacce_mm->queues);
   160		mutex_init(&uacce_mm->lock);
   161		list_add(&q->list, &uacce_mm->queues);
   162		list_add(&uacce_mm->list, &uacce->mm_list);
   163	
   164		return uacce_mm;
   165	
   166	err_unbind:
   167		if (handle)
 > 168			iommu_sva_unbind_device(handle);
   169	err_free:
   170		kfree(uacce_mm);
   171		return NULL;
   172	}
   173	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux