All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

  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.