On Fri, Feb 08, 2019 at 02:02:24PM +1100, Michael Ellerman wrote: > diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c > b/arch/powerpc/kernel/dt_cpu_ftrs.c > index 8be3721d9302..a1acccd25839 100644 > --- a/arch/powerpc/kernel/dt_cpu_ftrs.c > +++ b/arch/powerpc/kernel/dt_cpu_ftrs.c > @@ -675,12 +675,10 @@ static bool __init cpufeatures_process_feature(struct > dt_cpu_feature *f) > } > } > > - if (!known && enable_unknown) { > - if (!feat_try_enable_unknown(f)) { > - pr_info("not enabling: %s (unknown and unsupported by > kernel)\n", > - f->name); > - return false; > - } > + if (!known && (!enable_unknown || !feat_try_enable_unknown(f))) { > + pr_info("not enabling: %s (unknown and unsupported by > kernel)\n", > + f->name); > + return false; > } > > if (m->cpu_ftr_bit_mask) cur_cpu_spec->cpu_features |= m->cpu_ftr_bit_mask;
This still set the wrong mask here, which is the bug you're trying to fix. It should only do this if "known", afaics. Segher