Re: [PATCH v2 05/11] MIPS: Switch to arch_topology

From: kbuild test robot
Date: Sun Apr 12 2020 - 01:26:14 EST


Hi Jiaxun,

I love your patch! Yet something to improve:

[auto build test ERROR on driver-core/driver-core-testing]
[also build test ERROR on pm/linux-next linus/master next-20200411]
[cannot apply to tip/perf/core tip/irq/core v5.6]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Jiaxun-Yang/MIPS-Topology-DeviceTree-CPU-rework-v2/20200412-113308
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git a10c9c710f9ecea87b9f4bbb837467893b4bef01
config: mips-fuloong2e_defconfig (attached as .config)
compiler: mips64el-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.3.0 make.cross ARCH=mips

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

Note: the linux-review/Jiaxun-Yang/MIPS-Topology-DeviceTree-CPU-rework-v2/20200412-113308 HEAD 8e8e9d4f7aa74359f2199773786ffe2fbb7877d0 builds fine.
It only hurts bisectibility.

All errors (new ones prefixed by >>):

In file included from arch/mips/include/asm/mips-cps.h:104,
from arch/mips/kernel/process.c:43:
arch/mips/include/asm/mips-cm.h: In function 'mips_cm_vp_id':
>> arch/mips/include/asm/mips-cm.h:398:31: error: passing argument 1 of 'cpu_core' makes integer from pointer without a cast [-Werror=int-conversion]
398 | unsigned int core = cpu_core(&cpu_data[cpu]);
| ^~~~~~~~~~~~~~
| |
| struct cpuinfo_mips *
In file included from include/linux/topology.h:36,
from include/linux/gfp.h:9,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:18,
from include/linux/idr.h:15,
from include/linux/kernfs.h:13,
from include/linux/sysfs.h:16,
from include/linux/kobject.h:20,
from include/linux/of.h:17,
from include/linux/clocksource.h:19,
from include/linux/clockchips.h:14,
from include/linux/tick.h:8,
from arch/mips/kernel/process.c:17:
arch/mips/include/asm/topology.h:68:41: note: expected 'int' but argument is of type 'struct cpuinfo_mips *'
68 | static inline unsigned int cpu_core(int cpu)
| ~~~~^~~
In file included from arch/mips/include/asm/mips-cps.h:104,
from arch/mips/kernel/process.c:43:
>> arch/mips/include/asm/mips-cm.h:399:31: error: passing argument 1 of 'cpu_vpe_id' makes integer from pointer without a cast [-Werror=int-conversion]
399 | unsigned int vp = cpu_vpe_id(&cpu_data[cpu]);
| ^~~~~~~~~~~~~~
| |
| struct cpuinfo_mips *
In file included from include/linux/topology.h:36,
from include/linux/gfp.h:9,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:18,
from include/linux/idr.h:15,
from include/linux/kernfs.h:13,
from include/linux/sysfs.h:16,
from include/linux/kobject.h:20,
from include/linux/of.h:17,
from include/linux/clocksource.h:19,
from include/linux/clockchips.h:14,
from include/linux/tick.h:8,
from arch/mips/kernel/process.c:17:
arch/mips/include/asm/topology.h:73:43: note: expected 'int' but argument is of type 'struct cpuinfo_mips *'
73 | static inline unsigned int cpu_vpe_id(int cpu)
| ~~~~^~~
In file included from arch/mips/include/asm/mips-cps.h:104,
from arch/mips/kernel/process.c:43:
arch/mips/include/asm/mips-cm.h: In function 'mips_cm_lock_other_cpu':
>> arch/mips/include/asm/mips-cm.h:456:33: error: passing argument 1 of 'cpu_cluster' makes integer from pointer without a cast [-Werror=int-conversion]
456 | mips_cm_lock_other(cpu_cluster(d), cpu_core(d), cpu_vpe_id(d), block);
| ^
| |
| struct cpuinfo_mips *
In file included from include/linux/topology.h:36,
from include/linux/gfp.h:9,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:18,
from include/linux/idr.h:15,
from include/linux/kernfs.h:13,
from include/linux/sysfs.h:16,
from include/linux/kobject.h:20,
from include/linux/of.h:17,
from include/linux/clocksource.h:19,
from include/linux/clockchips.h:14,
from include/linux/tick.h:8,
from arch/mips/kernel/process.c:17:
arch/mips/include/asm/topology.h:63:44: note: expected 'int' but argument is of type 'struct cpuinfo_mips *'
63 | static inline unsigned int cpu_cluster(int cpu)
| ~~~~^~~
In file included from arch/mips/include/asm/mips-cps.h:104,
from arch/mips/kernel/process.c:43:
arch/mips/include/asm/mips-cm.h:456:46: error: passing argument 1 of 'cpu_core' makes integer from pointer without a cast [-Werror=int-conversion]
456 | mips_cm_lock_other(cpu_cluster(d), cpu_core(d), cpu_vpe_id(d), block);
| ^
| |
| struct cpuinfo_mips *
In file included from include/linux/topology.h:36,
from include/linux/gfp.h:9,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:18,
from include/linux/idr.h:15,
from include/linux/kernfs.h:13,
from include/linux/sysfs.h:16,
from include/linux/kobject.h:20,
from include/linux/of.h:17,
from include/linux/clocksource.h:19,
from include/linux/clockchips.h:14,
from include/linux/tick.h:8,
from arch/mips/kernel/process.c:17:
arch/mips/include/asm/topology.h:68:41: note: expected 'int' but argument is of type 'struct cpuinfo_mips *'
68 | static inline unsigned int cpu_core(int cpu)
| ~~~~^~~
In file included from arch/mips/include/asm/mips-cps.h:104,
from arch/mips/kernel/process.c:43:
arch/mips/include/asm/mips-cm.h:456:61: error: passing argument 1 of 'cpu_vpe_id' makes integer from pointer without a cast [-Werror=int-conversion]
456 | mips_cm_lock_other(cpu_cluster(d), cpu_core(d), cpu_vpe_id(d), block);
| ^
| |
| struct cpuinfo_mips *
In file included from include/linux/topology.h:36,
from include/linux/gfp.h:9,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:18,
from include/linux/idr.h:15,
from include/linux/kernfs.h:13,
from include/linux/sysfs.h:16,
from include/linux/kobject.h:20,
from include/linux/of.h:17,
from include/linux/clocksource.h:19,
from include/linux/clockchips.h:14,
from include/linux/tick.h:8,
from arch/mips/kernel/process.c:17:
arch/mips/include/asm/topology.h:73:43: note: expected 'int' but argument is of type 'struct cpuinfo_mips *'
73 | static inline unsigned int cpu_vpe_id(int cpu)
| ~~~~^~~
cc1: all warnings being treated as errors
--
arch/mips/kernel/cacheinfo.c: In function 'fill_cpumask_siblings':
arch/mips/kernel/cacheinfo.c:58:7: error: implicit declaration of function 'cpus_are_siblings' [-Werror=implicit-function-declaration]
58 | if (cpus_are_siblings(cpu, cpu1))
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/cacheinfo.c: In function 'fill_cpumask_cluster':
>> arch/mips/kernel/cacheinfo.c:65:16: error: implicit declaration of function 'cpu_cluster' [-Werror=implicit-function-declaration]
65 | int cluster = cpu_cluster(&cpu_data[cpu]);
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
--
arch/mips/kernel/proc.c: In function 'show_cpuinfo':
>> arch/mips/kernel/proc.c:141:50: error: 'struct cpuinfo_mips' has no member named 'package'
141 | seq_printf(m, "package\t\t\t: %d\n", cpu_data[n].package);
| ^
>> arch/mips/kernel/proc.c:142:45: error: passing argument 1 of 'cpu_core' makes integer from pointer without a cast [-Werror=int-conversion]
142 | seq_printf(m, "core\t\t\t: %d\n", cpu_core(&cpu_data[n]));
| ^~~~~~~~~~~~
| |
| struct cpuinfo_mips *
In file included from include/linux/topology.h:36,
from include/linux/gfp.h:9,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:18,
from include/linux/fs.h:15,
from include/linux/seq_file.h:11,
from arch/mips/kernel/proc.c:10:
arch/mips/include/asm/topology.h:68:41: note: expected 'int' but argument is of type 'struct cpuinfo_mips *'
68 | static inline unsigned int cpu_core(int cpu)
| ~~~~^~~
cc1: all warnings being treated as errors

vim +/cpu_core +398 arch/mips/include/asm/mips-cm.h

7573b94e08aeb5 Paul Burton 2015-09-22 385
7573b94e08aeb5 Paul Burton 2015-09-22 386 /**
7573b94e08aeb5 Paul Burton 2015-09-22 387 * mips_cm_vp_id() - calculate the hardware VP ID for a CPU
7573b94e08aeb5 Paul Burton 2015-09-22 388 * @cpu: the CPU whose VP ID to calculate
7573b94e08aeb5 Paul Burton 2015-09-22 389 *
7573b94e08aeb5 Paul Burton 2015-09-22 390 * Hardware such as the GIC uses identifiers for VPs which may not match the
7573b94e08aeb5 Paul Burton 2015-09-22 391 * CPU numbers used by Linux. This function calculates the hardware VP
7573b94e08aeb5 Paul Burton 2015-09-22 392 * identifier corresponding to a given CPU.
7573b94e08aeb5 Paul Burton 2015-09-22 393 *
7573b94e08aeb5 Paul Burton 2015-09-22 394 * Return: the VP ID for the CPU.
7573b94e08aeb5 Paul Burton 2015-09-22 395 */
7573b94e08aeb5 Paul Burton 2015-09-22 396 static inline unsigned int mips_cm_vp_id(unsigned int cpu)
7573b94e08aeb5 Paul Burton 2015-09-22 397 {
f875a832d20285 Paul Burton 2017-08-12 @398 unsigned int core = cpu_core(&cpu_data[cpu]);
7573b94e08aeb5 Paul Burton 2015-09-22 @399 unsigned int vp = cpu_vpe_id(&cpu_data[cpu]);
7573b94e08aeb5 Paul Burton 2015-09-22 400
7573b94e08aeb5 Paul Burton 2015-09-22 401 return (core * mips_cm_max_vp_width()) + vp;
7573b94e08aeb5 Paul Burton 2015-09-22 402 }
7573b94e08aeb5 Paul Burton 2015-09-22 403
23d5de8efb9aed Paul Burton 2015-09-22 404 #ifdef CONFIG_MIPS_CM
23d5de8efb9aed Paul Burton 2015-09-22 405
23d5de8efb9aed Paul Burton 2015-09-22 406 /**
68923cdc2eb341 Paul Burton 2017-08-12 407 * mips_cm_lock_other - lock access to redirect/other region
68923cdc2eb341 Paul Burton 2017-08-12 408 * @cluster: the other cluster to be accessed
23d5de8efb9aed Paul Burton 2015-09-22 409 * @core: the other core to be accessed
23d5de8efb9aed Paul Burton 2015-09-22 410 * @vp: the VP within the other core to be accessed
68923cdc2eb341 Paul Burton 2017-08-12 411 * @block: the register block to be accessed
23d5de8efb9aed Paul Burton 2015-09-22 412 *
68923cdc2eb341 Paul Burton 2017-08-12 413 * Configure the redirect/other region for the local core/VP (depending upon
68923cdc2eb341 Paul Burton 2017-08-12 414 * the CM revision) to target the specified @cluster, @core, @vp & register
68923cdc2eb341 Paul Burton 2017-08-12 415 * @block. Must be called before using the redirect/other region, and followed
68923cdc2eb341 Paul Burton 2017-08-12 416 * by a call to mips_cm_unlock_other() when access to the redirect/other region
68923cdc2eb341 Paul Burton 2017-08-12 417 * is complete.
68923cdc2eb341 Paul Burton 2017-08-12 418 *
68923cdc2eb341 Paul Burton 2017-08-12 419 * This function acquires a spinlock such that code between it &
68923cdc2eb341 Paul Burton 2017-08-12 420 * mips_cm_unlock_other() calls cannot be pre-empted by anything which may
68923cdc2eb341 Paul Burton 2017-08-12 421 * reconfigure the redirect/other region, and cannot be interfered with by
68923cdc2eb341 Paul Burton 2017-08-12 422 * another VP in the core. As such calls to this function should not be nested.
23d5de8efb9aed Paul Burton 2015-09-22 423 */
68923cdc2eb341 Paul Burton 2017-08-12 424 extern void mips_cm_lock_other(unsigned int cluster, unsigned int core,
68923cdc2eb341 Paul Burton 2017-08-12 425 unsigned int vp, unsigned int block);
23d5de8efb9aed Paul Burton 2015-09-22 426
23d5de8efb9aed Paul Burton 2015-09-22 427 /**
68923cdc2eb341 Paul Burton 2017-08-12 428 * mips_cm_unlock_other - unlock access to redirect/other region
23d5de8efb9aed Paul Burton 2015-09-22 429 *
68923cdc2eb341 Paul Burton 2017-08-12 430 * Must be called after mips_cm_lock_other() once all required access to the
68923cdc2eb341 Paul Burton 2017-08-12 431 * redirect/other region has been completed.
23d5de8efb9aed Paul Burton 2015-09-22 432 */
23d5de8efb9aed Paul Burton 2015-09-22 433 extern void mips_cm_unlock_other(void);
23d5de8efb9aed Paul Burton 2015-09-22 434
23d5de8efb9aed Paul Burton 2015-09-22 435 #else /* !CONFIG_MIPS_CM */
23d5de8efb9aed Paul Burton 2015-09-22 436
68923cdc2eb341 Paul Burton 2017-08-12 437 static inline void mips_cm_lock_other(unsigned int cluster, unsigned int core,
68923cdc2eb341 Paul Burton 2017-08-12 438 unsigned int vp, unsigned int block) { }
23d5de8efb9aed Paul Burton 2015-09-22 439 static inline void mips_cm_unlock_other(void) { }
23d5de8efb9aed Paul Burton 2015-09-22 440
23d5de8efb9aed Paul Burton 2015-09-22 441 #endif /* !CONFIG_MIPS_CM */
23d5de8efb9aed Paul Burton 2015-09-22 442
68923cdc2eb341 Paul Burton 2017-08-12 443 /**
68923cdc2eb341 Paul Burton 2017-08-12 444 * mips_cm_lock_other_cpu - lock access to redirect/other region
68923cdc2eb341 Paul Burton 2017-08-12 445 * @cpu: the other CPU whose register we want to access
68923cdc2eb341 Paul Burton 2017-08-12 446 *
68923cdc2eb341 Paul Burton 2017-08-12 447 * Configure the redirect/other region for the local core/VP (depending upon
68923cdc2eb341 Paul Burton 2017-08-12 448 * the CM revision) to target the specified @cpu & register @block. This is
68923cdc2eb341 Paul Burton 2017-08-12 449 * equivalent to calling mips_cm_lock_other() but accepts a Linux CPU number
68923cdc2eb341 Paul Burton 2017-08-12 450 * for convenience.
68923cdc2eb341 Paul Burton 2017-08-12 451 */
68923cdc2eb341 Paul Burton 2017-08-12 452 static inline void mips_cm_lock_other_cpu(unsigned int cpu, unsigned int block)
68923cdc2eb341 Paul Burton 2017-08-12 453 {
68923cdc2eb341 Paul Burton 2017-08-12 454 struct cpuinfo_mips *d = &cpu_data[cpu];
68923cdc2eb341 Paul Burton 2017-08-12 455
68923cdc2eb341 Paul Burton 2017-08-12 @456 mips_cm_lock_other(cpu_cluster(d), cpu_core(d), cpu_vpe_id(d), block);
68923cdc2eb341 Paul Burton 2017-08-12 457 }
68923cdc2eb341 Paul Burton 2017-08-12 458

:::::: The code at line 398 was first introduced by commit
:::::: f875a832d2028523f9b53c261b67e05a359bab8b MIPS: Abstract CPU core & VP(E) ID access through accessor functions

:::::: TO: Paul Burton <paul.burton@xxxxxxxxxx>
:::::: CC: Ralf Baechle <ralf@xxxxxxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip