From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH] sched/rt: Support multi-criterion fitness search for
Date: Tue, 17 May 2022 01:04:29 +0800 [thread overview]
Message-ID: <202205170040.Eh9wjHXf-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 15622 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220514235513.jm7ul2y6uddj6eh2@airbuntu>
References: <20220514235513.jm7ul2y6uddj6eh2@airbuntu>
TO: Qais Yousef <qais.yousef@arm.com>
TO: Xuewen Yan <xuewen.yan94@gmail.com>
CC: Lukasz Luba <lukasz.luba@arm.com>
CC: dietmar.eggemann(a)arm.com
CC: rafael(a)kernel.org
CC: viresh.kumar(a)linaro.org
CC: mingo(a)redhat.com
CC: peterz(a)infradead.org
CC: vincent.guittot(a)linaro.org
CC: rostedt(a)goodmis.org
CC: linux-kernel(a)vger.kernel.org
CC: di.shen(a)unisoc.com
CC: "王科 (Ke Wang)" <Ke.Wang@unisoc.com>
Hi Qais,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on tip/sched/core]
[also build test WARNING on v5.18-rc7]
[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/intel-lab-lkp/linux/commits/Qais-Yousef/sched-rt-Support-multi-criterion-fitness-search-for/20220515-075732
base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 734387ec2f9d77b00276042b1fa7c95f48ee879d
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-m031-20220516 (https://download.01.org/0day-ci/archive/20220517/202205170040.Eh9wjHXf-lkp(a)intel.com/config)
compiler: gcc-11 (Debian 11.2.0-20) 11.2.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
kernel/sched/cpupri.c:157 cpupri_find_fitness() warn: we never enter this loop
kernel/sched/rt.c:2509 init_sched_rt_fitness_mask() warn: we never enter this loop
vim +157 kernel/sched/cpupri.c
a1bd02e1f28b193 kernel/sched/cpupri.c Qais Yousef 2020-03-02 125
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 126 /**
a1bd02e1f28b193 kernel/sched/cpupri.c Qais Yousef 2020-03-02 127 * cpupri_find_fitness - find the best (lowest-pri) CPU in the system
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 128 * @cp: The cpupri context
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 129 * @p: The task
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 130 * @lowest_mask: A mask to fill in with selected CPUs (or NULL)
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 131 * @fitness_fn: A pointer to a function to do custom checks whether the CPU
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 132 * fits a specific criteria so that we only return those CPUs.
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 133 *
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 134 * Note: This function returns the recommended CPUs as calculated during the
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 135 * current invocation. By the time the call returns, the CPUs may have in
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 136 * fact changed priorities any number of times. While not ideal, it is not
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 137 * an issue of correctness since the normal rebalancer logic will correct
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 138 * any discrepancies created by racing against the uncertainty of the current
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 139 * priority configuration.
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 140 *
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 141 * Return: (int)bool - CPUs were found
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 142 */
a1bd02e1f28b193 kernel/sched/cpupri.c Qais Yousef 2020-03-02 143 int cpupri_find_fitness(struct cpupri *cp, struct task_struct *p,
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 144 struct cpumask *lowest_mask,
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 145 cpumask_var_t fitness_mask[], fitness_fn_t fitness_fn[])
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 146 {
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 147 int task_pri = convert_prio(p->prio);
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 148 bool fallback_found[NUM_FITNESS_FN];
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 149 int idx, cpu, fn_idx;
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 150
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 151 BUG_ON(task_pri >= CPUPRI_NR_PRIORITIES);
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 152
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 153 if (NUM_FITNESS_FN && fitness_fn) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 154 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 155 * Clear the masks so that we can save a fallback hit in them
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 156 */
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 @157 for (fn_idx = 0; fn_idx < NUM_FITNESS_FN; fn_idx++) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 158 cpumask_clear(fitness_mask[fn_idx]);
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 159 fallback_found[fn_idx] = false;
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 160 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 161 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 162
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 163 for (idx = 0; idx < task_pri; idx++) {
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 164
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 165 if (!__cpupri_find(cp, p, lowest_mask, idx))
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 166 continue;
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 167
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 168 if (!lowest_mask || !fitness_fn)
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 169 return 1;
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 170
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 171 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 172 * We got a hit, save in our fallback masks that are empty.
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 173 *
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 174 * Note that we use fitness_mask[0] to save the fallback for
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 175 * when all fitness_fns fail to find a suitable CPU.
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 176 *
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 177 * We use lowest_mask to store the results of fitness_fn[0]
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 178 * directly.
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 179 */
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 180 if (!fallback_found[0]) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 181 cpumask_copy(fitness_mask[0], lowest_mask);
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 182 fallback_found[0] = true;
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 183 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 184 for (fn_idx = 1; fn_idx < NUM_FITNESS_FN; fn_idx++) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 185
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 186 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 187 * We just need one valid fallback at highest level
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 188 * (smallest fn_idx). We don't care about checking for
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 189 * fallback beyond this once we found one.
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 190 */
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 191 if (fallback_found[fn_idx])
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 192 break;
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 193
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 194 cpumask_copy(fitness_mask[fn_idx], lowest_mask);
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 195 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 196
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 197 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 198 * fintness_fn[0] hit always terminates the search immediately,
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 199 * so do that first.
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 200 */
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 201 for_each_cpu(cpu, lowest_mask) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 202 if (!fitness_fn[0](p, cpu))
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 203 cpumask_clear_cpu(cpu, lowest_mask);
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 204 }
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 205
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 206 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 207 * Stop searching as soon as fitness_fn[0] is happy with the
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 208 * results.
804d402fb6f6487 kernel/sched/cpupri.c Qais Yousef 2019-10-09 209 */
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 210 if (!cpumask_empty(lowest_mask))
6e0534f278199f1 kernel/sched_cpupri.c Gregory Haskins 2008-05-12 211 return 1;
6e0534f278199f1 kernel/sched_cpupri.c Gregory Haskins 2008-05-12 212
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 213 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 214 * Find a fallback CPU for the other fitness_fns.
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 215 *
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 216 * Only do this once. As soon as we get a valid fallback mask,
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 217 * we'll remember it so that when fitness_fn[0] fails for all
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 218 * priorities, we'll return this fallback mask.
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 219 *
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 220 * Remember that we use fitnss_mask[0] to store our fallback
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 221 * results for when all fitness_fns fail.
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 222 */
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 223 for (fn_idx = 1; fn_idx < NUM_FITNESS_FN; fn_idx++) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 224
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 225 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 226 * We just need one valid fallback at highest level
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 227 * (smallest fn_idx). We don't care about checking for
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 228 * fallback beyond this once we found one.
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 229 */
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 230 if (fallback_found[fn_idx])
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 231 break;
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 232
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 233 for_each_cpu(cpu, fitness_mask[fn_idx]) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 234 if (!fitness_fn[fn_idx](p, cpu))
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 235 cpumask_clear_cpu(cpu, fitness_mask[fn_idx]);
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 236 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 237
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 238 if (!cpumask_empty(fitness_mask[fn_idx]))
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 239 fallback_found[fn_idx] = true;
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 240 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 241 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 242
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 243 for (fn_idx = 1; fn_idx < NUM_FITNESS_FN; fn_idx++) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 244 if (fallback_found[fn_idx]) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 245 cpumask_copy(lowest_mask, fitness_mask[fn_idx]);
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 246 return 1;
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 247 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 248 }
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 249
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 250 /*
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 251 * No fallback from any of the fitness_fns, fallback to priority based
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 252 * lowest_mask which we store@fitness_mask[0].
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 253 */
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 254
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 255 if (fallback_found[0]) {
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 256 cpumask_copy(lowest_mask, fitness_mask[0]);
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 257 return 1;
0eee64011b1d437 kernel/sched/cpupri.c Qais Yousef 2022-05-15 258 }
d9cb236b9429044 kernel/sched/cpupri.c Qais Yousef 2020-03-02 259
6e0534f278199f1 kernel/sched_cpupri.c Gregory Haskins 2008-05-12 260 return 0;
6e0534f278199f1 kernel/sched_cpupri.c Gregory Haskins 2008-05-12 261 }
6e0534f278199f1 kernel/sched_cpupri.c Gregory Haskins 2008-05-12 262
--
0-DAY CI Kernel Test Service
https://01.org/lkp
next reply other threads:[~2022-05-16 17:04 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-16 17:04 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-05-14 23:55 [PATCH] sched: Take thermal pressure into account when determine rt fits capacity Qais Yousef
2022-05-15 0:53 ` [PATCH] sched/rt: Support multi-criterion fitness search for kernel test robot
2022-05-15 1:43 ` 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=202205170040.Eh9wjHXf-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@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.