[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202102120941.28pY2VxS-lkp@intel.com>
Date: Fri, 12 Feb 2021 09:45:08 +0800
From: kernel test robot <lkp@...el.com>
To: Ronak Doshi <doshir@...are.com>, netdev@...r.kernel.org
Cc: kbuild-all@...ts.01.org, Ronak Doshi <doshir@...are.com>,
Todd Sabin <tsabin@...are.com>,
"maintainer:VMWARE VMXNET3 ETHERNET DRIVER" <pv-drivers@...are.com>,
Jakub Kicinski <kuba@...nel.org>,
Jonathan Lemon <jonathan.lemon@...il.com>,
Willem de Bruijn <willemb@...gle.com>,
Randy Dunlap <rdunlap@...radead.org>,
Kevin Hao <haokexin@...il.com>,
Aleksandr Nogikh <nogikh@...gle.com>
Subject: Re: [PATCH net-next] avoid fragmenting page memory with
netdev_alloc_cache
Hi Ronak,
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/Ronak-Doshi/avoid-fragmenting-page-memory-with-netdev_alloc_cache/20210212-082217
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git e4b62cf7559f2ef9a022de235e5a09a8d7ded520
config: powerpc-allyesconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/9f45ca1995ce8958b4ee24fcdc80639314ce25aa
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Ronak-Doshi/avoid-fragmenting-page-memory-with-netdev_alloc_cache/20210212-082217
git checkout 9f45ca1995ce8958b4ee24fcdc80639314ce25aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc
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/vmxnet3/vmxnet3_drv.c: In function 'vmxnet3_rq_rx_complete':
>> drivers/net/vmxnet3/vmxnet3_drv.c:1402:8: warning: variable 'len' set but not used [-Wunused-but-set-variable]
1402 | u16 len;
| ^~~
vim +/len +1402 drivers/net/vmxnet3/vmxnet3_drv.c
45dac1d6ea045a Shreyas Bhatewara 2015-06-19 1343
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1344 static int
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1345 vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1346 struct vmxnet3_adapter *adapter, int quota)
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1347 {
215faf9c5f6e31 Joe Perches 2010-12-21 1348 static const u32 rxprod_reg[2] = {
215faf9c5f6e31 Joe Perches 2010-12-21 1349 VMXNET3_REG_RXPROD, VMXNET3_REG_RXPROD2
215faf9c5f6e31 Joe Perches 2010-12-21 1350 };
0769636cb5b956 Neil Horman 2015-07-07 1351 u32 num_pkts = 0;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1352 bool skip_page_frags = false;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1353 struct Vmxnet3_RxCompDesc *rcd;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1354 struct vmxnet3_rx_ctx *ctx = &rq->rx_ctx;
45dac1d6ea045a Shreyas Bhatewara 2015-06-19 1355 u16 segCnt = 0, mss = 0;
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1356 #ifdef __BIG_ENDIAN_BITFIELD
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1357 struct Vmxnet3_RxDesc rxCmdDesc;
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1358 struct Vmxnet3_RxCompDesc rxComp;
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1359 #endif
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1360 vmxnet3_getRxComp(rcd, &rq->comp_ring.base[rq->comp_ring.next2proc].rcd,
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1361 &rxComp);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1362 while (rcd->gen == rq->comp_ring.gen) {
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1363 struct vmxnet3_rx_buf_info *rbi;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1364 struct sk_buff *skb, *new_skb = NULL;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1365 struct page *new_page = NULL;
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1366 dma_addr_t new_dma_addr;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1367 int num_to_alloc;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1368 struct Vmxnet3_RxDesc *rxd;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1369 u32 idx, ring_idx;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1370 struct vmxnet3_cmd_ring *ring = NULL;
0769636cb5b956 Neil Horman 2015-07-07 1371 if (num_pkts >= quota) {
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1372 /* we may stop even before we see the EOP desc of
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1373 * the current pkt
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1374 */
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1375 break;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1376 }
f3002c1374fb23 hpreg@...are.com 2018-05-14 1377
f3002c1374fb23 hpreg@...are.com 2018-05-14 1378 /* Prevent any rcd field from being (speculatively) read before
f3002c1374fb23 hpreg@...are.com 2018-05-14 1379 * rcd->gen is read.
f3002c1374fb23 hpreg@...are.com 2018-05-14 1380 */
f3002c1374fb23 hpreg@...are.com 2018-05-14 1381 dma_rmb();
f3002c1374fb23 hpreg@...are.com 2018-05-14 1382
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1383 BUG_ON(rcd->rqID != rq->qid && rcd->rqID != rq->qid2 &&
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1384 rcd->rqID != rq->dataRingQid);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1385 idx = rcd->rxdIdx;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1386 ring_idx = VMXNET3_GET_RING_IDX(adapter, rcd->rqID);
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1387 ring = rq->rx_ring + ring_idx;
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1388 vmxnet3_getRxDesc(rxd, &rq->rx_ring[ring_idx].base[idx].rxd,
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1389 &rxCmdDesc);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1390 rbi = rq->buf_info[ring_idx] + idx;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1391
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1392 BUG_ON(rxd->addr != rbi->dma_addr ||
115924b6bdc7cc Shreyas Bhatewara 2009-11-16 1393 rxd->len != rbi->len);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1394
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1395 if (unlikely(rcd->eop && rcd->err)) {
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1396 vmxnet3_rx_error(rq, rcd, ctx, adapter);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1397 goto rcd_done;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1398 }
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1399
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1400 if (rcd->sop) { /* first buf of the pkt */
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1401 bool rxDataRingUsed;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 @1402 u16 len;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1403
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1404 BUG_ON(rxd->btype != VMXNET3_RXD_BTYPE_HEAD ||
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1405 (rcd->rqID != rq->qid &&
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1406 rcd->rqID != rq->dataRingQid));
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1407
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1408 BUG_ON(rbi->buf_type != VMXNET3_RX_BUF_SKB);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1409 BUG_ON(ctx->skb != NULL || rbi->skb == NULL);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1410
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1411 if (unlikely(rcd->len == 0)) {
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1412 /* Pretend the rx buffer is skipped. */
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1413 BUG_ON(!(rcd->sop && rcd->eop));
fdcd79b94b2441 Stephen Hemminger 2013-01-15 1414 netdev_dbg(adapter->netdev,
f6965582ac9b87 Randy Dunlap 2009-10-16 1415 "rxRing[%u][%u] 0 length\n",
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1416 ring_idx, idx);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1417 goto rcd_done;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1418 }
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1419
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1420 skip_page_frags = false;
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1421 ctx->skb = rbi->skb;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1422
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1423 rxDataRingUsed =
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1424 VMXNET3_RX_DATA_RING(adapter, rcd->rqID);
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1425 len = rxDataRingUsed ? rcd->len : rbi->len;
9f45ca1995ce89 Todd Sabin 2021-02-11 1426 new_skb = ___netdev_alloc_skb(adapter->netdev,
9f45ca1995ce89 Todd Sabin 2021-02-11 1427 rbi->len + NET_IP_ALIGN, GFP_ATOMIC,
9f45ca1995ce89 Todd Sabin 2021-02-11 1428 &adapter->frag_cache[rq->qid]);
9f45ca1995ce89 Todd Sabin 2021-02-11 1429 if (NET_IP_ALIGN && new_skb)
9f45ca1995ce89 Todd Sabin 2021-02-11 1430 skb_reserve(new_skb, NET_IP_ALIGN);
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1431 if (new_skb == NULL) {
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1432 /* Skb allocation failed, do not handover this
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1433 * skb to stack. Reuse it. Drop the existing pkt
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1434 */
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1435 rq->stats.rx_buf_alloc_failure++;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1436 ctx->skb = NULL;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1437 rq->stats.drop_total++;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1438 skip_page_frags = true;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1439 goto rcd_done;
5318d809d7b497 Shreyas Bhatewara 2011-07-05 1440 }
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1441
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1442 if (rxDataRingUsed) {
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1443 size_t sz;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1444
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1445 BUG_ON(rcd->len > rq->data_ring.desc_size);
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1446
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1447 ctx->skb = new_skb;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1448 sz = rcd->rxdIdx * rq->data_ring.desc_size;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1449 memcpy(new_skb->data,
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1450 &rq->data_ring.base[sz], rcd->len);
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1451 } else {
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1452 ctx->skb = rbi->skb;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1453
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1454 new_dma_addr =
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1455 dma_map_single(&adapter->pdev->dev,
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1456 new_skb->data, rbi->len,
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1457 PCI_DMA_FROMDEVICE);
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1458 if (dma_mapping_error(&adapter->pdev->dev,
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1459 new_dma_addr)) {
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1460 dev_kfree_skb(new_skb);
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1461 /* Skb allocation failed, do not
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1462 * handover this skb to stack. Reuse
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1463 * it. Drop the existing pkt.
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1464 */
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1465 rq->stats.rx_buf_alloc_failure++;
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1466 ctx->skb = NULL;
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1467 rq->stats.drop_total++;
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1468 skip_page_frags = true;
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1469 goto rcd_done;
5738a09d58d5ad Alexey Khoroshilov 2015-11-28 1470 }
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1471
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1472 dma_unmap_single(&adapter->pdev->dev,
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1473 rbi->dma_addr,
b0eb57cb97e783 Andy King 2013-08-23 1474 rbi->len,
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1475 PCI_DMA_FROMDEVICE);
d1a890fa37f27d Shreyas Bhatewara 2009-10-13 1476
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1477 /* Immediate refill */
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1478 rbi->skb = new_skb;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1479 rbi->dma_addr = new_dma_addr;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1480 rxd->addr = cpu_to_le64(rbi->dma_addr);
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1481 rxd->len = rbi->len;
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1482 }
50a5ce3e7116a7 Shrikrishna Khare 2016-06-16 1483
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (72535 bytes)
Powered by blists - more mailing lists