On 14/07/2020 06.20, Sean Christopherson wrote: > Revert to using 'unsigned long' instead of 'size_t' for free_pages() and > get_order(). The recent change to size_t for free_pages() breaks i386 > with -Werror as the assert_msg() formats expect unsigned longs, whereas > size_t is an 'unsigned int' on i386 (though both longs and ints are 4 > bytes). > > Message formatting aside, unsigned long is the correct choice given the > current code base as alloc_pages() and free_pages_by_order() explicitly > expect, work on, and/or assert on the size being an unsigned long. > > Fixes: 73f4b202beb39 ("lib/alloc_page: change some parameter types") > Cc: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > Cc: Andrew Jones <drjones@xxxxxxxxxx> > Cc: Jim Mattson <jmattson@xxxxxxxxxx> > Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > --- [...] > diff --git a/lib/bitops.h b/lib/bitops.h > index 308aa86..dd015e8 100644 > --- a/lib/bitops.h > +++ b/lib/bitops.h > @@ -79,7 +79,7 @@ static inline bool is_power_of_2(unsigned long n) > return n && !(n & (n - 1)); > } > > -static inline unsigned int get_order(size_t size) > +static inline unsigned int get_order(unsigned long size) > { > return size ? fls(size) + !is_power_of_2(size) : 0; > } > get_order() already used size_t when it was introduced in commit f22e527df02ffaba ... is it necessary to switch it to unsigned long now? Apart from that, this patch fixes the compilation problems, indeed, I just checked it in the travis-CI. Tested-by: Thomas Huth <thuth@xxxxxxxxxx>