arm64_cpu_capabilities
bool (*matches)(const struct arm64_cpu_capabilities *caps, int scope);
void (*cpu_enable)(const struct arm64_cpu_capabilities *cap);
const struct arm64_cpu_capabilities *match_list;
static inline int cpucap_default_scope(const struct arm64_cpu_capabilities *cap)
static inline bool cpucap_match_all_early_cpus(const struct arm64_cpu_capabilities *cap)
cpucap_multi_entry_cap_matches(const struct arm64_cpu_capabilities *entry,
const struct arm64_cpu_capabilities *caps;
struct arm64_cpu_capabilities;
extern void cpu_enable_fpsimd(const struct arm64_cpu_capabilities *__unused);
extern void cpu_enable_sve(const struct arm64_cpu_capabilities *__unused);
extern void cpu_enable_sme(const struct arm64_cpu_capabilities *__unused);
extern void cpu_enable_sme2(const struct arm64_cpu_capabilities *__unused);
extern void cpu_enable_fa64(const struct arm64_cpu_capabilities *__unused);
extern void cpu_enable_fpmr(const struct arm64_cpu_capabilities *__unused);
void spectre_bhb_enable_mitigation(const struct arm64_cpu_capabilities *__unused);
bool has_spectre_v2(const struct arm64_cpu_capabilities *cap, int scope);
void spectre_v2_enable_mitigation(const struct arm64_cpu_capabilities *__unused);
bool has_spectre_v3a(const struct arm64_cpu_capabilities *cap, int scope);
void spectre_v3a_enable_mitigation(const struct arm64_cpu_capabilities *__unused);
bool has_spectre_v4(const struct arm64_cpu_capabilities *cap, int scope);
void spectre_v4_enable_mitigation(const struct arm64_cpu_capabilities *__unused);
bool is_spectre_bhb_affected(const struct arm64_cpu_capabilities *entry, int scope);
has_mismatched_cache_type(const struct arm64_cpu_capabilities *entry,
need_arm_si_l1_workaround_4311569(const struct arm64_cpu_capabilities *entry, int scope)
cpu_enable_trap_ctr_access(const struct arm64_cpu_capabilities *cap)
has_cortex_a76_erratum_1463225(const struct arm64_cpu_capabilities *entry,
cpu_enable_cache_maint_trap(const struct arm64_cpu_capabilities *__unused)
needs_tx2_tvm_workaround(const struct arm64_cpu_capabilities *entry,
has_neoverse_n1_erratum_1542419(const struct arm64_cpu_capabilities *entry,
static bool has_impdef_pmuv3(const struct arm64_cpu_capabilities *entry, int scope)
static void cpu_enable_impdef_pmuv3_traps(const struct arm64_cpu_capabilities *__unused)
static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = {
static const struct arm64_cpu_capabilities qcom_erratum_1003_list[] = {
static const struct arm64_cpu_capabilities erratum_843419_list[] = {
__is_affected_midr_range(const struct arm64_cpu_capabilities *entry,
const struct arm64_cpu_capabilities arm64_errata[] = {
is_affected_midr_range(const struct arm64_cpu_capabilities *entry, int scope)
is_affected_midr_range_list(const struct arm64_cpu_capabilities *entry,
is_kryo_midr(const struct arm64_cpu_capabilities *entry, int scope)
extern const struct arm64_cpu_capabilities arm64_errata[];
static const struct arm64_cpu_capabilities arm64_features[];
init_cpucap_indirect_list_from_array(const struct arm64_cpu_capabilities *caps)
static struct arm64_cpu_capabilities const __ro_after_init *cpucap_ptrs[ARM64_NCAPS];
has_always(const struct arm64_cpu_capabilities *entry, int scope)
feature_matches(u64 reg, const struct arm64_cpu_capabilities *entry)
read_scoped_sysreg(const struct arm64_cpu_capabilities *entry, int scope)
has_user_cpuid_feature(const struct arm64_cpu_capabilities *entry, int scope)
has_cpuid_feature(const struct arm64_cpu_capabilities *entry, int scope)
static bool has_32bit_el0(const struct arm64_cpu_capabilities *entry, int scope)
static bool has_useable_gicv3_cpuif(const struct arm64_cpu_capabilities *entry, int scope)
static bool has_cache_idc(const struct arm64_cpu_capabilities *entry,
static void cpu_emulate_effective_ctr(const struct arm64_cpu_capabilities *__unused)
static bool has_cache_dic(const struct arm64_cpu_capabilities *entry,
has_useable_cnp(const struct arm64_cpu_capabilities *entry, int scope)
static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
static bool has_nv1(const struct arm64_cpu_capabilities *entry, int scope)
static bool has_lpa2(const struct arm64_cpu_capabilities *entry, int scope)
static bool has_lpa2(const struct arm64_cpu_capabilities *entry, int scope)
static bool has_pmuv3(const struct arm64_cpu_capabilities *entry, int scope)
static void cpu_enable_kpti(struct arm64_cpu_capabilities const *cap)
static bool cpu_can_use_dbm(const struct arm64_cpu_capabilities *cap)
static void cpu_enable_hw_dbm(struct arm64_cpu_capabilities const *cap)
static bool has_hw_dbm(const struct arm64_cpu_capabilities *cap,
static void cpu_amu_enable(struct arm64_cpu_capabilities const *cap)
static bool has_amu(const struct arm64_cpu_capabilities *cap,
static bool runs_at_el2(const struct arm64_cpu_capabilities *entry, int __unused)
static void cpu_copy_el2regs(const struct arm64_cpu_capabilities *__unused)
static bool has_nested_virt_support(const struct arm64_cpu_capabilities *cap,
static bool hvhe_possible(const struct arm64_cpu_capabilities *entry,
static void cpu_enable_cnp(struct arm64_cpu_capabilities const *cap);
static bool has_bbml2_noabort(const struct arm64_cpu_capabilities *caps, int scope)
static void cpu_enable_pan(const struct arm64_cpu_capabilities *__unused)
static void cpu_clear_disr(const struct arm64_cpu_capabilities *__unused)
static bool has_rasv1p1(const struct arm64_cpu_capabilities *__unused, int scope)
const struct arm64_cpu_capabilities rasv1p1_caps[] = {
static bool has_address_auth_cpucap(const struct arm64_cpu_capabilities *entry, int scope)
static bool has_address_auth_metacap(const struct arm64_cpu_capabilities *entry,
static bool has_generic_auth(const struct arm64_cpu_capabilities *entry,
static void cpu_enable_e0pd(struct arm64_cpu_capabilities const *cap)
static void cpu_enable_ls64(struct arm64_cpu_capabilities const *cap)
static void cpu_enable_ls64_v(struct arm64_cpu_capabilities const *cap)
static bool can_use_gic_priorities(const struct arm64_cpu_capabilities *entry,
static bool has_gic_prio_relaxed_sync(const struct arm64_cpu_capabilities *entry,
static bool can_trap_icv_dir_el1(const struct arm64_cpu_capabilities *entry,
static void bti_enable(const struct arm64_cpu_capabilities *__unused)
static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap)
static bool is_kvm_protected_mode(const struct arm64_cpu_capabilities *entry, int __unused)
static void cpu_trap_el0_impdef(const struct arm64_cpu_capabilities *__unused)
static void cpu_enable_dit(const struct arm64_cpu_capabilities *__unused)
static void cpu_enable_mops(const struct arm64_cpu_capabilities *__unused)
static void cpu_enable_poe(const struct arm64_cpu_capabilities *__unused)
static void cpu_enable_gcs(const struct arm64_cpu_capabilities *__unused)
cpucap_late_cpu_optional(const struct arm64_cpu_capabilities *cap)
cpucap_late_cpu_permitted(const struct arm64_cpu_capabilities *cap)
cpucap_panic_on_conflict(const struct arm64_cpu_capabilities *cap)
test_has_mpam(const struct arm64_cpu_capabilities *entry, int scope)
cpu_enable_mpam(const struct arm64_cpu_capabilities *entry)
test_has_mpam_hcr(const struct arm64_cpu_capabilities *entry, int scope)
test_has_gicv5_legacy(const struct arm64_cpu_capabilities *entry, int scope)
static const struct arm64_cpu_capabilities arm64_features[] = {
.match_list = (const struct arm64_cpu_capabilities []){
static const struct arm64_cpu_capabilities ptr_auth_hwcap_addr_matches[] = {
static const struct arm64_cpu_capabilities ptr_auth_hwcap_gen_matches[] = {
static bool has_sve_feature(const struct arm64_cpu_capabilities *cap, int scope)
static bool has_sme_feature(const struct arm64_cpu_capabilities *cap, int scope)
static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
static bool compat_has_neon(const struct arm64_cpu_capabilities *cap, int scope)
static const struct arm64_cpu_capabilities compat_elf_hwcaps[] = {
static void cap_set_elf_hwcap(const struct arm64_cpu_capabilities *cap)
static bool cpus_have_elf_hwcap(const struct arm64_cpu_capabilities *cap)
static void setup_elf_hwcaps(const struct arm64_cpu_capabilities *hwcaps)
const struct arm64_cpu_capabilities *caps;
const struct arm64_cpu_capabilities *cap = cpucap_ptrs[i];
const struct arm64_cpu_capabilities *caps;
const struct arm64_cpu_capabilities *caps;
__verify_local_elf_hwcaps(const struct arm64_cpu_capabilities *caps)
const struct arm64_cpu_capabilities *cap = cpucap_ptrs[n];
const struct arm64_cpu_capabilities *cap = cpucap_ptrs[n];
const struct arm64_cpu_capabilities *caps = cpucap_ptrs[i];
static void __maybe_unused cpu_enable_cnp(struct arm64_cpu_capabilities const *cap)
void cpu_enable_sve(const struct arm64_cpu_capabilities *__always_unused p)
void cpu_enable_sme(const struct arm64_cpu_capabilities *__always_unused p)
void cpu_enable_sme2(const struct arm64_cpu_capabilities *__always_unused p)
void cpu_enable_fa64(const struct arm64_cpu_capabilities *__always_unused p)
void cpu_enable_fpsimd(const struct arm64_cpu_capabilities *__always_unused p)
void cpu_enable_fpmr(const struct arm64_cpu_capabilities *__always_unused p)
void spectre_bhb_enable_mitigation(const struct arm64_cpu_capabilities *entry)
bool has_spectre_v2(const struct arm64_cpu_capabilities *entry, int scope)
void spectre_v2_enable_mitigation(const struct arm64_cpu_capabilities *__unused)
bool has_spectre_v3a(const struct arm64_cpu_capabilities *entry, int scope)
void spectre_v3a_enable_mitigation(const struct arm64_cpu_capabilities *__unused)
bool has_spectre_v4(const struct arm64_cpu_capabilities *cap, int scope)
void spectre_v4_enable_mitigation(const struct arm64_cpu_capabilities *__unused)
bool is_spectre_bhb_affected(const struct arm64_cpu_capabilities *entry,