On Wed, 23 Sep 2020 at 17:24, Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > > On Wed, Sep 23, 2020 at 9:12 AM Lorenz Bauer <lmb@xxxxxxxxxxxxxx> wrote: > > > > On Fri, 18 Sep 2020 at 04:26, Alexei Starovoitov > > <alexei.starovoitov@xxxxxxxxx> wrote: > > [...] > > > > > > Lorenz, > > > if you can test it on cloudflare progs would be awesome. > > > > Our programs all bpf_tail_call from the topmost function, so no calls > > from subprogs. I stripped out our FORCE_INLINE flag, recompiled and > > ran our testsuite. cls_redirect.c (also in the kernel selftests) has a > > test failure that I currently can't explain, but I don't have the time > > to look at it in detail right now. > > > > I've already converted test_cls_redirect.c in selftest to have > __noinline variant. And it works fine. There are only 4 helper > functions that can't be converted to a sub-program (pkt_parse_ipv4, > pkt_parse_ipv6, and three buffer manipulation helpers) because they > are accepting a pointer to a stack from a calling function, which > won't work with subprograms. But all the other functions were > trivially converted to __noinline and keep working. Yeah, that is very possible. Keep in mind though that our internal version has since become more complex, and also has a more comprehensive test suite. I wasn't sounding the alarms, it's just an FYI that I appreciate the work that went into this and have taken a look, but that I need to do some more digging :) -- Lorenz Bauer | Systems Engineer 6th Floor, County Hall/The Riverside Building, SE1 7PB, UK www.cloudflare.com