All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Jiawen Wu <jiawenwu@trustnetic.com>,
	netdev@vger.kernel.org, mengyuanlou@net-swift.com
Cc: oe-kbuild-all@lists.linux.dev, Jiawen Wu <jiawenwu@trustnetic.com>
Subject: Re: [PATCH net-next 05/10] net: libwx: Allocate Rx and Tx resources
Date: Sun, 22 Jan 2023 11:05:52 +0800	[thread overview]
Message-ID: <202301221047.SBlK8xvt-lkp@intel.com> (raw)
In-Reply-To: <20230118065504.3075474-6-jiawenwu@trustnetic.com>

Hi Jiawen,

I love your patch! Yet something to improve:

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

url:    https://github.com/intel-lab-lkp/linux/commits/Jiawen-Wu/net-libwx-Add-irq-flow-functions/20230118-154258
patch link:    https://lore.kernel.org/r/20230118065504.3075474-6-jiawenwu%40trustnetic.com
patch subject: [PATCH net-next 05/10] net: libwx: Allocate Rx and Tx resources
config: mips-allyesconfig (https://download.01.org/0day-ci/archive/20230122/202301221047.SBlK8xvt-lkp@intel.com/config)
compiler: mips-linux-gcc (GCC) 12.1.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/intel-lab-lkp/linux/commit/583ee5bbec18cbfb2f88a647db0d8d15457d2b54
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Jiawen-Wu/net-libwx-Add-irq-flow-functions/20230118-154258
        git checkout 583ee5bbec18cbfb2f88a647db0d8d15457d2b54
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/net/ethernet/wangxun/libwx/wx_lib.c: In function 'wx_free_rx_resources':
>> drivers/net/ethernet/wangxun/libwx/wx_lib.c:612:9: error: implicit declaration of function 'vfree'; did you mean 'kvfree'? [-Werror=implicit-function-declaration]
     612 |         vfree(rx_ring->rx_buffer_info);
         |         ^~~~~
         |         kvfree
   drivers/net/ethernet/wangxun/libwx/wx_lib.c: In function 'wx_setup_rx_resources':
>> drivers/net/ethernet/wangxun/libwx/wx_lib.c:728:35: error: implicit declaration of function 'vmalloc_node'; did you mean 'kvmalloc_node'? [-Werror=implicit-function-declaration]
     728 |         rx_ring->rx_buffer_info = vmalloc_node(size, numa_node);
         |                                   ^~~~~~~~~~~~
         |                                   kvmalloc_node
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:728:33: warning: assignment to 'struct wx_rx_buffer *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     728 |         rx_ring->rx_buffer_info = vmalloc_node(size, numa_node);
         |                                 ^
>> drivers/net/ethernet/wangxun/libwx/wx_lib.c:730:43: error: implicit declaration of function 'vmalloc'; did you mean 'kvmalloc'? [-Werror=implicit-function-declaration]
     730 |                 rx_ring->rx_buffer_info = vmalloc(size);
         |                                           ^~~~~~~
         |                                           kvmalloc
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:730:41: warning: assignment to 'struct wx_rx_buffer *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     730 |                 rx_ring->rx_buffer_info = vmalloc(size);
         |                                         ^
   drivers/net/ethernet/wangxun/libwx/wx_lib.c: In function 'wx_setup_tx_resources':
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:810:33: warning: assignment to 'struct wx_tx_buffer *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     810 |         tx_ring->tx_buffer_info = vmalloc_node(size, numa_node);
         |                                 ^
   drivers/net/ethernet/wangxun/libwx/wx_lib.c:812:41: warning: assignment to 'struct wx_tx_buffer *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     812 |                 tx_ring->tx_buffer_info = vmalloc(size);
         |                                         ^
   cc1: some warnings being treated as errors


vim +612 drivers/net/ethernet/wangxun/libwx/wx_lib.c

   603	
   604	/**
   605	 * wx_free_rx_resources - Free Rx Resources
   606	 * @rx_ring: ring to clean the resources from
   607	 *
   608	 * Free all receive software resources
   609	 **/
   610	static void wx_free_rx_resources(struct wx_ring *rx_ring)
   611	{
 > 612		vfree(rx_ring->rx_buffer_info);
   613		rx_ring->rx_buffer_info = NULL;
   614	
   615		/* if not set, then don't free */
   616		if (!rx_ring->desc)
   617			return;
   618	
   619		dma_free_coherent(rx_ring->dev, rx_ring->size,
   620				  rx_ring->desc, rx_ring->dma);
   621	
   622		rx_ring->desc = NULL;
   623	
   624		if (rx_ring->page_pool) {
   625			page_pool_destroy(rx_ring->page_pool);
   626			rx_ring->page_pool = NULL;
   627		}
   628	}
   629	
   630	/**
   631	 * wx_free_all_rx_resources - Free Rx Resources for All Queues
   632	 * @wx: pointer to hardware structure
   633	 *
   634	 * Free all receive software resources
   635	 **/
   636	static void wx_free_all_rx_resources(struct wx *wx)
   637	{
   638		int i;
   639	
   640		for (i = 0; i < wx->num_rx_queues; i++)
   641			wx_free_rx_resources(wx->rx_ring[i]);
   642	}
   643	
   644	/**
   645	 * wx_free_tx_resources - Free Tx Resources per Queue
   646	 * @tx_ring: Tx descriptor ring for a specific queue
   647	 *
   648	 * Free all transmit software resources
   649	 **/
   650	static void wx_free_tx_resources(struct wx_ring *tx_ring)
   651	{
   652		vfree(tx_ring->tx_buffer_info);
   653		tx_ring->tx_buffer_info = NULL;
   654	
   655		/* if not set, then don't free */
   656		if (!tx_ring->desc)
   657			return;
   658	
   659		dma_free_coherent(tx_ring->dev, tx_ring->size,
   660				  tx_ring->desc, tx_ring->dma);
   661		tx_ring->desc = NULL;
   662	}
   663	
   664	/**
   665	 * wx_free_all_tx_resources - Free Tx Resources for All Queues
   666	 * @wx: pointer to hardware structure
   667	 *
   668	 * Free all transmit software resources
   669	 **/
   670	static void wx_free_all_tx_resources(struct wx *wx)
   671	{
   672		int i;
   673	
   674		for (i = 0; i < wx->num_tx_queues; i++)
   675			wx_free_tx_resources(wx->tx_ring[i]);
   676	}
   677	
   678	void wx_free_resources(struct wx *wx)
   679	{
   680		wx_free_isb_resources(wx);
   681		wx_free_all_rx_resources(wx);
   682		wx_free_all_tx_resources(wx);
   683	}
   684	EXPORT_SYMBOL(wx_free_resources);
   685	
   686	static int wx_alloc_page_pool(struct wx_ring *rx_ring)
   687	{
   688		int ret = 0;
   689	
   690		struct page_pool_params pp_params = {
   691			.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV,
   692			.order = 0,
   693			.pool_size = rx_ring->size,
   694			.nid = dev_to_node(rx_ring->dev),
   695			.dev = rx_ring->dev,
   696			.dma_dir = DMA_FROM_DEVICE,
   697			.offset = 0,
   698			.max_len = PAGE_SIZE,
   699		};
   700	
   701		rx_ring->page_pool = page_pool_create(&pp_params);
   702		if (IS_ERR(rx_ring->page_pool)) {
   703			rx_ring->page_pool = NULL;
   704			ret = PTR_ERR(rx_ring->page_pool);
   705		}
   706	
   707		return ret;
   708	}
   709	
   710	/**
   711	 * wx_setup_rx_resources - allocate Rx resources (Descriptors)
   712	 * @rx_ring: rx descriptor ring (for a specific queue) to setup
   713	 *
   714	 * Returns 0 on success, negative on failure
   715	 **/
   716	static int wx_setup_rx_resources(struct wx_ring *rx_ring)
   717	{
   718		struct device *dev = rx_ring->dev;
   719		int orig_node = dev_to_node(dev);
   720		int numa_node = -1;
   721		int size, ret;
   722	
   723		size = sizeof(struct wx_rx_buffer) * rx_ring->count;
   724	
   725		if (rx_ring->q_vector)
   726			numa_node = rx_ring->q_vector->numa_node;
   727	
 > 728		rx_ring->rx_buffer_info = vmalloc_node(size, numa_node);
   729		if (!rx_ring->rx_buffer_info)
 > 730			rx_ring->rx_buffer_info = vmalloc(size);
   731		if (!rx_ring->rx_buffer_info)
   732			goto err;
   733	
   734		/* Round up to nearest 4K */
   735		rx_ring->size = rx_ring->count * sizeof(union wx_rx_desc);
   736		rx_ring->size = ALIGN(rx_ring->size, 4096);
   737	
   738		set_dev_node(dev, numa_node);
   739		rx_ring->desc = dma_alloc_coherent(dev, rx_ring->size,
   740						   &rx_ring->dma, GFP_KERNEL);
   741		set_dev_node(dev, orig_node);
   742		rx_ring->desc = dma_alloc_coherent(dev, rx_ring->size,
   743						   &rx_ring->dma, GFP_KERNEL);
   744		if (!rx_ring->desc)
   745			goto err;
   746	
   747		ret = wx_alloc_page_pool(rx_ring);
   748		if (ret < 0) {
   749			dev_err(rx_ring->dev, "Page pool creation failed: %d\n", ret);
   750			goto err;
   751		}
   752	
   753		return 0;
   754	err:
   755		vfree(rx_ring->rx_buffer_info);
   756		rx_ring->rx_buffer_info = NULL;
   757		dev_err(dev, "Unable to allocate memory for the Rx descriptor ring\n");
   758		return -ENOMEM;
   759	}
   760	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

  reply	other threads:[~2023-01-22  3:06 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-18  6:54 [PATCH net-next 00/10] Wangxun interrupt and RxTx support Jiawen Wu
2023-01-18  6:54 ` [PATCH net-next 01/10] net: libwx: Add irq flow functions Jiawen Wu
2023-01-18  9:27   ` kernel test robot
2023-01-19 18:14   ` kernel test robot
2023-01-23 15:13   ` Andrew Lunn
2023-01-18  6:54 ` [PATCH net-next 02/10] net: ngbe: Add irqs request flow Jiawen Wu
2023-01-18  6:54 ` [PATCH net-next 03/10] net: txgbe: Add interrupt support Jiawen Wu
2023-01-18  6:54 ` [PATCH net-next 04/10] net: libwx: Configure Rx and Tx unit on hardware Jiawen Wu
2023-01-18  6:54 ` [PATCH net-next 05/10] net: libwx: Allocate Rx and Tx resources Jiawen Wu
2023-01-22  3:05   ` kernel test robot [this message]
2023-01-23 15:27   ` Andrew Lunn
2023-01-18  6:55 ` [PATCH net-next 06/10] net: txgbe: Setup Rx and Tx ring Jiawen Wu
2023-01-18  6:55 ` [PATCH net-next 07/10] net: libwx: Support to receive packets in NAPI Jiawen Wu
2023-01-18  6:55 ` [PATCH net-next 08/10] net: libwx: Add transmit path to process packets Jiawen Wu
2023-01-18  6:55 ` [PATCH net-next 09/10] net: txgbe: Support Rx and Tx process path Jiawen Wu
2023-01-18  6:55 ` [PATCH net-next 10/10] net: ngbe: " Jiawen Wu

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=202301221047.SBlK8xvt-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=jiawenwu@trustnetic.com \
    --cc=mengyuanlou@net-swift.com \
    --cc=netdev@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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.