Messages in this thread Patch in this message | | | Date | Tue, 24 Jun 2003 23:35:07 +0200 | From | Mikael Pettersson <> | Subject | Re: 2.5.73 -- Uninitialised timer! (i386) |
| |
Pete Clements writes: > Quoting Andrew Morton > > > > Well it beats me. That timer is clearly initialised OK. > > > > What compiler version are you using? Can you try > > a different one>? > > Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.4/specs > gcc version 2.95.4 20011002 (Debian prerelease) > > Only compiler currently installed. Have four systems (3 single > processor, 1 dual) all running Debian--woody with same versions. > On the UP systems, will see several of these traces during boot. > After that, it is very seldom (0 to 3 in 12 hours). Have seen none > on the SMP system. Recompiled one of the UP systems with SMP > enabled and no longer saw the trace during boot and post. Have > not seen this prior to 2.5.73.
Apply the patch below (which I posted to LKML yesterday btw). 2.5.73 incorrectly removed the workaround needed to prevent gcc-2.95.x from miscompiling spinlocks on UP (they become empty structs, and gcc-2.95.x has problems with those).
/Mikael
--- linux-2.5.73/include/linux/spinlock.h.~1~ 2003-06-23 13:07:39.000000000 +0200 +++ linux-2.5.73/include/linux/spinlock.h 2003-06-23 22:58:29.000000000 +0200 @@ -146,8 +146,13 @@ /* * gcc versions before ~2.95 have a nasty bug with empty initializers. */ -typedef struct { } spinlock_t; -#define SPIN_LOCK_UNLOCKED (spinlock_t) { } +#if (__GNUC__ > 2) + typedef struct { } spinlock_t; + #define SPIN_LOCK_UNLOCKED (spinlock_t) { } +#else + typedef struct { int gcc_is_buggy; } spinlock_t; + #define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 } +#endif /* * If CONFIG_SMP is unset, declare the _raw_* definitions as nops - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |