On Wed, 22 May 2019 19:51:55 +0000 Jason Gunthorpe <jgg@xxxxxxxxxxxx> wrote: > gcc reports that several variables are defined but not used. > > For the first hunk CONFIG_HUGETLB_PAGE the entire if block is already > protected by pud_huge() which is forced to 0. None of the stuff under > the ifdef causes compilation problems as it is already stubbed out in > the header files. > > For the second hunk the dummy huge_page_shift macro doesn't touch the > argument, so just inline the argument. > > ... > > --- a/mm/hmm.c > +++ b/mm/hmm.c > @@ -797,7 +797,6 @@ static int hmm_vma_walk_pud(pud_t *pudp, > return hmm_vma_walk_hole_(addr, end, fault, > write_fault, walk); > > -#ifdef CONFIG_HUGETLB_PAGE > pfn = pud_pfn(pud) + ((addr & ~PUD_MASK) >> PAGE_SHIFT); > for (i = 0; i < npages; ++i, ++pfn) { > hmm_vma_walk->pgmap = get_dev_pagemap(pfn, > @@ -813,9 +812,6 @@ static int hmm_vma_walk_pud(pud_t *pudp, > } > hmm_vma_walk->last = end; > return 0; > -#else > - return -EINVAL; > -#endif > } Fair enough. > split_huge_pud(walk->vma, pudp, addr); > @@ -1024,9 +1020,8 @@ long hmm_range_snapshot(struct hmm_range *range) > return -EFAULT; > > if (is_vm_hugetlb_page(vma)) { > - struct hstate *h = hstate_vma(vma); > - > - if (huge_page_shift(h) != range->page_shift && > + if (huge_page_shift(hstate_vma(vma)) != > + range->page_shift && > range->page_shift != PAGE_SHIFT) > return -EINVAL; Also fair enough. But why the heck is huge_page_shift() a macro? We keep doing that and it bites so often :(