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-lkp@xxxxxxxxx/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-lkp@xxxxxxxxx/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 <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202404120044.VKtjHMzy-lkp@xxxxxxxxx/ 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