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

Re: [Xen-devel] [Intel-gfx] [PATCH] dma-buf: add struct dma_buf_attach_info v2



Hi "Christian,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.1-rc7 next-20190430]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Christian-K-nig/dma-buf-add-struct-dma_buf_attach_info-v2/20190430-221017
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

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


sparse warnings: (new ones prefixed by >>)

>> drivers/xen/gntdev-dmabuf.c:634:33: sparse: sparse: incorrect type in 
>> argument 1 (different base types) @@    expected struct dma_buf_attach_info 
>> const *info @@    got dma_buf_attach_info const *info @@
>> drivers/xen/gntdev-dmabuf.c:634:33: sparse:    expected struct 
>> dma_buf_attach_info const *info
>> drivers/xen/gntdev-dmabuf.c:634:33: sparse:    got struct dma_buf 
>> *[assigned] dma_buf
>> drivers/xen/gntdev-dmabuf.c:634:32: sparse: sparse: too many arguments for 
>> function dma_buf_attach

vim +634 drivers/xen/gntdev-dmabuf.c

bf8dc55b Oleksandr Andrushchenko 2018-07-20  605  
932d6562 Oleksandr Andrushchenko 2018-07-20  606  static struct gntdev_dmabuf *
932d6562 Oleksandr Andrushchenko 2018-07-20  607  dmabuf_imp_to_refs(struct 
gntdev_dmabuf_priv *priv, struct device *dev,
932d6562 Oleksandr Andrushchenko 2018-07-20  608                   int fd, int 
count, int domid)
932d6562 Oleksandr Andrushchenko 2018-07-20  609  {
bf8dc55b Oleksandr Andrushchenko 2018-07-20  610        struct gntdev_dmabuf 
*gntdev_dmabuf, *ret;
e648feab Christian König         2019-04-30  611        struct 
dma_buf_attach_info attach_info;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  612        struct dma_buf *dma_buf;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  613        struct 
dma_buf_attachment *attach;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  614        struct sg_table *sgt;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  615        struct sg_page_iter 
sg_iter;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  616        int i;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  617  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  618        dma_buf = 
dma_buf_get(fd);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  619        if (IS_ERR(dma_buf))
bf8dc55b Oleksandr Andrushchenko 2018-07-20  620                return 
ERR_CAST(dma_buf);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  621  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  622        gntdev_dmabuf = 
dmabuf_imp_alloc_storage(count);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  623        if 
(IS_ERR(gntdev_dmabuf)) {
bf8dc55b Oleksandr Andrushchenko 2018-07-20  624                ret = 
gntdev_dmabuf;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  625                goto fail_put;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  626        }
bf8dc55b Oleksandr Andrushchenko 2018-07-20  627  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  628        gntdev_dmabuf->priv = 
priv;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  629        gntdev_dmabuf->fd = fd;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  630  
e648feab Christian König         2019-04-30  631        memset(&attach_info, 0, 
sizeof(attach_info));
e648feab Christian König         2019-04-30  632        attach_info.dev = dev;
e648feab Christian König         2019-04-30  633        attach_info.dmabuf = 
dma_buf;
bf8dc55b Oleksandr Andrushchenko 2018-07-20 @634        attach = 
dma_buf_attach(dma_buf, dev);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  635        if (IS_ERR(attach)) {
bf8dc55b Oleksandr Andrushchenko 2018-07-20  636                ret = 
ERR_CAST(attach);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  637                goto 
fail_free_obj;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  638        }
bf8dc55b Oleksandr Andrushchenko 2018-07-20  639  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  640        
gntdev_dmabuf->u.imp.attach = attach;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  641  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  642        sgt = 
dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  643        if (IS_ERR(sgt)) {
bf8dc55b Oleksandr Andrushchenko 2018-07-20  644                ret = 
ERR_CAST(sgt);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  645                goto 
fail_detach;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  646        }
bf8dc55b Oleksandr Andrushchenko 2018-07-20  647  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  648        /* Check number of 
pages that imported buffer has. */
bf8dc55b Oleksandr Andrushchenko 2018-07-20  649        if 
(attach->dmabuf->size != gntdev_dmabuf->nr_pages << PAGE_SHIFT) {
bf8dc55b Oleksandr Andrushchenko 2018-07-20  650                ret = 
ERR_PTR(-EINVAL);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  651                pr_debug("DMA 
buffer has %zu pages, user-space expects %d\n",
bf8dc55b Oleksandr Andrushchenko 2018-07-20  652                         
attach->dmabuf->size, gntdev_dmabuf->nr_pages);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  653                goto fail_unmap;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  654        }
bf8dc55b Oleksandr Andrushchenko 2018-07-20  655  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  656        
gntdev_dmabuf->u.imp.sgt = sgt;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  657  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  658        /* Now convert sgt to 
array of pages and check for page validity. */
bf8dc55b Oleksandr Andrushchenko 2018-07-20  659        i = 0;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  660        
for_each_sg_page(sgt->sgl, &sg_iter, sgt->nents, 0) {
bf8dc55b Oleksandr Andrushchenko 2018-07-20  661                struct page 
*page = sg_page_iter_page(&sg_iter);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  662                /*
bf8dc55b Oleksandr Andrushchenko 2018-07-20  663                 * Check if 
page is valid: this can happen if we are given
bf8dc55b Oleksandr Andrushchenko 2018-07-20  664                 * a page from 
VRAM or other resources which are not backed
bf8dc55b Oleksandr Andrushchenko 2018-07-20  665                 * by a struct 
page.
bf8dc55b Oleksandr Andrushchenko 2018-07-20  666                 */
bf8dc55b Oleksandr Andrushchenko 2018-07-20  667                if 
(!pfn_valid(page_to_pfn(page))) {
bf8dc55b Oleksandr Andrushchenko 2018-07-20  668                        ret = 
ERR_PTR(-EINVAL);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  669                        goto 
fail_unmap;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  670                }
bf8dc55b Oleksandr Andrushchenko 2018-07-20  671  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  672                
gntdev_dmabuf->pages[i++] = page;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  673        }
bf8dc55b Oleksandr Andrushchenko 2018-07-20  674  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  675        ret = 
ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
bf8dc55b Oleksandr Andrushchenko 2018-07-20  676                                
                      gntdev_dmabuf->u.imp.refs,
bf8dc55b Oleksandr Andrushchenko 2018-07-20  677                                
                      count, domid));
bf8dc55b Oleksandr Andrushchenko 2018-07-20  678        if (IS_ERR(ret))
bf8dc55b Oleksandr Andrushchenko 2018-07-20  679                goto 
fail_end_access;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  680  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  681        pr_debug("Imported DMA 
buffer with fd %d\n", fd);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  682  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  683        mutex_lock(&priv->lock);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  684        
list_add(&gntdev_dmabuf->next, &priv->imp_list);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  685        
mutex_unlock(&priv->lock);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  686  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  687        return gntdev_dmabuf;
bf8dc55b Oleksandr Andrushchenko 2018-07-20  688  
bf8dc55b Oleksandr Andrushchenko 2018-07-20  689  fail_end_access:
bf8dc55b Oleksandr Andrushchenko 2018-07-20  690        
dmabuf_imp_end_foreign_access(gntdev_dmabuf->u.imp.refs, count);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  691  fail_unmap:
bf8dc55b Oleksandr Andrushchenko 2018-07-20  692        
dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  693  fail_detach:
bf8dc55b Oleksandr Andrushchenko 2018-07-20  694        dma_buf_detach(dma_buf, 
attach);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  695  fail_free_obj:
bf8dc55b Oleksandr Andrushchenko 2018-07-20  696        
dmabuf_imp_free_storage(gntdev_dmabuf);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  697  fail_put:
bf8dc55b Oleksandr Andrushchenko 2018-07-20  698        dma_buf_put(dma_buf);
bf8dc55b Oleksandr Andrushchenko 2018-07-20  699        return ret;
932d6562 Oleksandr Andrushchenko 2018-07-20  700  }
932d6562 Oleksandr Andrushchenko 2018-07-20  701  

:::::: The code at line 634 was first introduced by commit
:::::: bf8dc55b135873d8bc58bb8fbc91c52f3a902eea xen/gntdev: Implement dma-buf 
import functionality

:::::: TO: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx>
:::::: CC: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>

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

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.