On Sun, Jul 21, 2019 at 09:20:38PM -0600, William Kucharski wrote: > 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. > That sounds reasonable. I am not really sure as to how much of an improvement it would be, the condition will be evaluated eitherways AFAIK? Eitherways, the ternary operator does not look good. I ll make a version 2 of this. > > 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 > > >