Lines Matching refs:f
156 static int __init feat_try_enable_unknown(struct dt_cpu_feature *f) in feat_try_enable_unknown() argument
158 if (f->hv_support == HV_SUPPORT_NONE) { in feat_try_enable_unknown()
159 } else if (f->hv_support & HV_SUPPORT_HFSCR) { in feat_try_enable_unknown()
161 hfscr |= 1UL << f->hfscr_bit_nr; in feat_try_enable_unknown()
168 if (f->os_support == OS_SUPPORT_NONE) { in feat_try_enable_unknown()
169 } else if (f->os_support & OS_SUPPORT_FSCR) { in feat_try_enable_unknown()
171 fscr |= 1UL << f->fscr_bit_nr; in feat_try_enable_unknown()
178 if ((f->usable_privilege & USABLE_PR) && (f->hwcap_bit_nr != -1)) { in feat_try_enable_unknown()
179 uint32_t word = f->hwcap_bit_nr / 32; in feat_try_enable_unknown()
180 uint32_t bit = f->hwcap_bit_nr % 32; in feat_try_enable_unknown()
187 pr_err("%s could not advertise to user (no hwcap bits)\n", f->name); in feat_try_enable_unknown()
193 static int __init feat_enable(struct dt_cpu_feature *f) in feat_enable() argument
195 if (f->hv_support != HV_SUPPORT_NONE) { in feat_enable()
196 if (f->hfscr_bit_nr != -1) { in feat_enable()
198 hfscr |= 1UL << f->hfscr_bit_nr; in feat_enable()
203 if (f->os_support != OS_SUPPORT_NONE) { in feat_enable()
204 if (f->fscr_bit_nr != -1) { in feat_enable()
206 fscr |= 1UL << f->fscr_bit_nr; in feat_enable()
211 if ((f->usable_privilege & USABLE_PR) && (f->hwcap_bit_nr != -1)) { in feat_enable()
212 uint32_t word = f->hwcap_bit_nr / 32; in feat_enable()
213 uint32_t bit = f->hwcap_bit_nr % 32; in feat_enable()
220 pr_err("CPU feature: %s could not advertise to user (no hwcap bits)\n", f->name); in feat_enable()
226 static int __init feat_disable(struct dt_cpu_feature *f) in feat_disable() argument
231 static int __init feat_enable_hv(struct dt_cpu_feature *f) in feat_enable_hv() argument
251 static int __init feat_enable_le(struct dt_cpu_feature *f) in feat_enable_le() argument
257 static int __init feat_enable_smt(struct dt_cpu_feature *f) in feat_enable_smt() argument
264 static int __init feat_enable_idle_nap(struct dt_cpu_feature *f) in feat_enable_idle_nap() argument
278 static int __init feat_enable_align_dsisr(struct dt_cpu_feature *f) in feat_enable_align_dsisr() argument
285 static int __init feat_enable_idle_stop(struct dt_cpu_feature *f) in feat_enable_idle_stop() argument
299 static int __init feat_enable_mmu_hash(struct dt_cpu_feature *f) in feat_enable_mmu_hash() argument
318 static int __init feat_enable_mmu_hash_v3(struct dt_cpu_feature *f) in feat_enable_mmu_hash_v3() argument
334 static int __init feat_enable_mmu_radix(struct dt_cpu_feature *f) in feat_enable_mmu_radix() argument
346 static int __init feat_enable_dscr(struct dt_cpu_feature *f) in feat_enable_dscr() argument
350 feat_enable(f); in feat_enable_dscr()
381 static int __init feat_enable_mce_power8(struct dt_cpu_feature *f) in feat_enable_mce_power8() argument
389 static int __init feat_enable_pmu_power8(struct dt_cpu_feature *f) in feat_enable_pmu_power8() argument
419 static int __init feat_enable_mce_power9(struct dt_cpu_feature *f) in feat_enable_mce_power9() argument
427 static int __init feat_enable_pmu_power9(struct dt_cpu_feature *f) in feat_enable_pmu_power9() argument
444 static int __init feat_enable_tm(struct dt_cpu_feature *f) in feat_enable_tm() argument
447 feat_enable(f); in feat_enable_tm()
454 static int __init feat_enable_fp(struct dt_cpu_feature *f) in feat_enable_fp() argument
456 feat_enable(f); in feat_enable_fp()
462 static int __init feat_enable_vector(struct dt_cpu_feature *f) in feat_enable_vector() argument
465 feat_enable(f); in feat_enable_vector()
475 static int __init feat_enable_vsx(struct dt_cpu_feature *f) in feat_enable_vsx() argument
478 feat_enable(f); in feat_enable_vsx()
487 static int __init feat_enable_purr(struct dt_cpu_feature *f) in feat_enable_purr() argument
494 static int __init feat_enable_ebb(struct dt_cpu_feature *f) in feat_enable_ebb() argument
502 f->hwcap_bit_nr = -1; in feat_enable_ebb()
503 feat_enable(f); in feat_enable_ebb()
508 static int __init feat_enable_dbell(struct dt_cpu_feature *f) in feat_enable_dbell() argument
513 feat_enable(f); in feat_enable_dbell()
524 static int __init feat_enable_hvi(struct dt_cpu_feature *f) in feat_enable_hvi() argument
549 static int __init feat_enable_large_ci(struct dt_cpu_feature *f) in feat_enable_large_ci() argument
558 int (*enable)(struct dt_cpu_feature *f);
660 static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f) in cpufeatures_process_feature() argument
668 if (!strcmp(f->name, m->name)) { in cpufeatures_process_feature()
670 if (m->enable(f)) { in cpufeatures_process_feature()
676 f->name); in cpufeatures_process_feature()
681 if (!known && (!enable_unknown || !feat_try_enable_unknown(f))) { in cpufeatures_process_feature()
683 f->name); in cpufeatures_process_feature()
688 pr_debug("enabling: %s\n", f->name); in cpufeatures_process_feature()
690 pr_debug("enabling: %s (unknown)\n", f->name); in cpufeatures_process_feature()
838 struct dt_cpu_feature *f; in process_cpufeatures_node() local
841 f = &dt_cpu_features[i]; in process_cpufeatures_node()
843 f->node = node; in process_cpufeatures_node()
845 f->name = uname; in process_cpufeatures_node()
852 f->isa = be32_to_cpup(prop); in process_cpufeatures_node()
859 f->usable_privilege = be32_to_cpup(prop); in process_cpufeatures_node()
863 f->hv_support = be32_to_cpup(prop); in process_cpufeatures_node()
865 f->hv_support = HV_SUPPORT_NONE; in process_cpufeatures_node()
869 f->os_support = be32_to_cpup(prop); in process_cpufeatures_node()
871 f->os_support = OS_SUPPORT_NONE; in process_cpufeatures_node()
875 f->hfscr_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
877 f->hfscr_bit_nr = -1; in process_cpufeatures_node()
880 f->fscr_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
882 f->fscr_bit_nr = -1; in process_cpufeatures_node()
885 f->hwcap_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
887 f->hwcap_bit_nr = -1; in process_cpufeatures_node()
889 if (f->usable_privilege & USABLE_HV) { in process_cpufeatures_node()
895 if (f->hv_support == HV_SUPPORT_NONE && f->hfscr_bit_nr != -1) { in process_cpufeatures_node()
900 if (f->hv_support == HV_SUPPORT_HFSCR) { in process_cpufeatures_node()
901 if (f->hfscr_bit_nr == -1) { in process_cpufeatures_node()
907 if (f->hv_support != HV_SUPPORT_NONE || f->hfscr_bit_nr != -1) { in process_cpufeatures_node()
913 if (f->usable_privilege & USABLE_OS) { in process_cpufeatures_node()
914 if (f->os_support == OS_SUPPORT_NONE && f->fscr_bit_nr != -1) { in process_cpufeatures_node()
919 if (f->os_support == OS_SUPPORT_FSCR) { in process_cpufeatures_node()
920 if (f->fscr_bit_nr == -1) { in process_cpufeatures_node()
926 if (f->os_support != OS_SUPPORT_NONE || f->fscr_bit_nr != -1) { in process_cpufeatures_node()
932 if (!(f->usable_privilege & USABLE_PR)) { in process_cpufeatures_node()
933 if (f->hwcap_bit_nr != -1) { in process_cpufeatures_node()
941 if (cpufeatures_process_feature(f)) in process_cpufeatures_node()
942 f->enabled = 1; in process_cpufeatures_node()
944 f->disabled = 1; in process_cpufeatures_node()
950 static void __init cpufeatures_deps_enable(struct dt_cpu_feature *f) in cpufeatures_deps_enable() argument
957 if (f->enabled || f->disabled) in cpufeatures_deps_enable()
960 prop = of_get_flat_dt_prop(f->node, "dependencies", &len); in cpufeatures_deps_enable()
962 pr_warn("%s: missing dependencies property", f->name); in cpufeatures_deps_enable()
978 f->disabled = 1; in cpufeatures_deps_enable()
985 if (cpufeatures_process_feature(f)) in cpufeatures_deps_enable()
986 f->enabled = 1; in cpufeatures_deps_enable()
988 f->disabled = 1; in cpufeatures_deps_enable()
1051 struct dt_cpu_feature *f = &dt_cpu_features[i]; in dt_cpu_ftrs_scan_callback() local
1053 cpufeatures_deps_enable(f); in dt_cpu_ftrs_scan_callback()