On 11 May 2022, at 12:48, Ilya Maximets wrote:
> On 5/11/22 11:18, Eelco Chaudron wrote:
>> Hi William,
>>
>> I was conducting some datapath tests and thought I could quickly include
>> some af_xdp, but I ran into a build error.
>> As I’m not using AF_XDP normally, I did not further investigate, but it
>> might be something for you to look at:
>>
>> /bin/sh ./libtool --tag=CC --mode=compile gcc
>> -DHAVE_CONFIG_H -I. -I/vagrant/ovs -I /vagrant/ovs/include -I ./include
>> -I /vagrant/ovs/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 -Wshift-negative-value -Wduplicated-cond -Wshadow
>> -Wmultistatement-macros -Wcast-align=strict -mssse3
>> -I/root/dpdk_build/install/include -include rte_config.h -Werror -Werror
>> -D_FILE_OFFSET_BITS=64 -g -O2 -msse4.2 -mpopcnt -MT
>> lib/libopenvswitchavx512_la-dpif-netdev-extract-avx512.lo -MD -MP -MF
>> lib/.deps/libopenvswitchavx512_la-dpif-netdev-extract-avx512.Tpo -c -o
>> lib/libopenvswitchavx512_la-dpif-netdev-extract-avx512.lo `test -f
>> 'lib/dpif-netdev-extract-avx512.c' || echo
>> '/vagrant/ovs/'`lib/dpif-netdev-extract-avx512.c
>> libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/vagrant/ovs -I
>> /vagrant/ovs/include -I ./include -I /vagrant/ovs/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 -Wshift-negative-value
>> -Wduplicated-cond -Wshadow -Wmultistatement-macros -Wcast-align=strict
>> -mssse3 -I/root/dpdk_build/install/include -include rte_config.h -Werror
>> -Werror -D_FILE_OFFSET_BITS=64 -g -O2 -msse4.2 -mpopcnt -MT
>> lib/libopenvswitchavx512_la-dpif-netdev-extract-avx512.lo -MD -MP -MF
>> lib/.deps/libopenvswitchavx512_la-dpif-netdev-extract-avx512.Tpo -c
>> /vagrant/ovs/lib/dpif-netdev-extract-avx512.c -o
>> lib/libopenvswitchavx512_la-dpif-netdev-extract-avx512.o
>> In file included from
>> /vagrant/ovs/lib/netdev-linux-private.h:30,
>> from /vagrant/ovs/lib/netdev-afxdp.c:19:
>> In function ‘dp_packet_delete’,
>> inlined from ‘dp_packet_delete’ at
>> /vagrant/ovs/lib/dp-packet.h:242:1,
>> inlined from ‘dp_packet_batch_add__’ at
>> /vagrant/ovs/lib/dp-packet.h:773:9,
>> inlined from ‘dp_packet_batch_add’ at
>> /vagrant/ovs/lib/dp-packet.h:781:5,
>> inlined from ‘netdev_afxdp_rxq_recv’ at
>> /vagrant/ovs/lib/netdev-afxdp.c:872:9:
>> /vagrant/ovs/lib/dp-packet.h:258:9: error: ‘free’ called on
>> pointer ‘*umem.xpool.array’ with nonzero offset [64, 3458764513820540224]
>> [-Werror=free-nonheap-object]
>> 258 | free(b);
>
>
> Hmm. This free() is from a branch that handles overflow of the batch,
> and that is not possible, because netdev_afxdp_rxq_recv() can not
> receive more than NETDEV_MAX_BURST packets. So, it's a false-positive.
> What is your compiler version? Did you add free-nonheap-object
> warning or is it enabled by default?
Running on Fedora 35 with gcc:
[vagrant@fedora ~]$ rpm -q gcc
gcc-11.3.1-2.fc35.x86_64
[vagrant@fedora ~]$ gcc --version
gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
And using the following compile options:
PKG_CONFIG_PATH=$DPDK_BUILD/install/lib64/pkgconfig \
CFLAGS="-g -O2 -msse4.2 -mpopcnt" \
/vagrant/ovs/configure \
--enable-afxdp \
--enable-Werror \
--enable-usdt-probes \
--localstatedir=/var \
--prefix=/usr \
--sysconfdir=/etc \
--with-dpdk=static \
| tee BUILD_ovs_configure.log
I’ve added "-Wno-free-nonheap-object" to make it compile for now.
//Eelco
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev