lkml.org 
[lkml]   [2021]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 07/10] powerpc/mm: Use generic_hugetlb_get_unmapped_area()
    Date
    Use the generic version of arch_hugetlb_get_unmapped_area()
    which is now available at all time.

    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    ---
    arch/powerpc/include/asm/book3s/64/hugetlb.h | 4 --
    arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 55 --------------------
    arch/powerpc/mm/hugetlbpage.c | 4 +-
    3 files changed, 1 insertion(+), 62 deletions(-)

    diff --git a/arch/powerpc/include/asm/book3s/64/hugetlb.h b/arch/powerpc/include/asm/book3s/64/hugetlb.h
    index 12e150e615b7..b37a28f62cf6 100644
    --- a/arch/powerpc/include/asm/book3s/64/hugetlb.h
    +++ b/arch/powerpc/include/asm/book3s/64/hugetlb.h
    @@ -8,10 +8,6 @@
    */
    void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
    void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
    -extern unsigned long
    -radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
    - unsigned long len, unsigned long pgoff,
    - unsigned long flags);

    extern void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
    unsigned long addr, pte_t *ptep,
    diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
    index 23d3e08911d3..d2fb776febb4 100644
    --- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
    +++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
    @@ -41,61 +41,6 @@ void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma, unsigned long st
    radix__flush_tlb_range_psize(vma->vm_mm, start, end, psize);
    }

    -/*
    - * A vairant of hugetlb_get_unmapped_area doing topdown search
    - * FIXME!! should we do as x86 does or non hugetlb area does ?
    - * ie, use topdown or not based on mmap_is_legacy check ?
    - */
    -unsigned long
    -radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
    - unsigned long len, unsigned long pgoff,
    - unsigned long flags)
    -{
    - struct mm_struct *mm = current->mm;
    - struct vm_area_struct *vma;
    - struct hstate *h = hstate_file(file);
    - int fixed = (flags & MAP_FIXED);
    - unsigned long high_limit;
    - struct vm_unmapped_area_info info;
    -
    - high_limit = DEFAULT_MAP_WINDOW;
    - if (addr >= high_limit || (fixed && (addr + len > high_limit)))
    - high_limit = TASK_SIZE;
    -
    - if (len & ~huge_page_mask(h))
    - return -EINVAL;
    - if (len > high_limit)
    - return -ENOMEM;
    -
    - if (fixed) {
    - if (addr > high_limit - len)
    - return -ENOMEM;
    - if (prepare_hugepage_range(file, addr, len))
    - return -EINVAL;
    - return addr;
    - }
    -
    - if (addr) {
    - addr = ALIGN(addr, huge_page_size(h));
    - vma = find_vma(mm, addr);
    - if (high_limit - len >= addr && addr >= mmap_min_addr &&
    - (!vma || addr + len <= vm_start_gap(vma)))
    - return addr;
    - }
    - /*
    - * We are always doing an topdown search here. Slice code
    - * does that too.
    - */
    - info.flags = VM_UNMAPPED_AREA_TOPDOWN;
    - info.length = len;
    - info.low_limit = max(PAGE_SIZE, mmap_min_addr);
    - info.high_limit = mm->mmap_base + (high_limit - DEFAULT_MAP_WINDOW);
    - info.align_mask = PAGE_MASK & ~huge_page_mask(h);
    - info.align_offset = 0;
    -
    - return vm_unmapped_area(&info);
    -}
    -
    void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
    unsigned long addr, pte_t *ptep,
    pte_t old_pte, pte_t pte)
    diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
    index f18b3a1d18f0..bfd7f4af1e58 100644
    --- a/arch/powerpc/mm/hugetlbpage.c
    +++ b/arch/powerpc/mm/hugetlbpage.c
    @@ -553,11 +553,9 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
    unsigned long len, unsigned long pgoff,
    unsigned long flags)
    {
    -#ifdef CONFIG_PPC_RADIX_MMU
    if (radix_enabled())
    - return radix__hugetlb_get_unmapped_area(file, addr, len,
    + return generic_hugetlb_get_unmapped_area(file, addr, len,
    pgoff, flags);
    -#endif
    #ifdef CONFIG_PPC_64S_HASH_MMU
    return slice_get_unmapped_area(addr, len, flags, file_to_psize(file), 1);
    #endif
    --
    2.33.1
    \
     
     \ /
      Last update: 2021-12-08 18:19    [W:6.180 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site