On Tue, Jan 23, 2018 at 12:28:01PM +0000, Suzuki K Poulose wrote:
So far we have had separate routes for triggering errata and feature
"triggering errata" ? ;)
Maybe "[...] for determining whether to activate errata workarounds and
whether to enable feature capabilities."
capabilities. Also, we never allowed "features" based on local CPU
and "errata" based on System wide safe registers. This patch
groups the handling of errata and features and also allows them
to have all the possible scopes.
So, we now run through the arm64_features and arm64_errata:
when?
What about late cpus?
1) with SCOPE_LOCAL_CPU filter on each boot time enabeld CPUs,
via update_cpu_local_capabilities().
"each [...] enabeld CPUs" -> "each [...] enabled CPU"
Also, changing "boot time" -> "boot-time" helps avoid this being misread
as "on each boot", which could be taken to mean "each time a CPU comes
online". I'm guessing that's not the intended meaning here.
/*
- * The CPU Errata work arounds are detected and applied at boot time
- * and the related information is freed soon after. If the new CPU requires
- * an errata not detected at boot, fail this CPU.
+ * Check for all capablities within the scope of local CPU.
+ * This is run on all boot time activated CPUs.
*/
-static void verify_local_cpu_errata_workarounds(void)
+static void update_cpu_local_capabilities(void)
[Gaah, stupid git diff making function insertion look like function
modification. Sometimes --patience does a better job, but there seems
no foolproof solution... If you do a respin, it might be worth trying
it.]
-static void __init setup_feature_capabilities(void)
+static void __init setup_system_capabilities(void)
{
- update_cpu_capabilities(arm64_features,
- ARM64_CPUCAP_TYPE_ALL, "detected feature:");
- enable_cpu_capabilities(arm64_features, ARM64_CPUCAP_TYPE_ALL);
+ /*
+ * We have finalised the system wide safe feature registers,
+ * finalise the capabilities that depend on it.
+ */
+ update_system_capabilities();
+ /* Enable all the available capabilities */
+ enable_cpu_capabilities(ARM64_CPUCAP_TYPE_ALL);
So setup_system_capabilities() enables _non_ system-wide capabilities/
errata workarounds too?
Maybe this function should just have a different name, like
"setup_boot_capabilities" or similar?
}
DEFINE_STATIC_KEY_FALSE(arm64_const_caps_ready);
@@ -1422,9 +1435,7 @@ void __init setup_cpu_features(void)
u32 cwg;
int cls;
- /* Set the CPU feature capabilies */
- setup_feature_capabilities();
- enable_errata_workarounds();
+ setup_system_capabilities();
mark_const_caps_ready();
setup_elf_hwcaps(arm64_elf_hwcaps);
I wonder whether we could unify the elf hwcaps handling too.