When including SMP support in the Usermode 2.6.4-uml1-r0 kernel, compile fails. In /usr/src/linux-2.6.4-uml1-r0/include/linux/spinlock.h a conditional include of <asm/spinlock.h> is done : #ifdef CONFIG_SMP #include <asm/spinlock.h> ..... The asm/spinlock.h file does not exist in the tree. Reproducible: Always Steps to Reproduce: 1. make ARCH=um menuconfig 2. In menuconfig, include SMP support 3. make ARCH=um Actual Results: Give loads of errors, including the message: <asm/spinlock.h>: no such file or directory. Expected Results: compile the kernel
Do you still get this issue with usermode-sources-2.6.6-r1?
Still doesn't work with usermode-sources-2.6.6-r1 and Highmem doesn't work either. Also note that if I disable Tracing thread support, Enable kernel debugging symbols or Enable ptrace proxy I'm not able to build the kernel. When Symmetric multi-processing support is enabled; In file included from include/linux/fs.h:21, from include/linux/proc_fs.h:6, from init/main.c:17: include/linux/kobject.h: At top level: include/linux/kobject.h:143: error: field `rwsem' has incomplete type In file included from include/linux/fs.h:286, from include/linux/proc_fs.h:6, from init/main.c:17: include/linux/quota.h:48: error: syntax error before "dq_list_lock" include/linux/quota.h:48: warning: type defaults to `int' in declaration of `dq_list_lock' include/linux/quota.h:48: warning: data definition has no type or storage class include/linux/quota.h:49: error: syntax error before "dq_data_lock" include/linux/quota.h:49: warning: type defaults to `int' in declaration of `dq_data_lock' include/linux/quota.h:49: warning: data definition has no type or storage class In file included from include/linux/fs.h:286, from include/linux/proc_fs.h:6, from init/main.c:17: include/linux/quota.h:218: error: field `dq_wait_unused' has incomplete type include/linux/quota.h:286: error: field `dqptr_sem' has incomplete type In file included from include/linux/proc_fs.h:6, from init/main.c:17: include/linux/fs.h:328: error: syntax error before "spinlock_t" include/linux/fs.h:328: warning: no semicolon at end of struct or union include/linux/fs.h:336: error: conflicting types for `flags' include/linux/signal.h:17: error: previous declaration of `flags' include/linux/fs.h:338: error: syntax error before "private_lock" include/linux/fs.h:338: warning: type defaults to `int' in declaration of `private_lock' include/linux/fs.h:338: warning: data definition has no type or storage class include/linux/fs.h:341: error: syntax error before '}' token include/linux/fs.h: In function `mapping_mapped': include/linux/fs.h:382: error: dereferencing pointer to incomplete type include/linux/fs.h:383: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `mapping_writably_mapped': include/linux/fs.h:394: error: dereferencing pointer to incomplete type include/linux/fs.h: At top level: include/linux/fs.h:428: error: syntax error before "spinlock_t" include/linux/fs.h:428: warning: no semicolon at end of struct or union include/linux/fs.h:465: error: syntax error before '}' token include/linux/fs.h: In function `i_size_read': include/linux/fs.h:484: error: dereferencing pointer to incomplete type include/linux/fs.h:485: error: dereferencing pointer to incomplete type include/linux/fs.h:486: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `i_size_write': include/linux/fs.h:504: error: dereferencing pointer to incomplete type include/linux/fs.h:505: error: dereferencing pointer to incomplete type include/linux/fs.h:506: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `iminor': include/linux/fs.h:518: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `imajor': include/linux/fs.h:523: error: dereferencing pointer to incomplete type include/linux/fs.h: At top level: include/linux/fs.h:529: error: syntax error before "rwlock_t" include/linux/fs.h:529: warning: no semicolon at end of struct or union include/linux/fs.h:534: error: syntax error before '}' token include/linux/fs.h:562: error: field `f_owner' has incomplete type include/linux/fs.h:576: error: syntax error before "spinlock_t" include/linux/fs.h:576: warning: no semicolon at end of struct or union include/linux/fs.h:579: error: syntax error before '}' token include/linux/fs.h:580: error: syntax error before "files_lock" include/linux/fs.h:580: warning: type defaults to `int' in declaration of `files_lock' include/linux/fs.h:580: warning: data definition has no type or storage class In file included from include/linux/proc_fs.h:6, from init/main.c:17: include/linux/fs.h:627: error: field `fl_wait' has incomplete type In file included from include/linux/proc_fs.h:6, from init/main.c:17: include/linux/fs.h:716: error: syntax error before "sb_lock" include/linux/fs.h:716: warning: type defaults to `int' in declaration of `sb_lock' include/linux/fs.h:716: warning: data definition has no type or storage class include/linux/fs.h:736: error: field `s_umount' has incomplete type include/linux/fs.h:754: error: field `s_wait_unfrozen' has incomplete type include/linux/fs.h: In function `touch_atime': include/linux/fs.h:972: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `file_accessed': include/linux/fs.h:977: error: dereferencing pointer to incomplete type include/linux/fs.h:977: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `locks_verify_locked': include/linux/fs.h:1153: error: dereferencing pointer to incomplete type include/linux/fs.h:1153: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `locks_verify_area': include/linux/fs.h:1162: error: dereferencing pointer to incomplete type include/linux/fs.h:1162: error: dereferencing pointer to incomplete type include/linux/fs.h:1162: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `locks_verify_truncate': include/linux/fs.h:1171: error: dereferencing pointer to incomplete type include/linux/fs.h:1171: error: dereferencing pointer to incomplete type include/linux/fs.h:1171: error: dereferencing pointer to incomplete type include/linux/fs.h:1174: error: dereferencing pointer to incomplete type include/linux/fs.h:1174: error: dereferencing pointer to incomplete type include/linux/fs.h:1175: error: dereferencing pointer to incomplete type include/linux/fs.h:1175: error: dereferencing pointer to incomplete type include/linux/fs.h:1176: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `break_lease': include/linux/fs.h:1183: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `invalidate_remote_inode': include/linux/fs.h:1285: error: dereferencing pointer to incomplete type include/linux/fs.h:1285: error: dereferencing pointer to incomplete type include/linux/fs.h:1286: error: dereferencing pointer to incomplete type include/linux/fs.h:1287: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `put_write_access': include/linux/fs.h:1310: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `allow_write_access': include/linux/fs.h:1315: error: dereferencing pointer to incomplete type In file included from include/linux/proc_fs.h:6, from init/main.c:17: include/linux/fs.h: In function `iget': include/linux/fs.h:1353: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `insert_inode_hash': include/linux/fs.h:1370: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `do_generic_file_read': include/linux/fs.h:1420: error: dereferencing pointer to incomplete type include/linux/fs.h:1421: error: dereferencing pointer to incomplete type include/linux/fs.h: In function `parent_ino': include/linux/fs.h:1518: error: dereferencing pointer to incomplete type include/linux/fs.h:1519: error: dereferencing pointer to incomplete type include/linux/fs.h:1520: error: dereferencing pointer to incomplete type In file included from init/main.c:17: include/linux/proc_fs.h: At top level: include/linux/proc_fs.h:245: error: field `vfs_inode' has incomplete type include/linux/proc_fs.h: In function `PROC_I': include/linux/proc_fs.h:250: warning: type defaults to `int' in declaration of `__mptr' include/linux/proc_fs.h:250: warning: initialization from incompatible pointer type In file included from init/main.c:27: include/linux/smp_lock.h: At top level: include/linux/smp_lock.h:10: error: syntax error before "kernel_flag" include/linux/smp_lock.h:10: warning: type defaults to `int' in declaration of `kernel_flag' include/linux/smp_lock.h:10: warning: data definition has no type or storage class include/linux/smp_lock.h: In function `release_kernel_lock': include/linux/smp_lock.h:22: error: dereferencing pointer to incomplete type include/linux/smp_lock.h: In function `reacquire_kernel_lock': include/linux/smp_lock.h:31: error: dereferencing pointer to incomplete type include/linux/smp_lock.h: In function `lock_kernel': include/linux/smp_lock.h:44: error: dereferencing pointer to incomplete type include/linux/smp_lock.h:47: error: dereferencing pointer to incomplete type include/linux/smp_lock.h: In function `unlock_kernel': include/linux/smp_lock.h:52: error: dereferencing pointer to incomplete type include/linux/smp_lock.h:53: error: dereferencing pointer to incomplete type In file included from init/main.c:31: include/linux/tty.h: At top level: include/linux/tty.h:264: error: field `write_wait' has incomplete type include/linux/tty.h:265: error: field `read_wait' has incomplete type include/linux/tty.h:294: error: syntax error before "spinlock_t" include/linux/tty.h:294: warning: no semicolon at end of struct or union include/linux/tty.h:297: error: syntax error before '}' token include/linux/tty.h: In function `tty_devnum': include/linux/tty.h:395: error: dereferencing pointer to incomplete type include/linux/tty.h:395: error: dereferencing pointer to incomplete type include/linux/tty.h:395: error: dereferencing pointer to incomplete type In file included from include/linux/security.h:31, from init/main.c:35: include/linux/shm.h: At top level: include/linux/shm.h:77: error: field `shm_perm' has incomplete type In file included from include/linux/security.h:32, from init/main.c:35: include/linux/msg.h:79: error: field `q_perm' has incomplete type In file included from include/linux/skbuff.h:26, from include/linux/security.h:34, from init/main.c:35: include/linux/mm.h: In function `do_mmap': include/linux/mm.h:567: error: dereferencing pointer to incomplete type include/linux/mm.h: In function `__vma_unlink': include/linux/mm.h:582: error: dereferencing pointer to incomplete type include/linux/mm.h:583: error: dereferencing pointer to incomplete type include/linux/mm.h:584: error: dereferencing pointer to incomplete type In file included from include/linux/skbuff.h:29, from include/linux/security.h:34, from init/main.c:35: include/linux/net.h: At top level: include/linux/net.h:83: error: field `wait' has incomplete type In file included from include/linux/security.h:34, from init/main.c:35: include/linux/skbuff.h:122: error: syntax error before "spinlock_t" include/linux/skbuff.h:122: warning: no semicolon at end of struct or union include/linux/skbuff.h: In function `skb_queue_empty': include/linux/skbuff.h:316: error: dereferencing pointer to incomplete type include/linux/skbuff.h: In function `skb_queue_len': include/linux/skbuff.h:487: error: dereferencing pointer to incomplete type include/linux/skbuff.h: In function `skb_queue_head_init': include/linux/skbuff.h:492: error: dereferencing pointer to incomplete type include/linux/skbuff.h:493: error: dereferencing pointer to incomplete type include/linux/skbuff.h:493: error: dereferencing pointer to incomplete type include/linux/skbuff.h:494: error: dereferencing pointer to incomplete type include/linux/skbuff.h: In function `__skb_queue_head': include/linux/skbuff.h:521: error: dereferencing pointer to incomplete type include/linux/skbuff.h: In function `__skb_queue_tail': include/linux/skbuff.h:546: error: dereferencing pointer to incomplete type include/linux/skbuff.h: In function `__skb_dequeue': include/linux/skbuff.h:574: error: dereferencing pointer to incomplete type include/linux/skbuff.h: In function `__skb_insert': include/linux/skbuff.h:596: error: dereferencing pointer to incomplete type include/linux/skbuff.h: In function `__skb_unlink': include/linux/skbuff.h:617: error: dereferencing pointer to incomplete type In file included from init/main.c:35: include/linux/security.h: In function `cap_netlink_send': include/linux/security.h:58: error: dereferencing pointer to incomplete type In file included from init/main.c:41: include/linux/writeback.h: At top level: include/linux/writeback.h:9: error: syntax error before "inode_lock" include/linux/writeback.h:9: warning: type defaults to `int' in declaration of `inode_lock' include/linux/writeback.h:9: warning: data definition has no type or storage class include/linux/writeback.h: In function `current_is_pdflush': include/linux/writeback.h:19: error: dereferencing pointer to incomplete type include/linux/writeback.h: In function `wait_on_inode': include/linux/writeback.h:67: error: dereferencing pointer to incomplete type init/main.c: At top level: include/linux/aio.h:135: error: storage size of `ring_info' isn't known include/linux/sched.h:233: error: storage size of `default_kioctx' isn't known include/linux/sched.h:343: error: storage size of `it_timer' isn't known include/linux/fs.h:430: error: storage size of `i_alloc_sem' isn't known include/linux/fs.h:436: error: storage size of `i_data' isn't known make[1]: *** [init/main.o] Error 1 make: *** [init] Error 2 When Highmem support is enabled; CC net/ipv4/devinet.o CC net/ipv4/af_inet.o CC net/ipv4/igmp.o CC net/ipv4/sysctl_net_ipv4.o CC net/ipv4/fib_frontend.o CC net/ipv4/fib_semantics.o CC net/ipv4/fib_hash.o CC net/ipv4/proc.o LD net/ipv4/built-in.o CC net/netlink/af_netlink.o LD net/netlink/built-in.o CC net/packet/af_packet.o LD net/packet/built-in.o CC net/sched/sch_generic.o LD net/sched/built-in.o CC net/unix/af_unix.o CC net/unix/garbage.o CC net/unix/sysctl_net_unix.o LD net/unix/unix.o LD net/unix/built-in.o CC net/sysctl_net.o LD net/built-in.o CC lib/kref.o LD lib/built-in.o CC lib/bitmap.o CC lib/bust_spinlocks.o CC lib/cmdline.o CC lib/ctype.o CC lib/dec_and_lock.o CC lib/div64.o CC lib/dump_stack.o CC lib/errno.o CC lib/extable.o CC lib/idr.o CC lib/int_sqrt.o CC lib/kobject.o CC lib/parser.o CC lib/radix-tree.o CC lib/rbtree.o CC lib/rwsem-spinlock.o CC lib/string.o CC lib/vsprintf.o AR lib/lib.a GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 KSYM .tmp_kallsyms1.S AS .tmp_kallsyms1.o LD .tmp_vmlinux2 KSYM .tmp_kallsyms2.S AS .tmp_kallsyms2.o MAIN arch/um/main.o LD vmlinux make[1]: `arch/um/dyn.lds.s' is up to date. gcc -Wl,-T,arch/um/dyn.lds.s -Wl,-rpath,/lib -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc \ -o linux arch/um/main.o vmlinux -L/usr/lib -lutil vmlinux(.text+0x49cb): In function `mem_init': arch/um/kernel/mem.c:71: undefined reference to `phys_page' vmlinux(.text+0xab0e): In function `sig_handler': arch/um/kernel/trap_user.c:101: undefined reference to `sig_handler_common_tt' vmlinux(.text+0xab5e): In function `alarm_handler': arch/um/kernel/trap_user.c:114: undefined reference to `sig_handler_common_tt' vmlinux(.text+0xaae2): In function `usr2_handler': arch/um/kernel/trap_user.c:74: undefined reference to `syscall_handler_tt' vmlinux(.text+0xb3f7): In function `not_dead_yet': arch/um/kernel/umid.c:191: undefined reference to `tracing_pid' vmlinux(.text+0x16f95): In function `register_winch': arch/um/drivers/chan_user.c:193: undefined reference to `is_tracer_winch' vmlinux(.init.text+0x23b6): In function `kmap_init': include/asm/pgtable.h:394: undefined reference to `pte_offset' collect2: ld returned 1 exit status make: *** [linux] Error 1
It seems there are quite a few compilation issues with this patchset, unfortunately they appear to be upstream issues. Making bug 49277 the place to monitor any progress. FYI, the new UML 2.6.7-2 patch still fails to compile with SMP support. *** This bug has been marked as a duplicate of 49277 ***