
hulk inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/ICA1GK -------------------------------- Add a kfunc to retrieve ARM CPU's feature. Signed-off-by: GONG Ruiqi <gongruiqi1@huawei.com> --- arch/arm64/kernel/Makefile | 1 + arch/arm64/kernel/bpf-rvi.c | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 arch/arm64/kernel/bpf-rvi.c diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index c0612c173baa..d67126570cb2 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -86,6 +86,7 @@ obj-$(CONFIG_HISI_VIRTCCA_GUEST) += virtcca_cvm_guest.o virtcca_cvm_tsi.o obj-$(CONFIG_HISI_VIRTCCA_HOST) += virtcca_cvm_host.o CFLAGS_patch-scs.o += -mbranch-protection=none obj-$(CONFIG_SCHED_PARAL) += prefer_numa.o +obj-$(CONFIG_BPF_RVI) += bpf-rvi.o # Force dependency (vdso*-wrap.S includes vdso.so through incbin) $(obj)/vdso-wrap.o: $(obj)/vdso/vdso.so diff --git a/arch/arm64/kernel/bpf-rvi.c b/arch/arm64/kernel/bpf-rvi.c new file mode 100644 index 000000000000..8fa1008a743a --- /dev/null +++ b/arch/arm64/kernel/bpf-rvi.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2025 Huawei Technologies Co., Ltd */ +#include <asm/cpufeature.h> + +#include <linux/bpf.h> +#include <linux/btf_ids.h> + +bool bpf_arm64_cpu_have_feature(unsigned int num) +{ + return cpu_have_feature(num); +} + +BTF_SET8_START(bpf_arm64_kfunc_ids) +BTF_ID_FLAGS(func, bpf_arm64_cpu_have_feature, KF_RCU) +BTF_SET8_END(bpf_arm64_kfunc_ids) + +static const struct btf_kfunc_id_set bpf_arm64_kfunc_set = { + .owner = THIS_MODULE, + .set = &bpf_arm64_kfunc_ids, +}; + +static int __init bpf_arm64_kfunc_init(void) +{ + return register_btf_kfunc_id_set(BPF_PROG_TYPE_TRACING, + &bpf_arm64_kfunc_set); +} +late_initcall(bpf_arm64_kfunc_init); -- 2.25.1