DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Thomas Monjalon <thomas@monjalon.net>
Cc: <dev@dpdk.org>, <stable@dpdk.org>,
	Byron Marohn <byron.marohn@intel.com>,
	 Yipeng Wang <yipeng1.wang@intel.com>,
	Keith Wiles <keith.wiles@intel.com>,
	 Luca Boccassi <luca.boccassi@microsoft.com>,
	Harry van Haaren <harry.van.haaren@intel.com>,
	Sean Morrissey <sean.morrissey@intel.com>
Subject: Re: [PATCH 1/3] efd: fix AVX2 support
Date: Thu, 18 Sep 2025 08:48:00 +0100	[thread overview]
Message-ID: <aMu5MKGFjrrffCnv@bricha3-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <20250918073135.1273767-2-thomas@monjalon.net>

On Thu, Sep 18, 2025 at 09:28:03AM +0200, Thomas Monjalon wrote:
> When switching to Meson build, the compilation check on CC_SUPPORT_AVX2
> became obsolete, thus the case EFD_LOOKUP_AVX2 became dead.
> The function efd_lookup_internal_avx2() was never called,
> and its header include rte_efd_x86.h has been removed later.
> 
> AVX2 is assumed to be always supported on x86 with supported compilers,
> so the checks for AVX2 are simply removed, and the include is added back.
> 
> Fixes: 5b9656b157d3 ("lib: build with meson")
> Fixes: 30a1de105a5f ("lib: remove unneeded header includes")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Some comments inline below. Not sure all these removals are entirely
correct - though it may be that the original code has issues itself, rather
than just this patch.

/Bruce

> ---
>  lib/efd/rte_efd.c     |  3 ++-
>  lib/efd/rte_efd_x86.h | 10 ----------
>  2 files changed, 2 insertions(+), 11 deletions(-)
> 
> diff --git a/lib/efd/rte_efd.c b/lib/efd/rte_efd.c
> index b0e44e5c51..ebf1e0655f 100644
> --- a/lib/efd/rte_efd.c
> +++ b/lib/efd/rte_efd.c
> @@ -26,6 +26,7 @@
>  
>  #include "rte_efd.h"
>  #if defined(RTE_ARCH_X86)
> +#include "rte_efd_x86.h"
>  #elif defined(RTE_ARCH_ARM64)
>  #include "rte_efd_arm64.h"
>  #endif
> @@ -1279,7 +1280,7 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
>  
>  	switch (lookup_fn) {
>  
> -#if defined(RTE_ARCH_X86) && defined(CC_SUPPORT_AVX2)
> +#if defined(RTE_ARCH_X86)

Ok to remove this, because indeed all supported compilers have AVX2.

However, given that the efd meson.build file doesn't check for compiler
support and optionally build some extra files with the AVX2 flags, I wonder
if this define should actually be changed to an __AVX2__ one, to detect if
the build has AVX2 support rather than just the compiler.

>  	case EFD_LOOKUP_AVX2:
>  		return efd_lookup_internal_avx2(group->hash_idx,
>  					group->lookup_table,
> diff --git a/lib/efd/rte_efd_x86.h b/lib/efd/rte_efd_x86.h
> index e2f9dcca88..f7776db8a5 100644
> --- a/lib/efd/rte_efd_x86.h
> +++ b/lib/efd/rte_efd_x86.h
> @@ -19,7 +19,6 @@ efd_lookup_internal_avx2(const efd_hashfunc_t *group_hash_idx,
>  		const efd_lookuptbl_t *group_lookup_table,
>  		const uint32_t hash_val_a, const uint32_t hash_val_b)
>  {
> -#ifdef __AVX2__

This may not be safe to remove though, because AVX2 support may not
actually be present in the build. For example, when doing a default build
with -march=corei7, __AVX2__ will not be defined, because the target CPU
doesn't support it, even though the compiler does.

>  	efd_value_t value = 0;
>  	uint32_t i = 0;
>  	__m256i vhash_val_a = _mm256_set1_epi32(hash_val_a);
> @@ -45,13 +44,4 @@ efd_lookup_internal_avx2(const efd_hashfunc_t *group_hash_idx,
>  	}
>  
>  	return value;
> -#else
> -	RTE_SET_USED(group_hash_idx);
> -	RTE_SET_USED(group_lookup_table);
> -	RTE_SET_USED(hash_val_a);
> -	RTE_SET_USED(hash_val_b);
> -	/* Return dummy value, only to avoid compilation breakage */
> -	return 0;
> -#endif
> -
>  }
> -- 
> 2.51.0
> 

  reply	other threads:[~2025-09-18  7:48 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-18  7:28 [PATCH 0/3] lib: fix AVX2 checks and macro exposure Thomas Monjalon
2025-09-18  7:28 ` [PATCH 1/3] efd: fix AVX2 support Thomas Monjalon
2025-09-18  7:48   ` Bruce Richardson [this message]
2025-09-18  8:16     ` Thomas Monjalon
2025-09-18  7:28 ` [PATCH 2/3] member: remove AVX2 build-time checks Thomas Monjalon
2025-09-18  7:49   ` Bruce Richardson
2025-09-18  7:28 ` [PATCH 3/3] member: hide internal macro Thomas Monjalon
2025-09-18  7:50   ` Bruce Richardson
2025-09-18  8:10 ` [PATCH 0/3] lib: fix AVX2 checks and macro exposure Thomas Monjalon
2025-09-18  8:59   ` Bruce Richardson
2025-09-18  9:08 ` [PATCH v2 0/4] " Thomas Monjalon
2025-09-18  9:08   ` [PATCH v2 1/4] efd: fix AVX2 support Thomas Monjalon
2025-09-18  9:40     ` Thomas Monjalon
2025-09-18  9:47       ` Thomas Monjalon
2025-09-18  9:08   ` [PATCH v2 2/4] efd: remove AVX2 build-time check Thomas Monjalon
2025-09-18  9:08   ` [PATCH v2 3/4] member: remove AVX2 build-time checks Thomas Monjalon
2025-09-18  9:08   ` [PATCH v2 4/4] member: hide internal macro 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=aMu5MKGFjrrffCnv@bricha3-mobl1.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=byron.marohn@intel.com \
    --cc=dev@dpdk.org \
    --cc=harry.van.haaren@intel.com \
    --cc=keith.wiles@intel.com \
    --cc=luca.boccassi@microsoft.com \
    --cc=sean.morrissey@intel.com \
    --cc=stable@dpdk.org \
    --cc=thomas@monjalon.net \
    --cc=yipeng1.wang@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).