Lines Matching refs:f
134 static int __init feat_try_enable_unknown(struct dt_cpu_feature *f) in feat_try_enable_unknown() argument
136 if (f->hv_support == HV_SUPPORT_NONE) { in feat_try_enable_unknown()
137 } else if (f->hv_support & HV_SUPPORT_HFSCR) { in feat_try_enable_unknown()
139 hfscr |= 1UL << f->hfscr_bit_nr; in feat_try_enable_unknown()
146 if (f->os_support == OS_SUPPORT_NONE) { in feat_try_enable_unknown()
147 } else if (f->os_support & OS_SUPPORT_FSCR) { in feat_try_enable_unknown()
149 fscr |= 1UL << f->fscr_bit_nr; in feat_try_enable_unknown()
156 if ((f->usable_privilege & USABLE_PR) && (f->hwcap_bit_nr != -1)) { in feat_try_enable_unknown()
157 uint32_t word = f->hwcap_bit_nr / 32; in feat_try_enable_unknown()
158 uint32_t bit = f->hwcap_bit_nr % 32; in feat_try_enable_unknown()
165 pr_err("%s could not advertise to user (no hwcap bits)\n", f->name); in feat_try_enable_unknown()
171 static int __init feat_enable(struct dt_cpu_feature *f) in feat_enable() argument
173 if (f->hv_support != HV_SUPPORT_NONE) { in feat_enable()
174 if (f->hfscr_bit_nr != -1) { in feat_enable()
176 hfscr |= 1UL << f->hfscr_bit_nr; in feat_enable()
181 if (f->os_support != OS_SUPPORT_NONE) { in feat_enable()
182 if (f->fscr_bit_nr != -1) { in feat_enable()
184 fscr |= 1UL << f->fscr_bit_nr; in feat_enable()
189 if ((f->usable_privilege & USABLE_PR) && (f->hwcap_bit_nr != -1)) { in feat_enable()
190 uint32_t word = f->hwcap_bit_nr / 32; in feat_enable()
191 uint32_t bit = f->hwcap_bit_nr % 32; in feat_enable()
198 pr_err("CPU feature: %s could not advertise to user (no hwcap bits)\n", f->name); in feat_enable()
204 static int __init feat_disable(struct dt_cpu_feature *f) in feat_disable() argument
209 static int __init feat_enable_hv(struct dt_cpu_feature *f) in feat_enable_hv() argument
229 static int __init feat_enable_le(struct dt_cpu_feature *f) in feat_enable_le() argument
235 static int __init feat_enable_smt(struct dt_cpu_feature *f) in feat_enable_smt() argument
242 static int __init feat_enable_idle_nap(struct dt_cpu_feature *f) in feat_enable_idle_nap() argument
256 static int __init feat_enable_idle_stop(struct dt_cpu_feature *f) in feat_enable_idle_stop() argument
270 static int __init feat_enable_mmu_hash(struct dt_cpu_feature *f) in feat_enable_mmu_hash() argument
289 static int __init feat_enable_mmu_hash_v3(struct dt_cpu_feature *f) in feat_enable_mmu_hash_v3() argument
304 static int __init feat_enable_mmu_radix(struct dt_cpu_feature *f) in feat_enable_mmu_radix() argument
317 static int __init feat_enable_dscr(struct dt_cpu_feature *f) in feat_enable_dscr() argument
327 f->fscr_bit_nr = -1; in feat_enable_dscr()
329 feat_enable(f); in feat_enable_dscr()
360 static int __init feat_enable_mce_power8(struct dt_cpu_feature *f) in feat_enable_mce_power8() argument
368 static int __init feat_enable_pmu_power8(struct dt_cpu_feature *f) in feat_enable_pmu_power8() argument
398 static int __init feat_enable_mce_power9(struct dt_cpu_feature *f) in feat_enable_mce_power9() argument
406 static int __init feat_enable_pmu_power9(struct dt_cpu_feature *f) in feat_enable_pmu_power9() argument
432 static int __init feat_enable_pmu_power10(struct dt_cpu_feature *f) in feat_enable_pmu_power10() argument
449 static int __init feat_enable_mce_power10(struct dt_cpu_feature *f) in feat_enable_mce_power10() argument
457 static int __init feat_enable_tm(struct dt_cpu_feature *f) in feat_enable_tm() argument
460 feat_enable(f); in feat_enable_tm()
467 static int __init feat_enable_fp(struct dt_cpu_feature *f) in feat_enable_fp() argument
469 feat_enable(f); in feat_enable_fp()
475 static int __init feat_enable_vector(struct dt_cpu_feature *f) in feat_enable_vector() argument
478 feat_enable(f); in feat_enable_vector()
488 static int __init feat_enable_vsx(struct dt_cpu_feature *f) in feat_enable_vsx() argument
491 feat_enable(f); in feat_enable_vsx()
500 static int __init feat_enable_purr(struct dt_cpu_feature *f) in feat_enable_purr() argument
507 static int __init feat_enable_ebb(struct dt_cpu_feature *f) in feat_enable_ebb() argument
515 f->hwcap_bit_nr = -1; in feat_enable_ebb()
516 feat_enable(f); in feat_enable_ebb()
521 static int __init feat_enable_dbell(struct dt_cpu_feature *f) in feat_enable_dbell() argument
526 feat_enable(f); in feat_enable_dbell()
537 static int __init feat_enable_hvi(struct dt_cpu_feature *f) in feat_enable_hvi() argument
562 static int __init feat_enable_large_ci(struct dt_cpu_feature *f) in feat_enable_large_ci() argument
569 static int __init feat_enable_mma(struct dt_cpu_feature *f) in feat_enable_mma() argument
573 feat_enable(f); in feat_enable_mma()
583 int (*enable)(struct dt_cpu_feature *f);
696 static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f) in cpufeatures_process_feature() argument
704 if (!strcmp(f->name, m->name)) { in cpufeatures_process_feature()
706 if (m->enable(f)) { in cpufeatures_process_feature()
712 f->name); in cpufeatures_process_feature()
717 if (!known && (!enable_unknown || !feat_try_enable_unknown(f))) { in cpufeatures_process_feature()
719 f->name); in cpufeatures_process_feature()
724 pr_debug("enabling: %s\n", f->name); in cpufeatures_process_feature()
726 pr_debug("enabling: %s (unknown)\n", f->name); in cpufeatures_process_feature()
872 struct dt_cpu_feature *f; in process_cpufeatures_node() local
875 f = &dt_cpu_features[i]; in process_cpufeatures_node()
877 f->node = node; in process_cpufeatures_node()
879 f->name = uname; in process_cpufeatures_node()
886 f->isa = be32_to_cpup(prop); in process_cpufeatures_node()
893 f->usable_privilege = be32_to_cpup(prop); in process_cpufeatures_node()
897 f->hv_support = be32_to_cpup(prop); in process_cpufeatures_node()
899 f->hv_support = HV_SUPPORT_NONE; in process_cpufeatures_node()
903 f->os_support = be32_to_cpup(prop); in process_cpufeatures_node()
905 f->os_support = OS_SUPPORT_NONE; in process_cpufeatures_node()
909 f->hfscr_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
911 f->hfscr_bit_nr = -1; in process_cpufeatures_node()
914 f->fscr_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
916 f->fscr_bit_nr = -1; in process_cpufeatures_node()
919 f->hwcap_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
921 f->hwcap_bit_nr = -1; in process_cpufeatures_node()
923 if (f->usable_privilege & USABLE_HV) { in process_cpufeatures_node()
929 if (f->hv_support == HV_SUPPORT_NONE && f->hfscr_bit_nr != -1) { in process_cpufeatures_node()
934 if (f->hv_support == HV_SUPPORT_HFSCR) { in process_cpufeatures_node()
935 if (f->hfscr_bit_nr == -1) { in process_cpufeatures_node()
941 if (f->hv_support != HV_SUPPORT_NONE || f->hfscr_bit_nr != -1) { in process_cpufeatures_node()
947 if (f->usable_privilege & USABLE_OS) { in process_cpufeatures_node()
948 if (f->os_support == OS_SUPPORT_NONE && f->fscr_bit_nr != -1) { in process_cpufeatures_node()
953 if (f->os_support == OS_SUPPORT_FSCR) { in process_cpufeatures_node()
954 if (f->fscr_bit_nr == -1) { in process_cpufeatures_node()
960 if (f->os_support != OS_SUPPORT_NONE || f->fscr_bit_nr != -1) { in process_cpufeatures_node()
966 if (!(f->usable_privilege & USABLE_PR)) { in process_cpufeatures_node()
967 if (f->hwcap_bit_nr != -1) { in process_cpufeatures_node()
975 if (cpufeatures_process_feature(f)) in process_cpufeatures_node()
976 f->enabled = 1; in process_cpufeatures_node()
978 f->disabled = 1; in process_cpufeatures_node()
984 static void __init cpufeatures_deps_enable(struct dt_cpu_feature *f) in cpufeatures_deps_enable() argument
991 if (f->enabled || f->disabled) in cpufeatures_deps_enable()
994 prop = of_get_flat_dt_prop(f->node, "dependencies", &len); in cpufeatures_deps_enable()
996 pr_warn("%s: missing dependencies property", f->name); in cpufeatures_deps_enable()
1012 f->disabled = 1; in cpufeatures_deps_enable()
1019 if (cpufeatures_process_feature(f)) in cpufeatures_deps_enable()
1020 f->enabled = 1; in cpufeatures_deps_enable()
1022 f->disabled = 1; in cpufeatures_deps_enable()
1085 struct dt_cpu_feature *f = &dt_cpu_features[i]; in dt_cpu_ftrs_scan_callback() local
1087 cpufeatures_deps_enable(f); in dt_cpu_ftrs_scan_callback()