DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] avoid testpmd only working in XEN
@ 2016-03-04  7:12 Christian Ehrhardt
  2016-03-11  7:09 ` Christian Ehrhardt
  0 siblings, 1 reply; 2+ messages in thread
From: Christian Ehrhardt @ 2016-03-04  7:12 UTC (permalink / raw)
  To: christian.ehrhardt, dev

With LIBRTE_PMD_XENVIRT enabled testpmd is built in a way to ONLY work
in XEN environments.
It will surface as:
   PMD: gntalloc: ioctl error
   EAL: Error - exiting with code: 1
     Cause: Creation of mbuf pool for socket 0 failed

With LIBRTE_PMD_XENVIRT enabled this now tries the xen style grant
table allocation, but falls back gracefully for the normal allocation.

The only thing left in the log will be the
   PMD: gntalloc: ioctl error
---
 app/test-pmd/testpmd.c | 33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 1319917..b008df3 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -410,7 +410,7 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf,
 		 unsigned int socket_id)
 {
 	char pool_name[RTE_MEMPOOL_NAMESIZE];
-	struct rte_mempool *rte_mp;
+	struct rte_mempool *rte_mp = NULL;
 	uint32_t mb_size;
 
 	mb_size = sizeof(struct rte_mbuf) + mbuf_seg_size;
@@ -423,24 +423,23 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf,
 		rte_pktmbuf_pool_init, NULL,
 		rte_pktmbuf_init, NULL,
 		socket_id, 0);
-
-
-
-#else
-	if (mp_anon != 0)
-		rte_mp = mempool_anon_create(pool_name, nb_mbuf, mb_size,
-				    (unsigned) mb_mempool_cache,
-				    sizeof(struct rte_pktmbuf_pool_private),
-				    rte_pktmbuf_pool_init, NULL,
-				    rte_pktmbuf_init, NULL,
-				    socket_id, 0);
-	else
-		/* wrapper to rte_mempool_create() */
-		rte_mp = rte_pktmbuf_pool_create(pool_name, nb_mbuf,
-			mb_mempool_cache, 0, mbuf_seg_size, socket_id);
-
 #endif
 
+	/* if the former XEN allocation failed fall back to normal allocation */
+	if (rte_mp == NULL) {
+		if (mp_anon != 0)
+			rte_mp = mempool_anon_create(pool_name, nb_mbuf,
+					mb_size, (unsigned) mb_mempool_cache,
+					sizeof(struct rte_pktmbuf_pool_private),
+					rte_pktmbuf_pool_init, NULL,
+					rte_pktmbuf_init, NULL,
+					socket_id, 0);
+		else
+			/* wrapper to rte_mempool_create() */
+			rte_mp = rte_pktmbuf_pool_create(pool_name, nb_mbuf,
+				mb_mempool_cache, 0, mbuf_seg_size, socket_id);
+	}
+
 	if (rte_mp == NULL) {
 		rte_exit(EXIT_FAILURE, "Creation of mbuf pool for socket %u "
 						"failed\n", socket_id);
-- 
2.7.0

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-dev] [PATCH] avoid testpmd only working in XEN
  2016-03-04  7:12 [dpdk-dev] [PATCH] avoid testpmd only working in XEN Christian Ehrhardt
@ 2016-03-11  7:09 ` Christian Ehrhardt
  0 siblings, 0 replies; 2+ messages in thread
From: Christian Ehrhardt @ 2016-03-11  7:09 UTC (permalink / raw)
  To: Christian Ehrhardt, dev, Pablo de Lara

Hi,
I realized I should be adding Pablo as the testpmd maintainer for
acceptance / feedback.




Christian Ehrhardt
Software Engineer, Ubuntu Server
Canonical Ltd

On Fri, Mar 4, 2016 at 8:12 AM, Christian Ehrhardt <
christian.ehrhardt@canonical.com> wrote:

> With LIBRTE_PMD_XENVIRT enabled testpmd is built in a way to ONLY work
> in XEN environments.
> It will surface as:
>    PMD: gntalloc: ioctl error
>    EAL: Error - exiting with code: 1
>      Cause: Creation of mbuf pool for socket 0 failed
>
> With LIBRTE_PMD_XENVIRT enabled this now tries the xen style grant
> table allocation, but falls back gracefully for the normal allocation.
>
> The only thing left in the log will be the
>    PMD: gntalloc: ioctl error
> ---
>  app/test-pmd/testpmd.c | 33 ++++++++++++++++-----------------
>  1 file changed, 16 insertions(+), 17 deletions(-)
>
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 1319917..b008df3 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -410,7 +410,7 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned
> nb_mbuf,
>                  unsigned int socket_id)
>  {
>         char pool_name[RTE_MEMPOOL_NAMESIZE];
> -       struct rte_mempool *rte_mp;
> +       struct rte_mempool *rte_mp = NULL;
>         uint32_t mb_size;
>
>         mb_size = sizeof(struct rte_mbuf) + mbuf_seg_size;
> @@ -423,24 +423,23 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned
> nb_mbuf,
>                 rte_pktmbuf_pool_init, NULL,
>                 rte_pktmbuf_init, NULL,
>                 socket_id, 0);
> -
> -
> -
> -#else
> -       if (mp_anon != 0)
> -               rte_mp = mempool_anon_create(pool_name, nb_mbuf, mb_size,
> -                                   (unsigned) mb_mempool_cache,
> -                                   sizeof(struct
> rte_pktmbuf_pool_private),
> -                                   rte_pktmbuf_pool_init, NULL,
> -                                   rte_pktmbuf_init, NULL,
> -                                   socket_id, 0);
> -       else
> -               /* wrapper to rte_mempool_create() */
> -               rte_mp = rte_pktmbuf_pool_create(pool_name, nb_mbuf,
> -                       mb_mempool_cache, 0, mbuf_seg_size, socket_id);
> -
>  #endif
>
> +       /* if the former XEN allocation failed fall back to normal
> allocation */
> +       if (rte_mp == NULL) {
> +               if (mp_anon != 0)
> +                       rte_mp = mempool_anon_create(pool_name, nb_mbuf,
> +                                       mb_size, (unsigned)
> mb_mempool_cache,
> +                                       sizeof(struct
> rte_pktmbuf_pool_private),
> +                                       rte_pktmbuf_pool_init, NULL,
> +                                       rte_pktmbuf_init, NULL,
> +                                       socket_id, 0);
> +               else
> +                       /* wrapper to rte_mempool_create() */
> +                       rte_mp = rte_pktmbuf_pool_create(pool_name,
> nb_mbuf,
> +                               mb_mempool_cache, 0, mbuf_seg_size,
> socket_id);
> +       }
> +
>         if (rte_mp == NULL) {
>                 rte_exit(EXIT_FAILURE, "Creation of mbuf pool for socket
> %u "
>                                                 "failed\n", socket_id);
> --
> 2.7.0
>
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-03-11  7:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-04  7:12 [dpdk-dev] [PATCH] avoid testpmd only working in XEN Christian Ehrhardt
2016-03-11  7:09 ` Christian Ehrhardt

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).