All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrii Nakryiko <andrii.nakryiko@gmail.com>
To: Alexei Starovoitov <ast@fb.com>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	john fastabend <john.fastabend@gmail.com>,
	bpf <bpf@vger.kernel.org>, Kernel Team <kernel-team@fb.com>
Subject: Re: [PATCH v4 bpf-next 15/22] libbpf: Use fd_array only with gen_loader.
Date: Wed, 12 May 2021 11:11:23 -0700	[thread overview]
Message-ID: <CAEf4BzZyFYT8=e-g5U8VRXt_h9pwxaUWzpjNtj9My7GEm4ozuQ@mail.gmail.com> (raw)
In-Reply-To: <8122c5c0-1429-9f2d-c73a-9d8ada4f318e@fb.com>

On Tue, May 11, 2021 at 9:17 PM Alexei Starovoitov <ast@fb.com> wrote:
>
> On 5/11/21 4:24 PM, Andrii Nakryiko wrote:
> > On Fri, May 7, 2021 at 8:49 PM Alexei Starovoitov
> > <alexei.starovoitov@gmail.com> wrote:
> >>
> >> From: Alexei Starovoitov <ast@kernel.org>
> >>
> >> Rely on fd_array kernel feature only to generate loader program,
> >> since it's mandatory for it.
> >> Avoid using fd_array by default to preserve test coverage
> >> for old style map_fd patching.
> >>
> >> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
> >> ---
> >
> > As mentioned in the previous patch, this is almost a complete undo of
> > one of the earlier patches, but it also leaves FEAT_FD_IDX and
> > probe_kern_fd_idx() around. Can you please try to combine them?
>
> I cannot combine 9 and this 15, because then 14 will be broken.
> I'd have to combine all 3, but then the fd_idx won't get its own
> test coverage.

If you want to keep them separate, then adding `void *gen_loader` and
using that instead of kernel_supports() check would minimize code
churn. It will be auto-initialized to NULL and then in patch #14
you'll just define gen_loader with a proper type and initialization.

> With patches 1 through 9 I've tested the whole test_progs
> and that gives the confidence that kernel and libbpf side
> are doing it correctly.
> Then with the rest of patches and without 15 I test everything again.
> Such testing approach covers lskel and fd_idx together.
> I think this patch 15 is rather unnecessary. It's here only because
> you didn't like patch 9.
> I think patch 9 is a good default for libbpf to take.
> Eventually llvm can emit .o with fd_idx style.

When it does and it provides some benefits, we can switch. As I
mentioned previously, the current mechanism covers all the cases and
works fine without requiring extra code, so there is little reason to
switch the default to it.

> The libbpf would just call probe_kern_fd_idx() and won't need
> to massage the .text after llvm if kernel supports it.
> It would need to sanitize back to BPF_PSEUDO_MAP_FD only on older kernels.
> That's the reason I'm not deleting probe_kern_fd_idx() in this patch,
> because I think it will be used fairly soon.
> But I can delete it too if you insist.

Yes, please. We can always add it back when necessary. I'd like to
avoid dead code lying around.

> But combining 9,14,15 into one I'd like to avoid.

Sure, I agree, see above for a simple way to keep them separate
without code churn.

> I think there is a value to have this in git to easily go back later
> to test everything in fd_idx mode by reverting this patch 15.

  reply	other threads:[~2021-05-12 18:32 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-08  3:48 [PATCH v4 bpf-next 00/22] bpf: syscall program, FD array, loader program, light skeleton Alexei Starovoitov
2021-05-08  3:48 ` [PATCH v4 bpf-next 01/22] bpf: Introduce bpf_sys_bpf() helper and program type Alexei Starovoitov
2021-05-08  3:48 ` [PATCH v4 bpf-next 02/22] bpf: Introduce bpfptr_t user/kernel pointer Alexei Starovoitov
2021-05-11 22:23   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 03/22] bpf: Prepare bpf syscall to be used from kernel and user space Alexei Starovoitov
2021-05-11 22:31   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 04/22] libbpf: Support for syscall program type Alexei Starovoitov
2021-05-08  3:48 ` [PATCH v4 bpf-next 05/22] selftests/bpf: Test " Alexei Starovoitov
2021-05-11 22:36   ` Andrii Nakryiko
2021-05-11 22:44     ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 06/22] bpf: Make btf_load command to be bpfptr_t compatible Alexei Starovoitov
2021-05-11 22:41   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 07/22] selftests/bpf: Test for btf_load command Alexei Starovoitov
2021-05-11 22:45   ` Andrii Nakryiko
2021-05-12  4:04     ` Alexei Starovoitov
2021-05-12 18:00       ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 08/22] bpf: Introduce fd_idx Alexei Starovoitov
2021-05-11 22:47   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 09/22] libbpf: Support for fd_idx Alexei Starovoitov
2021-05-11 22:57   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 10/22] bpf: Add bpf_btf_find_by_name_kind() helper Alexei Starovoitov
2021-05-11 23:02   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 11/22] bpf: Add bpf_sys_close() helper Alexei Starovoitov
2021-05-08  3:48 ` [PATCH v4 bpf-next 12/22] libbpf: Change the order of data and text relocations Alexei Starovoitov
2021-05-11 23:06   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 13/22] libbpf: Add bpf_object pointer to kernel_supports() Alexei Starovoitov
2021-05-08  3:48 ` [PATCH v4 bpf-next 14/22] libbpf: Generate loader program out of BPF ELF file Alexei Starovoitov
2021-05-11 23:22   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 15/22] libbpf: Use fd_array only with gen_loader Alexei Starovoitov
2021-05-11 23:24   ` Andrii Nakryiko
2021-05-12  4:17     ` Alexei Starovoitov
2021-05-12 18:11       ` Andrii Nakryiko [this message]
2021-05-08  3:48 ` [PATCH v4 bpf-next 16/22] libbpf: Cleanup temp FDs when intermediate sys_bpf fails Alexei Starovoitov
2021-05-11 23:34   ` Andrii Nakryiko
2021-05-12  4:33     ` Alexei Starovoitov
2021-05-08  3:48 ` [PATCH v4 bpf-next 17/22] libbpf: Introduce bpf_map__get_initial_value() Alexei Starovoitov
2021-05-11 23:39   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 18/22] bpftool: Use syscall/loader program in "prog load" and "gen skeleton" command Alexei Starovoitov
2021-05-12  4:17   ` Andrii Nakryiko
2021-05-12 18:43     ` Alexei Starovoitov
2021-05-12 18:55       ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 19/22] selftests/bpf: Convert few tests to light skeleton Alexei Starovoitov
2021-05-12  4:19   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 20/22] selftests/bpf: Convert atomics test " Alexei Starovoitov
2021-05-12  4:21   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 21/22] selftests/bpf: Convert test printk to use rodata Alexei Starovoitov
2021-05-12  4:23   ` Andrii Nakryiko
2021-05-08  3:48 ` [PATCH v4 bpf-next 22/22] selftests/bpf: Convert test trace_printk to lskel Alexei Starovoitov
2021-05-12  4:24   ` Andrii Nakryiko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEf4BzZyFYT8=e-g5U8VRXt_h9pwxaUWzpjNtj9My7GEm4ozuQ@mail.gmail.com' \
    --to=andrii.nakryiko@gmail.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@fb.com \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=john.fastabend@gmail.com \
    --cc=kernel-team@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.