> -----Original Message-----
> From: Ilya Maximets <[email protected]>
> Sent: Wednesday, September 15, 2021 1:08 PM
> To: ovs-dev <[email protected]>; Van Haaren, Harry
> <[email protected]>; Stokes, Ian <[email protected]>; Ferriter,
> Cian <[email protected]>
> Cc: [email protected]; Eelco Chaudron <[email protected]>; Flavio
> Leitner <[email protected]>
> Subject: Build failure: attribute(target("avx512vpopcntdq")) is unknown
> 
> Hi,
> 
> On a weekend I noticed a following question on IRC:
> 
> <Guest68> Compiling openvswitch v2.16.0; stuck at  ...#/bin/sh ./libtool  
> --tag=CC
> --mode=compile gcc -DHAVE_CONFIG_H -I.    -I ./include -I ./include -I ./lib 
> -I ./lib
> -mavx512f -mavx512bw -mavx512dq -mbmi -mbmi2 -fPIC -Wstrict-prototypes -
> Wall -Wextra
> -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-
> enum
> -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes
> -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers
> -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-
> argument
> -Wbool-compare -Wshadow    -g -O2 -MT
> lib/libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.lo -MD -MP -MF
> lib/.deps/libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.Tpo -c -o
> lib/libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.lo `test -f
> 'lib/dpif-netdev-lookup-avx512-gather.c' || echo './'`
> lib/dpif-netdev-lookup-avx512-gather.c
> getting libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I ./include -I ./include 
> -I ./lib -
> I
> ./lib -mavx512f -mavx512bw -mavx512dq -mbmi -mbmi2 -fPIC -Wstrict-
> prototypes -Wall -Wextra
> -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-
> enum
> -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes
> -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers
> -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-
> argument
> -Wbool-compare -Wshadow -g -O2 -MT
> lib/libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.lo -MD -MP -MF
> lib/.deps/libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.Tpo -c
> lib/dpif-netdev-lookup-avx512-gather.c -o
> lib/libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.o
> <Guest68> lib/dpif-netdev-lookup-avx512-gather.c:88:1: error:
> attribute(target("avx512vpopcntdq")) is unknown
> <Guest68>  {
> <Guest68>  ^
> <Guest68> lib/dpif-netdev-lookup-avx512-gather.c:356:47: error:
> attribute(target("avx512vpopcntdq")) is unknown
> <Guest68>                                         struct dpcls_rule **rules)  
>            \
> <Guest68>                                                ^
> <Guest68> lib/dpif-netdev-lookup-avx512-gather.c:363:1: note: in expansion of
> macro 'DECLARE_OPTIMIZED_LOOKUP_FUNCTION'
> <Guest68>  DECLARE_OPTIMIZED_LOOKUP_FUNCTION(9, 4)
> <Guest68>  ^
> <Guest68> lib/dpif-netdev-lookup-avx512-gather.c:356:47: error:
> attribute(target("avx512vpopcntdq")) is unknown
> <Guest68>                                         struct dpcls_rule **rules)  
>            \
> <Guest68>                                                ^
> <Guest68> lib/dpif-netdev-lookup-avx512-gather.c:364:1: note: in expansion of
> macro 'DECLARE_OPTIMIZED_LOOKUP_FUNCTION'
> <Guest68>  DECLARE_OPTIMIZED_LOOKUP_FUNCTION(9, 1)
> <Guest68>  ^
> <Guest68>  DECLARE_OPTIMIZED_LOOKUP_FUNCTION(4, 0)
> <Guest68>  ^
> <Guest68> Any help ?
> <Guest68> The closest I found is  '[ovs-dev] [PATCH] dpcls: fix build on 
> compilers
> without AVX512-VPOPCNT',
> <Guest68> but I can't see the patch.     TIA, Jan

Thanks for reporting/passing-on from IRC.

> Unfortunately, I noticed only after a few hours after, and reporter seems
> to disconnect before I asked for details.  However, the case looks like
> avx512 checks in ./configure passed, but compiler doesn't support the
> attribute(target).  I'm not sure why this happened though.  But it seems
> that not all copilers supports this attribute.  Do we need to check that
> at configuration time?  Or do we need a knob to fully disable all avx512
> stuff during configuration?

I'm not aware of any compilers that fail on this - so perhaps a very old version
is in use? I've tried to find an indicator of compiler version from the output 
but
I don't think there is any substantial info indicating anything...

I'm not sure taking an approach of specifically selecting compiler versions and
disabling them will work - alternative suggestion below.


> While googling things around attribute 'target' I also noticed that it's
> not supported by some older versions of clang and gcc, but we do not
> check that anywhere.

Perhaps there's a way to ./configure time test if compiling a "target(isa)" 
test fails,
and then selectively disable the ISA optimizations? I expect only old compilers 
will
fail, which are likely only used for legacy systems anyway, so this seems an 
acceptable
solution?


> Best regards, Ilya Maximets.

Regards, -Harry
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to