• Zach O'Keefe's avatar
    mm/thp: add flag to enforce sysfs THP in hugepage_vma_check() · a7f4e6e4
    Zach O'Keefe authored
    MADV_COLLAPSE is not coupled to the kernel-oriented sysfs THP settings[1].
    
    hugepage_vma_check() is the authority on determining if a VMA is eligible
    for THP allocation/collapse, and currently enforces the sysfs THP
    settings.  Add a flag to disable these checks.  For now, only apply this
    arg to anon and file, which use /sys/kernel/transparent_hugepage/enabled. 
    We can expand this to shmem, which uses
    /sys/kernel/transparent_hugepage/shmem_enabled, later.
    
    Use this flag in collapse_pte_mapped_thp() where previously the VMA flags
    passed to hugepage_vma_check() were OR'd with VM_HUGEPAGE to elide the
    VM_HUGEPAGE check in "madvise" THP mode.  Prior to "mm: khugepaged: check
    THP flag in hugepage_vma_check()", this check also didn't check "never"
    THP mode.  As such, this restores the previous behavior of
    collapse_pte_mapped_thp() where sysfs THP settings are ignored.  See
    comment in code for justification why this is OK.
    
    [1] https://lore.kernel.org/linux-mm/CAAa6QmQxay1_=Pmt8oCX2-Va18t44FV-Vs-WsQt_6+qBks4nZA@mail.gmail.com/
    
    Link: https://lkml.kernel.org/r/20220706235936.2197195-8-zokeefe@google.comSigned-off-by: default avatarZach O'Keefe <zokeefe@google.com>
    Reviewed-by: default avatarYang Shi <shy828301@gmail.com>
    Cc: Alex Shi <alex.shi@linux.alibaba.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Axel Rasmussen <axelrasmussen@google.com>
    Cc: Chris Kennelly <ckennelly@google.com>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
    Cc: Pavel Begunkov <asml.silence@gmail.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Rongwei Wang <rongwei.wang@linux.alibaba.com>
    Cc: SeongJae Park <sj@kernel.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Zi Yan <ziy@nvidia.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: "Souptick Joarder (HPE)" <jrdr.linux@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    a7f4e6e4
huge_memory.c 86.2 KB