powerpc/mm/slice: implement slice_check_range_fits
authorNicholas Piggin <npiggin@gmail.com>
Wed, 7 Mar 2018 01:37:13 +0000 (11:37 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 13 Mar 2018 12:43:06 +0000 (23:43 +1100)
commitae3066bd1cbe58e596c791f72a36e576df5d9ed1
tree62c3cb32111f029f4eb4c8a4022bde9bcfdfb369
parent5709f7cfd8305252dc327206bd674ad65ca4d77f
powerpc/mm/slice: implement slice_check_range_fits

Rather than build slice masks from a range then use that to check for
fit in a candidate mask, implement slice_check_range_fits that checks
if a range fits in a mask directly.

This allows several structures to be removed from stacks, and also we
don't expect a huge range in a lot of these cases, so building and
comparing a full mask is going to be more expensive than testing just
one or two bits of the range.

On POWER8, this increases vfork+exec+exit performance by 0.3%
and reduces time to mmap+munmap a 64kB page by 5%.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/slice.c