From: kernel test robot <lkp@intel.com>
To: Gregory Price <gourry.memverge@gmail.com>, linux-mm@kvack.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-api@vger.kernel.org, linux-arch@vger.kernel.org,
linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
arnd@arndb.de, tglx@linutronix.de, luto@kernel.org,
mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
x86@kernel.org, hpa@zytor.com, mhocko@kernel.org, tj@kernel.org,
ying.huang@intel.com, gregory.price@memverge.com, corbet@lwn.net,
rakie.kim@sk.com, hyeongtak.ji@sk.com, honggyu.kim@sk.com,
vtavarespetr@micron.com, peterz@infradead.org,
jgroves@micron.com, ravis.opensrc@micron.com,
sthanneeru@micron.com, emirakhur@micron.com, Hasan.Maruf@amd.com
Subject: Re: [PATCH v2 02/11] mm/mempolicy: introduce MPOL_WEIGHTED_INTERLEAVE for weighted interleaving
Date: Sun, 10 Dec 2023 05:24:03 +0800 [thread overview]
Message-ID: <202312100543.ix4jxw81-lkp@intel.com> (raw)
In-Reply-To: <20231209065931.3458-3-gregory.price@memverge.com>
Hi Gregory,
kernel test robot noticed the following build warnings:
[auto build test WARNING on akpm-mm/mm-everything]
[also build test WARNING on deller-parisc/for-next powerpc/next powerpc/fixes s390/features jcmvbkbc-xtensa/xtensa-for-next arnd-asm-generic/master linus/master v6.7-rc4 next-20231208]
[cannot apply to tip/x86/asm geert-m68k/for-next geert-m68k/for-linus]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Gregory-Price/mm-mempolicy-implement-the-sysfs-based-weighted_interleave-interface/20231209-150314
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20231209065931.3458-3-gregory.price%40memverge.com
patch subject: [PATCH v2 02/11] mm/mempolicy: introduce MPOL_WEIGHTED_INTERLEAVE for weighted interleaving
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20231210/202312100543.ix4jxw81-lkp@intel.com/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231210/202312100543.ix4jxw81-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312100543.ix4jxw81-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> mm/mempolicy.c:2355:3: warning: variable 'weight_total' is uninitialized when used here [-Wuninitialized]
weight_total += weight;
^~~~~~~~~~~~
mm/mempolicy.c:2341:27: note: initialize the variable 'weight_total' to silence this warning
unsigned int weight_total;
^
= 0
1 warning generated.
vim +/weight_total +2355 mm/mempolicy.c
2329
2330 static unsigned long alloc_pages_bulk_array_weighted_interleave(gfp_t gfp,
2331 struct mempolicy *pol, unsigned long nr_pages,
2332 struct page **page_array)
2333 {
2334 struct task_struct *me = current;
2335 unsigned long total_allocated = 0;
2336 unsigned long nr_allocated;
2337 unsigned long rounds;
2338 unsigned long node_pages, delta;
2339 unsigned char weight;
2340 unsigned char weights[MAX_NUMNODES];
2341 unsigned int weight_total;
2342 unsigned long rem_pages = nr_pages;
2343 nodemask_t nodes = pol->nodes;
2344 int nnodes, node, prev_node;
2345 int i;
2346
2347 /* Stabilize the nodemask on the stack */
2348 barrier();
2349
2350 nnodes = nodes_weight(nodes);
2351
2352 /* Collect weights and save them on stack so they don't change */
2353 for_each_node_mask(node, nodes) {
2354 weight = iw_table[node];
> 2355 weight_total += weight;
2356 weights[node] = weight;
2357 }
2358
2359 /* Continue allocating from most recent node and adjust the nr_pages */
2360 if (pol->wil.cur_weight) {
2361 node = next_node_in(me->il_prev, nodes);
2362 node_pages = pol->wil.cur_weight;
2363 if (node_pages > rem_pages)
2364 node_pages = rem_pages;
2365 nr_allocated = __alloc_pages_bulk(gfp, node, NULL, node_pages,
2366 NULL, page_array);
2367 page_array += nr_allocated;
2368 total_allocated += nr_allocated;
2369 /* if that's all the pages, no need to interleave */
2370 if (rem_pages <= pol->wil.cur_weight) {
2371 pol->wil.cur_weight -= rem_pages;
2372 return total_allocated;
2373 }
2374 /* Otherwise we adjust nr_pages down, and continue from there */
2375 rem_pages -= pol->wil.cur_weight;
2376 pol->wil.cur_weight = 0;
2377 prev_node = node;
2378 }
2379
2380 /* Now we can continue allocating as if from 0 instead of an offset */
2381 rounds = rem_pages / weight_total;
2382 delta = rem_pages % weight_total;
2383 for (i = 0; i < nnodes; i++) {
2384 node = next_node_in(prev_node, nodes);
2385 weight = weights[node];
2386 node_pages = weight * rounds;
2387 if (delta) {
2388 if (delta > weight) {
2389 node_pages += weight;
2390 delta -= weight;
2391 } else {
2392 node_pages += delta;
2393 delta = 0;
2394 }
2395 }
2396 /* We may not make it all the way around */
2397 if (!node_pages)
2398 break;
2399 /* If an over-allocation would occur, floor it */
2400 if (node_pages + total_allocated > nr_pages) {
2401 node_pages = nr_pages - total_allocated;
2402 delta = 0;
2403 }
2404 nr_allocated = __alloc_pages_bulk(gfp, node, NULL, node_pages,
2405 NULL, page_array);
2406 page_array += nr_allocated;
2407 total_allocated += nr_allocated;
2408 prev_node = node;
2409 }
2410
2411 /*
2412 * Finally, we need to update me->il_prev and pol->wil.cur_weight
2413 * if there were overflow pages, but not equivalent to the node
2414 * weight, set the cur_weight to node_weight - delta and the
2415 * me->il_prev to the previous node. Otherwise if it was perfect
2416 * we can simply set il_prev to node and cur_weight to 0
2417 */
2418 if (node_pages) {
2419 me->il_prev = prev_node;
2420 node_pages %= weight;
2421 pol->wil.cur_weight = weight - node_pages;
2422 } else {
2423 me->il_prev = node;
2424 pol->wil.cur_weight = 0;
2425 }
2426
2427 return total_allocated;
2428 }
2429
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2023-12-09 21:24 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-09 6:59 [PATCH v2 00/11] mempolicy2, mbind2, and weighted interleave Gregory Price
2023-12-09 6:59 ` [PATCH v2 01/11] mm/mempolicy: implement the sysfs-based weighted_interleave interface Gregory Price
2023-12-09 6:59 ` [PATCH v2 02/11] mm/mempolicy: introduce MPOL_WEIGHTED_INTERLEAVE for weighted interleaving Gregory Price
2023-12-09 21:24 ` kernel test robot [this message]
2023-12-09 6:59 ` [PATCH v2 03/11] mm/mempolicy: refactor sanitize_mpol_flags for reuse Gregory Price
2023-12-09 6:59 ` [PATCH v2 04/11] mm/mempolicy: create struct mempolicy_args for creating new mempolicies Gregory Price
2023-12-09 6:59 ` [PATCH v2 05/11] mm/mempolicy: refactor kernel_get_mempolicy for code re-use Gregory Price
2023-12-09 6:59 ` [PATCH v2 06/11] mm/mempolicy: allow home_node to be set by mpol_new Gregory Price
2023-12-09 6:59 ` [PATCH v2 07/11] mm/mempolicy: add userland mempolicy arg structure Gregory Price
2023-12-09 6:59 ` [PATCH v2 08/11] mm/mempolicy: add set_mempolicy2 syscall Gregory Price
2023-12-09 16:46 ` kernel test robot
2023-12-09 18:24 ` kernel test robot
2023-12-09 6:59 ` [PATCH v2 09/11] mm/mempolicy: add get_mempolicy2 syscall Gregory Price
2023-12-09 6:59 ` [PATCH v2 10/11] mm/mempolicy: add the mbind2 syscall Gregory Price
2023-12-09 6:59 ` [PATCH v2 11/11] mm/mempolicy: extend set_mempolicy2 and mbind2 to support weighted interleave Gregory Price
2023-12-09 22:28 ` kernel test robot
2023-12-11 5:53 ` [PATCH v2 00/11] mempolicy2, mbind2, and " Huang, Ying
2023-12-11 16:42 ` Gregory Price
2023-12-12 7:08 ` Huang, Ying
2023-12-12 15:59 ` Gregory Price
2023-12-13 2:44 ` Huang, Ying
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=202312100543.ix4jxw81-lkp@intel.com \
--to=lkp@intel.com \
--cc=Hasan.Maruf@amd.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=emirakhur@micron.com \
--cc=gourry.memverge@gmail.com \
--cc=gregory.price@memverge.com \
--cc=honggyu.kim@sk.com \
--cc=hpa@zytor.com \
--cc=hyeongtak.ji@sk.com \
--cc=jgroves@micron.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=llvm@lists.linux.dev \
--cc=luto@kernel.org \
--cc=mhocko@kernel.org \
--cc=mingo@redhat.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=peterz@infradead.org \
--cc=rakie.kim@sk.com \
--cc=ravis.opensrc@micron.com \
--cc=sthanneeru@micron.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=vtavarespetr@micron.com \
--cc=x86@kernel.org \
--cc=ying.huang@intel.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;
as well as URLs for NNTP newsgroup(s).