On Fri, Dec 17, 2021 at 10:27:28AM +0000, Christophe Leroy wrote: > This is a complement of f6795053dac8 ("mm: mmap: Allow for "high" > userspace addresses") for hugetlb. > > This patch adds support for "high" userspace addresses that are > optionally supported on the system and have to be requested via a hint > mechanism ("high" addr parameter to mmap). > > Architectures such as powerpc and x86 achieve this by making changes to > their architectural versions of hugetlb_get_unmapped_area() function. > However, arm64 uses the generic version of that function. > > So take into account arch_get_mmap_base() and arch_get_mmap_end() in > hugetlb_get_unmapped_area(). To allow that, move those two macros > out of mm/mmap.c into include/linux/sched/mm.h > > If these macros are not defined in architectural code then they default > to (TASK_SIZE) and (base) so should not introduce any behavioural > changes to architectures that do not define them. > > For the time being, only ARM64 is affected by this change. > > Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx> > Cc: Steve Capper <steve.capper@xxxxxxx> > Cc: Will Deacon <will.deacon@xxxxxxx> > Cc: Catalin Marinas <catalin.marinas@xxxxxxx> > --- > fs/hugetlbfs/inode.c | 9 +++++---- > include/linux/sched/mm.h | 8 ++++++++ > mm/mmap.c | 8 -------- > 3 files changed, 13 insertions(+), 12 deletions(-) This would be an ABI change but I'm fine with it. Basically with this patch, getting hugetblfs addresses above 48-bit require explicit hint passed to mmap(). I wonder whether we should add a fixes tag (or at least the cc stable): Fixes: f6795053dac8 ("mm: mmap: Allow for "high" userspace addresses") Cc: <stable@xxxxxxxxxxxxxxx> # 5.0.x I think the original commit should have changed hugetlb_get_unmapped_area() to have the same behaviour as arch_get_unmapped_area(). Steve, any thoughts? FWIW, Reviewed-by: Catalin Marinas <catalin.marinas@xxxxxxx>