[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <202112181204.uRIUsFfa-lkp@intel.com>
Date: Sat, 18 Dec 2021 12:23:30 +0800
From: kernel test robot <lkp@...el.com>
To: Tianyu Lan <Tianyu.Lan@...rosoft.com>
Cc: kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
Wei Liu <wei.liu@...nel.org>,
Haiyang Zhang <haiyangz@...rosoft.com>,
Michael Kelley <mikelley@...rosoft.com>
Subject: [hyperv:hyperv-next 5/5] drivers/net/hyperv/netvsc.c:1026:5:
warning: no previous prototype for 'netvsc_dma_map'
tree: https://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git hyperv-next
head: 19fd7ca00201c0525452dcf5a490e4b01674ef4c
commit: 19fd7ca00201c0525452dcf5a490e4b01674ef4c [5/5] net: netvsc: Add Isolation VM support for netvsc driver
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20211218/202112181204.uRIUsFfa-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git/commit/?id=19fd7ca00201c0525452dcf5a490e4b01674ef4c
git remote add hyperv https://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
git fetch --no-tags hyperv hyperv-next
git checkout 19fd7ca00201c0525452dcf5a490e4b01674ef4c
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/net/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All warnings (new ones prefixed by >>):
>> drivers/net/hyperv/netvsc.c:1026:5: warning: no previous prototype for 'netvsc_dma_map' [-Wmissing-prototypes]
1026 | int netvsc_dma_map(struct hv_device *hv_dev,
| ^~~~~~~~~~~~~~
vim +/netvsc_dma_map +1026 drivers/net/hyperv/netvsc.c
1007
1008 /* netvsc_dma_map - Map swiotlb bounce buffer with data page of
1009 * packet sent by vmbus_sendpacket_pagebuffer() in the Isolation
1010 * VM.
1011 *
1012 * In isolation VM, netvsc send buffer has been marked visible to
1013 * host and so the data copied to send buffer doesn't need to use
1014 * bounce buffer. The data pages handled by vmbus_sendpacket_pagebuffer()
1015 * may not be copied to send buffer and so these pages need to be
1016 * mapped with swiotlb bounce buffer. netvsc_dma_map() is to do
1017 * that. The pfns in the struct hv_page_buffer need to be converted
1018 * to bounce buffer's pfn. The loop here is necessary because the
1019 * entries in the page buffer array are not necessarily full
1020 * pages of data. Each entry in the array has a separate offset and
1021 * len that may be non-zero, even for entries in the middle of the
1022 * array. And the entries are not physically contiguous. So each
1023 * entry must be individually mapped rather than as a contiguous unit.
1024 * So not use dma_map_sg() here.
1025 */
> 1026 int netvsc_dma_map(struct hv_device *hv_dev,
1027 struct hv_netvsc_packet *packet,
1028 struct hv_page_buffer *pb)
1029 {
1030 u32 page_count = packet->cp_partial ?
1031 packet->page_buf_cnt - packet->rmsg_pgcnt :
1032 packet->page_buf_cnt;
1033 dma_addr_t dma;
1034 int i;
1035
1036 if (!hv_is_isolation_supported())
1037 return 0;
1038
1039 packet->dma_range = kcalloc(page_count,
1040 sizeof(*packet->dma_range),
1041 GFP_KERNEL);
1042 if (!packet->dma_range)
1043 return -ENOMEM;
1044
1045 for (i = 0; i < page_count; i++) {
1046 char *src = phys_to_virt((pb[i].pfn << HV_HYP_PAGE_SHIFT)
1047 + pb[i].offset);
1048 u32 len = pb[i].len;
1049
1050 dma = dma_map_single(&hv_dev->device, src, len,
1051 DMA_TO_DEVICE);
1052 if (dma_mapping_error(&hv_dev->device, dma)) {
1053 kfree(packet->dma_range);
1054 return -ENOMEM;
1055 }
1056
1057 /* pb[].offset and pb[].len are not changed during dma mapping
1058 * and so not reassign.
1059 */
1060 packet->dma_range[i].dma = dma;
1061 packet->dma_range[i].mapping_size = len;
1062 pb[i].pfn = dma >> HV_HYP_PAGE_SHIFT;
1063 }
1064
1065 return 0;
1066 }
1067
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Powered by blists - more mailing lists