I suspect I'm being massively pedantic here, but the comments for atomic_pte_lookup() note: * Only supports Intel large pages (2MB only) on x86_64. * ZZZ - hugepage support is incomplete That makes me wonder how many systems using this hardware are actually configured with CONFIG_HUGETLB_PAGE. I ask as in the most common case, this is likely introducing a few extra instructions and possibly an additional branch to a routine that is called per-fault. So the nit-picky questions are: 1) Does the code really need to be cleaned up in this way? 2) If it does, does it make more sense (given the way pmd_large() is handled now in atomic_pte_lookup()) for this to be coded as: if (unlikely(is_vm_hugetlb_page(vma))) *pageshift = HPAGE_SHIFT; else *pageshift = PAGE_SHIFT; In all likelihood, these questions are no-ops, and the optimizer may even make my questions completely moot, but I thought I might as well ask anyway. > On Jul 21, 2019, at 9:58 AM, Bharath Vedartham <linux.bhar@xxxxxxxxx> wrote: > > is_vm_hugetlb_page has checks for whether CONFIG_HUGETLB_PAGE is defined > or not. If CONFIG_HUGETLB_PAGE is not defined is_vm_hugetlb_page will > always return false. There is no need to have an uneccessary > CONFIG_HUGETLB_PAGE check in the code. > > Cc: Ira Weiny <ira.weiny@xxxxxxxxx> > Cc: John Hubbard <jhubbard@xxxxxxxxxx> > Cc: Jérôme Glisse <jglisse@xxxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: Dimitri Sivanich <sivanich@xxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > Cc: linux-kernel@xxxxxxxxxxxxxxx > Cc: linux-mm@xxxxxxxxx > Signed-off-by: Bharath Vedartham <linux.bhar@xxxxxxxxx> > --- > drivers/misc/sgi-gru/grufault.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > > diff --git a/drivers/misc/sgi-gru/grufault.c b/drivers/misc/sgi-gru/grufault.c > index 61b3447..75108d2 100644 > --- a/drivers/misc/sgi-gru/grufault.c > +++ b/drivers/misc/sgi-gru/grufault.c > @@ -180,11 +180,8 @@ static int non_atomic_pte_lookup(struct vm_area_struct *vma, > { > struct page *page; > > -#ifdef CONFIG_HUGETLB_PAGE > *pageshift = is_vm_hugetlb_page(vma) ? HPAGE_SHIFT : PAGE_SHIFT; > -#else > - *pageshift = PAGE_SHIFT; > -#endif > + > if (get_user_pages(vaddr, 1, write ? FOLL_WRITE : 0, &page, NULL) <= 0) > return -EFAULT; > *paddr = page_to_phys(page); > @@ -238,11 +235,9 @@ static int atomic_pte_lookup(struct vm_area_struct *vma, unsigned long vaddr, > return 1; > > *paddr = pte_pfn(pte) << PAGE_SHIFT; > -#ifdef CONFIG_HUGETLB_PAGE > + > *pageshift = is_vm_hugetlb_page(vma) ? HPAGE_SHIFT : PAGE_SHIFT; > -#else > - *pageshift = PAGE_SHIFT; > -#endif > + > return 0; > > err: > -- > 2.7.4 >