DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: Jia He <hejianet@gmail.com>
Cc: dev@dpdk.org, olivier.matz@6wind.com,
	konstantin.ananyev@intel.com, bruce.richardson@intel.com,
	jianbo.liu@arm.com, hemant.agrawal@nxp.com,
	jie2.liu@hxt-semitech.com, bing.zhao@hxt-semitech.com,
	jia.he@hxt-semitech.com
Subject: Re: [dpdk-dev] [PATCH 2/3] ring: guarantee load ordering of cons/prod when doing enqueue/dequeue
Date: Wed, 8 Nov 2017 12:57:32 +0530	[thread overview]
Message-ID: <20171108072731.GB21113@jerin> (raw)
In-Reply-To: <1510121832-16439-2-git-send-email-hejianet@gmail.com>

-----Original Message-----
> Date: Wed,  8 Nov 2017 06:17:11 +0000
> From: Jia He <hejianet@gmail.com>
> To: jerin.jacob@caviumnetworks.com, dev@dpdk.org, olivier.matz@6wind.com
> Cc: konstantin.ananyev@intel.com, bruce.richardson@intel.com,
>  jianbo.liu@arm.com, hemant.agrawal@nxp.com, Jia He <hejianet@gmail.com>,
>  jie2.liu@hxt-semitech.com, bing.zhao@hxt-semitech.com,
>  jia.he@hxt-semitech.com
> Subject: [PATCH 2/3] ring: guarantee load ordering of cons/prod when doing
>  enqueue/dequeue
> X-Mailer: git-send-email 2.7.4
> 

It is the V3 patch and subject line does not reflect that. 
If you send a new version of a patch or series, you must use
--in-reply-to with message id of previous version.

> We watched a rte panic of mbuf_autotest in our qualcomm arm64 server.
> As for the possible race condition, please refer to [1].

Instead of the indirection of [1], add the technical details here to
make git comment useful.

> 
> Furthermore, to fix this race, there are 2 options as suggested by Jerin:
> 1. use rte_smp_rmb
> 2. use load_acquire/store_release(refer to [2]).
> CONFIG_RTE_RING_USE_C11_MEM_MODEL is provided, and by
> default it is "y" only on arm64.
> 
> The reason why providing 2 options is due to the performance benchmark
> difference in different arm machines, please refer to [3].
> 
> Already fuctionally tested on the machines as follows:
> - on X86
> - on arm64 with CONFIG_RTE_RING_USE_C11_MEM_MODEL=y
> - on arm64 with CONFIG_RTE_RING_USE_C11_MEM_MODEL=n
> 
> We haven't tested the ppc64 case. If anyone verifies it, he can add
> CONFIG_RTE_RING_USE_C11_MEM_MODEL=y to ppc64 config files.

The testing part can be moved under "---". ie in the comment section
below.

> 
> [1] http://dpdk.org/ml/archives/dev/2017-October/078366.html
> [2] https://github.com/freebsd/freebsd/blob/master/sys/sys/buf_ring.h#L170
> [3] http://dpdk.org/ml/archives/dev/2017-October/080861.html
> 

Please split this patches into three:
- Your original fix
- Introduce rte_ring_generic.h and move the common function to that file
- Introduce CONFIG_RTE_RING_USE_C11_MEM_MODEL and move C11 memory
  implementation to lib/librte_ring/rte_ring_c11_mem.h

> ---
> +#ifndef _RTE_RING_C11_MEM_H_
> +#define _RTE_RING_C11_MEM_H_
> +
> +#define UNUSED_PARAMETER(x) ((void)(x))
> +static __rte_always_inline void
> +update_tail(struct rte_ring_headtail *ht, uint32_t old_val, uint32_t new_val,
> +		uint32_t single, uint32_t enqueue)
> +{
> +	UNUSED_PARAMETER(enqueue);

s/UNUSED_PARAMETER/RTE_SET_USED

  reply	other threads:[~2017-11-08  7:27 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-08  6:17 [dpdk-dev] [PATCH 1/3] eal/arm64: remove the braces {} for dmb(), dsb() Jia He
2017-11-08  6:17 ` [dpdk-dev] [PATCH 2/3] ring: guarantee load ordering of cons/prod when doing enqueue/dequeue Jia He
2017-11-08  7:27   ` Jerin Jacob [this message]
2017-11-08  9:49   ` Ananyev, Konstantin
2017-11-08  6:17 ` [dpdk-dev] [PATCH 3/3] config: support C11 memory model for arm64 Jia He
2017-11-08  7:17 ` [dpdk-dev] [PATCH 1/3] eal/arm64: remove the braces {} for dmb(), dsb() Jerin Jacob
2017-11-08 10:28 ` Bruce Richardson
2017-11-09  1:22   ` Jia He
2017-11-09  3:14     ` Jia He
2017-11-09  3:21       ` Jianbo Liu
2017-11-09  4:43         ` Jia He
2017-11-09  4:56           ` Jianbo Liu
2017-11-09  9:38             ` Ananyev, Konstantin
2017-11-09  9:58               ` Jianbo Liu
2017-11-09 10:08                 ` Ananyev, Konstantin
2017-11-10  2:06               ` Jia He
2017-11-10  3:09                 ` Jianbo Liu
2017-11-10 10:06                 ` Ananyev, Konstantin

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=20171108072731.GB21113@jerin \
    --to=jerin.jacob@caviumnetworks.com \
    --cc=bing.zhao@hxt-semitech.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=hejianet@gmail.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=jia.he@hxt-semitech.com \
    --cc=jianbo.liu@arm.com \
    --cc=jie2.liu@hxt-semitech.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=olivier.matz@6wind.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 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).