lkml.org 
[lkml]   [2021]   [Dec]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
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@intel.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

\
 
 \ /
  Last update: 2021-12-18 05:24    [W:0.080 / U:22.424 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site