[dpdk-dev] [PATCH v2] testpmd: avoid only working in XEN when LIBRTE_PMD_XENVIRT is configured

2016-04-11 Thread Thomas Monjalon
2016-03-17 15:47, Christian Ehrhardt:
> 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
> 
> Updates in v2
> - adding missing Signed-off-by and set Pablo on --to with the patch directly
> 
> Signed-off-by: Christian Ehrhardt 

Sorry this patch has been forgotten because (wrongly?) superseded in patchwork.
Please do not hesitate to ping when your patch has no follow-up.
Thanks Olivier for reminding this patch.

Applied, thanks


[dpdk-dev] [PATCH v2] testpmd: avoid only working in XEN when LIBRTE_PMD_XENVIRT is configured

2016-03-17 Thread Christian Ehrhardt
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

Updates in v2
- adding missing Signed-off-by and set Pablo on --to with the patch directly

Signed-off-by: Christian Ehrhardt 
---
 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.3