All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier MATZ <olivier.matz@6wind.com>
To: "Xu, HuilongX" <huilongx.xu@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Cao, Waterman" <waterman.cao@intel.com>,
	"Chen, WeichunX" <weichunx.chen@intel.com>,
	Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>,
	Thomas Monjalon <thomas.monjalon@6wind.com>
Subject: Re: mutli process C/S model example init failed on xen dom0 with dpdk-16.07 rc2 package
Date: Tue, 12 Jul 2016 13:30:39 +0200	[thread overview]
Message-ID: <5784D4DF.6070204@6wind.com> (raw)
In-Reply-To: <DF2A19295B96364286FEB7F3DDA27A4637B879F4@SHSMSX101.ccr.corp.intel.com>

Hi Huilong,


On 07/12/2016 11:22 AM, Xu, HuilongX wrote:
> Hi all,
>
> I run mutli procee C/S model example failed on xen dom0. Does anyone
> give me some suggest how to debug it?
>
> Thanks a lot
>
> test environment:
>
>        OS&kernel: 3.17.4-301.fc21.x86_64
>
> Gcc version: gcc version 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC)
>
> Package :dpdk.16.07-rc1.tar.gz
>
> Target: x86_64-native-linuxapp-gcc
>
> Compile switch: enable CONFIG_RTE_LIBRTE_XEN_DOM0
>
> Xen version:4.4.1
>
> Test cmdline and result:
>
> /examples/multi_process/client_server_mp/mp_server/mp_server/x86_64-native-linuxapp-gcc/mp_server
> -c f -n 4 --xen-dom0 -- -p 0x3 -n 2
> EAL: Detected 72 lcore(s)
> EAL: Probing VFIO support...
> PMD: bnxt_rte_pmd_init() called for (null)
> EAL: PCI device 0000:01:00.0 on NUMA socket 0
> EAL: probe driver: 8086:1521 rte_igb_pmd
> EAL: PCI device 0000:01:00.1 on NUMA socket 0
> EAL: probe driver: 8086:1521 rte_igb_pmd
> EAL: PCI device 0000:04:00.0 on NUMA socket 0
> EAL: probe driver: 8086:10fb rte_ixgbe_pmd
> EAL: PCI device 0000:04:00.1 on NUMA socket 0
> EAL: probe driver: 8086:10fb rte_ixgbe_pmd
> Creating mbuf pool 'MProc_pktmbuf_pool' [6144 mbufs] ...
> Port 0 init ... Segmentation fault (core dumped)
>

I reproduced the issue on my platform. In my case, the crash occurs in 
rx_queue_setup():

         /* Free memory prior to re-allocation if needed. */
         if (dev->data->rx_queues[queue_idx] != NULL) {
=>              em_rx_queue_release(dev->data->rx_queues[queue_idx]);
                 dev->data->rx_queues[queue_idx] = NULL;
         }

I don't this we should go in that area for the first rx queue 
initialization. I suspect it could be related to this commit:
http://dpdk.org/browse/dpdk/commit/?id=ea0bddbd14e68f

I think we cannot expect that memory is initialized at 0 when using Xen 
dom0. If I add the following (dirty) patch, I don't see a crash anymore:

--- a/lib/librte_eal/common/eal_common_memzone.c
+++ b/lib/librte_eal/common/eal_common_memzone.c
@@ -258,6 +258,8 @@ memzone_reserve_aligned_thread_unsafe(const char 
*name, size_t len,
         mz->flags = 0;
         mz->memseg_id = elem->ms - 
rte_eal_get_configuration()->mem_config->memseg;

+       memset(mz->addr, 0, mz->len);
+
         return mz;
  }

--- a/lib/librte_eal/common/rte_malloc.c
+++ b/lib/librte_eal/common/rte_malloc.c
@@ -123,7 +123,13 @@ rte_malloc(const char *type, size_t size, unsigned 
align)
  void *
  rte_zmalloc_socket(const char *type, size_t size, unsigned align, int 
socket)
  {
-       return rte_malloc_socket(type, size, align, socket);
+       void *x = rte_malloc_socket(type, size, align, socket);
+
+       if (x == NULL)
+               return NULL;
+
+       memset(x, 0, size);
+       return x;
  }

  /*


Sergio, could you have a look at it?

Regards,
Olivier

  reply	other threads:[~2016-07-12 11:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-12  9:22 mutli process C/S model example init failed on xen dom0 with dpdk-16.07 rc2 package Xu, HuilongX
2016-07-12 11:30 ` Olivier MATZ [this message]
2016-07-18 11:33   ` Sergio Gonzalez Monroy
2016-07-18 11:49     ` Olivier Matz
2016-07-18 13:15       ` Sergio Gonzalez Monroy
2016-07-18 13:34         ` Thomas Monjalon

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=5784D4DF.6070204@6wind.com \
    --to=olivier.matz@6wind.com \
    --cc=dev@dpdk.org \
    --cc=huilongx.xu@intel.com \
    --cc=sergio.gonzalez.monroy@intel.com \
    --cc=thomas.monjalon@6wind.com \
    --cc=waterman.cao@intel.com \
    --cc=weichunx.chen@intel.com \
    /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.