Lines Matching +full:secondary +full:- +full:boot +full:- +full:reg

1 /* SPDX-License-Identifier: GPL-2.0-only */
28 * between the values, the features are classified into 3 types - LOWER_SAFE,
67 * @arm64_ftr_reg - Feature register
115 * c) SCOPE_BOOT_CPU: Check only on the primary boot CPU to detect the
125 * actions if any. Usually, this is done, after all the boot-time
129 * boot by the primary boot CPU. (e.g, running the kernel at EL2 with
134 * referred to as "Late CPU" w.r.t the capability. e.g, all secondary
135 * CPUs are treated "late CPUs" for capabilities determined by the boot
139 * a) Boot CPU scope capabilities - Finalised by primary boot CPU via
141 * b) Everything except (a) - Run via setup_system_capabilities().
148 * secondary_start_kernel()-> check_local_cpu_capabilities()
156 * except for the primary boot CPU.
159 * user after the kernel boot are verified against the capability.
181 * check_local_cpu_capabilities() -> verify_local_cpu_capabilities()
186 * x-----------------------------x
188 * |-----------------------------|
190 * |-----------------------------|
192 * x-----------------------------x
196 * ARM64_CPUCAP_OPTIONAL_FOR_LATE_CPU - Case(a) is allowed
197 * ARM64_CPUCAP_PERMITTED_FOR_LATE_CPU - Case(b) is allowed
204 * during boot if any CPU in the system requires it in order to run
208 * In some non-typical cases either both (a) and (b), or neither,
220 * On any local CPU vs System wide vs the primary boot CPU
225 * The capabilitiy is detected on the Boot CPU and is used by kernel
226 * during early boot. i.e, the capability should be "detected" and
251 * CPU errata workarounds that need to be enabled at boot time if one or
253 * has been enabled, it is safe to allow any CPU to boot that doesn't
260 * CPU feature detected at boot time based on system-wide value of a
269 * CPU feature detected at boot time based on feature of one or more CPUs.
280 * CPU feature detected at boot time, on one or more CPUs. A late CPU
289 * CPU feature used early in the boot based on the boot CPU. All secondary
290 * CPUs must match the state of the capability as detected by the boot CPU. In
297 * CPU feature used early in the boot based on the boot CPU. It is safe for a
298 * late CPU to have this feature even though the boot CPU hasn't enabled it,
299 * although the feature will not be used by Linux in this case. If the boot CPU
359 return cap->type & ARM64_CPUCAP_SCOPE_MASK; in cpucap_default_scope()
373 for (caps = entry->match_list; caps->matches; caps++) in cpucap_multi_entry_cap_matches()
374 if (caps->matches(caps, scope)) in cpucap_multi_entry_cap_matches()
440 * @num must be a compile-time constant.
455 * @num must be a compile-time constant.
466 * Test for a capability, possibly with a runtime check for non-hyp code.
470 * For non-hyp code:
474 * @num must be a compile-time constant.
499 return (s64)(features << (64 - width - field)) >> (64 - width); in cpuid_feature_extract_signed_field_width()
511 return (u64)(features << (64 - width - field)) >> (64 - width); in cpuid_feature_extract_unsigned_field_width()
522 * not follow the standard ID scheme. See ARM DDI 0487E.a page D13-2825,
545 return (u64)GENMASK(ftrp->shift + ftrp->width - 1, ftrp->shift); in arm64_ftr_mask()
548 static inline u64 arm64_ftr_reg_user_value(const struct arm64_ftr_reg *reg) in arm64_ftr_reg_user_value() argument
550 return (reg->user_val | (reg->sys_val & reg->user_mask)); in arm64_ftr_reg_user_value()
569 return (s64)cpuid_feature_extract_field_width(val, ftrp->shift, ftrp->width, ftrp->sign); in arm64_ftr_value()