Created attachment 53672 [details] config file in use This seems to work fine with 2.6.27.58, but fails with 2.6.38.2 and 2.6.39-rc2: $ make ARCH=um SUBARCH=i386 ... LD .tmp_vmlinux1 fs/built-in.o: In function `xlog_regrant_reserve_log_space': xfs_log.c:(.text+0xd8584): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xd85ac): undefined reference to `cmpxchg8b_emu' xfs_log.c:(.text+0xd85f0): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xd861c): undefined reference to `cmpxchg8b_emu' xfs_log.c:(.text+0xd8685): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xd86b3): undefined reference to `cmpxchg8b_emu' fs/built-in.o: In function `xlog_state_do_callback': xfs_log.c:(.text+0xd8aac): undefined reference to `atomic64_set_386' fs/built-in.o: In function `xlog_sync': xfs_log.c:(.text+0xd8f34): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xd8f6d): undefined reference to `cmpxchg8b_emu' xfs_log.c:(.text+0xd8fad): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xd8fe5): undefined reference to `cmpxchg8b_emu' fs/built-in.o: In function `xlog_assign_tail_lsn': (.text+0xd9510): undefined reference to `atomic64_read_386' fs/built-in.o: In function `xlog_assign_tail_lsn': (.text+0xd9528): undefined reference to `atomic64_set_386' fs/built-in.o: In function `xlog_space_left': xfs_log.c:(.text+0xda698): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xda6a6): undefined reference to `atomic64_read_386' fs/built-in.o: In function `xfs_log_move_tail': (.text+0xda759): undefined reference to `atomic64_read_386' fs/built-in.o: In function `xfs_log_move_tail': (.text+0xda77e): undefined reference to `atomic64_set_386' fs/built-in.o: In function `xlog_ungrant_log_space': xfs_log.c:(.text+0xda92d): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xda95e): undefined reference to `cmpxchg8b_emu' xfs_log.c:(.text+0xda998): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xda9c6): undefined reference to `cmpxchg8b_emu' fs/built-in.o: In function `xlog_alloc_log': xfs_log.c:(.text+0xdab50): undefined reference to `atomic64_set_386' xfs_log.c:(.text+0xdab5f): undefined reference to `atomic64_set_386' xfs_log.c:(.text+0xdab78): undefined reference to `atomic64_set_386' xfs_log.c:(.text+0xdab8a): undefined reference to `atomic64_set_386' fs/built-in.o: In function `xlog_grant_push_ail': xfs_log.c:(.text+0xdb0dc): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xdb10a): undefined reference to `atomic64_read_386' fs/built-in.o: In function `xlog_regrant_write_log_space': xfs_log.c:(.text+0xdb428): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xdb465): undefined reference to `cmpxchg8b_emu' fs/built-in.o: In function `xlog_grant_log_space': xfs_log.c:(.text+0xdb6c8): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xdb6fd): undefined reference to `cmpxchg8b_emu' xfs_log.c:(.text+0xdb73d): undefined reference to `atomic64_read_386' xfs_log.c:(.text+0xdb775): undefined reference to `cmpxchg8b_emu' fs/built-in.o: In function `xlog_find_tail': xfs_log_recover.c:(.text+0xdf4f9): undefined reference to `atomic64_set_386' xfs_log_recover.c:(.text+0xdf51a): undefined reference to `atomic64_set_386' xfs_log_recover.c:(.text+0xdf53e): undefined reference to `atomic64_set_386' xfs_log_recover.c:(.text+0xdf565): undefined reference to `atomic64_set_386' xfs_log_recover.c:(.text+0xdf5bb): undefined reference to `atomic64_read_386' xfs_log_recover.c:(.text+0xdf677): undefined reference to `atomic64_set_386' xfs_log_recover.c:(.text+0xdf68b): undefined reference to `atomic64_set_386' fs/built-in.o:(.altinstr_replacement+0x4): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0xd): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x16): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x1f): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0x24): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x2d): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x36): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x3b): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0x40): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x45): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x4a): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x4f): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0x54): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x5d): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x66): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0x6b): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0x70): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0x75): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0x7a): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x7f): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x84): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x8d): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x96): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0x9f): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0xa4): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0xa9): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0xae): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0xb3): undefined reference to `atomic64_read_cx8' fs/built-in.o:(.altinstr_replacement+0xb8): undefined reference to `atomic64_set_cx8' fs/built-in.o:(.altinstr_replacement+0xbd): undefined reference to `atomic64_set_cx8' ... $ gcc --version gcc (Gentoo 4.4.5 p1.2, pie-0.4.5) 4.4.5
(In reply to comment #0) > Created an attachment (id=53672) [details] > config file in use > > This seems to work fine with 2.6.27.58, but fails with 2.6.38.2 and > 2.6.39-rc2: > > $ make ARCH=um SUBARCH=i386 > ... > LD .tmp_vmlinux1 > fs/built-in.o: In function `xlog_regrant_reserve_log_space': > xfs_log.c:(.text+0xd8584): undefined reference to `atomic64_read_386' > xfs_log.c:(.text+0xd85ac): undefined reference to `cmpxchg8b_emu' The architecture does not support the necesary 64 bit atomic operations. You need to report this to the UML maintainers for them to fix. Perhaps you should try configuring the build for a more modern CPU, rather than i486. > fs/built-in.o:(.altinstr_replacement+0xbd): undefined reference to > `atomic64_set_cx8' I don't think those are related in any way to XFS, but it's the same problem. Cheers, Dave.
A patch referencing this bug report has been merged in v2.6.39-rc5-274-g609cfda: commit 57d8e02e3cd21bccf2b84b26b42feb79e1f0f83e Author: Richard Weinberger <richard@nod.at> Date: Wed Apr 27 15:26:51 2011 -0700 um: mdd support for 64 bit atomic operations
Closing this bug, as it has been fixed long ago (2.6.38.5 and 2.6.39). Richard Weinberger recommended to configure the UML kernel at least for Pentium Pro. For details, take a look at the thread "Linux Kernel Bug #32812 "ARCH=um, SUBARCH=i386: linking failure" in the sourceforge mailing list archive: > http://sourceforge.net/mailarchive/message.php?msg_id=27369868