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
next prev parent 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).