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 <npig...@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.