[PATCH] powerpc/64s: dt_cpu_ftrs boot time setup option

Balbir Singh bsingharora at gmail.com
Tue May 30 08:29:03 AEST 2017


On Thu, 2017-05-11 at 21:24 +1000, Nicholas Piggin wrote:
> Provide a dt_cpu_ftrs= cmdline option to disable the dt_cpu_ftrs CPU
> feature discovery, and fall back to the "cputable" based version.
> 
> Also allow control of advertising unknown features to userspace and
> with this parameter, and remove the clunky CONFIG option.
> 
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
>  Documentation/admin-guide/kernel-parameters.txt | 10 ++++++
>  arch/powerpc/Kconfig                            |  5 ---
>  arch/powerpc/kernel/dt_cpu_ftrs.c               | 41 +++++++++++++++++++------
>  3 files changed, 42 insertions(+), 14 deletions(-)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index facc20a3f962..7a7c1cc80f9f 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -867,6 +867,16 @@
>  
>  	dscc4.setup=	[NET]
>  
> +	dt_cpu_ftrs=	[PPC]
> +			Format: {"off" | "known"}
> +			Control how the dt_cpu_ftrs device-tree binding is
> +			used for CPU feature discovery and setup (if it
> +			exists).
> +			off: Do not use it, fall back to legacy cpu table.
> +			known: Do not pass through unknown features to guests
> +			or userspace, only those that the kernel is not aware
> +			of.
> +
>  	dump_apple_properties	[X86]
>  			Dump name and content of EFI device properties on
>  			x86 Macs.  Useful for driver authors to determine
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 5bd868f2e813..c924710e5bc7 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -391,11 +391,6 @@ config PPC_DT_CPU_FTRS
>  	  firmware provides this binding.
>  	  If you're not sure say Y.
>  
> -config PPC_CPUFEATURES_ENABLE_UNKNOWN
> -	bool "cpufeatures pass through unknown features to guest/userspace"
> -	depends on PPC_DT_CPU_FTRS
> -	default y
> -
>  config HIGHMEM
>  	bool "High memory support"
>  	depends on PPC32
> diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c b/arch/powerpc/kernel/dt_cpu_ftrs.c
> index fcc7588a96d6..050925b5b451 100644
> --- a/arch/powerpc/kernel/dt_cpu_ftrs.c
> +++ b/arch/powerpc/kernel/dt_cpu_ftrs.c
> @@ -671,12 +671,24 @@ static struct dt_cpu_feature_match __initdata
>  	{"wait-v3", feat_enable, 0},
>  };
>  
> -/* XXX: how to configure this? Default + boot time? */
> -#ifdef CONFIG_PPC_CPUFEATURES_ENABLE_UNKNOWN
> -#define CPU_FEATURE_ENABLE_UNKNOWN 1
> -#else
> -#define CPU_FEATURE_ENABLE_UNKNOWN 0
> -#endif
> +static bool __initdata using_dt_cpu_ftrs = true;
> +static bool __initdata dt_cpu_ftrs_enable_unknown = true;
> +
> +static int __init dt_cpu_ftrs_parse(char *str)
> +{
> +	if (!str)
> +		return 0;
> +
> +	if (!strcmp(str, "off"))
> +		using_dt_cpu_ftrs = false;
> +	else if (!strcmp(str, "known"))
> +		dt_cpu_ftrs_enable_unknown = false;
> +	else
> +		return 1;
> +
> +	return 0;
> +}
> +early_param("dt_cpu_ftrs", dt_cpu_ftrs_parse);

I wouldn't use strcmp with user passed parameters.

Balbir Singh.



More information about the Linuxppc-dev mailing list