Re: [PATCH v6 net-next 2/5] net: ethernet: ti: davinci_cpdma: add dma mapped submit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ivan,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Ivan-Khoronzhuk/xdp-allow-same-allocator-usage/20190706-003850
config: arm64-allmodconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   drivers/net//ethernet/ti/davinci_cpdma.c: In function 'cpdma_chan_submit_si':
>> drivers/net//ethernet/ti/davinci_cpdma.c:1047:12: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
      buffer = (u32)si->data;
               ^
   drivers/net//ethernet/ti/davinci_cpdma.c: In function 'cpdma_chan_idle_submit_mapped':
>> drivers/net//ethernet/ti/davinci_cpdma.c:1114:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
     si.data = (void *)(u32)data;
               ^
   drivers/net//ethernet/ti/davinci_cpdma.c: In function 'cpdma_chan_submit_mapped':
   drivers/net//ethernet/ti/davinci_cpdma.c:1164:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
     si.data = (void *)(u32)data;
               ^

vim +1047 drivers/net//ethernet/ti/davinci_cpdma.c

  1015	
  1016	static int cpdma_chan_submit_si(struct submit_info *si)
  1017	{
  1018		struct cpdma_chan		*chan = si->chan;
  1019		struct cpdma_ctlr		*ctlr = chan->ctlr;
  1020		int				len = si->len;
  1021		int				swlen = len;
  1022		struct cpdma_desc __iomem	*desc;
  1023		dma_addr_t			buffer;
  1024		u32				mode;
  1025		int				ret;
  1026	
  1027		if (chan->count >= chan->desc_num)	{
  1028			chan->stats.desc_alloc_fail++;
  1029			return -ENOMEM;
  1030		}
  1031	
  1032		desc = cpdma_desc_alloc(ctlr->pool);
  1033		if (!desc) {
  1034			chan->stats.desc_alloc_fail++;
  1035			return -ENOMEM;
  1036		}
  1037	
  1038		if (len < ctlr->params.min_packet_size) {
  1039			len = ctlr->params.min_packet_size;
  1040			chan->stats.runt_transmit_buff++;
  1041		}
  1042	
  1043		mode = CPDMA_DESC_OWNER | CPDMA_DESC_SOP | CPDMA_DESC_EOP;
  1044		cpdma_desc_to_port(chan, mode, si->directed);
  1045	
  1046		if (si->flags & CPDMA_DMA_EXT_MAP) {
> 1047			buffer = (u32)si->data;
  1048			dma_sync_single_for_device(ctlr->dev, buffer, len, chan->dir);
  1049			swlen |= CPDMA_DMA_EXT_MAP;
  1050		} else {
  1051			buffer = dma_map_single(ctlr->dev, si->data, len, chan->dir);
  1052			ret = dma_mapping_error(ctlr->dev, buffer);
  1053			if (ret) {
  1054				cpdma_desc_free(ctlr->pool, desc, 1);
  1055				return -EINVAL;
  1056			}
  1057		}
  1058	
  1059		/* Relaxed IO accessors can be used here as there is read barrier
  1060		 * at the end of write sequence.
  1061		 */
  1062		writel_relaxed(0, &desc->hw_next);
  1063		writel_relaxed(buffer, &desc->hw_buffer);
  1064		writel_relaxed(len, &desc->hw_len);
  1065		writel_relaxed(mode | len, &desc->hw_mode);
  1066		writel_relaxed((uintptr_t)si->token, &desc->sw_token);
  1067		writel_relaxed(buffer, &desc->sw_buffer);
  1068		writel_relaxed(swlen, &desc->sw_len);
  1069		desc_read(desc, sw_len);
  1070	
  1071		__cpdma_chan_submit(chan, desc);
  1072	
  1073		if (chan->state == CPDMA_STATE_ACTIVE && chan->rxfree)
  1074			chan_write(chan, rxfree, 1);
  1075	
  1076		chan->count++;
  1077		return 0;
  1078	}
  1079	
  1080	int cpdma_chan_idle_submit(struct cpdma_chan *chan, void *token, void *data,
  1081				   int len, int directed)
  1082	{
  1083		struct submit_info si;
  1084		unsigned long flags;
  1085		int ret;
  1086	
  1087		si.chan = chan;
  1088		si.token = token;
  1089		si.data = data;
  1090		si.len = len;
  1091		si.directed = directed;
  1092		si.flags = 0;
  1093	
  1094		spin_lock_irqsave(&chan->lock, flags);
  1095		if (chan->state == CPDMA_STATE_TEARDOWN) {
  1096			spin_unlock_irqrestore(&chan->lock, flags);
  1097			return -EINVAL;
  1098		}
  1099	
  1100		ret = cpdma_chan_submit_si(&si);
  1101		spin_unlock_irqrestore(&chan->lock, flags);
  1102		return ret;
  1103	}
  1104	
  1105	int cpdma_chan_idle_submit_mapped(struct cpdma_chan *chan, void *token,
  1106					  dma_addr_t data, int len, int directed)
  1107	{
  1108		struct submit_info si;
  1109		unsigned long flags;
  1110		int ret;
  1111	
  1112		si.chan = chan;
  1113		si.token = token;
> 1114		si.data = (void *)(u32)data;
  1115		si.len = len;
  1116		si.directed = directed;
  1117		si.flags = CPDMA_DMA_EXT_MAP;
  1118	
  1119		spin_lock_irqsave(&chan->lock, flags);
  1120		if (chan->state == CPDMA_STATE_TEARDOWN) {
  1121			spin_unlock_irqrestore(&chan->lock, flags);
  1122			return -EINVAL;
  1123		}
  1124	
  1125		ret = cpdma_chan_submit_si(&si);
  1126		spin_unlock_irqrestore(&chan->lock, flags);
  1127		return ret;
  1128	}
  1129	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux