patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: hgovindh <hariprasad.govindharajan@intel.com>
Cc: Remy Horton <remy.horton@intel.com>,
	Marko Kovacevic <marko.kovacevic@intel.com>,
	Ori Kam <orika@mellanox.com>,
	Pablo de Lara <pablo.de.lara.guarch@intel.com>,
	Radu Nicolau <radu.nicolau@intel.com>,
	Akhil Goyal <akhil.goyal@nxp.com>,
	Tomasz Kantecki <tomasz.kantecki@intel.com>,
	dev@dpdk.org, maciej.czekaj@caviumnetworks.com, stable@dpdk.org
Subject: Re: [dpdk-stable] [PATCH v2] examples/l3fwd: fix unaligned memory access
Date: Thu, 25 Jul 2019 17:46:00 +0100	[thread overview]
Message-ID: <20190725164600.GA1621@bricha3-MOBL.ger.corp.intel.com> (raw)
In-Reply-To: <20190725162903.106262-1-hariprasad.govindharajan@intel.com>

On Thu, Jul 25, 2019 at 05:29:03PM +0100, hgovindh wrote:
> Fix unaligned memory access when reading IPv6 header which
> leads to segmentation fault by changing aligned memory read
> to unaligned memory read.
> 
> Bugzilla ID: 279
> Fixes: 64d3955de1de ("examples/l3fwd: fix ARM build")
> Cc: maciej.czekaj@caviumnetworks.com
> Cc: stable@dpdk.org
> Signed-off-by: hgovindh <hariprasad.govindharajan@intel.com>
> ---
> V2: Added functions which will do unaligned load based on the
> underlying architecture
> ---
> ---
>  examples/l3fwd/l3fwd_em.c | 26 ++++++++++++++++++++++++--
>  1 file changed, 24 insertions(+), 2 deletions(-)
> 
> diff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c
> index fa8f82be6..f2641586b 100644
> --- a/examples/l3fwd/l3fwd_em.c
> +++ b/examples/l3fwd/l3fwd_em.c
> @@ -244,6 +244,29 @@ em_mask_key(void *key, xmm_t mask)
>  #error No vector engine (SSE, NEON, ALTIVEC) available, check your toolchain
>  #endif
>  
> +#if defined(RTE_MACHINE_CPUFLAG_SSE2)
> +static inline xmm_t
> +em_load_key(void *key)
> +{
> +	return _mm_loadu_si128((__m128i *)(key));
> +}
> +#elif defined(RTE_MACHINE_CPUFLAG_NEON)
> +static inline xmm_t
> +em_load_key(void *key)
> +{
> +	return vld1q_s32((int32_t *)key);
> +}
> +#elif defined(RTE_MACHINE_CPUFLAG_ALTIVEC)
> +static inline xmm_t
> +em_load_key(void *key)
> +{
> +	return vec_ld(0, (xmm_t *)(key));
> +}

Two minor nits:

Since you are passing in a void *, no typecasts should be needed in any of
these functions.

Also, is it neater if you just have the ifdefs in the middle of the
function, rather than duplicating the function prototype each time? Third
option is to make the load a single-line macro rather than 5-lines of a
function.

/Bruce

  reply	other threads:[~2019-07-25 16:46 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-24 16:43 [dpdk-stable] [PATCH] " hgovindh
2019-07-25  7:01 ` [dpdk-stable] [dpdk-dev] " Ruifeng Wang (Arm Technology China)
2019-07-25  9:05 ` [dpdk-stable] " Bruce Richardson
2019-07-25 13:27 ` [dpdk-stable] [dpdk-dev] " Aaron Conole
2019-07-25 14:01   ` Burakov, Anatoly
2019-07-25 14:08     ` Govindharajan, Hariprasad
2019-07-25 14:01   ` Lipiec, Herakliusz
2019-07-25 14:23     ` Burakov, Anatoly
2019-07-25 16:29 ` [dpdk-stable] [PATCH v2] " hgovindh
2019-07-25 16:46   ` Bruce Richardson [this message]
2019-07-25 17:14     ` [dpdk-stable] [dpdk-dev] " Jerin Jacob Kollanukkaran
2019-07-25 18:56       ` David Christensen
2019-07-25 22:06         ` David Christensen
2019-07-26 10:58           ` [dpdk-stable] [EXT] " Jerin Jacob Kollanukkaran
2019-07-26 13:27   ` [dpdk-stable] [PATCH v3] " hgovindh
2019-07-26 13:37     ` [dpdk-stable] [dpdk-dev] " Burakov, Anatoly
2019-07-26 13:58     ` [dpdk-stable] [PATCH v4] " hgovindh
2019-07-30  8:50       ` Thomas Monjalon
2019-07-30  9:47         ` Bruce Richardson
2019-07-30 11:03           ` [dpdk-stable] [dpdk-dev] " Jerin Jacob Kollanukkaran
2019-07-30 17:45             ` David Christensen
2019-07-31  1:27               ` Ruifeng Wang (Arm Technology China)
2019-07-30 13:26       ` [dpdk-stable] [PATCH v5] Examples/l3fwd: " Hariprasad Govindharajan
2019-07-30 15:48         ` [dpdk-stable] [dpdk-dev] " Lipiec, Herakliusz
2019-07-30 19:58           ` 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=20190725164600.GA1621@bricha3-MOBL.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=akhil.goyal@nxp.com \
    --cc=dev@dpdk.org \
    --cc=hariprasad.govindharajan@intel.com \
    --cc=maciej.czekaj@caviumnetworks.com \
    --cc=marko.kovacevic@intel.com \
    --cc=orika@mellanox.com \
    --cc=pablo.de.lara.guarch@intel.com \
    --cc=radu.nicolau@intel.com \
    --cc=remy.horton@intel.com \
    --cc=stable@dpdk.org \
    --cc=tomasz.kantecki@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 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).