From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [net-next RFC v3 1/6] net: marvell: prestera: Add driver for Prestera family ASIC devices
Date: Thu, 28 May 2020 01:57:09 +0800 [thread overview]
Message-ID: <202005280113.Bn3v4kR7%lkp@intel.com> (raw)
In-Reply-To: <20200526171302.28649-2-vadym.kochan@plvision.eu>
[-- Attachment #1: Type: text/plain, Size: 9684 bytes --]
Hi Vadym,
[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on net-next/master]
[also build test WARNING on net/master sparc-next/master linus/master v5.7-rc7 next-20200526]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Vadym-Kochan/net-marvell-prestera-Add-Switchdev-driver-for-Prestera-family-ASIC-device-98DX326x-AC3x/20200527-014008
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git d52caf0404e625bcda352ebea53be25e91f9de02
config: riscv-allyesconfig (attached as .config)
compiler: riscv64-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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c: In function 'prestera_sdma_tx_recycle_work_fn':
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:535:17: warning: variable 'dma_dev' set but not used [-Wunused-but-set-variable]
535 | struct device *dma_dev;
| ^~~~~~~
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c: At top level:
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:656:5: warning: no previous prototype for 'prestera_sdma_switch_init' [-Wmissing-prototypes]
656 | int prestera_sdma_switch_init(struct prestera_switch *sw)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:716:6: warning: no previous prototype for 'prestera_sdma_switch_fini' [-Wmissing-prototypes]
716 | void prestera_sdma_switch_fini(struct prestera_switch *sw)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:755:13: warning: no previous prototype for 'prestera_sdma_xmit' [-Wmissing-prototypes]
755 | netdev_tx_t prestera_sdma_xmit(struct prestera_sdma *sdma, struct sk_buff *skb)
| ^~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:812:5: warning: no previous prototype for 'prestera_rxtx_switch_init' [-Wmissing-prototypes]
812 | int prestera_rxtx_switch_init(struct prestera_switch *sw)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:825:6: warning: no previous prototype for 'prestera_rxtx_switch_fini' [-Wmissing-prototypes]
825 | void prestera_rxtx_switch_fini(struct prestera_switch *sw)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:831:5: warning: no previous prototype for 'prestera_rxtx_port_init' [-Wmissing-prototypes]
831 | int prestera_rxtx_port_init(struct prestera_port *port)
| ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/marvell/prestera/prestera_rxtx.c:843:13: warning: no previous prototype for 'prestera_rxtx_xmit' [-Wmissing-prototypes]
843 | netdev_tx_t prestera_rxtx_xmit(struct prestera_port *port, struct sk_buff *skb)
| ^~~~~~~~~~~~~~~~~~
vim +/dma_dev +535 drivers/net/ethernet/marvell/prestera/prestera_rxtx.c
529
530 static void prestera_sdma_tx_recycle_work_fn(struct work_struct *work)
531 {
532 int bnum = PRESTERA_SDMA_TX_DESC_PER_Q;
533 struct prestera_tx_ring *tx_ring;
534 struct prestera_sdma *sdma;
> 535 struct device *dma_dev;
536 int b;
537
538 sdma = container_of(work, struct prestera_sdma, tx_work);
539
540 dma_dev = sdma->sw->dev->dev;
541 tx_ring = &sdma->tx_ring;
542
543 for (b = 0; b < bnum; b++) {
544 struct prestera_sdma_buf *buf = &tx_ring->bufs[b];
545
546 if (!buf->is_used)
547 continue;
548
549 if (!PRESTERA_SDMA_TX_DESC_IS_SENT(buf->desc))
550 continue;
551
552 prestera_sdma_tx_buf_unmap(sdma, buf);
553 dev_consume_skb_any(buf->skb);
554 buf->skb = NULL;
555
556 /* make sure everything is cleaned up */
557 wmb();
558
559 buf->is_used = false;
560 }
561 }
562
563 static int prestera_sdma_tx_init(struct prestera_sdma *sdma)
564 {
565 struct prestera_tx_ring *tx_ring = &sdma->tx_ring;
566 int bnum = PRESTERA_SDMA_TX_DESC_PER_Q;
567 struct prestera_sdma_buf *head;
568 int err;
569 int b;
570
571 INIT_WORK(&sdma->tx_work, prestera_sdma_tx_recycle_work_fn);
572 spin_lock_init(&sdma->tx_lock);
573
574 tx_ring->bufs = kmalloc_array(bnum, sizeof(*head), GFP_KERNEL);
575 if (!tx_ring->bufs)
576 return -ENOMEM;
577
578 head = &tx_ring->bufs[0];
579
580 tx_ring->max_burst = PRESTERA_SDMA_TX_MAX_BURST;
581 tx_ring->burst = tx_ring->max_burst;
582 tx_ring->next_tx = 0;
583
584 for (b = 0; b < bnum; b++) {
585 struct prestera_sdma_buf *buf = &tx_ring->bufs[b];
586
587 err = prestera_sdma_buf_init(sdma, buf);
588 if (err)
589 return err;
590
591 prestera_sdma_tx_desc_init(sdma, buf->desc);
592
593 buf->is_used = false;
594
595 if (b == 0)
596 continue;
597
598 prestera_sdma_tx_desc_set_next(sdma, tx_ring->bufs[b - 1].desc,
599 buf->desc_dma);
600
601 if (b == PRESTERA_SDMA_TX_DESC_PER_Q - 1)
602 prestera_sdma_tx_desc_set_next(sdma, buf->desc,
603 head->desc_dma);
604 }
605
606 /* make sure descriptors are written */
607 wmb();
608
609 prestera_write(sdma->sw, PRESTERA_SDMA_TX_QUEUE_DESC_REG,
610 prestera_sdma_map(sdma, head->desc_dma));
611
612 return 0;
613 }
614
615 static void prestera_sdma_tx_fini(struct prestera_sdma *sdma)
616 {
617 struct prestera_tx_ring *ring = &sdma->tx_ring;
618 int bnum = PRESTERA_SDMA_TX_DESC_PER_Q;
619 int b;
620
621 cancel_work_sync(&sdma->tx_work);
622
623 if (!ring->bufs)
624 return;
625
626 for (b = 0; b < bnum; b++) {
627 struct prestera_sdma_buf *buf = &ring->bufs[b];
628
629 if (buf->desc)
630 dma_pool_free(sdma->desc_pool, buf->desc,
631 buf->desc_dma);
632
633 if (!buf->skb)
634 continue;
635
636 dma_unmap_single(sdma->sw->dev->dev, buf->buf_dma,
637 buf->skb->len, DMA_TO_DEVICE);
638
639 dev_consume_skb_any(buf->skb);
640 }
641 }
642
643 static void prestera_rxtx_handle_event(struct prestera_switch *sw,
644 struct prestera_event *evt,
645 void *arg)
646 {
647 struct prestera_sdma *sdma = arg;
648
649 if (evt->id != PRESTERA_RXTX_EVENT_RCV_PKT)
650 return;
651
652 prestera_write(sdma->sw, PRESTERA_SDMA_RX_INTR_MASK_REG, 0);
653 napi_schedule(&sdma->rx_napi);
654 }
655
> 656 int prestera_sdma_switch_init(struct prestera_switch *sw)
657 {
658 struct prestera_sdma *sdma = &sw->rxtx->sdma;
659 struct device *dev = sw->dev->dev;
660 struct prestera_rxtx_params p;
661 int err;
662
663 p.use_sdma = true;
664
665 err = prestera_hw_rxtx_init(sw, &p);
666 if (err) {
667 dev_err(dev, "failed to init rxtx by hw\n");
668 return err;
669 }
670
671 sdma->dma_mask = dma_get_mask(dev);
672 sdma->map_addr = p.map_addr;
673 sdma->sw = sw;
674
675 sdma->desc_pool = dma_pool_create("desc_pool", dev,
676 sizeof(struct prestera_sdma_desc),
677 16, 0);
678 if (!sdma->desc_pool)
679 return -ENOMEM;
680
681 err = prestera_sdma_rx_init(sdma);
682 if (err) {
683 dev_err(dev, "failed to init rx ring\n");
684 goto err_rx_init;
685 }
686
687 err = prestera_sdma_tx_init(sdma);
688 if (err) {
689 dev_err(dev, "failed to init tx ring\n");
690 goto err_tx_init;
691 }
692
693 err = prestera_hw_event_handler_register(sw, PRESTERA_EVENT_TYPE_RXTX,
694 prestera_rxtx_handle_event,
695 sdma);
696 if (err)
697 goto err_evt_register;
698
699 init_dummy_netdev(&sdma->napi_dev);
700
701 netif_napi_add(&sdma->napi_dev, &sdma->rx_napi, prestera_sdma_rx_poll, 64);
702 napi_enable(&sdma->rx_napi);
703
704 return 0;
705
706 err_evt_register:
707 err_tx_init:
708 prestera_sdma_tx_fini(sdma);
709 err_rx_init:
710 prestera_sdma_rx_fini(sdma);
711
712 dma_pool_destroy(sdma->desc_pool);
713 return err;
714 }
715
> 716 void prestera_sdma_switch_fini(struct prestera_switch *sw)
717 {
718 struct prestera_sdma *sdma = &sw->rxtx->sdma;
719
720 prestera_hw_event_handler_unregister(sw, PRESTERA_EVENT_TYPE_RXTX,
721 prestera_rxtx_handle_event);
722 napi_disable(&sdma->rx_napi);
723 netif_napi_del(&sdma->rx_napi);
724 prestera_sdma_rx_fini(sdma);
725 prestera_sdma_tx_fini(sdma);
726 dma_pool_destroy(sdma->desc_pool);
727 }
728
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 63481 bytes --]
next prev parent reply other threads:[~2020-05-27 17:57 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-26 17:12 [net-next RFC v3 0/6] net: marvell: prestera: Add Switchdev driver for Prestera family ASIC device 98DX326x (AC3x) Vadym Kochan
2020-05-26 17:12 ` [net-next RFC v3 1/6] net: marvell: prestera: Add driver for Prestera family ASIC devices Vadym Kochan
2020-05-27 17:57 ` kbuild test robot [this message]
2020-05-26 17:12 ` [net-next RFC v3 2/6] net: marvell: prestera: Add PCI interface support Vadym Kochan
2020-05-26 18:33 ` Jakub Kicinski
2020-05-27 21:26 ` kbuild test robot
2020-05-26 17:12 ` [net-next RFC v3 3/6] net: marvell: prestera: Add basic devlink support Vadym Kochan
2020-05-28 1:11 ` kbuild test robot
2020-05-26 17:13 ` [net-next RFC v3 4/6] net: marvell: prestera: Add ethtool interface support Vadym Kochan
2020-05-28 5:12 ` kbuild test robot
2020-05-26 17:13 ` [net-next RFC v3 5/6] net: marvell: prestera: Add Switchdev driver implementation Vadym Kochan
2020-05-26 17:13 ` [net-next RFC v3 6/6] dt-bindings: marvell,prestera: Add description for device-tree bindings Vadym Kochan
2020-05-26 18:35 ` [net-next RFC v3 0/6] net: marvell: prestera: Add Switchdev driver for Prestera family ASIC device 98DX326x (AC3x) Jakub Kicinski
2020-05-26 20:33 ` Vadym Kochan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202005280113.Bn3v4kR7%lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.