Re: [PATCH] mm:Add watermark slope for high mark

From: kbuild test robot
Date: Mon Nov 27 2017 - 02:44:59 EST


Hi Peter,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on mmotm/master]
[also build test ERROR on v4.15-rc1 next-20171127]
[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/Peter-Enderborg/mm-Add-watermark-slope-for-high-mark/20171127-140339
base: git://git.cmpxchg.org/linux-mmotm.git master
config: i386-randconfig-s0-201748 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All errors (new ones prefixed by >>):

mm/page_alloc.o: In function `__setup_per_zone_wmarks':
>> mm/page_alloc.c:7031: undefined reference to `__umoddi3'
>> mm/page_alloc.c:7031: undefined reference to `__udivdi3'
>> mm/page_alloc.c:7031: undefined reference to `__udivdi3'

vim +7031 mm/page_alloc.c

6977
6978 static void __setup_per_zone_wmarks(void)
6979 {
6980 unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
6981 unsigned long lowmem_pages = 0;
6982 struct zone *zone;
6983 unsigned long flags;
6984
6985 /* Calculate total number of !ZONE_HIGHMEM pages */
6986 for_each_zone(zone) {
6987 if (!is_highmem(zone))
6988 lowmem_pages += zone->managed_pages;
6989 }
6990
6991 for_each_zone(zone) {
6992 u64 tmp;
6993 u64 tmp_high;
6994
6995 spin_lock_irqsave(&zone->lock, flags);
6996 tmp = (u64)pages_min * zone->managed_pages;
6997 do_div(tmp, lowmem_pages);
6998 if (is_highmem(zone)) {
6999 /*
7000 * __GFP_HIGH and PF_MEMALLOC allocations usually don't
7001 * need highmem pages, so cap pages_min to a small
7002 * value here.
7003 *
7004 * The WMARK_HIGH-WMARK_LOW and (WMARK_LOW-WMARK_MIN)
7005 * deltas control asynch page reclaim, and so should
7006 * not be capped for highmem.
7007 */
7008 unsigned long min_pages;
7009
7010 min_pages = zone->managed_pages / 1024;
7011 min_pages = clamp(min_pages, SWAP_CLUSTER_MAX, 128UL);
7012 zone->watermark[WMARK_MIN] = min_pages;
7013 } else {
7014 /*
7015 * If it's a lowmem zone, reserve a number of pages
7016 * proportionate to the zone's size.
7017 */
7018 zone->watermark[WMARK_MIN] = tmp;
7019 }
7020
7021 /*
7022 * Set the kswapd watermarks distance according to the
7023 * scale factor in proportion to available memory, but
7024 * ensure a minimum size on small systems.
7025 */
7026 tmp = max_t(u64, tmp >> 2,
7027 mult_frac(zone->managed_pages,
7028 watermark_scale_factor, 10000));
7029
7030 zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + tmp;
> 7031 tmp_high = mult_frac(tmp, watermark_high_factor_slope, 100);
7032 zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + tmp_high;
7033
7034
7035 spin_unlock_irqrestore(&zone->lock, flags);
7036 }
7037
7038 /* update totalreserve_pages */
7039 calculate_totalreserve_pages();
7040 }
7041

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

Attachment: .config.gz
Description: application/gzip