patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Luca Boccassi <bluca@debian.org>
To: Phil Yang <phil.yang@arm.com>, stable@dpdk.org
Subject: Re: [dpdk-stable] [PATCH 16.11 1/3] app/testpmd: fix vdev socket initialization
Date: Fri, 02 Nov 2018 10:42:45 +0000	[thread overview]
Message-ID: <1541155365.4849.14.camel@debian.org> (raw)
In-Reply-To: <1541144417-11169-1-git-send-email-phil.yang@arm.com>

On Fri, 2018-11-02 at 15:40 +0800, Phil Yang wrote:
> [ backported from upstream commit
> 29841336438400ce040e394c0c00040c21644727 ]
> 
> The cmdline settings of port-numa-config and rxring-numa-config have
> been
> flushed by the following init_config. If we don't configure the
> port-numa-config, the virtual device will allocate the device ports
> to
> socket 0. It will cause failure when the socket 0 is unavailable.
> 
> eg:
> testpmd -l <cores from socket 1> --vdev net_pcap0,iface=lo
> --socket-mem=64 -- --numa --port-numa-config="(0,1)"
> --ring-numa-config="(0,1,1),(0,2,1)" -i
> 
> ...
> Configuring Port 0 (socket 0)
> Failed to setup RX queue:No mempool allocation on the socket 0
> EAL: Error - exiting with code: 1
>   Cause: Start ports failed
> 
> Fix by allocate the devices port to the first available socket or the
> socket configured in port-numa-config.
> 
> Fixes: 487f9a5 ("app/testpmd: fix NUMA structures initialization")
> Fixes: 20a0286fd2c0 ("app/testpmd: check socket id validity")
> 
> Signed-off-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---
>  app/test-pmd/testpmd.c | 29 +++++++++++++++++------------
>  1 file changed, 17 insertions(+), 12 deletions(-)
> 
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index c3ab448..8984d0b 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -582,12 +582,6 @@ init_config(void)
>  
>  	memset(port_per_socket,0,RTE_MAX_NUMA_NODES);
>  
> -	if (numa_support) {
> -		memset(port_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
> -		memset(rxring_numa, NUMA_NO_CONFIG,
> RTE_MAX_ETHPORTS);
> -		memset(txring_numa, NUMA_NO_CONFIG,
> RTE_MAX_ETHPORTS);
> -	}
> -
>  	/* Configuration of logical cores. */
>  	fwd_lcores = rte_zmalloc("testpmd: fwd_lcores",
>  				sizeof(struct fwd_lcore *) *
> nb_lcores,
> @@ -617,9 +611,12 @@ init_config(void)
>  			else {
>  				uint32_t socket_id =
> rte_eth_dev_socket_id(pid);
>  
> -				/* if socket_id is invalid, set to 0
> */
> +				/*
> +				 * if socket_id is invalid,
> +				 * set to the first available
> socket.
> +				 */
>  				if (check_socket_id(socket_id) < 0)
> -					socket_id = 0;
> +					socket_id = socket_ids[0];
>  				port_per_socket[socket_id]++;
>  			}
>  		}
> @@ -753,9 +750,12 @@ init_fwd_streams(void)
>  			else {
>  				port->socket_id =
> rte_eth_dev_socket_id(pid);
>  
> -				/* if socket_id is invalid, set to 0
> */
> +				/*
> +				 * if socket_id is invalid,
> +				 * set to the first available
> socket.
> +				 */
>  				if (check_socket_id(port->socket_id) 
> < 0)
> -					port->socket_id = 0;
> +					port->socket_id =
> socket_ids[0];
>  			}
>  		}
>  		else {
> @@ -1774,9 +1774,9 @@ attach_port(char *identifier)
>  		return;
>  
>  	socket_id = (unsigned)rte_eth_dev_socket_id(pi);
> -	/* if socket_id is invalid, set to 0 */
> +	/* if socket_id is invalid, set to the first available
> socket. */
>  	if (check_socket_id(socket_id) < 0)
> -		socket_id = 0;
> +		socket_id = socket_ids[0];
>  	reconfig(pi, socket_id);
>  	rte_eth_promiscuous_enable(pi);
>  
> @@ -2325,6 +2325,11 @@ init_port(void)
>  				"rte_zmalloc(%d struct rte_port)
> failed\n",
>  				RTE_MAX_ETHPORTS);
>  	}
> +
> +	/* Initialize ports NUMA structures */
> +	memset(port_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
> +	memset(rxring_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
> +	memset(txring_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
>  }
>  
>  static void

Hi Phil,

Thanks for sending the series, but I just tried to apply it and there's
conflicts in the first patch. Once solved, it fails to build:

/home/bluca/git/dpdk/app/test-pmd/testpmd.c: In function ‘init_config’:
/home/bluca/git/dpdk/app/test-pmd/testpmd.c:537:18: error: ‘socket_ids’ undeclared (first use in this function)
      socket_id = socket_ids[0];
                  ^~~~~~~~~~
/home/bluca/git/dpdk/app/test-pmd/testpmd.c:537:18: note: each undeclared identifier is reported only once for each function it appears in
/home/bluca/git/dpdk/app/test-pmd/testpmd.c: In function ‘init_fwd_streams’:
/home/bluca/git/dpdk/app/test-pmd/testpmd.c:652:24: error: ‘socket_ids’ undeclared (first use in this function)
      port->socket_id = socket_ids[0];
                        ^~~~~~~~~~
/home/bluca/git/dpdk/app/test-pmd/testpmd.c: In function ‘attach_port’:
/home/bluca/git/dpdk/app/test-pmd/testpmd.c:1604:15: error: ‘socket_ids’ undeclared (first use in this function)
   socket_id = socket_ids[0];


Have you tested this on the latest tip of 16.11? As a reminder, you can
get it from here:

https://git.dpdk.org/dpdk-stable/log/?h=16.11

-- 
Kind regards,
Luca Boccassi

  parent reply	other threads:[~2018-11-02 10:42 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-02  7:40 Phil Yang
2018-11-02  7:40 ` [dpdk-stable] [PATCH 16.11 2/3] app/testpmd: fix physic port " Phil Yang
2018-11-02  7:40 ` [dpdk-stable] [PATCH 16.11 3/3] app/testpmd: reserve NUMA node per device port and per ring Phil Yang
2018-11-02 10:42 ` Luca Boccassi [this message]
2018-11-03 10:10   ` [dpdk-stable] [PATCH 16.11 1/3] app/testpmd: fix vdev socket initialization Phil Yang (Arm Technology China)
2018-11-03 10:53     ` Luca Boccassi

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=1541155365.4849.14.camel@debian.org \
    --to=bluca@debian.org \
    --cc=phil.yang@arm.com \
    --cc=stable@dpdk.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).