Re: Questions about the state of some BTF features

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 24, 2024 at 7:10 AM Alan Maguire <alan.maguire@xxxxxxxxxx> wrote:
>
> hey Andrii
>
> On 23/10/2024 01:08, Andrii Nakryiko wrote:
> > Hey Alan,
> >
> > There were a few BTF-related features you've been working on, and I
> > realized recently that I don't remember exactly where we ended up with
> > them and whether there is anything blocking those features. So instead
> > of going on a mailing list archeology trip, I decided to lazily ask
> > you directly :)
> >
> > Basically, at some point we were discussing and reviewing BTF
> > extensions to have a minimal description of BTF types sizes (fixed and
> > per-item length). What happened to it? Did we decide it's not
> > necessary, or is it still in the works?
>
> Yeah, it's still in the works; more on that below..
>
> >
> > Also, distilled BTF stuff. We landed libbpf-side API (and I believe
> > the kernel-side changes went in as well, right?), but I don't think we
> > enabled this functionality for kernel builds, is that right? What's
> > missing to have relocatable BTF inside kernel modules? Pahole changes?
> > Has that landed?
> >
>
> The pahole changes are in, and will be available in the imminent v1.28
> release. Distilled BTF will however only be generated for out-of-tree
> module builds, since it's not needed for kernels where vmlinux + module
> are built at the same time.

It's not, strictly speaking, needed, but it might be a good thing to
do this anyways to avoid unnecessary rebuilding of kernel modules
(always a good thing).

But at the very least we should enable it for bpf_testmod* in BPF
selftests. Can we start with that?

>
> Here's the set of BTF things I think we've discussed and folks have
> talked about wanting. I've tried to order them based upon dependencies,
> but in most cases a different ordering is possible.
>
> 1. Build vmlinux BTF as a module (support CONFIG_DEBUG_INFO_BTF=m). This
> one helps the embedded folks as modules can be on a separate partition,
> and a very large vmlinux is a problem in that environment apparently.
> Plus we can do module compression, and I did some measurements and
> vmlinux BTF shrinks from ~7Mb to ~1.5Mb when gzip-compressed. This is
> sort of a dependency for
>
> 2. all global variables in BTF. Stephen Brennan added support to pahole,
> but we haven't switched the feature on yet in Makefile.btf. Needs more
> testing and for some folks the growth in vmlinux BTF (~1.5Mb) may be an
> issue, hence a soft dependency on 1.
>
> 3. BTF header modifications to support kind layout. I've been waiting
> for the need for a new BTF kind to add this, but that's not strictly
> needed. But that brings us on to
>
> 4. Augmenting BTF representations to support site-specific info
> (including function addresses). We talked about this a bit with Yonghong
> at plumbers. Will probably require new kind(s) so 3 should likely be
> done first. May also need some special handling so as not to expose
> function addresses to unprivileged users.
>
> So I think 1 is possibly needed before 2, and I'm working on an RFC for
> 1 which I hope to get sent out next week (been a bit delayed working on
> the pahole release). 3 would need to be done before 4, or ideally any
> other series that introduced new BTF kinds.
>
> So that's the set of things I'm aware of - there may be other needs of
> course - but the order 1-4 was roughly how I was thinking we could
> attack it. 1 and 2 don't require core BTF changes, so are less
> disruptive. We'd got pretty far down the road with an earlier version of
> 3, so if anyone needed it sooner than I get to it, I'd be happy to help
> of course.

Thanks, Alan, for the list.

I think we should prioritize 3 (and 1, of course), as you said, any
BTF extension would be blocked on this (as far as I'm concerned at
least). I wouldn't delay until we actually add a new BTF kind to land
BTF header modifications, that would just delay future work
unnecessarily.

>
> Thanks!
>
> Alan
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux