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

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

 



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


[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