[ovs-dev] [PATCH v3 0/4] XDP offload using flow API provider

Toshiaki Makita toshiaki.makita1 at gmail.com
Mon Jul 27 10:02:13 UTC 2020


Hi William,

On 2020/07/16 23:05, Toshiaki Makita wrote:
> Hi William,
> 
> Thank you for taking a look!
> 
> On 2020/07/16 0:49, William Tu wrote:
>> Hi Toshiaki,
>>
>> Thanks for the interesting patch series!
>> I haven't finished reviewing, but I went through a couple of
>> steps to make sure it works in my environment.
>> Comments below:
>>
>> On Tue, Jun 30, 2020 at 12:30:29AM +0900, Toshiaki Makita wrote:
> ...
>>> * How to use
>>>
>>> 1. Install clang/llvm >= 9, libbpf >= 0.0.6 (included in kernel 5.5), and
>>>     kernel >= 5.3.
>> Encounter an error:
>> lib/netdev-offload-xdp.c: In function ‘probe_meta_info’:
>> lib/netdev-offload-xdp.c:386:19: error: implicit declaration of function ‘btf__find_by_name_kind’
>> [-Werror=implicit-function-declaration]
>>       meta_sec_id = btf__find_by_name_kind(btf, ".ovs_meta", BTF_KIND_DATASEC);
>>
>> $~/bpf-next/tools/lib/bpf# nm libbpf.so.0.0.7  | grep "btf__.*kind" | grep T
>> 000000000001d4b3 T btf__find_by_name_kind
>> $~/bpf-next/tools/lib/bpf# nm libbpf.so.0.0.6  | grep "btf__.*kind" | grep T
>>
>> Actually we need libbpf 0.0.7
> 
> Hmm...? It should be 0.0.6...
> 
> https://github.com/libbpf/libbpf/blob/v0.0.6/src/libbpf.map#L208
> 
> LIBBPF_0.0.6 {
>      global:
>          [...]
>          btf__find_by_name_kind;
> 
> I'll double check if my 0.0.6 binary has this function.

Confirmed.

```
$ rpm -q libbpf
libbpf-0.0.6-1.fc31.x86_64

$ nm -D /lib64/libbpf.so.0.0.6 | grep "btf__.*kind" | grep T
00000000000091f0 T btf__find_by_name_kind
```

William, would you check your configuration again?
libbpf 0.0.6 should include btf__find_by_name_kind.

>>> 2. make with --enable-afxdp --enable-bpf
>>> --enable-bpf will generate XDP program "bpf/flowtable_afxdp.o".  Note that
>>> the BPF object will not be installed anywhere by "make install" at this point.
>>
>> This works ok for me. I was using clang8 and it doesn't work due to BTF.
>> 2020-07-15T14:59:15.224Z|00043|netdev_afxdp|WARN|libbpf: BTF is required, but is missing or corrupted.
>>
>> Maybe we should check clang version at ./configure time.
> 
> Actually we already have checking for BTF:
> 
>      AC_MSG_CHECKING([for BTF DATASEC support])
>      AC_LANG_CONFTEST(
>        [AC_LANG_SOURCE([__attribute__((section("_x"), used)) int x;])])
>      if clang -g -O2 -S -target bpf -emit-llvm -c conftest.c -o conftest.ll && \
>         llc -march=bpf -filetype=obj -o conftest.o conftest.ll && \
>         readelf -p.BTF conftest.o 2>/dev/null | grep -q -w _x; then
>        AC_MSG_RESULT([yes])
> 
> I'll check why this did not work for you.

I tried reproducing this with clang 8, but couldn't.

```
$ clang --version
clang version 8.0.0 (Fedora 8.0.0-3.fc30)

$ ./boot.sh
$ ./configure --enable-bpf
[...]
checking for BTF DATASEC support... no
configure: error: LLVM does not support BTF DATASEC
```

Could you try ./configure --enable-bpf again?

Toshiaki Makita


More information about the dev mailing list