[PATCH 1/2] arm64: cpufeature: Allow early filtering of feature override

Will Deacon will at kernel.org
Thu Mar 25 19:27:59 GMT 2021


On Thu, Mar 25, 2021 at 12:47:20PM +0000, Marc Zyngier wrote:
> Some CPUs are broken enough that some overrides need to be rejected
> at the earliest opportunity. In some cases, that's right at cpu
> feature override time.
> 
> Provide the necessary infrastructure to filter out overrides,
> and to report such filtered out overrides to the core cpufeature code.
> 
> Signed-off-by: Marc Zyngier <maz at kernel.org>
> ---
>  arch/arm64/kernel/cpufeature.c     |  6 ++++++
>  arch/arm64/kernel/idreg-override.c | 13 +++++++++++++
>  2 files changed, 19 insertions(+)
> 
> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> index 066030717a4c..6de15deaa912 100644
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@ -809,6 +809,12 @@ static void __init init_cpu_ftr_reg(u32 sys_reg, u64 new)
>  					reg->name,
>  					ftrp->shift + ftrp->width - 1,
>  					ftrp->shift, str, tmp);
> +		} else if ((ftr_mask & reg->override->val) == ftr_mask) {

This seems to rely on 'val == mask' being invalid, but I'm not sure why
that's generally true. Can we just invoke the filter function again here to
figure out if the field has been ignored? Then in match_options, we can just
clear the override val/mask to zero.

Will



More information about the linux-arm-kernel mailing list