From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 2/2] sched/fair: Adjust the allowed NUMA imbalance when SD_NUMA spans multiple LLCs
Date: Fri, 04 Feb 2022 09:30:18 +0800 [thread overview]
Message-ID: <202202040638.UP73q8Dl-lkp@intel.com> (raw)
In-Reply-To: <20220203144652.12540-3-mgorman@techsingularity.net>
[-- Attachment #1: Type: text/plain, Size: 18268 bytes --]
Hi Mel,
I love your patch! Perhaps something to improve:
[auto build test WARNING on tip/sched/core]
[also build test WARNING on tip/master linux/master linus/master v5.17-rc2 next-20220203]
[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]
url: https://github.com/0day-ci/linux/commits/Mel-Gorman/Adjust-NUMA-imbalance-for-multiple-LLCs/20220203-225129
base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git ec2444530612a886b406e2830d7f314d1a07d4bb
config: parisc-randconfig-s031-20220131 (https://download.01.org/0day-ci/archive/20220204/202202040638.UP73q8Dl-lkp(a)intel.com/config)
compiler: hppa-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/0day-ci/linux/commit/81a6d8d3e9199b22ab27ea3ade91a0b0c18d0811
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Mel-Gorman/Adjust-NUMA-imbalance-for-multiple-LLCs/20220203-225129
git checkout 81a6d8d3e9199b22ab27ea3ade91a0b0c18d0811
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=parisc SHELL=/bin/bash kernel/sched/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/sched/topology.c:461:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct perf_domain *pd @@ got struct perf_domain [noderef] __rcu *pd @@
kernel/sched/topology.c:461:19: sparse: expected struct perf_domain *pd
kernel/sched/topology.c:461:19: sparse: got struct perf_domain [noderef] __rcu *pd
kernel/sched/topology.c:623:49: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:623:49: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:623:49: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:694:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *parent @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:694:50: sparse: expected struct sched_domain *parent
kernel/sched/topology.c:694:50: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:701:55: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain [noderef] __rcu *[noderef] __rcu child @@ got struct sched_domain *[assigned] tmp @@
kernel/sched/topology.c:701:55: sparse: expected struct sched_domain [noderef] __rcu *[noderef] __rcu child
kernel/sched/topology.c:701:55: sparse: got struct sched_domain *[assigned] tmp
kernel/sched/topology.c:711:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] tmp @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:711:29: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/topology.c:711:29: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:716:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:716:20: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:716:20: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:737:13: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] tmp @@ got struct sched_domain [noderef] __rcu *sd @@
kernel/sched/topology.c:737:13: sparse: expected struct sched_domain *[assigned] tmp
kernel/sched/topology.c:737:13: sparse: got struct sched_domain [noderef] __rcu *sd
kernel/sched/topology.c:899:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:899:70: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:899:70: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:928:59: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:928:59: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:928:59: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:974:57: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:974:57: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:974:57: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:976:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sibling @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:976:25: sparse: expected struct sched_domain *sibling
kernel/sched/topology.c:976:25: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:984:55: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:984:55: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:984:55: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:986:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *sibling @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:986:25: sparse: expected struct sched_domain *sibling
kernel/sched/topology.c:986:25: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1056:62: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sched_domain *sd @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1056:62: sparse: expected struct sched_domain *sd
kernel/sched/topology.c:1056:62: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1160:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *child @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:1160:40: sparse: expected struct sched_domain *child
kernel/sched/topology.c:1160:40: sparse: got struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1571:43: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain [noderef] __rcu *child @@ got struct sched_domain *child @@
kernel/sched/topology.c:1571:43: sparse: expected struct sched_domain [noderef] __rcu *child
kernel/sched/topology.c:1571:43: sparse: got struct sched_domain *child
kernel/sched/topology.c:2130:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain [noderef] __rcu *parent @@ got struct sched_domain *sd @@
kernel/sched/topology.c:2130:31: sparse: expected struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2130:31: sparse: got struct sched_domain *sd
kernel/sched/topology.c:2233:57: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2233:57: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:2233:57: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2254:56: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sched_domain *child @@ got struct sched_domain [noderef] __rcu *child @@
kernel/sched/topology.c:2254:56: sparse: expected struct sched_domain *child
kernel/sched/topology.c:2254:56: sparse: got struct sched_domain [noderef] __rcu *child
>> kernel/sched/topology.c:2284:39: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *top_p @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2284:39: sparse: expected struct sched_domain *top_p
kernel/sched/topology.c:2284:39: sparse: got struct sched_domain [noderef] __rcu *parent
>> kernel/sched/topology.c:2286:45: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] top @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2286:45: sparse: expected struct sched_domain *[assigned] top
kernel/sched/topology.c:2286:45: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2287:47: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *top_p @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2287:47: sparse: expected struct sched_domain *top_p
kernel/sched/topology.c:2287:47: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2253:57: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2253:57: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:2253:57: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:2303:57: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/topology.c:2303:57: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/topology.c:2303:57: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c: note: in included file:
kernel/sched/sched.h:1744:9: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/sched.h:1744:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/sched.h:1744:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/sched.h:1757:9: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/sched.h:1757:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/sched.h:1757:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/sched.h:1744:9: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/sched.h:1744:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/sched.h:1744:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/sched.h:1757:9: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sched_domain *[assigned] sd @@ got struct sched_domain [noderef] __rcu *parent @@
kernel/sched/sched.h:1757:9: sparse: expected struct sched_domain *[assigned] sd
kernel/sched/sched.h:1757:9: sparse: got struct sched_domain [noderef] __rcu *parent
kernel/sched/topology.c:929:31: sparse: sparse: dereference of noderef expression
kernel/sched/topology.c:1592:19: sparse: sparse: dereference of noderef expression
vim +2284 kernel/sched/topology.c
2186
2187 /*
2188 * Build sched domains for a given set of CPUs and attach the sched domains
2189 * to the individual CPUs
2190 */
2191 static int
2192 build_sched_domains(const struct cpumask *cpu_map, struct sched_domain_attr *attr)
2193 {
2194 enum s_alloc alloc_state = sa_none;
2195 struct sched_domain *sd;
2196 struct s_data d;
2197 struct rq *rq = NULL;
2198 int i, ret = -ENOMEM;
2199 bool has_asym = false;
2200
2201 if (WARN_ON(cpumask_empty(cpu_map)))
2202 goto error;
2203
2204 alloc_state = __visit_domain_allocation_hell(&d, cpu_map);
2205 if (alloc_state != sa_rootdomain)
2206 goto error;
2207
2208 /* Set up domains for CPUs specified by the cpu_map: */
2209 for_each_cpu(i, cpu_map) {
2210 struct sched_domain_topology_level *tl;
2211
2212 sd = NULL;
2213 for_each_sd_topology(tl) {
2214
2215 if (WARN_ON(!topology_span_sane(tl, cpu_map, i)))
2216 goto error;
2217
2218 sd = build_sched_domain(tl, cpu_map, attr, sd, i);
2219
2220 has_asym |= sd->flags & SD_ASYM_CPUCAPACITY;
2221
2222 if (tl == sched_domain_topology)
2223 *per_cpu_ptr(d.sd, i) = sd;
2224 if (tl->flags & SDTL_OVERLAP)
2225 sd->flags |= SD_OVERLAP;
2226 if (cpumask_equal(cpu_map, sched_domain_span(sd)))
2227 break;
2228 }
2229 }
2230
2231 /* Build the groups for the domains */
2232 for_each_cpu(i, cpu_map) {
2233 for (sd = *per_cpu_ptr(d.sd, i); sd; sd = sd->parent) {
2234 sd->span_weight = cpumask_weight(sched_domain_span(sd));
2235 if (sd->flags & SD_OVERLAP) {
2236 if (build_overlap_sched_groups(sd, i))
2237 goto error;
2238 } else {
2239 if (build_sched_groups(sd, i))
2240 goto error;
2241 }
2242 }
2243 }
2244
2245 /*
2246 * Calculate an allowed NUMA imbalance such that LLCs do not get
2247 * imbalanced.
2248 */
2249 for_each_cpu(i, cpu_map) {
2250 unsigned int imb = 0;
2251 unsigned int imb_span = 1;
2252
2253 for (sd = *per_cpu_ptr(d.sd, i); sd; sd = sd->parent) {
2254 struct sched_domain *child = sd->child;
2255
2256 if (!(sd->flags & SD_SHARE_PKG_RESOURCES) && child &&
2257 (child->flags & SD_SHARE_PKG_RESOURCES)) {
2258 struct sched_domain *top, *top_p;
2259 unsigned int nr_llcs;
2260
2261 /*
2262 * For a single LLC per node, allow an
2263 * imbalance up to 25% of the node. This is an
2264 * arbitrary cutoff based on SMT-2 to balance
2265 * between memory bandwidth and avoiding
2266 * premature sharing of HT resources and SMT-4
2267 * or SMT-8 *may* benefit from a different
2268 * cutoff.
2269 *
2270 * For multiple LLCs, allow an imbalance
2271 * until multiple tasks would share an LLC
2272 * on one node while LLCs on another node
2273 * remain idle.
2274 */
2275 nr_llcs = sd->span_weight / child->span_weight;
2276 if (nr_llcs == 1)
2277 imb = sd->span_weight >> 2;
2278 else
2279 imb = nr_llcs;
2280 sd->imb_numa_nr = imb;
2281
2282 /* Set span based on the first NUMA domain. */
2283 top = sd;
> 2284 top_p = top->parent;
2285 while (top_p && !(top_p->flags & SD_NUMA)) {
> 2286 top = top->parent;
2287 top_p = top->parent;
2288 }
2289 imb_span = top_p ? top_p->span_weight : sd->span_weight;
2290 } else {
2291 int factor = max(1U, (sd->span_weight / imb_span));
2292
2293 sd->imb_numa_nr = imb * factor;
2294 }
2295 }
2296 }
2297
2298 /* Calculate CPU capacity for physical packages and nodes */
2299 for (i = nr_cpumask_bits-1; i >= 0; i--) {
2300 if (!cpumask_test_cpu(i, cpu_map))
2301 continue;
2302
2303 for (sd = *per_cpu_ptr(d.sd, i); sd; sd = sd->parent) {
2304 claim_allocations(i, sd);
2305 init_sched_groups_capacity(i, sd);
2306 }
2307 }
2308
2309 /* Attach the domains */
2310 rcu_read_lock();
2311 for_each_cpu(i, cpu_map) {
2312 rq = cpu_rq(i);
2313 sd = *per_cpu_ptr(d.sd, i);
2314
2315 /* Use READ_ONCE()/WRITE_ONCE() to avoid load/store tearing: */
2316 if (rq->cpu_capacity_orig > READ_ONCE(d.rd->max_cpu_capacity))
2317 WRITE_ONCE(d.rd->max_cpu_capacity, rq->cpu_capacity_orig);
2318
2319 cpu_attach_domain(sd, d.rd, i);
2320 }
2321 rcu_read_unlock();
2322
2323 if (has_asym)
2324 static_branch_inc_cpuslocked(&sched_asym_cpucapacity);
2325
2326 if (rq && sched_debug_verbose) {
2327 pr_info("root domain span: %*pbl (max cpu_capacity = %lu)\n",
2328 cpumask_pr_args(cpu_map), rq->rd->max_cpu_capacity);
2329 }
2330
2331 ret = 0;
2332 error:
2333 __free_domain_allocs(&d, alloc_state, cpu_map);
2334
2335 return ret;
2336 }
2337
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next prev parent reply other threads:[~2022-02-04 1:30 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-03 14:46 [PATCH v5 0/2] Adjust NUMA imbalance for multiple LLCs Mel Gorman
2022-02-03 14:46 ` [PATCH 1/2] sched/fair: Improve consistency of allowed NUMA balance calculations Mel Gorman
2022-02-03 14:46 ` [PATCH 2/2] sched/fair: Adjust the allowed NUMA imbalance when SD_NUMA spans multiple LLCs Mel Gorman
2022-02-04 1:30 ` kernel test robot [this message]
2022-02-04 7:06 ` Srikar Dronamraju
2022-02-04 9:04 ` Mel Gorman
2022-02-04 15:07 ` Nayak, KPrateek (K Prateek)
2022-02-04 16:45 ` Mel Gorman
-- strict thread matches above, loose matches on Subject: below --
2022-02-08 9:43 [PATCH v6 0/2] Adjust NUMA imbalance for " Mel Gorman
2022-02-08 9:43 ` [PATCH 2/2] sched/fair: Adjust the allowed NUMA imbalance when SD_NUMA spans " Mel Gorman
2022-02-08 16:19 ` Gautham R. Shenoy
2022-02-09 5:10 ` K Prateek Nayak
2022-02-09 10:33 ` Mel Gorman
2022-02-11 19:02 ` Jirka Hladky
2022-02-14 10:27 ` Srikar Dronamraju
2022-02-14 11:03 ` Vincent Guittot
2021-12-10 9:33 [PATCH v4 0/2] Adjust NUMA imbalance for " Mel Gorman
2021-12-10 9:33 ` [PATCH 2/2] sched/fair: Adjust the allowed NUMA imbalance when SD_NUMA spans " Mel Gorman
2021-12-13 8:28 ` Gautham R. Shenoy
2021-12-13 13:01 ` Mel Gorman
2021-12-13 14:47 ` Gautham R. Shenoy
2021-12-15 11:52 ` Gautham R. Shenoy
2021-12-15 12:25 ` Mel Gorman
2021-12-16 18:33 ` Gautham R. Shenoy
2021-12-20 11:12 ` Mel Gorman
2021-12-21 15:03 ` Gautham R. Shenoy
2021-12-21 17:13 ` Vincent Guittot
2021-12-22 8:52 ` Jirka Hladky
2022-01-04 19:52 ` Jirka Hladky
2022-01-05 10:42 ` Mel Gorman
2022-01-05 10:49 ` Mel Gorman
2022-01-10 15:53 ` Vincent Guittot
2022-01-12 10:24 ` Mel Gorman
2021-12-17 19:54 ` Gautham R. Shenoy
2021-12-01 15:18 [PATCH v3 0/2] Adjust NUMA imbalance for " Mel Gorman
2021-12-01 15:18 ` [PATCH 2/2] sched/fair: Adjust the allowed NUMA imbalance when SD_NUMA spans " Mel Gorman
2021-12-03 8:15 ` Barry Song
2021-12-03 10:50 ` Mel Gorman
2021-12-03 11:14 ` Barry Song
2021-12-03 13:27 ` Mel Gorman
2021-12-04 10:40 ` Peter Zijlstra
2021-12-06 8:48 ` Gautham R. Shenoy
2021-12-06 14:51 ` Peter Zijlstra
2021-12-06 15:12 ` Mel Gorman
2021-12-09 14:23 ` Valentin Schneider
2021-12-09 15:43 ` Mel Gorman
2021-11-25 15:19 [PATCH 0/2] Adjust NUMA imbalance for " Mel Gorman
2021-11-25 15:19 ` [PATCH 2/2] sched/fair: Adjust the allowed NUMA imbalance when SD_NUMA spans " Mel Gorman
2021-11-26 23:22 ` kernel 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=202202040638.UP73q8Dl-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.