Le 29/08/2022 à 16:21, Vlastimil Babka a écrit : > On 8/29/22 05:36, Hyeonggon Yoo wrote: >> On Mon, Aug 29, 2022 at 04:11:04AM +0100, Matthew Wilcox wrote: >>> On Sun, Aug 28, 2022 at 11:14:48PM +0800, Dawei Li wrote: >>>> Current size2index is implemented by one to one hardcode mapping, >>>> which can be improved by order_base_2(). >>>> Must be careful to not violate compile-time optimization rule. >>> >>> This patch has been NACKed before (when submitted by other people). >> >> >> Hmm right. >> https://lkml.iu.edu/hypermail/linux/kernel/1606.2/05402.html >> >> Christoph Lameter wrote: >>> On Wed, 22 Jun 2016, Yury Norov wrote: >>>> There will be no fls() for constant at runtime because ilog2() calculates >>>> constant values at compile-time as well. From this point of view, >>>> this patch removes code duplication, as we already have compile-time >>>> log() calculation in kernel, and should re-use it whenever possible.\ >> >>> The reason not to use ilog there was that the constant folding did not >>> work correctly with one or the other architectures/compilers. If you want >>> to do this then please verify that all arches reliably do produce a >>> constant there. >> >> Can we re-evaluate this? > > Is there a way to turn inability of compile-time calculation to a > compile-time error? (when size_is_constant=true etc). Then we could try and > see if anything breaks in -next. > > The following will generate a build error if the function constant_check() is not called with a buildtime constant argument. static void __always_inline constant_check(unsigned long val) { BUILD_BUG_ON(!__builtin_constant_p(val)); } Is that what you are looking for ?