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

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

From: Jiri Olsa <hidden>
Date: 2021-05-06 13:16:55
Also in: bpf, lkml

On Wed, May 05, 2021 at 10:31:52PM -0700, Martin KaFai Lau wrote:
On Tue, May 04, 2021 at 08:41:47AM +0200, Jiri Slaby wrote:
quoted
On 03. 05. 21, 12:08, Jiri Olsa wrote:
quoted
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)
Right, the attached patch fixes it for me too.
Ah, I just noticed the attachment while replying an earlier message in
this thread.

Please feel free to add SOB to mine or
repost yours and toss mine.  Either way works for me.
I think this patch is missing the same removal I just commented
on your patch.. either way is ok for me

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