Aaro Koskinen <aaro.koskinen@xxxxxx> writes: > Hi, > > On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote: >> the upstream kernel fails to build mips:nlm_xlp_defconfig, >> mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly >> other targets, with errors such as >> >> arch/mips/kernel/smp.c:211:2: error: >> passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier >> from pointer target type >> arch/mips/kernel/process.c:52:2: error: >> passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier >> from pointer target type >> arch/mips/cavium-octeon/smp.c:242:2: error: >> passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier >> from pointer target type >> >> The problem was introduced with commit 8dd928915a73 (" mips: fix up >> obsolete cpu function usage"). I would send a patch to fix it, but I >> am not sure if removing 'volatile' from the variable declaration(s) >> would be a good idea. > > I think removing volatile from cpu_callin_map declaration should be OK, > since test_cpu (only reader) uses test_bit which takes care of it: > > static inline int test_bit(int nr, const volatile unsigned long *addr) No, that got replaced too, with cpumask_test_cpu AFAICT. You can open-code it, like so: test_bit(0, cpumask_bits(cpu_callin_map)); But you probably want to put a barrier in that loop instead of relying on volatile. Thanks, Rusty.