On Tue 13-06-17 16:08:26, Dan Williams wrote: > Turn the macro into a static inline and rewrite the condition checks for > better readability in preparation for adding another condition. > > Cc: Jan Kara <jack@xxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Reviewed-by: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> > [ross: fix logic to make conversion equivalent] > Acked-by: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> Looks good. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > include/linux/huge_mm.h | 32 +++++++++++++++++++++----------- > 1 file changed, 21 insertions(+), 11 deletions(-) > > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index a3762d49ba39..c8119e856eb1 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -85,14 +85,23 @@ extern struct kobj_attribute shmem_enabled_attr; > > extern bool is_vma_temporary_stack(struct vm_area_struct *vma); > > -#define transparent_hugepage_enabled(__vma) \ > - ((transparent_hugepage_flags & \ > - (1<<TRANSPARENT_HUGEPAGE_FLAG) || \ > - (transparent_hugepage_flags & \ > - (1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG) && \ > - ((__vma)->vm_flags & VM_HUGEPAGE))) && \ > - !((__vma)->vm_flags & VM_NOHUGEPAGE) && \ > - !is_vma_temporary_stack(__vma)) > +extern unsigned long transparent_hugepage_flags; > + > +static inline bool transparent_hugepage_enabled(struct vm_area_struct *vma) > +{ > + if ((vma->vm_flags & VM_NOHUGEPAGE) || is_vma_temporary_stack(vma)) > + return false; > + > + if (transparent_hugepage_flags & (1 << TRANSPARENT_HUGEPAGE_FLAG)) > + return true; > + > + if (transparent_hugepage_flags & > + (1 << TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)) > + return !!(vma->vm_flags & VM_HUGEPAGE); > + > + return false; > +} > + > #define transparent_hugepage_use_zero_page() \ > (transparent_hugepage_flags & \ > (1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG)) > @@ -104,8 +113,6 @@ extern bool is_vma_temporary_stack(struct vm_area_struct *vma); > #define transparent_hugepage_debug_cow() 0 > #endif /* CONFIG_DEBUG_VM */ > > -extern unsigned long transparent_hugepage_flags; > - > extern unsigned long thp_get_unmapped_area(struct file *filp, > unsigned long addr, unsigned long len, unsigned long pgoff, > unsigned long flags); > @@ -223,7 +230,10 @@ void mm_put_huge_zero_page(struct mm_struct *mm); > > #define hpage_nr_pages(x) 1 > > -#define transparent_hugepage_enabled(__vma) 0 > +static inline bool transparent_hugepage_enabled(struct vm_area_struct *vma) > +{ > + return false; > +} > > static inline void prep_transhuge_page(struct page *page) {} > > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR