Hi Xuan,

kernel test robot noticed the following build warnings:

[auto build test WARNING on mst-vhost/linux-next]
[also build test WARNING on linus/master v6.9-rc3 next-20240411]
[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#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Xuan-Zhuo/virtio_ring-introduce-dma-map-api-for-page/20240411-105318
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git linux-next
patch link:    
https://lore.kernel.org/r/20240411025127.51945-5-xuanzhuo%40linux.alibaba.com
patch subject: [PATCH vhost 4/6] virtio_net: big mode support premapped
config: i386-randconfig-016-20240411 
(https://download.01.org/0day-ci/archive/20240412/202404120044.vktjhmzy-...@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 
6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20240412/202404120044.vktjhmzy-...@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202404120044.vktjhmzy-...@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/net/virtio_net.c:449:21: warning: implicit conversion from 
>> 'dma_addr_t' (aka 'unsigned long long') to 'unsigned long' changes value 
>> from 18446744073709551615 to 4294967295 [-Wconstant-conversion]
     449 |         page_dma_addr(p) = DMA_MAPPING_ERROR;
         |                          ~ ^~~~~~~~~~~~~~~~~
   include/linux/dma-mapping.h:75:29: note: expanded from macro 
'DMA_MAPPING_ERROR'
      75 | #define DMA_MAPPING_ERROR               (~(dma_addr_t)0)
         |                                          ^~~~~~~~~~~~~~
>> drivers/net/virtio_net.c:485:26: warning: result of comparison of constant 
>> 18446744073709551615 with expression of type 'unsigned long' is always false 
>> [-Wtautological-constant-out-of-range-compare]
     485 |         if (page_dma_addr(page) == DMA_MAPPING_ERROR) {
         |             ~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~
   2 warnings generated.


vim +449 drivers/net/virtio_net.c

   443  
   444  static void page_chain_unmap(struct receive_queue *rq, struct page *p)
   445  {
   446          virtqueue_dma_unmap_page_attrs(rq->vq, page_dma_addr(p), 
PAGE_SIZE,
   447                                         DMA_FROM_DEVICE, 0);
   448  
 > 449          page_dma_addr(p) = DMA_MAPPING_ERROR;
   450  }
   451  
   452  static int page_chain_map(struct receive_queue *rq, struct page *p)
   453  {
   454          dma_addr_t addr;
   455  
   456          addr = virtqueue_dma_map_page_attrs(rq->vq, p, 0, PAGE_SIZE, 
DMA_FROM_DEVICE, 0);
   457          if (virtqueue_dma_mapping_error(rq->vq, addr))
   458                  return -ENOMEM;
   459  
   460          page_dma_addr(p) = addr;
   461          return 0;
   462  }
   463  
   464  static void page_chain_release(struct receive_queue *rq)
   465  {
   466          struct page *p, *n;
   467  
   468          for (p = rq->pages; p; p = n) {
   469                  n = page_chain_next(p);
   470  
   471                  page_chain_unmap(rq, p);
   472                  __free_pages(p, 0);
   473          }
   474  
   475          rq->pages = NULL;
   476  }
   477  
   478  /*
   479   * put the whole most recent used list in the beginning for reuse
   480   */
   481  static void give_pages(struct receive_queue *rq, struct page *page)
   482  {
   483          struct page *end;
   484  
 > 485          if (page_dma_addr(page) == DMA_MAPPING_ERROR) {
   486                  if (page_chain_map(rq, page)) {
   487                          __free_pages(page, 0);
   488                          return;
   489                  }
   490          }
   491  
   492          /* Find end of list, sew whole thing into vi->rq.pages. */
   493          for (end = page; page_chain_next(end); end = 
page_chain_next(end));
   494  
   495          page_chain_add(end, rq->pages);
   496          rq->pages = page;
   497  }
   498  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to