Hi Moritz, [auto build test WARNING on net-next/master] [also build test WARNING on v4.12 next-20170713] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Moritz-Fischer/dt-bindings-net-Add-bindings-for-National-Instruments-XGE-netdev/20170714-125718 config: ia64-allmodconfig (attached as .config) compiler: ia64-linux-gcc (GCC) 6.2.0 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=ia64 All warnings (new ones prefixed by >>): In file included from include/linux/if_ether.h:23:0, from include/linux/etherdevice.h:25, from drivers/net/ethernet/ni/nixge.c:14: drivers/net/ethernet/ni/nixge.c: In function 'nixge_dma_bd_release': >> drivers/net/ethernet/ni/nixge.c:241:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] dev_kfree_skb((struct sk_buff *) ^ include/linux/skbuff.h:977:38: note: in definition of macro 'dev_kfree_skb' #define dev_kfree_skb(a) consume_skb(a) ^ drivers/net/ethernet/ni/nixge.c: In function 'nixge_dma_bd_init': >> drivers/net/ethernet/ni/nixge.c:299:35: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] priv->rx_bd_v[i].sw_id_offset = (u32)skb; ^ drivers/net/ethernet/ni/nixge.c: In function 'nixge_start_xmit_done': drivers/net/ethernet/ni/nixge.c:452:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] dev_kfree_skb_irq((struct sk_buff *)cur_p->app4); ^ drivers/net/ethernet/ni/nixge.c: In function 'nixge_recv': drivers/net/ethernet/ni/nixge.c:546:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] skb = (struct sk_buff *)(cur_p->sw_id_offset); ^ drivers/net/ethernet/ni/nixge.c:577:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] cur_p->sw_id_offset = (u32)new_skb; ^ drivers/net/ethernet/ni/nixge.c: In function 'nixge_dma_err_handler': drivers/net/ethernet/ni/nixge.c:687:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] dev_kfree_skb_irq((struct sk_buff *)cur_p->app4); ^ vim +241 drivers/net/ethernet/ni/nixge.c 228 229 #define nixge_ctrl_poll_timeout(priv, addr, val, cond, sleep_us, timeout_us) \ 230 readl_poll_timeout((priv)->ctrl_regs + (addr), (val), cond, \ 231 (sleep_us), (timeout_us)) 232 233 static void nixge_dma_bd_release(struct net_device *ndev) 234 { 235 int i; 236 struct nixge_priv *priv = netdev_priv(ndev); 237 238 for (i = 0; i < RX_BD_NUM; i++) { 239 dma_unmap_single(ndev->dev.parent, priv->rx_bd_v[i].phys, 240 priv->max_frm_size, DMA_FROM_DEVICE); > 241 dev_kfree_skb((struct sk_buff *) 242 (priv->rx_bd_v[i].sw_id_offset)); 243 } 244 245 if (priv->rx_bd_v) { 246 dma_free_coherent(ndev->dev.parent, 247 sizeof(*priv->rx_bd_v) * RX_BD_NUM, 248 priv->rx_bd_v, 249 priv->rx_bd_p); 250 } 251 if (priv->tx_bd_v) { 252 dma_free_coherent(ndev->dev.parent, 253 sizeof(*priv->tx_bd_v) * TX_BD_NUM, 254 priv->tx_bd_v, 255 priv->tx_bd_p); 256 } 257 } 258 259 static int nixge_dma_bd_init(struct net_device *ndev) 260 { 261 u32 cr; 262 int i; 263 struct sk_buff *skb; 264 struct nixge_priv *priv = netdev_priv(ndev); 265 266 /* Reset the indexes which are used for accessing the BDs */ 267 priv->tx_bd_ci = 0; 268 priv->tx_bd_tail = 0; 269 priv->rx_bd_ci = 0; 270 271 /* Allocate the Tx and Rx buffer descriptors. */ 272 priv->tx_bd_v = dma_zalloc_coherent(ndev->dev.parent, 273 sizeof(*priv->tx_bd_v) * TX_BD_NUM, 274 &priv->tx_bd_p, GFP_KERNEL); 275 if (!priv->tx_bd_v) 276 goto out; 277 278 priv->rx_bd_v = dma_zalloc_coherent(ndev->dev.parent, 279 sizeof(*priv->rx_bd_v) * RX_BD_NUM, 280 &priv->rx_bd_p, GFP_KERNEL); 281 if (!priv->rx_bd_v) 282 goto out; 283 284 for (i = 0; i < TX_BD_NUM; i++) { 285 priv->tx_bd_v[i].next = priv->tx_bd_p + 286 sizeof(*priv->tx_bd_v) * 287 ((i + 1) % TX_BD_NUM); 288 } 289 290 for (i = 0; i < RX_BD_NUM; i++) { 291 priv->rx_bd_v[i].next = priv->rx_bd_p + 292 sizeof(*priv->rx_bd_v) * 293 ((i + 1) % RX_BD_NUM); 294 295 skb = netdev_alloc_skb_ip_align(ndev, priv->max_frm_size); 296 if (!skb) 297 goto out; 298 > 299 priv->rx_bd_v[i].sw_id_offset = (u32)skb; 300 priv->rx_bd_v[i].phys = dma_map_single(ndev->dev.parent, 301 skb->data, 302 priv->max_frm_size, 303 DMA_FROM_DEVICE); 304 priv->rx_bd_v[i].cntrl = priv->max_frm_size; 305 } 306 307 /* Start updating the Rx channel control register */ 308 cr = nixge_dma_read_reg(priv, XAXIDMA_RX_CR_OFFSET); 309 /* Update the interrupt coalesce count */ 310 cr = ((cr & ~XAXIDMA_COALESCE_MASK) | 311 ((priv->coalesce_count_rx) << XAXIDMA_COALESCE_SHIFT)); 312 /* Update the delay timer count */ 313 cr = ((cr & ~XAXIDMA_DELAY_MASK) | 314 (XAXIDMA_DFT_RX_WAITBOUND << XAXIDMA_DELAY_SHIFT)); 315 /* Enable coalesce, delay timer and error interrupts */ 316 cr |= XAXIDMA_IRQ_ALL_MASK; 317 /* Write to the Rx channel control register */ 318 nixge_dma_write_reg(priv, XAXIDMA_RX_CR_OFFSET, cr); 319 320 /* Start updating the Tx channel control register */ 321 cr = nixge_dma_read_reg(priv, XAXIDMA_TX_CR_OFFSET); 322 /* Update the interrupt coalesce count */ 323 cr = (((cr & ~XAXIDMA_COALESCE_MASK)) | 324 ((priv->coalesce_count_tx) << XAXIDMA_COALESCE_SHIFT)); 325 /* Update the delay timer count */ 326 cr = (((cr & ~XAXIDMA_DELAY_MASK)) | 327 (XAXIDMA_DFT_TX_WAITBOUND << XAXIDMA_DELAY_SHIFT)); 328 /* Enable coalesce, delay timer and error interrupts */ 329 cr |= XAXIDMA_IRQ_ALL_MASK; 330 /* Write to the Tx channel control register */ 331 nixge_dma_write_reg(priv, XAXIDMA_TX_CR_OFFSET, cr); 332 333 /* Populate the tail pointer and bring the Rx Axi DMA engine out of 334 * halted state. This will make the Rx side ready for reception. 335 */ 336 nixge_dma_write_reg(priv, XAXIDMA_RX_CDESC_OFFSET, priv->rx_bd_p); 337 cr = nixge_dma_read_reg(priv, XAXIDMA_RX_CR_OFFSET); 338 nixge_dma_write_reg(priv, XAXIDMA_RX_CR_OFFSET, 339 cr | XAXIDMA_CR_RUNSTOP_MASK); 340 nixge_dma_write_reg(priv, XAXIDMA_RX_TDESC_OFFSET, priv->rx_bd_p + 341 (sizeof(*priv->rx_bd_v) * (RX_BD_NUM - 1))); 342 343 /* Write to the RS (Run-stop) bit in the Tx channel control register. 344 * Tx channel is now ready to run. But only after we write to the 345 * tail pointer register that the Tx channel will start transmitting. 346 */ 347 nixge_dma_write_reg(priv, XAXIDMA_TX_CDESC_OFFSET, priv->tx_bd_p); 348 cr = nixge_dma_read_reg(priv, XAXIDMA_TX_CR_OFFSET); 349 nixge_dma_write_reg(priv, XAXIDMA_TX_CR_OFFSET, 350 cr | XAXIDMA_CR_RUNSTOP_MASK); 351 352 return 0; 353 out: 354 nixge_dma_bd_release(ndev); 355 return -ENOMEM; 356 } 357 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip