This patch set fixes perf_buffer__new() behavior on systems which have some of the CPUs offline/missing (due to difference between "possible" and "online" sets). perf_buffer will create per-CPU buffer and open/attach to corresponding perf_event only on CPUs present and online at the moment of perf_buffer creation. Without this logic, perf_buffer creation has no chances of succeeding on such systems, preventing valid and correct BPF applications from starting. Andrii Nakryiko (4): libbpf: extract and generalize CPU mask parsing logic selftests/bpf: add CPU mask parsing tests libbpf: don't attach perf_buffer to offline/missing CPUs selftests/bpf: fix perf_buffer test on systems w/ offline CPUs tools/lib/bpf/libbpf.c | 157 ++++++++++++------ tools/lib/bpf/libbpf_internal.h | 2 + .../selftests/bpf/prog_tests/cpu_mask.c | 78 +++++++++ .../selftests/bpf/prog_tests/perf_buffer.c | 29 +++- 4 files changed, 213 insertions(+), 53 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/cpu_mask.c -- 2.17.1