Thread (30 messages) 30 messages, 6 authors, 2021-05-06

Re: linux-next failing build due to missing cubictcp_state symbol

From: Michal Suchánek <hidden>
Date: 2021-05-03 16:55:44
Also in: bpf, lkml

On Mon, May 03, 2021 at 12:08:02PM +0200, Jiri Olsa wrote:
On Mon, May 03, 2021 at 10:59:44AM +0200, Jiri Slaby wrote:
quoted
CCing pahole people.

On 03. 05. 21, 9:59, Jiri Slaby wrote:
quoted
On 03. 05. 21, 8:11, Jiri Slaby wrote:
quoted
quoted
quoted
quoted
quoted
quoted
looks like vfs_truncate did not get into BTF data,
I'll try to reproduce
_None_ of the functions are generated by pahole -J from
debuginfo on ppc64. debuginfo appears to be correct. Neither
pahole -J fs/open.o works correctly. collect_functions in
dwarves seems to be defunct on ppc64... "functions" array is
bogus (so find_function -- the bsearch -- fails).
It's not that bogus. I forgot an asterisk:
quoted
#0  find_function (btfe=0x100269f80, name=0x10024631c
"stream_open") at
/usr/src/debug/dwarves-1.21-1.1.ppc64/btf_encoder.c:350
(gdb) p (*functions)@84
$5 = {{name = 0x7ffff68e0922 ".__se_compat_sys_ftruncate", addr
= 75232, size = 72, sh_addr = 65536, generated = false}, {
    name = 0x7ffff68e019e ".__se_compat_sys_open", addr = 80592,
size = 216, sh_addr = 65536, generated = false}, {
    name = 0x7ffff68e0076 ".__se_compat_sys_openat", addr =
80816, size = 232, sh_addr = 65536, generated = false}, {
    name = 0x7ffff68e0908 ".__se_compat_sys_truncate", addr =
74304, size = 100, sh_addr = 65536, generated = false}, {
...
quoted
    name = 0x7ffff68e0808 ".stream_open", addr = 65824, size =
72, sh_addr = 65536, generated = false}, {
...
quoted
    name = 0x7ffff68e0751 ".vfs_truncate", addr = 73392, size =
544, sh_addr = 65536, generated = false}}
The dot makes the difference, of course. The question is why is it
there? I keep looking into it. Only if someone has an immediate
idea...
Well, .vfs_truncate is in .text (and contains an ._mcount call). And
vfs_truncate is in .opd (w/o an ._mcount call). Since setup_functions
excludes all functions without the ._mcount call, is_ftrace_func later
returns false for such functions and they are filtered before the BTF
processing.

Technically, get_vmlinux_addrs looks at a list of functions between
__start_mcount_loc and __stop_mcount_loc and considers only the listed.

I don't know what the correct fix is (exclude .opd functions from the
filter?). Neither why cross compiler doesn't fail, nor why ebi v2 avoids
this too.
Attaching a patch for pahole which fixes the issue, but I have no idea
whether it is the right fix at all.
hi,
we're considering to disable ftrace filter completely,
I guess that would solve this issue for ppc as well

  https://lore.kernel.org/bpf/20210501001653.x3b4rk4vk4iqv3n7@kafai-mbp.dhcp.thefacebook.com/ (local)
Just disabling the ftrace filter in pahole does not seem to fix it.

Is there some other place where it should be disabled?

Thanks

Michal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help