runqlat (from libbpf-tools) doesn't work on powerpc: ENOTSUPP
- Dominant language
- C
- Stars
- 22.7k
- Forks
- 4.1k
- Avg merge
- 10d 4h
- Merged PRs (30d)
- 3
Description
The runqlat libbpf tool is broken on powerpc (ppc64le):
```
# ./runqlat
libbpf: load bpf program failed: ERROR: strerror_r(524)=22
libbpf: -- BEGIN DUMP LOG ---
libbpf:
processed 20 insns (limit 1000000) max_states_per_insn 0 total_states 2 peak_states 2 mark_read 1
libbpf: -- END LOG --
libbpf: failed to load program 'sched_wakeup'
libbpf: failed to load object 'runqlat_bpf'
libbpf: failed to load BPF skeleton 'runqlat_bpf': -4007
failed to load BPF object: -4007
```
Using CentOS Stream 9, kernel 5.14.0-26.el9.ppc64le, and latest bcc (commit 52900a435de85e706f5280f4a184374dd729c58e).
The same tool works fine on arm64 and x86 though.
Looking for that error message, the only result I found in this repo is #3044 - some instruction isn't supported on powerpc. Looking at `sched_wakeup` and `trace_enqueue` I can't see anything special. Is there a way to get more verbose debug output?
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the runqlat libbpf tool and its sched_wakeup and trace_enqueue programs, then compare the unsupported-instruction context with issue #3044. Reproduce the BPF load failure on ppc64le with the stated kernel and tool versions and use the verifier output to identify the incompatibility; done means runqlat loads and works on powerpc without regressing arm64 or x86.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, linux
- Domain
- observability, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100