diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2018-03-07 11:37:09 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2018-03-13 23:43:05 +1100 |
commit | 1753dd1830367709144f68f539554dadd7a7ccba (patch) | |
tree | c77fbae605bafdcc4031b8e54327a02473f1b719 /arch/powerpc/include/asm | |
parent | ab83dc794c9d8870e4844cca9a2945b782b8ee7e (diff) | |
download | linux-1753dd1830367709144f68f539554dadd7a7ccba.tar.bz2 |
powerpc/mm/slice: Simplify and optimise slice context initialisation
The slice state of an mm gets zeroed then initialised upon exec.
This is the only caller of slice_set_user_psize now, so that can be
removed and instead implement a faster and simplified approach that
requires no locking or checking existing state.
This speeds up vfork+exec+exit performance on POWER8 by 3%.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm')
-rw-r--r-- | arch/powerpc/include/asm/slice.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/arch/powerpc/include/asm/slice.h b/arch/powerpc/include/asm/slice.h index 172711fadb1c..e40406cf5628 100644 --- a/arch/powerpc/include/asm/slice.h +++ b/arch/powerpc/include/asm/slice.h @@ -28,15 +28,13 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, unsigned int get_slice_psize(struct mm_struct *mm, unsigned long addr); -void slice_set_user_psize(struct mm_struct *mm, unsigned int psize); void slice_set_range_psize(struct mm_struct *mm, unsigned long start, unsigned long len, unsigned int psize); -#endif /* __ASSEMBLY__ */ -#else /* CONFIG_PPC_MM_SLICES */ +void slice_init_new_context_exec(struct mm_struct *mm); + +#endif /* __ASSEMBLY__ */ -#define slice_set_range_psize(mm, start, len, psize) \ - slice_set_user_psize((mm), (psize)) #endif /* CONFIG_PPC_MM_SLICES */ #endif /* _ASM_POWERPC_SLICE_H */ |