On 02/18/23 00:27, James Houghton wrote: > VM_HUGETLB_HGM indicates that a HugeTLB VMA may contain high-granularity > mappings. Its VmFlags string is "hm". > > Signed-off-by: James Houghton <jthoughton@xxxxxxxxxx> > > diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c > index 6a96e1713fd5..77b72f42556a 100644 > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c Acked-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> If there is any push back on using a bit in vm flags, we can go back to your original scheme of embedding info in the hugetlb per-vma structure. -- Mike Kravetz > @@ -711,6 +711,9 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma) > #ifdef CONFIG_HAVE_ARCH_USERFAULTFD_MINOR > [ilog2(VM_UFFD_MINOR)] = "ui", > #endif /* CONFIG_HAVE_ARCH_USERFAULTFD_MINOR */ > +#ifdef CONFIG_HUGETLB_HIGH_GRANULARITY_MAPPING > + [ilog2(VM_HUGETLB_HGM)] = "hm", > +#endif /* CONFIG_HUGETLB_HIGH_GRANULARITY_MAPPING */ > }; > size_t i; > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 2992a2d55aee..9d3216b4284a 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -383,6 +383,13 @@ extern unsigned int kobjsize(const void *objp); > # define VM_UFFD_MINOR VM_NONE > #endif /* CONFIG_HAVE_ARCH_USERFAULTFD_MINOR */ > > +#ifdef CONFIG_HUGETLB_HIGH_GRANULARITY_MAPPING > +# define VM_HUGETLB_HGM_BIT 38 > +# define VM_HUGETLB_HGM BIT(VM_HUGETLB_HGM_BIT) /* HugeTLB high-granularity mapping */ > +#else /* !CONFIG_HUGETLB_HIGH_GRANULARITY_MAPPING */ > +# define VM_HUGETLB_HGM VM_NONE > +#endif /* CONFIG_HUGETLB_HIGH_GRANULARITY_MAPPING */ > + > /* Bits set in the VMA until the stack is in its final location */ > #define VM_STACK_INCOMPLETE_SETUP (VM_RAND_READ | VM_SEQ_READ) > > diff --git a/include/trace/events/mmflags.h b/include/trace/events/mmflags.h > index 9db52bc4ce19..bceb960dbada 100644 > --- a/include/trace/events/mmflags.h > +++ b/include/trace/events/mmflags.h > @@ -162,6 +162,12 @@ IF_HAVE_PG_SKIP_KASAN_POISON(PG_skip_kasan_poison, "skip_kasan_poison") > # define IF_HAVE_UFFD_MINOR(flag, name) > #endif > > +#ifdef CONFIG_HUGETLB_HIGH_GRANULARITY_MAPPING > +# define IF_HAVE_HUGETLB_HGM(flag, name) {flag, name}, > +#else > +# define IF_HAVE_HUGETLB_HGM(flag, name) > +#endif > + > #define __def_vmaflag_names \ > {VM_READ, "read" }, \ > {VM_WRITE, "write" }, \ > @@ -186,6 +192,7 @@ IF_HAVE_UFFD_MINOR(VM_UFFD_MINOR, "uffd_minor" ) \ > {VM_ACCOUNT, "account" }, \ > {VM_NORESERVE, "noreserve" }, \ > {VM_HUGETLB, "hugetlb" }, \ > +IF_HAVE_HUGETLB_HGM(VM_HUGETLB_HGM, "hugetlb_hgm" ) \ > {VM_SYNC, "sync" }, \ > __VM_ARCH_SPECIFIC_1 , \ > {VM_WIPEONFORK, "wipeonfork" }, \ > -- > 2.39.2.637.g21b0678d19-goog >