[mmotm:master 77/120] mm/madvise.c:332:7: error: implicit declaration of function 'is_huge_zero_pmd'; did you mean 'is_huge_zero_pud'?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   git://git.cmpxchg.org/linux-mmotm.git master
head:   79b3e476080beb7faf41bddd6c3d7059cd1a5f31
commit: 23063d3d6a3b47d555a70e9aa764ba5c49cb31bc [77/120] mm, madvise: introduce MADV_COLD
config: i386-defconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-10) 7.4.0
reproduce:
        git checkout 23063d3d6a3b47d555a70e9aa764ba5c49cb31bc
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

   mm/madvise.c: In function 'madvise_cold_pte_range':
>> mm/madvise.c:332:7: error: implicit declaration of function 'is_huge_zero_pmd'; did you mean 'is_huge_zero_pud'? [-Werror=implicit-function-declaration]
      if (is_huge_zero_pmd(orig_pmd))
          ^~~~~~~~~~~~~~~~
          is_huge_zero_pud
   mm/madvise.c:367:3: error: implicit declaration of function 'test_and_clear_page_young'; did you mean 'test_and_clear_bit_le'? [-Werror=implicit-function-declaration]
      test_and_clear_page_young(page);
      ^~~~~~~~~~~~~~~~~~~~~~~~~
      test_and_clear_bit_le
   cc1: some warnings being treated as errors

vim +332 mm/madvise.c

   310	
   311	static int madvise_cold_pte_range(pmd_t *pmd, unsigned long addr,
   312					unsigned long end, struct mm_walk *walk)
   313	{
   314		struct mmu_gather *tlb = walk->private;
   315		struct mm_struct *mm = tlb->mm;
   316		struct vm_area_struct *vma = walk->vma;
   317		pte_t *orig_pte, *pte, ptent;
   318		spinlock_t *ptl;
   319		struct page *page;
   320		unsigned long next;
   321	
   322		next = pmd_addr_end(addr, end);
   323		if (pmd_trans_huge(*pmd)) {
   324			pmd_t orig_pmd;
   325	
   326			tlb_change_page_size(tlb, HPAGE_PMD_SIZE);
   327			ptl = pmd_trans_huge_lock(pmd, vma);
   328			if (!ptl)
   329				return 0;
   330	
   331			orig_pmd = *pmd;
 > 332			if (is_huge_zero_pmd(orig_pmd))
   333				goto huge_unlock;
   334	
   335			if (unlikely(!pmd_present(orig_pmd))) {
   336				VM_BUG_ON(thp_migration_supported() &&
   337						!is_pmd_migration_entry(orig_pmd));
   338				goto huge_unlock;
   339			}
   340	
   341			page = pmd_page(orig_pmd);
   342			if (next - addr != HPAGE_PMD_SIZE) {
   343				int err;
   344	
   345				if (page_mapcount(page) != 1)
   346					goto huge_unlock;
   347	
   348				get_page(page);
   349				spin_unlock(ptl);
   350				lock_page(page);
   351				err = split_huge_page(page);
   352				unlock_page(page);
   353				put_page(page);
   354				if (!err)
   355					goto regular_page;
   356				return 0;
   357			}
   358	
   359			if (pmd_young(orig_pmd)) {
   360				pmdp_invalidate(vma, addr, pmd);
   361				orig_pmd = pmd_mkold(orig_pmd);
   362	
   363				set_pmd_at(mm, addr, pmd, orig_pmd);
   364				tlb_remove_pmd_tlb_entry(tlb, pmd, addr);
   365			}
   366	
   367			test_and_clear_page_young(page);
   368			deactivate_page(page);
   369	huge_unlock:
   370			spin_unlock(ptl);
   371			return 0;
   372		}
   373	
   374		if (pmd_trans_unstable(pmd))
   375			return 0;
   376	
   377	regular_page:
   378		tlb_change_page_size(tlb, PAGE_SIZE);
   379		orig_pte = pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
   380		flush_tlb_batched_pending(mm);
   381		arch_enter_lazy_mmu_mode();
   382		for (; addr < end; pte++, addr += PAGE_SIZE) {
   383			ptent = *pte;
   384	
   385			if (pte_none(ptent))
   386				continue;
   387	
   388			if (!pte_present(ptent))
   389				continue;
   390	
   391			page = vm_normal_page(vma, addr, ptent);
   392			if (!page)
   393				continue;
   394	
   395			/*
   396			 * Creating a THP page is expensive so split it only if we
   397			 * are sure it's worth. Split it if we are only owner.
   398			 */
   399			if (PageTransCompound(page)) {
   400				if (page_mapcount(page) != 1)
   401					break;
   402				get_page(page);
   403				if (!trylock_page(page)) {
   404					put_page(page);
   405					break;
   406				}
   407				pte_unmap_unlock(orig_pte, ptl);
   408				if (split_huge_page(page)) {
   409					unlock_page(page);
   410					put_page(page);
   411					pte_offset_map_lock(mm, pmd, addr, &ptl);
   412					break;
   413				}
   414				unlock_page(page);
   415				put_page(page);
   416				pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
   417				pte--;
   418				addr -= PAGE_SIZE;
   419				continue;
   420			}
   421	
   422			VM_BUG_ON_PAGE(PageTransCompound(page), page);
   423	
   424			if (pte_young(ptent)) {
   425				ptent = ptep_get_and_clear_full(mm, addr, pte,
   426								tlb->fullmm);
   427				ptent = pte_mkold(ptent);
   428				set_pte_at(mm, addr, pte, ptent);
   429				tlb_remove_tlb_entry(tlb, pte, addr);
   430			}
   431	
   432			/*
   433			 * We are deactivating a page for accelerating reclaiming.
   434			 * VM couldn't reclaim the page unless we clear PG_young.
   435			 * As a side effect, it makes confuse idle-page tracking
   436			 * because they will miss recent referenced history.
   437			 */
   438			test_and_clear_page_young(page);
   439			deactivate_page(page);
   440		}
   441	
   442		arch_leave_lazy_mmu_mode();
   443		pte_unmap_unlock(orig_pte, ptl);
   444		cond_resched();
   445	
   446		return 0;
   447	}
   448	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux