Hi Shakeel, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.20 next-20190102] [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/Shakeel-Butt/memcg-localize-memcg_kmem_enabled-check/20190103-120255 config: x86_64-randconfig-x011-201900 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): mm/page_alloc.c: In function 'free_pages_prepare': mm/page_alloc.c:1059:3: error: implicit declaration of function '__memcg_kmem_uncharge'; did you mean 'memcg_kmem_uncharge'? [-Werror=implicit-function-declaration] __memcg_kmem_uncharge(page, order); ^~~~~~~~~~~~~~~~~~~~~ memcg_kmem_uncharge In file included from include/asm-generic/bug.h:5:0, from arch/x86/include/asm/bug.h:83, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from mm/page_alloc.c:18: mm/page_alloc.c: In function '__alloc_pages_nodemask': mm/page_alloc.c:4553:15: error: implicit declaration of function '__memcg_kmem_charge'; did you mean 'memcg_kmem_charge'? [-Werror=implicit-function-declaration] unlikely(__memcg_kmem_charge(page, gfp_mask, order) != 0)) { ^ include/linux/compiler.h:58:30: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ >> mm/page_alloc.c:4552:2: note: in expansion of macro 'if' if (memcg_kmem_enabled() && (gfp_mask & __GFP_ACCOUNT) && page && ^~ include/linux/compiler.h:48:24: note: in expansion of macro '__branch_check__' # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x))) ^~~~~~~~~~~~~~~~ >> mm/page_alloc.c:4553:6: note: in expansion of macro 'unlikely' unlikely(__memcg_kmem_charge(page, gfp_mask, order) != 0)) { ^~~~~~~~ cc1: some warnings being treated as errors vim +/if +4552 mm/page_alloc.c 9cd755587 Mel Gorman 2017-02-24 4493 9cd755587 Mel Gorman 2017-02-24 4494 /* 9cd755587 Mel Gorman 2017-02-24 4495 * This is the 'heart' of the zoned buddy allocator. 9cd755587 Mel Gorman 2017-02-24 4496 */ 9cd755587 Mel Gorman 2017-02-24 4497 struct page * 04ec6264f Vlastimil Babka 2017-07-06 4498 __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid, 04ec6264f Vlastimil Babka 2017-07-06 4499 nodemask_t *nodemask) 9cd755587 Mel Gorman 2017-02-24 4500 { 9cd755587 Mel Gorman 2017-02-24 4501 struct page *page; 9cd755587 Mel Gorman 2017-02-24 4502 unsigned int alloc_flags = ALLOC_WMARK_LOW; f19360f01 Tetsuo Handa 2017-09-08 4503 gfp_t alloc_mask; /* The gfp_t that was actually used for allocation */ 9cd755587 Mel Gorman 2017-02-24 4504 struct alloc_context ac = { }; 9cd755587 Mel Gorman 2017-02-24 4505 c63ae43ba Michal Hocko 2018-11-16 4506 /* c63ae43ba Michal Hocko 2018-11-16 4507 * There are several places where we assume that the order value is sane c63ae43ba Michal Hocko 2018-11-16 4508 * so bail out early if the request is out of bound. c63ae43ba Michal Hocko 2018-11-16 4509 */ c63ae43ba Michal Hocko 2018-11-16 4510 if (unlikely(order >= MAX_ORDER)) { c63ae43ba Michal Hocko 2018-11-16 4511 WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN)); c63ae43ba Michal Hocko 2018-11-16 4512 return NULL; c63ae43ba Michal Hocko 2018-11-16 4513 } c63ae43ba Michal Hocko 2018-11-16 4514 9cd755587 Mel Gorman 2017-02-24 4515 gfp_mask &= gfp_allowed_mask; f19360f01 Tetsuo Handa 2017-09-08 4516 alloc_mask = gfp_mask; 04ec6264f Vlastimil Babka 2017-07-06 4517 if (!prepare_alloc_pages(gfp_mask, order, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags)) 9cd755587 Mel Gorman 2017-02-24 4518 return NULL; 9cd755587 Mel Gorman 2017-02-24 4519 a380b40ab Huaisheng Ye 2018-06-07 4520 finalise_ac(gfp_mask, &ac); 5bb1b1697 Mel Gorman 2016-05-19 4521 6bb154504 Mel Gorman 2018-12-28 4522 /* 6bb154504 Mel Gorman 2018-12-28 4523 * Forbid the first pass from falling back to types that fragment 6bb154504 Mel Gorman 2018-12-28 4524 * memory until all local zones are considered. 6bb154504 Mel Gorman 2018-12-28 4525 */ 0a79cdad5 Mel Gorman 2018-12-28 4526 alloc_flags |= alloc_flags_nofragment(ac.preferred_zoneref->zone, gfp_mask); 6bb154504 Mel Gorman 2018-12-28 4527 5117f45d1 Mel Gorman 2009-06-16 4528 /* First allocation attempt */ a9263751e Vlastimil Babka 2015-02-11 4529 page = get_page_from_freelist(alloc_mask, order, alloc_flags, &ac); 4fcb09711 Mel Gorman 2016-05-19 4530 if (likely(page)) 4fcb09711 Mel Gorman 2016-05-19 4531 goto out; 4fcb09711 Mel Gorman 2016-05-19 4532 21caf2fc1 Ming Lei 2013-02-22 4533 /* 7dea19f9e Michal Hocko 2017-05-03 4534 * Apply scoped allocation constraints. This is mainly about GFP_NOFS 7dea19f9e Michal Hocko 2017-05-03 4535 * resp. GFP_NOIO which has to be inherited for all allocation requests 7dea19f9e Michal Hocko 2017-05-03 4536 * from a particular context which has been marked by 7dea19f9e Michal Hocko 2017-05-03 4537 * memalloc_no{fs,io}_{save,restore}. 21caf2fc1 Ming Lei 2013-02-22 4538 */ 7dea19f9e Michal Hocko 2017-05-03 4539 alloc_mask = current_gfp_context(gfp_mask); c9ab0c4fb Mel Gorman 2015-11-06 4540 ac.spread_dirty_pages = false; 91fbdc0f8 Andrew Morton 2015-02-11 4541 4741526b8 Mel Gorman 2016-05-19 4542 /* 4741526b8 Mel Gorman 2016-05-19 4543 * Restore the original nodemask if it was potentially replaced with 4741526b8 Mel Gorman 2016-05-19 4544 * &cpuset_current_mems_allowed to optimize the fast-path attempt. 4741526b8 Mel Gorman 2016-05-19 4545 */ e47483bca Vlastimil Babka 2017-01-24 4546 if (unlikely(ac.nodemask != nodemask)) 4741526b8 Mel Gorman 2016-05-19 4547 ac.nodemask = nodemask; 16096c25b Vlastimil Babka 2017-01-24 4548 a9263751e Vlastimil Babka 2015-02-11 4549 page = __alloc_pages_slowpath(alloc_mask, order, &ac); 11e33f6a5 Mel Gorman 2009-06-16 4550 4fcb09711 Mel Gorman 2016-05-19 4551 out: c4159a75b Vladimir Davydov 2016-08-08 @4552 if (memcg_kmem_enabled() && (gfp_mask & __GFP_ACCOUNT) && page && 3d5b7b20b Shakeel Butt 2019-01-02 @4553 unlikely(__memcg_kmem_charge(page, gfp_mask, order) != 0)) { 4949148ad Vladimir Davydov 2016-07-26 4554 __free_pages(page, order); 4949148ad Vladimir Davydov 2016-07-26 4555 page = NULL; 4949148ad Vladimir Davydov 2016-07-26 4556 } 4949148ad Vladimir Davydov 2016-07-26 4557 4fcb09711 Mel Gorman 2016-05-19 4558 trace_mm_page_alloc(page, order, alloc_mask, ac.migratetype); 4fcb09711 Mel Gorman 2016-05-19 4559 11e33f6a5 Mel Gorman 2009-06-16 4560 return page; ^1da177e4 Linus Torvalds 2005-04-16 4561 } d239171e4 Mel Gorman 2009-06-16 4562 EXPORT_SYMBOL(__alloc_pages_nodemask); ^1da177e4 Linus Torvalds 2005-04-16 4563 :::::: The code at line 4552 was first introduced by commit :::::: c4159a75b64c0e67caededf4d7372c1b58a5f42a mm: memcontrol: only mark charged pages with PageKmemcg :::::: TO: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx> :::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip