[PATCH 08/16] arm64: capabilities: Group handling of features and errata
Suzuki K Poulose
Suzuki.Poulose at arm.com
Fri Jan 26 04:31:18 PST 2018
On 26/01/18 11:47, Dave Martin wrote:
> 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" ? ;)
>
:-). Should have been "triggering errata and feature capability *checks*.
> 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?
with this patch.
> What about late cpus?
>
We don't detect any new capabilities on them. They continue to get
verified against the enabled capabilities.
>> 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.
OK
>> /*
>> - * 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.]
Will try, thanks for the suggestion. I didn't know about that :-)
>> -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?
The problem with setup_boot_capabilities() is that it could conflict with
"coming soon" setup_boot_cpu_capabilities(). May be,
setup_boot_time_system_capabilities().
>
> }
>>
>> 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.
I was thinking about it today. The only catch is how do we know
if we have "the capability", as it is spread across multiple bitmasks.
(HWCAP, COMPAT_HWCAP, COMPAT_HWCAP2).
Suzuki
More information about the linux-arm-kernel
mailing list