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