On Wed, Dec 12, 2018 at 11:54:20AM -0800, Stanislav Fomichev wrote: > On 12/12, Stanislav Fomichev wrote: > > On 12/12, Alexei Starovoitov wrote: > > > On Wed, Dec 12, 2018 at 10:59:13AM -0800, Stanislav Fomichev wrote: > > > > On 12/12, Alexei Starovoitov wrote: > > > > > On Wed, Dec 12, 2018 at 10:27:24AM -0800, Stanislav Fomichev wrote: > > > > > > The following prog types don't make sense without bpf cgroup: > > > > > > * BPF_PROG_TYPE_CGROUP_SKB > > > > > > * BPF_PROG_TYPE_CGROUP_SOCK > > > > > > * BPF_PROG_TYPE_CGROUP_SOCK_ADDR > > > > > > > > > > > > Skip running verifier tests that exercise these prog types if > > > > > > kernel is built without proper support. > > > > > > > > > > > > See commit e5c504858a18 ("selftests/bpf: skip verifier sockmap tests > > > > > > on kernels without support") for original motivation. > > > > > > > > > > > > Signed-off-by: Stanislav Fomichev <s...@google.com> > > > > > > --- > > > > > > tools/testing/selftests/bpf/test_verifier.c | 35 > > > > > > +++++++++++++++++++++ > > > > > > 1 file changed, 35 insertions(+) > > > > > > > > > > > > diff --git a/tools/testing/selftests/bpf/test_verifier.c > > > > > > b/tools/testing/selftests/bpf/test_verifier.c > > > > > > index f5015566ae1b..b5470a399996 100644 > > > > > > --- a/tools/testing/selftests/bpf/test_verifier.c > > > > > > +++ b/tools/testing/selftests/bpf/test_verifier.c > > > > > > @@ -44,6 +44,7 @@ > > > > > > /* fallback to all features enabled */ > > > > > > # define CONFIG_BPF_STREAM_PARSER 1 > > > > > > # define CONFIG_XDP_SOCKETS 1 > > > > > > +# define CONFIG_CGROUP_BPF 1 > > > > > > > > > > I really don't like where these is going. > > > > > I think previous set should be reverted. > > > > > This is not a scalable approach. > > > > > Use libbpf probing approach to check whether feature is present > > > > > instead. > > > > I can probably add runtime probing instead of depending on compile-time > > > > config, but I think that we would still need some per-test mechanism > > > > to say that it depends on feature X (per-test .config_disabled or > > > > similar). > > > > Will moving these checks to runtime address your concern? (there is > > > > sill a > > > > scalability issue though) > > > > > > you said it youself. config_disabled doesn't scale. > > > hence it's not a solution regardless of macro or runtime probing. > > Let me see if I can use per-test prog_type for this type of probing. > > Load 'return 0' program per-prog_type and use it as an indication of > > runtime support. This should probably work in the majority of the cases. > > I'll get back to you shortly. > > How about doing something like the (very work-in-progress) patch below? > It mostly gets the job done, I think I need to do similar probing for maps > and skip the tests that have fixup_map_{sockmap,sockhash,xskmap,stacktrace} in > case appropriate map type is not supported. > > --- > > diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h > index aa582cd5bfcf..e55c116ff971 100644 > --- a/include/uapi/linux/bpf.h > +++ b/include/uapi/linux/bpf.h > @@ -157,8 +157,11 @@ enum bpf_prog_type { > BPF_PROG_TYPE_LIRC_MODE2, > BPF_PROG_TYPE_SK_REUSEPORT, > BPF_PROG_TYPE_FLOW_DISSECTOR, > + __MAX_BPF_PROG_TYPE > }; > > +#define MAX_BPF_PROG_TYPE __MAX_BPF_PROG_TYPE > +
that won't work either. "bpf feature set" is a lot more than number of program and map types the kernel supports. There are all sorts of helper combinations, hooks, and verifier improvements. test_verifier.c must test all that. I don't think there is a way to make usptream test_verfier.c not to report failure on older kernels. I think you have to backport and enable everything if you want to run the latest test_verifier.c on your kernel. Other options are: deal with test failures in post processing or have test_verifier.c specific for your kernel. Since you've decided not to backport kernel side of sockmap, don't enable these tests in _your_ test_verifier.c. I've dropped two 'skip * sockmap' patches in bpf-next.