Lines Matching +full:1 +full:f
30 #define USABLE_PR (1U << 0)
31 #define USABLE_OS (1U << 1)
32 #define USABLE_HV (1U << 2)
34 #define HV_SUPPORT_HFSCR (1U << 0)
35 #define OS_SUPPORT_FSCR (1U << 0)
115 cur_cpu_spec->pvr_mask = -1; in cpufeatures_setup_cpu()
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()
161 cur_cpu_spec->cpu_user_features |= 1U << bit; in feat_try_enable_unknown()
162 else if (word == 1) in feat_try_enable_unknown()
163 cur_cpu_spec->cpu_user_features2 |= 1U << bit; 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()
168 return 1; 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()
194 cur_cpu_spec->cpu_user_features |= 1U << bit; in feat_enable()
195 else if (word == 1) in feat_enable()
196 cur_cpu_spec->cpu_user_features2 |= 1U << bit; in feat_enable()
198 pr_err("CPU feature: %s could not advertise to user (no hwcap bits)\n", f->name); in feat_enable()
201 return 1; 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
227 return 1; in feat_enable_hv()
230 static int __init feat_enable_le(struct dt_cpu_feature *f) in feat_enable_le() argument
233 return 1; in feat_enable_le()
236 static int __init feat_enable_smt(struct dt_cpu_feature *f) in feat_enable_smt() argument
240 return 1; in feat_enable_smt()
243 static int __init feat_enable_idle_nap(struct dt_cpu_feature *f) in feat_enable_idle_nap() argument
254 return 1; in feat_enable_idle_nap()
257 static int __init feat_enable_idle_stop(struct dt_cpu_feature *f) in feat_enable_idle_stop() argument
268 return 1; in feat_enable_idle_stop()
271 static int __init feat_enable_mmu_hash(struct dt_cpu_feature *f) in feat_enable_mmu_hash() argument
284 lpcr |= 0x10UL << LPCR_VRMASD_SH; /* L=1 LP=00 */ in feat_enable_mmu_hash()
290 return 1; in feat_enable_mmu_hash()
293 static int __init feat_enable_mmu_hash_v3(struct dt_cpu_feature *f) in feat_enable_mmu_hash_v3() argument
307 return 1; in feat_enable_mmu_hash_v3()
311 static int __init feat_enable_mmu_radix(struct dt_cpu_feature *f) in feat_enable_mmu_radix() argument
321 return 1; in feat_enable_mmu_radix()
324 static int __init feat_enable_dscr(struct dt_cpu_feature *f) in feat_enable_dscr() argument
334 f->fscr_bit_nr = -1; in feat_enable_dscr()
336 feat_enable(f); in feat_enable_dscr()
343 return 1; in feat_enable_dscr()
367 static int __init feat_enable_mce_power8(struct dt_cpu_feature *f) in feat_enable_mce_power8() argument
372 return 1; in feat_enable_mce_power8()
375 static int __init feat_enable_pmu_power8(struct dt_cpu_feature *f) in feat_enable_pmu_power8() argument
390 return 1; in feat_enable_pmu_power8()
404 static int __init feat_enable_mce_power9(struct dt_cpu_feature *f) in feat_enable_mce_power9() argument
409 return 1; in feat_enable_mce_power9()
412 static int __init feat_enable_pmu_power9(struct dt_cpu_feature *f) in feat_enable_pmu_power9() argument
425 return 1; in feat_enable_pmu_power9()
437 static int __init feat_enable_pmu_power10(struct dt_cpu_feature *f) in feat_enable_pmu_power10() argument
450 return 1; in feat_enable_pmu_power10()
453 static int __init feat_enable_mce_power10(struct dt_cpu_feature *f) in feat_enable_mce_power10() argument
458 return 1; in feat_enable_mce_power10()
461 static int __init feat_enable_tm(struct dt_cpu_feature *f) in feat_enable_tm() argument
464 feat_enable(f); in feat_enable_tm()
466 return 1; in feat_enable_tm()
471 static int __init feat_enable_fp(struct dt_cpu_feature *f) in feat_enable_fp() argument
473 feat_enable(f); in feat_enable_fp()
476 return 1; in feat_enable_fp()
479 static int __init feat_enable_vector(struct dt_cpu_feature *f) in feat_enable_vector() argument
482 feat_enable(f); in feat_enable_vector()
487 return 1; in feat_enable_vector()
492 static int __init feat_enable_vsx(struct dt_cpu_feature *f) in feat_enable_vsx() argument
495 feat_enable(f); in feat_enable_vsx()
499 return 1; in feat_enable_vsx()
504 static int __init feat_enable_purr(struct dt_cpu_feature *f) in feat_enable_purr() argument
508 return 1; in feat_enable_purr()
511 static int __init feat_enable_ebb(struct dt_cpu_feature *f) in feat_enable_ebb() argument
519 f->hwcap_bit_nr = -1; in feat_enable_ebb()
520 feat_enable(f); in feat_enable_ebb()
522 return 1; in feat_enable_ebb()
525 static int __init feat_enable_dbell(struct dt_cpu_feature *f) in feat_enable_dbell() argument
530 feat_enable(f); in feat_enable_dbell()
538 return 1; in feat_enable_dbell()
541 static int __init feat_enable_hvi(struct dt_cpu_feature *f) in feat_enable_hvi() argument
563 return 1; in feat_enable_hvi()
566 static int __init feat_enable_large_ci(struct dt_cpu_feature *f) in feat_enable_large_ci() argument
570 return 1; in feat_enable_large_ci()
573 static int __init feat_enable_mma(struct dt_cpu_feature *f) in feat_enable_mma() argument
577 feat_enable(f); in feat_enable_mma()
582 return 1; in feat_enable_mma()
587 int (*enable)(struct dt_cpu_feature *f);
679 return 1; in dt_cpu_ftrs_parse()
700 static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f) in cpufeatures_process_feature() argument
708 if (!strcmp(f->name, m->name)) { in cpufeatures_process_feature()
710 if (m->enable(f)) { in cpufeatures_process_feature()
716 f->name); in cpufeatures_process_feature()
721 if (!known && (!enable_unknown || !feat_try_enable_unknown(f))) { in cpufeatures_process_feature()
723 f->name); in cpufeatures_process_feature()
728 pr_debug("enabling: %s\n", f->name); in cpufeatures_process_feature()
730 pr_debug("enabling: %s (unknown)\n", f->name); in cpufeatures_process_feature()
755 WARN_ONCE(1, "Unknown PVR"); in update_tlbie_feature_flag()
788 /* DD2.1 and up have DD2_1 */ in cpufeatures_cpu_quirks()
845 return 1; in fdt_find_cpu_features()
882 struct dt_cpu_feature *f; in process_cpufeatures_node() local
885 f = &dt_cpu_features[i]; in process_cpufeatures_node()
887 f->node = node; in process_cpufeatures_node()
889 f->name = uname; in process_cpufeatures_node()
896 f->isa = be32_to_cpup(prop); in process_cpufeatures_node()
903 f->usable_privilege = be32_to_cpup(prop); in process_cpufeatures_node()
907 f->hv_support = be32_to_cpup(prop); in process_cpufeatures_node()
909 f->hv_support = HV_SUPPORT_NONE; in process_cpufeatures_node()
913 f->os_support = be32_to_cpup(prop); in process_cpufeatures_node()
915 f->os_support = OS_SUPPORT_NONE; in process_cpufeatures_node()
919 f->hfscr_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
921 f->hfscr_bit_nr = -1; in process_cpufeatures_node()
924 f->fscr_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
926 f->fscr_bit_nr = -1; in process_cpufeatures_node()
929 f->hwcap_bit_nr = be32_to_cpup(prop); in process_cpufeatures_node()
931 f->hwcap_bit_nr = -1; in process_cpufeatures_node()
933 if (f->usable_privilege & USABLE_HV) { in process_cpufeatures_node()
939 if (f->hv_support == HV_SUPPORT_NONE && f->hfscr_bit_nr != -1) { in process_cpufeatures_node()
944 if (f->hv_support == HV_SUPPORT_HFSCR) { in process_cpufeatures_node()
945 if (f->hfscr_bit_nr == -1) { in process_cpufeatures_node()
951 if (f->hv_support != HV_SUPPORT_NONE || f->hfscr_bit_nr != -1) { in process_cpufeatures_node()
957 if (f->usable_privilege & USABLE_OS) { in process_cpufeatures_node()
958 if (f->os_support == OS_SUPPORT_NONE && f->fscr_bit_nr != -1) { in process_cpufeatures_node()
963 if (f->os_support == OS_SUPPORT_FSCR) { in process_cpufeatures_node()
964 if (f->fscr_bit_nr == -1) { in process_cpufeatures_node()
970 if (f->os_support != OS_SUPPORT_NONE || f->fscr_bit_nr != -1) { in process_cpufeatures_node()
976 if (!(f->usable_privilege & USABLE_PR)) { in process_cpufeatures_node()
977 if (f->hwcap_bit_nr != -1) { in process_cpufeatures_node()
985 if (cpufeatures_process_feature(f)) in process_cpufeatures_node()
986 f->enabled = 1; in process_cpufeatures_node()
988 f->disabled = 1; in process_cpufeatures_node()
994 static void __init cpufeatures_deps_enable(struct dt_cpu_feature *f) in cpufeatures_deps_enable() argument
1001 if (f->enabled || f->disabled) in cpufeatures_deps_enable()
1004 prop = of_get_flat_dt_prop(f->node, "dependencies", &len); in cpufeatures_deps_enable()
1006 pr_warn("%s: missing dependencies property", f->name); in cpufeatures_deps_enable()
1022 f->disabled = 1; in cpufeatures_deps_enable()
1029 if (cpufeatures_process_feature(f)) in cpufeatures_deps_enable()
1030 f->enabled = 1; in cpufeatures_deps_enable()
1032 f->disabled = 1; in cpufeatures_deps_enable()
1095 struct dt_cpu_feature *f = &dt_cpu_features[i]; in dt_cpu_ftrs_scan_callback() local
1097 cpufeatures_deps_enable(f); in dt_cpu_ftrs_scan_callback()