Re: [PATCH v2 2/2] perf build: compile BPF skeletons with -mcpu=v3
From: Ian Rogers
Date: Sat May 30 2026 - 18:39:56 EST
On Sat, May 30, 2026 at 12:55 PM Suchit Karunakaran
<suchitkarunakaran@xxxxxxxxx> wrote:
>
> The lock_contention BPF program uses __sync_val_compare_and_swap()
> to atomically update the max_time and min_time fields in
> contention_data. This builtin lowers to the BPF_CMPXCHG instruction,
> which is only available in BPF ISA v3. Without an explicit -mcpu flag,
> Clang targets BPF v1/v2 by default on older toolchains (Clang < 18),
> causing build errors when v3 instructions are emitted.
>
> Add -mcpu=v3 to CLANG_OPTIONS, which is used exclusively in the BPF
> skeleton compilation rule.
>
> Signed-off-by: Suchit Karunakaran <suchitkarunakaran@xxxxxxxxx>
Acked-by: Ian Rogers <irogers@xxxxxxxxxx>
Thanks,
Ian
> Changes since v1:
> - Moved the -mcpu=v3 addition from tools/perf/Makefile.perf to
> tools/perf/bpf_skel.mak, following the refactoring of BPF skeleton
> build logic into that file.
> ---
> tools/perf/bpf_skel.mak | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/bpf_skel.mak b/tools/perf/bpf_skel.mak
> index 7704e7e635d8..f2559de39f96 100644
> --- a/tools/perf/bpf_skel.mak
> +++ b/tools/perf/bpf_skel.mak
> @@ -29,7 +29,7 @@ ifneq ($(CROSS_COMPILE),)
> CLANG_TARGET_ARCH = --target=$(notdir $(CROSS_COMPILE:%-=%))
> endif
>
> -CLANG_OPTIONS = -Wall
> +CLANG_OPTIONS = -Wall -mcpu=v3
> CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG),$(CLANG_TARGET_ARCH))
> LIBBPF_INCLUDE := $(abspath $(or $(OUTPUT),.))/libbpf/include
> BPF_INCLUDE := -I$(SKEL_TMP_OUT)/.. -I$(SKEL_TOOL_OUT) -I$(LIBBPF_INCLUDE) $(CLANG_SYS_INCLUDES)
> --
> 2.54.0
>