In linux-2.6.24-rc4 the Toshiba RBTX4927 hangs on boot. The cause is that plat_time_init() from arch/mips/tx4927/common/tx4927_setup.c does not override the __weak plat_time_init() from arch/mips/kernel/time.c. This is due to a compiler bug in gcc 4.1.1. The bug is reported to not exist in earlier versions of gcc, and to be fixed in 4.1.2. The problem is that the __weak plat_time_init() is empty and thus gets optimized out of existence (thus the linker is never given the option to replace the __weak function). For more info on the gcc bug see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27781 The attached patch is one workaround. Another possible workaround would be to change the __weak plat_time_init() to be a non-empty function. Signed-off-by: Frank Rowand <frank.rowand@xxxxxxxxxxx> --- arch/mips/kernel/Makefile | 4 4 + 0 - 0 ! 1 files changed, 4 insertions(+) Index: linux-2.6.24-rc4/arch/mips/kernel/Makefile =================================================================== --- linux-2.6.24-rc4.orig/arch/mips/kernel/Makefile +++ linux-2.6.24-rc4/arch/mips/kernel/Makefile @@ -83,6 +83,10 @@ obj-$(CONFIG_EARLY_PRINTK) += early_prin CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) +# workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27781, +# which impacts plat_time_init() for tx4927, gcc 4.1.1 +CFLAGS_time.o += -fno-unit-at-a-time + obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT) += 8250-platform.o EXTRA_CFLAGS += -Werror