Re: [PATCH dwarves] btf: Remove ftrace filter

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

 



On Thu, May 06, 2021 at 03:15:15PM +0200, Jiri Olsa wrote:
> On Wed, May 05, 2021 at 06:58:24PM -0700, Martin KaFai Lau wrote:
> > BTF is currently generated for functions that are in ftrace list
> > or extern.
> > 
> > A recent use case also needs BTF generated for functions included in
> > allowlist.  In particular, the kernel
> > commit e78aea8b2170 ("bpf: tcp: Put some tcp cong functions in allowlist for bpf-tcp-cc")
> > allows bpf program to directly call a few tcp cc kernel functions. Those
> > kernel functions are currently allowed only if CONFIG_DYNAMIC_FTRACE
> > is set to ensure they are in the ftrace list but this kconfig dependency
> > is unnecessary.
> > 
> > Those kernel functions are specified under an ELF section .BTF_ids.
> > There was an earlier attempt [0] to add another filter for the functions in
> > the .BTF_ids section.  That discussion concluded that the ftrace filter
> > should be removed instead.
> > 
> > This patch is to remove the ftrace filter and its related functions.
> > 
> > Number of BTF FUNC with and without is_ftrace_func():
> > My kconfig in x86: 40643 vs 46225
> > Jiri reported on arm: 25022 vs 55812
> > 
> > [0]: https://lore.kernel.org/dwarves/20210423213728.3538141-1-kafai@xxxxxx/
> > 
> > Cc: Andrii Nakryiko <andrii@xxxxxxxxxx>
> > Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
> > Signed-off-by: Martin KaFai Lau <kafai@xxxxxx>
> > ---
> >  btf_encoder.c | 272 +-------------------------------------------------
> >  1 file changed, 5 insertions(+), 267 deletions(-)
> > 
> > diff --git a/btf_encoder.c b/btf_encoder.c
> > index 80e896961d4e..55c5f8e30cac 100644
> > --- a/btf_encoder.c
> > +++ b/btf_encoder.c
> > @@ -27,17 +27,8 @@
> >   */
> >  #define KSYM_NAME_LEN 128
> >  
> > -struct funcs_layout {
> > -	unsigned long mcount_start;
> > -	unsigned long mcount_stop;
> > -	unsigned long mcount_sec_idx;
> > -};
> > -
> >  struct elf_function {
> >  	const char	*name;
> > -	unsigned long	 addr;
> > -	unsigned long	 size;
> > -	unsigned long	 sh_addr;
> >  	bool		 generated;
> >  };
> >  
> > @@ -98,250 +89,11 @@ static int collect_function(struct btf_elf *btfe, GElf_Sym *sym,
> >  	}
> >  
> 
> we could also remove sym_sec_idx/last_idx right?
> it's there for the sh.sh_addr, which got removed
Right, I will remove them.



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux