• Michael Holzheu's avatar
    numa: fix /proc/<pid>/numa_maps for hugetlbfs on s390 · 5c2ff95e
    Michael Holzheu authored
    When working with hugetlbfs ptes (which are actually pmds) is not valid to
    directly use pte functions like pte_present() because the hardware bit
    layout of pmds and ptes can be different.  This is the case on s390.
    Therefore we have to convert the hugetlbfs ptes first into a valid pte
    encoding with huge_ptep_get().
    
    Currently the /proc/<pid>/numa_maps code uses hugetlbfs ptes without
    huge_ptep_get().  On s390 this leads to the following two problems:
    
    1) The pte_present() function returns false (instead of true) for
       PROT_NONE hugetlb ptes. Therefore PROT_NONE vmas are missing
       completely in the "numa_maps" output.
    
    2) The pte_dirty() function always returns false for all hugetlb ptes.
       Therefore these pages are reported as "mapped=xxx" instead of
       "dirty=xxx".
    
    Therefore use huge_ptep_get() to correctly convert the hugetlb ptes.
    Signed-off-by: default avatarMichael Holzheu <holzheu@linux.vnet.ibm.com>
    Reviewed-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
    Cc: <stable@vger.kernel.org>	[4.3+]
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5c2ff95e
task_mmu.c 41 KB