On Thu, May 09, 2024 at 10:12:48PM +1000, Michael Ellerman wrote: > cpu_has_feature()/mmu_has_feature() are only able to check a single > feature at a time, but there is no enforcement of that. > > In fact, as fixed in the previous commit, there was code that was > passing multiple values to cpu_has_feature(). > > So add a check that only a single feature is passed using popcount. > > Note that the test allows 0 or 1 bits to be set, because some code > relies on cpu_has_feature(0) being false, the check with > CPU_FTRS_POSSIBLE ensures that. See for example CPU_FTR_PPC_LE.
This btw is exactly BUILD_BUG_ON(feature & (feature - 1)); but the popcount is more readable :-) Segher