From: kbuild test robot <lkp@intel.com>
To: Shakeel Butt <shakeelb@google.com>
Cc: kbuild-all@01.org, Johannes Weiner <hannes@cmpxchg.org>,
Roman Gushchin <guro@fb.com>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Michal Hocko <mhocko@suse.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] memcg: localize memcg_kmem_enabled() check
Date: Thu, 3 Jan 2019 13:28:46 +0800 [thread overview]
Message-ID: <201901031355.aAkugx4T%fengguang.wu@intel.com> (raw)
In-Reply-To: <20190103003129.186555-1-shakeelb@google.com>
[-- Attachment #1: Type: text/plain, Size: 7959 bytes --]
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@virtuozzo.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31241 bytes --]
WARNING: multiple messages have this Message-ID
From: kbuild test robot <lkp@intel.com>
To: Shakeel Butt <shakeelb@google.com>
Cc: kbuild-all@01.org, Johannes Weiner <hannes@cmpxchg.org>,
Roman Gushchin <guro@fb.com>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Michal Hocko <mhocko@suse.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org, Shakeel Butt <shakeelb@google.com>
Subject: Re: [PATCH] memcg: localize memcg_kmem_enabled() check
Date: Thu, 3 Jan 2019 13:28:46 +0800 [thread overview]
Message-ID: <201901031355.aAkugx4T%fengguang.wu@intel.com> (raw)
Message-ID: <20190103052846.8ZIkfdfBRKD9w4uPL2bkFGRdtCW6Qc27Ue4Q7fbzBBI@z> (raw)
In-Reply-To: <20190103003129.186555-1-shakeelb@google.com>
[-- Attachment #1: Type: text/plain, Size: 7959 bytes --]
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@virtuozzo.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31241 bytes --]
next prev parent reply other threads:[~2019-01-03 5:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-03 0:31 Shakeel Butt
2019-01-03 0:31 ` Shakeel Butt
2019-01-03 5:03 ` kbuild test robot
2019-01-03 5:03 ` kbuild test robot
2019-01-03 5:28 ` kbuild test robot [this message]
2019-01-03 5:28 ` kbuild test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201901031355.aAkugx4T%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=kbuild-all@01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=shakeelb@google.com \
--cc=vdavydov.dev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox