iovisor / iovisor/bcc

runqlat (from libbpf-tools) doesn't work on powerpc: ENOTSUPP

Open
#3,753 8 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.