On Wed, Jan 17, 2018 at 10:14:45PM +1100, Benjamin Herrenschmidt wrote: > On Wed, 2018-01-17 at 20:51 +1100, Paul Mackerras wrote: > > + > > + /* > > + * POWER9 chips before version 2.02 can't have some threads in > > + * HPT mode and some in radix mode on the same core. > > + */ > > + if (cpu_has_feature(CPU_FTR_ARCH_300)) { > > + unsigned int pvr = mfspr(SPRN_PVR); > > + if ((pvr >> 16) == PVR_POWER9 && (pvr & 0xfff) < 0x202) > > + no_mixing_hpt_and_radix = true; > > + } > > + > > return r; > > } > > You need to check that it's a Nimbus using the top nimble of the bottom > 16 bits of PVR. For Cumulus, the fixes are either in 1.0 or 1.1 (to > check). OK, how about this for the check: if (cpu_has_feature(CPU_FTR_ARCH_300)) { unsigned int pvr = mfspr(SPRN_PVR); if ((pvr >> 16) == PVR_POWER9 && (((pvr & 0xe000) == 0 && (pvr & 0xfff) < 0x202) || ((pvr & 0xe000) == 0x2000 && (pvr & 0xfff) < 0x101))) no_mixing_hpt_and_radix = true; } Paul.