Lines Matching +full:boot +full:- +full:enabled
1 /* SPDX-License-Identifier: GPL-2.0-only */
9 #include <asm/alternative-macros.h>
32 * between the values, the features are classified into 3 types - LOWER_SAFE,
78 * A @mask field set to full-1 indicates that the corresponding field
81 * A @mask field set to full-0 with the corresponding @val field set
82 * to full-0 denotes that this field has no override
84 * A @mask field set to full-0 with the corresponding @val field set
85 * to full-1 denotes thath this field has an invalid override.
93 * @arm64_ftr_reg - Feature register
142 * c) SCOPE_BOOT_CPU: Check only on the primary boot CPU to detect the
152 * actions if any. Usually, this is done, after all the boot-time
153 * enabled CPUs are brought up by the kernel, so that it can make
156 * boot by the primary boot CPU. (e.g, running the kernel at EL2 with
162 * CPUs are treated "late CPUs" for capabilities determined by the boot
166 * a) Boot CPU scope capabilities - Finalised by primary boot CPU via
168 * b) Everything except (a) - Run via setup_system_capabilities().
175 * secondary_start_kernel()-> check_local_cpu_capabilities()
183 * except for the primary boot CPU.
186 * user after the kernel boot are verified against the capability.
208 * check_local_cpu_capabilities() -> verify_local_cpu_capabilities()
213 * x-----------------------------x
215 * |-----------------------------|
217 * |-----------------------------|
219 * x-----------------------------x
223 * ARM64_CPUCAP_OPTIONAL_FOR_LATE_CPU - Case(a) is allowed
224 * ARM64_CPUCAP_PERMITTED_FOR_LATE_CPU - Case(b) is allowed
227 * all CPUs to have in order for the capability to be enabled. This is
230 * Case (b) is not permitted for a capability that must be enabled
231 * during boot if any CPU in the system requires it in order to run
233 * enabled after the corresponding capability is finalised.
235 * In some non-typical cases either both (a) and (b), or neither,
247 * On any local CPU vs System wide vs the primary boot CPU
252 * The capabilitiy is detected on the Boot CPU and is used by kernel
253 * during early boot. i.e, the capability should be "detected" and
254 * "enabled" as early as possibly on all booting CPUs.
269 * hasn't already enabled it ?
278 * CPU errata workarounds that need to be enabled at boot time if one or
280 * has been enabled, it is safe to allow any CPU to boot that doesn't
282 * requires a workaround and the system hasn't enabled it already.
287 * CPU feature detected at boot time based on system-wide value of a
289 * the system hasn't enabled it, although the feature will not be used
290 * by Linux in this case. If the system has enabled this feature already,
296 * CPU feature detected at boot time based on feature of one or more CPUs.
307 * CPU feature detected at boot time, on one or more CPUs. A late CPU
316 * CPU feature used early in the boot based on the boot CPU. All secondary
317 * CPUs must match the state of the capability as detected by the boot CPU. In
324 * CPU feature used early in the boot based on the boot CPU. It is safe for a
325 * late CPU to have this feature even though the boot CPU hasn't enabled it,
326 * although the feature will not be used by Linux in this case. If the boot CPU
327 * has enabled this feature already, then every late CPU must have it.
387 return cap->type & ARM64_CPUCAP_SCOPE_MASK; in cpucap_default_scope()
401 for (caps = entry->match_list; caps->matches; caps++) in cpucap_multi_entry_cap_matches()
402 if (caps->matches(caps, scope)) in cpucap_multi_entry_cap_matches()
464 * @num must be a compile-time constant.
479 * @num must be a compile-time constant.
490 * Test for a capability, possibly with a runtime check for non-hyp code.
494 * For non-hyp code:
498 * @num must be a compile-time constant.
513 return (s64)(features << (64 - width - field)) >> (64 - width); in cpuid_feature_extract_signed_field_width()
525 return (u64)(features << (64 - width - field)) >> (64 - width); in cpuid_feature_extract_unsigned_field_width()
536 * not follow the standard ID scheme. See ARM DDI 0487E.a page D13-2825,
559 return (u64)GENMASK(ftrp->shift + ftrp->width - 1, ftrp->shift); in arm64_ftr_mask()
564 return (reg->user_val | (reg->sys_val & reg->user_mask)); in arm64_ftr_reg_user_value()
585 return (s64)cpuid_feature_extract_field_width(val, ftrp->shift, ftrp->width, ftrp->sign); in arm64_ftr_value()