On Thu, 22 Apr 2010 16:38:55 PDT, akpm@linux-foundation.org said: > The mm-of-the-moment snapshot 2010-04-22-16-38 has been uploaded to > > http://userweb.kernel.org/~akpm/mmotm/ Found this in numa-introduce-numa_mem_id-effective-local-memory-node-id.patch: +#ifndef cpu_to_mem +#define cpu_to_mem(cpu) (void)(cpu),0) +#endif The resulting paren mismatch causes an error cascade in 2 other patches: numa-in-kernel-profiling-use-cpu_to_mem-for-per-cpu-allocations.patch causes build errors: CC kernel/profile.o kernel/profile.c: In function ‘profile_cpu_callback’: kernel/profile.c:366: error: void value not ignored as it ought to be kernel/profile.c:366: warning: left-hand operand of comma expression has no effect kernel/profile.c:366: warning: statement with no effect kernel/profile.c:366: error: expected ‘;’ before ‘)’ token kernel/profile.c:366: error: expected statement before ‘)’ token kernel/profile.c: In function ‘create_hash_tables’: kernel/profile.c:568: error: void value not ignored as it ought to be kernel/profile.c:568: error: expected identifier or ‘(’ before numeric constant make[1]: *** [kernel/profile.o] Error 1 make: *** [kernel] Error 2 numa-slab-use-numa_mem_id-for-slab-local-memory-node.patch causes a whole raft of issues: CC mm/slab.o mm/slab.c: In function ‘cpuup_canceled’: mm/slab.c:1156: error: void value not ignored as it ought to be mm/slab.c:1156: error: expected identifier or ‘(’ before numeric constant mm/slab.c: In function ‘cpuup_prepare’: mm/slab.c:1221: error: void value not ignored as it ought to be mm/slab.c:1221: error: expected identifier or ‘(’ before numeric constant mm/slab.c: In function ‘kmem_cache_init’: mm/slab.c:1506: error: ‘numa_node’ undeclared (first use in this function) mm/slab.c:1506: error: (Each undeclared identifier is reported only once mm/slab.c:1506: error: for each function it appears in.) mm/slab.c:1506: warning: type defaults to ‘int’ in declaration of ‘pscr_ret__’ mm/slab.c:1506: warning: type defaults to ‘int’ in declaration of ‘type name’ mm/slab.c:1506: warning: cast from pointer to integer of different size mm/slab.c:1506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:1506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:1506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:1506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c: In function ‘setup_cpu_cache’: mm/slab.c:2148: error: ‘numa_node’ undeclared (first use in this function) mm/slab.c:2148: warning: type defaults to ‘int’ in declaration of ‘pscr_ret__’ mm/slab.c:2148: warning: type defaults to ‘int’ in declaration of ‘type name’ mm/slab.c:2148: warning: cast from pointer to integer of different size mm/slab.c:2148: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:2148: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:2148: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:2148: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c: In function ‘do_drain’: mm/slab.c:2506: error: ‘numa_node’ undeclared (first use in this function) mm/slab.c:2506: warning: type defaults to ‘int’ in declaration of ‘pscr_ret__’ mm/slab.c:2506: warning: type defaults to ‘int’ in declaration of ‘type name’ mm/slab.c:2506: warning: cast from pointer to integer of different size mm/slab.c:2506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:2506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:2506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:2506: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c: In function ‘cache_alloc_refill’: mm/slab.c:3039: error: ‘numa_node’ undeclared (first use in this function) mm/slab.c:3039: warning: type defaults to ‘int’ in declaration of ‘pscr_ret__’ mm/slab.c:3039: warning: type defaults to ‘int’ in declaration of ‘type name’ mm/slab.c:3039: warning: cast from pointer to integer of different size mm/slab.c:3039: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:3039: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:3039: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:3039: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c: In function ‘cache_flusharray’: mm/slab.c:3575: error: ‘numa_node’ undeclared (first use in this function) mm/slab.c:3575: warning: type defaults to ‘int’ in declaration of ‘pscr_ret__’ mm/slab.c:3575: warning: type defaults to ‘int’ in declaration of ‘type name’ mm/slab.c:3575: warning: cast from pointer to integer of different size mm/slab.c:3575: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:3575: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:3575: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:3575: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c: In function ‘do_tune_cpucache’: mm/slab.c:4009: error: invalid use of void expression mm/slab.c:4009: error: too few arguments to function ‘alloc_arraycache’ mm/slab.c:4009: warning: left-hand operand of comma expression has no effect mm/slab.c:4010: warning: left-hand operand of comma expression has no effect mm/slab.c:4010: warning: left-hand operand of comma expression has no effect mm/slab.c:4010: warning: statement with no effect mm/slab.c:4010: error: expected ‘;’ before ‘)’ token mm/slab.c:4010: error: expected statement before ‘)’ token mm/slab.c:4031: error: expected ‘]’ before ‘)’ token mm/slab.c:4031: warning: passing argument 1 of ‘spin_lock_irq’ from incompatible pointer type include/linux/spinlock.h:307: note: expected ‘struct spinlock_t *’ but argument is of type ‘struct kmem_list3 **’ mm/slab.c:4031: error: expected ‘;’ before ‘]’ token mm/slab.c:4031: error: expected statement before ‘]’ token mm/slab.c:4031: error: expected expression before ‘->’ token mm/slab.c:4031: error: expected statement before ‘)’ token mm/slab.c:4032: error: invalid use of void expression mm/slab.c:4032: error: too many arguments to function ‘free_block’ mm/slab.c:4032: error: expected ‘;’ before ‘)’ token mm/slab.c:4032: error: expected statement before ‘)’ token mm/slab.c:4033: error: expected ‘]’ before ‘)’ token mm/slab.c:4033: warning: passing argument 1 of ‘spin_unlock_irq’ from incompatible pointer type include/linux/spinlock.h:332: note: expected ‘struct spinlock_t *’ but argument is of type ‘struct kmem_list3 **’ mm/slab.c:4033: error: expected ‘;’ before ‘]’ token mm/slab.c:4033: error: expected statement before ‘]’ token mm/slab.c:4033: error: expected expression before ‘->’ token mm/slab.c:4033: error: expected statement before ‘)’ token mm/slab.c: In function ‘cache_reap’: mm/slab.c:4139: error: ‘numa_node’ undeclared (first use in this function) mm/slab.c:4139: warning: type defaults to ‘int’ in declaration of ‘pscr_ret__’ mm/slab.c:4139: warning: type defaults to ‘int’ in declaration of ‘type name’ mm/slab.c:4139: warning: cast from pointer to integer of different size mm/slab.c:4139: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:4139: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:4139: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ mm/slab.c:4139: warning: type defaults to ‘int’ in declaration of ‘pfo_ret__’ make[1]: *** [mm/slab.o] Error 1 make: *** [mm] Error 2