
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/cpufeature.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index b13858668877..6a17507ac7e5 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -75,6 +75,11 @@ #include <linux/cpu.h> #include <linux/kasan.h> #include <linux/percpu.h> +#ifdef CONFIG_BPF_RVI +#include <linux/bpf.h> +#include <linux/btf.h> +#include <linux/btf_ids.h> +#endif #include <asm/actlr.h> #include <asm/cpu.h> @@ -3723,6 +3728,29 @@ bool cpu_have_feature(unsigned int num) } EXPORT_SYMBOL_GPL(cpu_have_feature); +#ifdef CONFIG_BPF_RVI +bool bpf_arm64_cpu_have_feature(unsigned int num) +{ + return cpu_have_feature(num); +} + +BTF_SET8_START(bpf_arm64_cpufeature_kfunc_ids) +BTF_ID_FLAGS(func, bpf_arm64_cpu_have_feature, KF_RCU) +BTF_SET8_END(bpf_arm64_cpufeature_kfunc_ids) + +static const struct btf_kfunc_id_set bpf_arm64_cpufeature_kfunc_set = { + .owner = THIS_MODULE, + .set = &bpf_arm64_cpufeature_kfunc_ids, +}; + +static int __init bpf_arm64_cpufeature_kfunc_init(void) +{ + return register_btf_kfunc_id_set(BPF_PROG_TYPE_TRACING, + &bpf_arm64_cpufeature_kfunc_set); +} +late_initcall(bpf_arm64_cpufeature_kfunc_init); +#endif + unsigned long cpu_get_elf_hwcap(void) { /* -- 2.25.1