CC: [email protected]
CC: [email protected]
TO: "Jean-Philippe Brucker" <[email protected]>
CC: Joerg Roedel <[email protected]>
CC: Eric Auger <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   0280e3c58f92b2fe0e8fbbdf8d386449168de4a8
commit: 8ce4904bfd22de04ac3cd35d469c0a3337bdeb7b iommu/virtio: Enable x86 
support
date:   7 months ago
:::::: branch date: 2 days ago
:::::: commit date: 7 months ago
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/iommu/dma-iommu.c:666:25: warning: Opposite expression on both sides 
>> of '&'. [oppositeExpression]
    min_size = alloc_sizes & -alloc_sizes;
                           ^

vim +666 drivers/iommu/dma-iommu.c

0db2e5d18f76a6 Robin Murphy        2015-10-01  644  
8230ce9a4e206f Christoph Hellwig   2021-01-28  645  /*
8230ce9a4e206f Christoph Hellwig   2021-01-28  646   * If size is less than 
PAGE_SIZE, then a full CPU page will be allocated,
0db2e5d18f76a6 Robin Murphy        2015-10-01  647   * but an IOMMU which 
supports smaller pages might not map the whole thing.
0db2e5d18f76a6 Robin Murphy        2015-10-01  648   */
8230ce9a4e206f Christoph Hellwig   2021-01-28  649  static struct page 
**__iommu_dma_alloc_noncontiguous(struct device *dev,
8230ce9a4e206f Christoph Hellwig   2021-01-28  650              size_t size, 
struct sg_table *sgt, gfp_t gfp, pgprot_t prot,
e8d39a903cc680 Christoph Hellwig   2020-09-01  651              unsigned long 
attrs)
0db2e5d18f76a6 Robin Murphy        2015-10-01  652  {
43c5bf11a610ce Robin Murphy        2018-09-12  653      struct iommu_domain 
*domain = iommu_get_dma_domain(dev);
842fe519f68b4d Robin Murphy        2017-03-31  654      struct iommu_dma_cookie 
*cookie = domain->iova_cookie;
842fe519f68b4d Robin Murphy        2017-03-31  655      struct iova_domain 
*iovad = &cookie->iovad;
21b95aaf5f2212 Christoph Hellwig   2019-05-20  656      bool coherent = 
dev_is_dma_coherent(dev);
21b95aaf5f2212 Christoph Hellwig   2019-05-20  657      int ioprot = 
dma_info_to_prot(DMA_BIDIRECTIONAL, coherent, attrs);
21b95aaf5f2212 Christoph Hellwig   2019-05-20  658      unsigned int count, 
min_size, alloc_sizes = domain->pgsize_bitmap;
0db2e5d18f76a6 Robin Murphy        2015-10-01  659      struct page **pages;
842fe519f68b4d Robin Murphy        2017-03-31  660      dma_addr_t iova;
0db2e5d18f76a6 Robin Murphy        2015-10-01  661  
a8e8af35c9f4f7 Lianbo Jiang        2021-01-26  662      if 
(static_branch_unlikely(&iommu_deferred_attach_enabled) &&
3ab657291638ea Lianbo Jiang        2021-01-26  663          
iommu_deferred_attach(dev, domain))
795bbbb9b6f803 Tom Murphy          2019-09-08  664              return NULL;
795bbbb9b6f803 Tom Murphy          2019-09-08  665  
3b6b7e19e31a81 Robin Murphy        2016-04-13 @666      min_size = alloc_sizes 
& -alloc_sizes;
3b6b7e19e31a81 Robin Murphy        2016-04-13  667      if (min_size < 
PAGE_SIZE) {
3b6b7e19e31a81 Robin Murphy        2016-04-13  668              min_size = 
PAGE_SIZE;
3b6b7e19e31a81 Robin Murphy        2016-04-13  669              alloc_sizes |= 
PAGE_SIZE;
3b6b7e19e31a81 Robin Murphy        2016-04-13  670      } else {
3b6b7e19e31a81 Robin Murphy        2016-04-13  671              size = 
ALIGN(size, min_size);
3b6b7e19e31a81 Robin Murphy        2016-04-13  672      }
00085f1efa387a Krzysztof Kozlowski 2016-08-03  673      if (attrs & 
DMA_ATTR_ALLOC_SINGLE_PAGES)
3b6b7e19e31a81 Robin Murphy        2016-04-13  674              alloc_sizes = 
min_size;
3b6b7e19e31a81 Robin Murphy        2016-04-13  675  
3b6b7e19e31a81 Robin Murphy        2016-04-13  676      count = 
PAGE_ALIGN(size) >> PAGE_SHIFT;
c4b17afb0a4e8d Ganapatrao Kulkarni 2018-11-30  677      pages = 
__iommu_dma_alloc_pages(dev, count, alloc_sizes >> PAGE_SHIFT,
c4b17afb0a4e8d Ganapatrao Kulkarni 2018-11-30  678                              
        gfp);
0db2e5d18f76a6 Robin Murphy        2015-10-01  679      if (!pages)
0db2e5d18f76a6 Robin Murphy        2015-10-01  680              return NULL;
0db2e5d18f76a6 Robin Murphy        2015-10-01  681  
842fe519f68b4d Robin Murphy        2017-03-31  682      size = 
iova_align(iovad, size);
842fe519f68b4d Robin Murphy        2017-03-31  683      iova = 
iommu_dma_alloc_iova(domain, size, dev->coherent_dma_mask, dev);
0db2e5d18f76a6 Robin Murphy        2015-10-01  684      if (!iova)
0db2e5d18f76a6 Robin Murphy        2015-10-01  685              goto 
out_free_pages;
0db2e5d18f76a6 Robin Murphy        2015-10-01  686  
8230ce9a4e206f Christoph Hellwig   2021-01-28  687      if 
(sg_alloc_table_from_pages(sgt, pages, count, 0, size, GFP_KERNEL))
0db2e5d18f76a6 Robin Murphy        2015-10-01  688              goto 
out_free_iova;
0db2e5d18f76a6 Robin Murphy        2015-10-01  689  
21b95aaf5f2212 Christoph Hellwig   2019-05-20  690      if (!(ioprot & 
IOMMU_CACHE)) {
23f88e0a7e9f08 Christoph Hellwig   2019-05-20  691              struct 
scatterlist *sg;
23f88e0a7e9f08 Christoph Hellwig   2019-05-20  692              int i;
23f88e0a7e9f08 Christoph Hellwig   2019-05-20  693  
8230ce9a4e206f Christoph Hellwig   2021-01-28  694              
for_each_sg(sgt->sgl, sg, sgt->orig_nents, i)
23f88e0a7e9f08 Christoph Hellwig   2019-05-20  695                      
arch_dma_prep_coherent(sg_page(sg), sg->length);
0db2e5d18f76a6 Robin Murphy        2015-10-01  696      }
0db2e5d18f76a6 Robin Murphy        2015-10-01  697  
8230ce9a4e206f Christoph Hellwig   2021-01-28  698      if 
(iommu_map_sg_atomic(domain, iova, sgt->sgl, sgt->orig_nents, ioprot)
0db2e5d18f76a6 Robin Murphy        2015-10-01  699                      < size)
0db2e5d18f76a6 Robin Murphy        2015-10-01  700              goto 
out_free_sg;
0db2e5d18f76a6 Robin Murphy        2015-10-01  701  
8230ce9a4e206f Christoph Hellwig   2021-01-28  702      sgt->sgl->dma_address = 
iova;
e817ee5f2f95ca Christoph Hellwig   2021-01-28  703      sgt->sgl->dma_length = 
size;
8230ce9a4e206f Christoph Hellwig   2021-01-28  704      return pages;
8230ce9a4e206f Christoph Hellwig   2021-01-28  705  
8230ce9a4e206f Christoph Hellwig   2021-01-28  706  out_free_sg:
8230ce9a4e206f Christoph Hellwig   2021-01-28  707      sg_free_table(sgt);
8230ce9a4e206f Christoph Hellwig   2021-01-28  708  out_free_iova:
8230ce9a4e206f Christoph Hellwig   2021-01-28  709      
iommu_dma_free_iova(cookie, iova, size, NULL);
8230ce9a4e206f Christoph Hellwig   2021-01-28  710  out_free_pages:
8230ce9a4e206f Christoph Hellwig   2021-01-28  711      
__iommu_dma_free_pages(pages, count);
8230ce9a4e206f Christoph Hellwig   2021-01-28  712      return NULL;
8230ce9a4e206f Christoph Hellwig   2021-01-28  713  }
8230ce9a4e206f Christoph Hellwig   2021-01-28  714  

:::::: The code at line 666 was first introduced by commit
:::::: 3b6b7e19e31a816ee02a8d4372cbea9ad7db3784 iommu/dma: Finish optimising 
higher-order allocations

:::::: TO: Robin Murphy <[email protected]>
:::::: CC: Joerg Roedel <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to