• Kefeng Wang's avatar
    mm: huge_memory: add vma_thp_disabled() and thp_disabled_by_hw() · 963756aa
    Kefeng Wang authored
    Patch series "mm: don't install PMD mappings when THPs are disabled by the
    hw/process/vma".
    
    During testing, it was found that we can get PMD mappings in processes
    where THP (and more precisely, PMD mappings) are supposed to be disabled. 
    While it works as expected for anon+shmem, the pagecache is the
    problematic bit.
    
    For s390 KVM this currently means that a VM backed by a file located on
    filesystem with large folio support can crash when KVM tries accessing the
    problematic page, because the readahead logic might decide to use a
    PMD-sized THP and faulting it into the page tables will install a PMD
    mapping, something that s390 KVM cannot tolerate.
    
    This might also be a problem with HW that does not support PMD mappings,
    but I did not try reproducing it.
    
    Fix it by respecting the ways to disable THPs when deciding whether we can
    install a PMD mapping.  khugepaged should already be taking care of not
    collapsing if THPs are effectively disabled for the hw/process/vma.
    
    
    This patch (of 2):
    
    Add vma_thp_disabled() and thp_disabled_by_hw() helpers to be shared by
    shmem_allowable_huge_orders() and __thp_vma_allowable_orders().
    
    [david@redhat.com: rename to vma_thp_disabled(), split out thp_disabled_by_hw() ]
    Link: https://lkml.kernel.org/r/20241011102445.934409-2-david@redhat.com
    Fixes: 793917d9 ("mm/readahead: Add large folio readahead")
    Signed-off-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Reported-by: default avatarLeo Fu <bfu@redhat.com>
    Tested-by: default avatarThomas Huth <thuth@redhat.com>
    Reviewed-by: default avatarRyan Roberts <ryan.roberts@arm.com>
    Cc: Boqiao Fu <bfu@redhat.com>
    Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
    Cc: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Janosch Frank <frankja@linux.ibm.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    963756aa
shmem.c 142 KB