Re: [PATCH] mm: Always flush VMA ranges affected by zap_page_range

From: kbuild test robot
Date: Mon Jul 24 2017 - 23:50:08 EST


Hi Mel,

[auto build test ERROR on mmotm/master]
[also build test ERROR on v4.13-rc2 next-20170724]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Mel-Gorman/mm-Always-flush-VMA-ranges-affected-by-zap_page_range/20170725-102436
base: git://git.cmpxchg.org/linux-mmotm.git master
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=ia64

All errors (new ones prefixed by >>):

mm/memory.c: In function 'zap_page_range':
>> mm/memory.c:1497:3: error: implicit declaration of function '__tlb_adjust_range' [-Werror=implicit-function-declaration]
__tlb_adjust_range(&tlb, start, end);
^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

vim +/__tlb_adjust_range +1497 mm/memory.c

1466
1467 /**
1468 * zap_page_range - remove user pages in a given range
1469 * @vma: vm_area_struct holding the applicable pages
1470 * @start: starting address of pages to zap
1471 * @size: number of bytes to zap
1472 *
1473 * Caller must protect the VMA list
1474 */
1475 void zap_page_range(struct vm_area_struct *vma, unsigned long start,
1476 unsigned long size)
1477 {
1478 struct mm_struct *mm = vma->vm_mm;
1479 struct mmu_gather tlb;
1480 unsigned long end = start + size;
1481
1482 lru_add_drain();
1483 tlb_gather_mmu(&tlb, mm, start, end);
1484 update_hiwater_rss(mm);
1485 mmu_notifier_invalidate_range_start(mm, start, end);
1486 for ( ; vma && vma->vm_start < end; vma = vma->vm_next) {
1487 unmap_single_vma(&tlb, vma, start, end, NULL);
1488
1489 /*
1490 * zap_page_range does not specify whether mmap_sem should be
1491 * held for read or write. That allows parallel zap_page_range
1492 * operations to unmap a PTE and defer a flush meaning that
1493 * this call observes pte_none and fails to flush the TLB.
1494 * Rather than adding a complex API, ensure that no stale
1495 * TLB entries exist when this call returns.
1496 */
> 1497 __tlb_adjust_range(&tlb, start, end);
1498 }
1499
1500 mmu_notifier_invalidate_range_end(mm, start, end);
1501 tlb_finish_mmu(&tlb, start, end);
1502 }
1503

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

Attachment: .config.gz
Description: application/gzip