Re: [PATCH] numa: fix /proc/<pid>/numa_maps for hugetlbfs on s390

From: Michael Holzheu
Date: Tue Jan 26 2016 - 05:57:17 EST


On Mon, 25 Jan 2016 14:51:16 -0800
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Mon, 25 Jan 2016 17:30:42 +0100 Michael Holzheu <holzheu@xxxxxxxxxxxxxxxxxx> wrote:
>
> > 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.
>
> I'm aiming this at 4.5 only. Please let me know if you think that a
> -stable backport is warranted.

S390 has NUMA support since kernel 4.3, therefore:

Cc: stable@xxxxxxxxxxxxxxx # v4.3+

Michael