Re: [norov:bitmap-tmp 7/8] arch/powerpc/xmon/xmon.c:472:64: error: expected ')' before 'return'
From: Joe Perches
Date: Thu Nov 25 2021 - 14:45:52 EST
On Fri, 2021-11-26 at 03:17 +0800, kernel test robot wrote:
> tree: https://github.com/norov/linux bitmap-tmp
> head: 75ee333c81c999b29a49810611fb160cec32217d
> commit: 29f49f10b3fbef5a88db0a7e370984297616f0fa [7/8] lib/cpumask: replace cpumask_weight with cpumask_{empty,gt,le,eq}
> config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20211126/202111260340.kCOW9xsR-lkp@xxxxxxxxx/config)
> compiler: powerpc-linux-gcc (GCC) 11.2.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/norov/linux/commit/29f49f10b3fbef5a88db0a7e370984297616f0fa
> git remote add norov https://github.com/norov/linux
> git fetch --no-tags norov bitmap-tmp
> git checkout 29f49f10b3fbef5a88db0a7e370984297616f0fa
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All errors (new ones prefixed by >>):
>
> arch/powerpc/xmon/xmon.c: In function 'wait_for_other_cpus':
> > > arch/powerpc/xmon/xmon.c:472:64: error: expected ')' before 'return'
> 472 | if (cpumask_weight_gt(&cpus_in_xmon, ncpus - 1)
> | ~ ^
> | )
> 473 | return true;
> | ~~~~~~
> > > arch/powerpc/xmon/xmon.c:476:9: error: expected expression before '}' token
> 476 | }
> | ^
It's always good to compile test patches before submitting them and:
> vim +472 arch/powerpc/xmon/xmon.c
>
> 465
> 466 static bool wait_for_other_cpus(int ncpus)
> 467 {
> 468 unsigned long timeout;
> 469
> 470 /* We wait for 2s, which is a metric "little while" */
> 471 for (timeout = 20000; timeout != 0; --timeout) {
> > 472 if (cpumask_weight_gt(&cpus_in_xmon, ncpus - 1)
> 473 return true;
> 474 udelay(100);
unrelated trivia:
It seeems this loop could consume a lot of cpu/power.
Could this use usleep_range() or maybe something else that doesn't allow
rescheduling on another cpu?
Maybe it should be something like
unsigned long timeout = jiffies + msecs_to_jiffies(2000);
while (time_before(jiffies, timeout)) {
if (cpumask_weight_gt(&cpus_in_xmon, ncpus - 1)
return true;
usleep_range(100, 200);
}