[xilinx-xlnx:xlnx_rebase_v5.15_LTS 480/1091] include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
kernel test robot
lkp at intel.com
Thu Apr 7 06:02:30 PDT 2022
Hi Michal,
FYI, the error/warning still remains.
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.15_LTS
head: 031eb9ce665429a9574c95f89bcc488fd0ba0ec1
commit: 23b920bb9d53a7fcb8e9938f70228ae4d137f244 [480/1091] microblaze: Enable experimental SMP functionality
config: microblaze-randconfig-r021-20220407 (https://download.01.org/0day-ci/archive/20220407/202204072110.MFw9v8To-lkp@intel.com/config)
compiler: microblaze-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/Xilinx/linux-xlnx/commit/23b920bb9d53a7fcb8e9938f70228ae4d137f244
git remote add xilinx-xlnx https://github.com/Xilinx/linux-xlnx
git fetch --no-tags xilinx-xlnx xlnx_rebase_v5.15_LTS
git checkout 23b920bb9d53a7fcb8e9938f70228ae4d137f244
# 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=microblaze SHELL=/bin/bash arch/microblaze/kernel/ kernel/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
All error/warnings (new ones prefixed by >>):
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/spinlock.h:63,
from include/linux/mmzone.h:8,
from include/linux/gfp.h:6,
from include/linux/mm.h:10,
from arch/microblaze/kernel/ptrace.c:28:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
--
arch/microblaze/kernel/smp.c: In function 'smp_prepare_cpus':
>> arch/microblaze/kernel/smp.c:197:43: warning: parameter 'max_cpus' set but not used [-Wunused-but-set-parameter]
197 | void __init smp_prepare_cpus(unsigned int max_cpus)
| ~~~~~~~~~~~~~^~~~~~~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/spinlock.h:63,
from include/linux/mmzone.h:8,
from include/linux/gfp.h:6,
from include/linux/slab.h:15,
from kernel/fork.c:16:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
kernel/fork.c:162:13: warning: no previous prototype for 'arch_release_task_struct' [-Wmissing-prototypes]
162 | void __weak arch_release_task_struct(struct task_struct *tsk)
| ^~~~~~~~~~~~~~~~~~~~~~~~
kernel/fork.c:764:20: warning: no previous prototype for 'arch_task_cache_init' [-Wmissing-prototypes]
764 | void __init __weak arch_task_cache_init(void) { }
| ^~~~~~~~~~~~~~~~~~~~
kernel/fork.c:859:12: warning: no previous prototype for 'arch_dup_task_struct' [-Wmissing-prototypes]
859 | int __weak arch_dup_task_struct(struct task_struct *dst,
| ^~~~~~~~~~~~~~~~~~~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/spinlock.h:63,
from include/linux/mmzone.h:8,
from include/linux/gfp.h:6,
from include/linux/mm.h:10,
from kernel/exit.c:8:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
kernel/exit.c:1810:13: warning: no previous prototype for 'abort' [-Wmissing-prototypes]
1810 | __weak void abort(void)
| ^~~~~
--
In file included from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/kallsyms.h:10,
from kernel/kallsyms.c:15:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
kernel/kallsyms.c:566:12: warning: no previous prototype for 'arch_get_kallsym' [-Wmissing-prototypes]
566 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value,
| ^~~~~~~~~~~~~~~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/spinlock.h:63,
from include/linux/mmzone.h:8,
from include/linux/gfp.h:6,
from include/linux/mm.h:10,
from include/linux/ring_buffer.h:5,
from kernel/trace/trace.c:15:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
kernel/trace/trace.c: In function 'trace_check_vprintf':
kernel/trace/trace.c:3836:17: warning: function 'trace_check_vprintf' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
3836 | trace_seq_vprintf(&iter->seq, iter->fmt, ap);
| ^~~~~~~~~~~~~~~~~
kernel/trace/trace.c:3891:17: warning: function 'trace_check_vprintf' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
3891 | trace_seq_vprintf(&iter->seq, p, ap);
| ^~~~~~~~~~~~~~~~~
In file included from kernel/trace/trace.c:8620:
kernel/trace/trace_selftest.c: In function 'trace_selftest_function_regs':
kernel/trace/trace_selftest.c:571:13: warning: variable 'len' set but not used [-Wunused-but-set-variable]
571 | int len;
| ^~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/rcupdate.h:29,
from include/linux/rculist.h:11,
from include/linux/pid.h:5,
from include/linux/sched.h:14,
from include/linux/blkdev.h:5,
from kernel/trace/blktrace.c:10:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c: In function '__trace_note_message':
kernel/trace/blktrace.c:148:63: warning: parameter 'blkcg' set but not used [-Wunused-but-set-parameter]
148 | void __trace_note_message(struct blk_trace *bt, struct blkcg *blkcg,
| ~~~~~~~~~~~~~~^~~~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/spinlock.h:63,
from include/linux/ipc.h:5,
from include/uapi/linux/sem.h:5,
from include/linux/sem.h:5,
from include/linux/compat.h:14,
from include/linux/filter.h:10,
from kernel/bpf/core.c:21:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
kernel/bpf/core.c:1360:12: warning: no previous prototype for 'bpf_probe_read_kernel' [-Wmissing-prototypes]
1360 | u64 __weak bpf_probe_read_kernel(void *dst, u32 size, const void *unsafe_ptr)
| ^~~~~~~~~~~~~~~~~~~~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/spinlock.h:63,
from include/linux/mmzone.h:8,
from include/linux/gfp.h:6,
from include/linux/slab.h:15,
from kernel/bpf/verifier.c:9:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
In file included from include/linux/bpf_verifier.h:9,
from kernel/bpf/verifier.c:12:
kernel/bpf/verifier.c: In function 'jit_subprogs':
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'unsigned int (*)(const void *, const struct bpf_insn *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12472:37: note: in expansion of macro 'BPF_CAST_CALL'
12472 | insn->imm = BPF_CAST_CALL(func[subprog]->bpf_func) -
| ^~~~~~~~~~~~~
kernel/bpf/verifier.c: In function 'do_misc_fixups':
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'void * (*)(struct bpf_map *, void *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12953:45: note: in expansion of macro 'BPF_CAST_CALL'
12953 | insn->imm = BPF_CAST_CALL(ops->map_lookup_elem) -
| ^~~~~~~~~~~~~
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'int (*)(struct bpf_map *, void *, void *, u64)' {aka 'int (*)(struct bpf_map *, void *, void *, long long unsigned int)'} to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12957:45: note: in expansion of macro 'BPF_CAST_CALL'
12957 | insn->imm = BPF_CAST_CALL(ops->map_update_elem) -
| ^~~~~~~~~~~~~
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'int (*)(struct bpf_map *, void *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12961:45: note: in expansion of macro 'BPF_CAST_CALL'
12961 | insn->imm = BPF_CAST_CALL(ops->map_delete_elem) -
| ^~~~~~~~~~~~~
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'int (*)(struct bpf_map *, void *, u64)' {aka 'int (*)(struct bpf_map *, void *, long long unsigned int)'} to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12965:45: note: in expansion of macro 'BPF_CAST_CALL'
12965 | insn->imm = BPF_CAST_CALL(ops->map_push_elem) -
| ^~~~~~~~~~~~~
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'int (*)(struct bpf_map *, void *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12969:45: note: in expansion of macro 'BPF_CAST_CALL'
12969 | insn->imm = BPF_CAST_CALL(ops->map_pop_elem) -
| ^~~~~~~~~~~~~
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'int (*)(struct bpf_map *, void *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12973:45: note: in expansion of macro 'BPF_CAST_CALL'
12973 | insn->imm = BPF_CAST_CALL(ops->map_peek_elem) -
| ^~~~~~~~~~~~~
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'int (*)(struct bpf_map *, u32, u64)' {aka 'int (*)(struct bpf_map *, unsigned int, long long unsigned int)'} to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
kernel/bpf/verifier.c:12977:45: note: in expansion of macro 'BPF_CAST_CALL'
12977 | insn->imm = BPF_CAST_CALL(ops->map_redirect) -
| ^~~~~~~~~~~~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/spinlock.h:63,
from include/linux/debugobjects.h:6,
from include/linux/timer.h:8,
from include/linux/workqueue.h:9,
from include/linux/bpf.h:9,
from kernel/bpf/hashtab.c:5:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
In file included from kernel/bpf/hashtab.c:8:
kernel/bpf/hashtab.c: In function 'htab_map_gen_lookup':
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'void * (*)(struct bpf_map *, void *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
include/linux/filter.h:374:28: note: in definition of macro 'BPF_EMIT_CALL'
374 | .imm = ((FUNC) - __bpf_call_base) })
| ^~~~
kernel/bpf/hashtab.c:671:33: note: in expansion of macro 'BPF_CAST_CALL'
671 | *insn++ = BPF_EMIT_CALL(BPF_CAST_CALL(__htab_map_lookup_elem));
| ^~~~~~~~~~~~~
kernel/bpf/hashtab.c: In function 'htab_lru_map_gen_lookup':
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'void * (*)(struct bpf_map *, void *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
include/linux/filter.h:374:28: note: in definition of macro 'BPF_EMIT_CALL'
374 | .imm = ((FUNC) - __bpf_call_base) })
| ^~~~
kernel/bpf/hashtab.c:712:33: note: in expansion of macro 'BPF_CAST_CALL'
712 | *insn++ = BPF_EMIT_CALL(BPF_CAST_CALL(__htab_map_lookup_elem));
| ^~~~~~~~~~~~~
kernel/bpf/hashtab.c: In function 'htab_of_map_gen_lookup':
include/linux/filter.h:366:18: warning: cast between incompatible function types from 'void * (*)(struct bpf_map *, void *)' to 'u64 (*)(u64, u64, u64, u64, u64)' {aka 'long long unsigned int (*)(long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'} [-Wcast-function-type]
366 | ((u64 (*)(u64, u64, u64, u64, u64))(x))
| ^
include/linux/filter.h:374:28: note: in definition of macro 'BPF_EMIT_CALL'
374 | .imm = ((FUNC) - __bpf_call_base) })
| ^~~~
kernel/bpf/hashtab.c:2400:33: note: in expansion of macro 'BPF_CAST_CALL'
2400 | *insn++ = BPF_EMIT_CALL(BPF_CAST_CALL(__htab_map_lookup_elem));
| ^~~~~~~~~~~~~
--
In file included from include/linux/smp.h:13,
from include/linux/lockdep.h:14,
from include/linux/rcupdate.h:29,
from include/linux/rculist.h:11,
from include/linux/pid.h:5,
from include/linux/sched.h:14,
from include/linux/ptrace.h:6,
from include/uapi/asm-generic/bpf_perf_event.h:4,
from ./arch/microblaze/include/generated/uapi/asm/bpf_perf_event.h:1,
from include/uapi/linux/bpf_perf_event.h:11,
from kernel/bpf/btf.c:6:
>> include/linux/cpumask.h:95:42: error: enumerator value for 'FIX_KMAP_END' is not an integer constant
95 | #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
| ^~~~~~~
include/linux/cpumask.h:889:48: note: in expansion of macro 'cpu_possible_mask'
889 | #define num_possible_cpus() cpumask_weight(cpu_possible_mask)
| ^~~~~~~~~~~~~~~~~
arch/microblaze/include/asm/fixmap.h:50:55: note: in expansion of macro 'num_possible_cpus'
50 | FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_MAX_IDX * num_possible_cpus()) - 1,
| ^~~~~~~~~~~~~~~~~
kernel/bpf/btf.c: In function 'btf_seq_show':
kernel/bpf/btf.c:5748:29: warning: function 'btf_seq_show' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
5748 | seq_vprintf((struct seq_file *)show->target, fmt, args);
| ^~~~~~~~
kernel/bpf/btf.c: In function 'btf_snprintf_show':
kernel/bpf/btf.c:5785:9: warning: function 'btf_snprintf_show' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
5785 | len = vsnprintf(show->target, ssnprintf->len_left, fmt, args);
| ^~~
..
vim +/FIX_KMAP_END +95 include/linux/cpumask.h
^1da177e4c3f41 Linus Torvalds 2005-04-16 49
^1da177e4c3f41 Linus Torvalds 2005-04-16 50 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 51 * The following particular system cpumasks and operations manage
b3199c025d1646 Rusty Russell 2008-12-30 52 * possible, present, active and online cpus.
^1da177e4c3f41 Linus Torvalds 2005-04-16 53 *
b3199c025d1646 Rusty Russell 2008-12-30 54 * cpu_possible_mask- has bit 'cpu' set iff cpu is populatable
b3199c025d1646 Rusty Russell 2008-12-30 55 * cpu_present_mask - has bit 'cpu' set iff cpu is populated
b3199c025d1646 Rusty Russell 2008-12-30 56 * cpu_online_mask - has bit 'cpu' set iff cpu available to scheduler
b3199c025d1646 Rusty Russell 2008-12-30 57 * cpu_active_mask - has bit 'cpu' set iff cpu available to migration
^1da177e4c3f41 Linus Torvalds 2005-04-16 58 *
b3199c025d1646 Rusty Russell 2008-12-30 59 * If !CONFIG_HOTPLUG_CPU, present == possible, and active == online.
^1da177e4c3f41 Linus Torvalds 2005-04-16 60 *
b3199c025d1646 Rusty Russell 2008-12-30 61 * The cpu_possible_mask is fixed at boot time, as the set of CPU id's
b3199c025d1646 Rusty Russell 2008-12-30 62 * that it is possible might ever be plugged in at anytime during the
b3199c025d1646 Rusty Russell 2008-12-30 63 * life of that system boot. The cpu_present_mask is dynamic(*),
b3199c025d1646 Rusty Russell 2008-12-30 64 * representing which CPUs are currently plugged in. And
b3199c025d1646 Rusty Russell 2008-12-30 65 * cpu_online_mask is the dynamic subset of cpu_present_mask,
b3199c025d1646 Rusty Russell 2008-12-30 66 * indicating those CPUs available for scheduling.
b3199c025d1646 Rusty Russell 2008-12-30 67 *
b3199c025d1646 Rusty Russell 2008-12-30 68 * If HOTPLUG is enabled, then cpu_possible_mask is forced to have
^1da177e4c3f41 Linus Torvalds 2005-04-16 69 * all NR_CPUS bits set, otherwise it is just the set of CPUs that
^1da177e4c3f41 Linus Torvalds 2005-04-16 70 * ACPI reports present at boot.
^1da177e4c3f41 Linus Torvalds 2005-04-16 71 *
b3199c025d1646 Rusty Russell 2008-12-30 72 * If HOTPLUG is enabled, then cpu_present_mask varies dynamically,
^1da177e4c3f41 Linus Torvalds 2005-04-16 73 * depending on what ACPI reports as currently plugged in, otherwise
b3199c025d1646 Rusty Russell 2008-12-30 74 * cpu_present_mask is just a copy of cpu_possible_mask.
^1da177e4c3f41 Linus Torvalds 2005-04-16 75 *
b3199c025d1646 Rusty Russell 2008-12-30 76 * (*) Well, cpu_present_mask is dynamic in the hotplug case. If not
b3199c025d1646 Rusty Russell 2008-12-30 77 * hotplug, it's a copy of cpu_possible_mask, hence fixed at boot.
^1da177e4c3f41 Linus Torvalds 2005-04-16 78 *
^1da177e4c3f41 Linus Torvalds 2005-04-16 79 * Subtleties:
^1da177e4c3f41 Linus Torvalds 2005-04-16 80 * 1) UP arch's (NR_CPUS == 1, CONFIG_SMP not defined) hardcode
^1da177e4c3f41 Linus Torvalds 2005-04-16 81 * assumption that their single CPU is online. The UP
b3199c025d1646 Rusty Russell 2008-12-30 82 * cpu_{online,possible,present}_masks are placebos. Changing them
^1da177e4c3f41 Linus Torvalds 2005-04-16 83 * will have no useful affect on the following num_*_cpus()
^1da177e4c3f41 Linus Torvalds 2005-04-16 84 * and cpu_*() macros in the UP case. This ugliness is a UP
^1da177e4c3f41 Linus Torvalds 2005-04-16 85 * optimization - don't waste any instructions or memory references
^1da177e4c3f41 Linus Torvalds 2005-04-16 86 * asking if you're online or how many CPUs there are if there is
^1da177e4c3f41 Linus Torvalds 2005-04-16 87 * only one CPU.
^1da177e4c3f41 Linus Torvalds 2005-04-16 88 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 89
4b804c85dc37db Rasmus Villemoes 2016-01-20 90 extern struct cpumask __cpu_possible_mask;
4b804c85dc37db Rasmus Villemoes 2016-01-20 91 extern struct cpumask __cpu_online_mask;
4b804c85dc37db Rasmus Villemoes 2016-01-20 92 extern struct cpumask __cpu_present_mask;
4b804c85dc37db Rasmus Villemoes 2016-01-20 93 extern struct cpumask __cpu_active_mask;
e40f74c535b8a0 Peter Zijlstra 2021-01-19 94 extern struct cpumask __cpu_dying_mask;
5aec01b834fd6f Rasmus Villemoes 2016-01-20 @95 #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
5aec01b834fd6f Rasmus Villemoes 2016-01-20 96 #define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
5aec01b834fd6f Rasmus Villemoes 2016-01-20 97 #define cpu_present_mask ((const struct cpumask *)&__cpu_present_mask)
5aec01b834fd6f Rasmus Villemoes 2016-01-20 98 #define cpu_active_mask ((const struct cpumask *)&__cpu_active_mask)
e40f74c535b8a0 Peter Zijlstra 2021-01-19 99 #define cpu_dying_mask ((const struct cpumask *)&__cpu_dying_mask)
b3199c025d1646 Rusty Russell 2008-12-30 100
:::::: The code at line 95 was first introduced by commit
:::::: 5aec01b834fd6f8ca49d1aeede665b950d0c148e kernel/cpu.c: eliminate cpu_*_mask
:::::: TO: Rasmus Villemoes <linux at rasmusvillemoes.dk>
:::::: CC: Linus Torvalds <torvalds at linux-foundation.org>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
More information about the linux-arm-kernel
mailing list