[ovs-dev] [PATCH] dpif-netdev: Call cpuid for x86 isa availability.

David Marchand david.marchand at redhat.com
Fri Nov 19 15:04:19 UTC 2021


On Wed, Nov 3, 2021 at 4:32 PM Ilya Maximets <i.maximets at ovn.org> wrote:
>
> On 10/12/21 21:49, David Marchand wrote:
> > DPIF AVX512 optimisations currently rely on DPDK availability while
> > they can be used without DPDK.
> > Besides, checking for availability of some isa only has to be done once
> > and won't change while a OVS process runs.
> >
> > Resolve isa availability in constructors by using a simplified query
> > based on cpuid API that comes from the compiler.
> >
> > Note: this also fixes the check on BMI2 availability: DPDK had a bug
> > for this isa, see https://git.dpdk.org/dpdk/commit/?id=aae3037ab1e0.
> >
> > Suggested-by: Ilya Maximets <i.maximets at ovn.org>
> > Signed-off-by: David Marchand <david.marchand at redhat.com>
> > ---
> >  lib/automake.mk                        |  2 +
> >  lib/cpu.c                              | 68 ++++++++++++++++++++++++++
> >  lib/cpu.h                              | 34 +++++++++++++
> >  lib/dpdk-stub.c                        |  9 ----
> >  lib/dpdk.c                             | 52 --------------------
> >  lib/dpdk.h                             |  1 -
> >  lib/dpif-netdev-avx512.c               |  5 +-
> >  lib/dpif-netdev-extract-avx512.c       | 14 +++---
> >  lib/dpif-netdev-lookup-avx512-gather.c |  7 +--
> >  9 files changed, 118 insertions(+), 74 deletions(-)
> >  create mode 100644 lib/cpu.c
> >  create mode 100644 lib/cpu.h
> >
>
> Hi, David.  Thanks ofr the patch!
>
> I didn't check the actual values of cpuid bits, but the overall design
> and implementation looks great!  This way non-dpdk setups (e.g. afxdp)
> will be able to use optimized lookup functions.  This will also make
> unit-testing easier.  This patch also eliminated string comparisons, which
> is good to see.
>
> Next step, I suppose, will be to move AVX512 tests out of the DPDK testsuite
> to one of generic ones?

If you refer to 50be6715c083 ("test/sytem-dpdk: Add unit test for mfex
autovalidator"), there is another step in this direction by removing
dependency on the net/pcap DPDK driver.
https://patchwork.ozlabs.org/project/openvswitch/patch/20210927135732.16175-2-david.marchand@redhat.com/


>
> Harry, Cian, Amber, could you, please, review/test this out on your setup?


Thanks.

-- 
David Marchand



More information about the dev mailing list