Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf tools: Fix prologue generation #3109

Closed
wants to merge 3 commits into from

Conversation

kernel-patches-bot
Copy link

Pull request for series with
subject: perf tools: Fix prologue generation
version: 1
url: https://patchwork.kernel.org/project/netdevbpf/list/?series=647121

@kernel-patches-bot
Copy link
Author

Master branch: f175ece
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647121
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: f913ad6
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647121
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: f913ad6
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647321
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: 4349680
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647321
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: 02f4afe
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647321
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: d352bd8
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647321
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: d352bd8
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647321
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: 0b81705
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647321
version: 1

@kernel-patches-bot
Copy link
Author

Master branch: fe92833
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=647321
version: 1

Perf is using section name to declare special kprobe arguments,
which no longer works with current libbpf, that either requires
certain form of the section name or allows to register custom
handler.

Adding perf support to register 'fallback' section handler to take
care of perf kprobe programs. The fallback means that it handles
any section definition besides the ones that libbpf handles.

The handler serves two purposes:
  - allows perf programs to have special arguments in section name
  - allows perf to use pre-load callback where we can attach init
    code (zeroing all argument registers) to each perf program

The second is essential part of new prologue generation code,
that's coming in following patch.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Some functions we use for bpf prologue generation are going to be
deprecated. This change reworks current code not to use them.

We need to replace following functions/struct:
   bpf_program__set_prep
   bpf_program__nth_fd
   struct bpf_prog_prep_result

Currently we use bpf_program__set_prep to hook perf callback before
program is loaded and provide new instructions with the prologue.

We replace this function/ality by taking instructions for specific
program, attaching prologue to them and load such new ebpf programs
with prologue using separate bpf_prog_load calls (outside libbpf
load machinery).

Before we can take and use program instructions, we need libbpf to
actually load it. This way we get the final shape of its instructions
with all relocations and verifier adjustments).

There's one glitch though.. perf kprobe program already assumes
generated prologue code with proper values in argument registers,
so loading such program directly will fail in the verifier.

That's where the fallback pre-load handler fits in and prepends
the initialization code to the program. Once such program is loaded
we take its instructions, cut off the initialization code and prepend
the prologue.

I know.. sorry ;-)

Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
@kernel-patches-bot
Copy link
Author

At least one diff in series https://patchwork.kernel.org/project/netdevbpf/list/?series=647321 expired. Closing PR.

@kernel-patches-bot kernel-patches-bot deleted the series/634594=>bpf-next branch June 13, 2022 01:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants