Lines Matching +full:boot +full:- +full:enabled

1 /* SPDX-License-Identifier: GPL-2.0-only */
9 #include <asm/alternative-macros.h>
34 * between the values, the features are classified into 3 types - LOWER_SAFE,
80 * A @mask field set to full-1 indicates that the corresponding field
83 * A @mask field set to full-0 with the corresponding @val field set
84 * to full-0 denotes that this field has no override
86 * A @mask field set to full-0 with the corresponding @val field set
87 * to full-1 denotes that this field has an invalid override.
95 * @arm64_ftr_reg - Feature register
144 * c) SCOPE_BOOT_CPU: Check only on the primary boot CPU to detect the
154 * actions if any. Usually, this is done, after all the boot-time
155 * enabled CPUs are brought up by the kernel, so that it can make
158 * boot by the primary boot CPU. (e.g, running the kernel at EL2 with
164 * CPUs are treated "late CPUs" for capabilities determined by the boot
168 * a) Boot CPU scope capabilities - Finalised by primary boot CPU via
170 * b) Everything except (a) - Run via setup_system_capabilities().
177 * secondary_start_kernel()-> check_local_cpu_capabilities()
185 * except for the primary boot CPU.
188 * user after the kernel boot are verified against the capability.
210 * check_local_cpu_capabilities() -> verify_local_cpu_capabilities()
215 * x-----------------------------x
217 * |-----------------------------|
219 * |-----------------------------|
221 * x-----------------------------x
225 * ARM64_CPUCAP_OPTIONAL_FOR_LATE_CPU - Case(a) is allowed
226 * ARM64_CPUCAP_PERMITTED_FOR_LATE_CPU - Case(b) is allowed
229 * all CPUs to have in order for the capability to be enabled. This is
232 * Case (b) is not permitted for a capability that must be enabled
233 * during boot if any CPU in the system requires it in order to run
235 * enabled after the corresponding capability is finalised.
237 * In some non-typical cases either both (a) and (b), or neither,
249 * On any local CPU vs System wide vs the primary boot CPU
254 * The capabilitiy is detected on the Boot CPU and is used by kernel
255 * during early boot. i.e, the capability should be "detected" and
256 * "enabled" as early as possibly on all booting CPUs.
271 * hasn't already enabled it ?
280 * CPU errata workarounds that need to be enabled at boot time if one or
282 * has been enabled, it is safe to allow any CPU to boot that doesn't
284 * requires a workaround and the system hasn't enabled it already.
289 * CPU feature detected at boot time based on system-wide value of a
291 * the system hasn't enabled it, although the feature will not be used
292 * by Linux in this case. If the system has enabled this feature already,
298 * CPU feature detected at boot time based on feature of one or more CPUs.
309 * CPU feature detected at boot time, on one or more CPUs. A late CPU
318 * CPU feature used early in the boot based on the boot CPU. All secondary
319 * CPUs must match the state of the capability as detected by the boot CPU. In
326 * CPU feature used early in the boot based on the boot CPU. It is safe for a
327 * late CPU to have this feature even though the boot CPU hasn't enabled it,
328 * although the feature will not be used by Linux in this case. If the boot CPU
329 * has enabled this feature already, then every late CPU must have it.
391 return cap->type & ARM64_CPUCAP_SCOPE_MASK; in cpucap_default_scope()
405 for (caps = entry->match_list; caps->matches; caps++) in cpucap_multi_entry_cap_matches()
406 if (caps->matches(caps, scope)) in cpucap_multi_entry_cap_matches()
472 * Before boot capabilities are finalized, this will BUG().
473 * After boot capabilities are finalized, this is patched to avoid a runtime
476 * @num must be a compile-time constant.
493 * @num must be a compile-time constant.
506 return (s64)(features << (64 - width - field)) >> (64 - width); in cpuid_feature_extract_signed_field_width()
518 return (u64)(features << (64 - width - field)) >> (64 - width); in cpuid_feature_extract_unsigned_field_width()
529 * not follow the standard ID scheme. See ARM DDI 0487E.a page D13-2825,
552 return (u64)GENMASK(ftrp->shift + ftrp->width - 1, ftrp->shift); in arm64_ftr_mask()
557 return (reg->user_val | (reg->sys_val & reg->user_mask)); in arm64_ftr_reg_user_value()
578 return (s64)cpuid_feature_extract_field_width(val, ftrp->shift, ftrp->width, ftrp->sign); in arm64_ftr_value()
937 u64 oval = override->val; in arm64_apply_feature_override()
942 * override code will set the mask to 0x0 and the value to non-zero for in arm64_apply_feature_override()
947 oval &= GENMASK_ULL(feat + width - 1, feat); in arm64_apply_feature_override()
953 if (oval == (oval & override->mask)) { in arm64_apply_feature_override()
954 val &= ~override->mask; in arm64_apply_feature_override()