Re: 2.6.8 and 2.6.9 Dual Opteron glitches

From: Jesse Pollard
Date: Wed Nov 03 2004 - 10:22:36 EST


On Wednesday 03 November 2004 05:05, Andi Kleen wrote:
> On Wed, Nov 03, 2004 at 11:53:05AM +0100, Daniel Egger wrote:
> > On 03.11.2004, at 06:06, Andi Kleen wrote:
> > >> Replacing those panic(s) by printk make the machine boot just fine
> > >> and also work (seemingly) without any problems under load.
> > >
> > >Can you print the two values? I've never seen such a problem.
> > >If it works then they must be identical, otherwise user space would
> > >break very quickly.
> >
> > printk("%p %p %p\n", (unsigned long) &vgettimeofday, &vgettimeofday,
> > VSYSCALL_ADDR(__NR_vgettimeofday));
> >
> > ffffffffff600000 ffffffffff600000 ffffffffff600000
> >
> > I've no idea why it still triggers. Also the next one BTW:
> > vtime link addr brokenIA32
> >
> > The compiler is: gcc version 3.4.0 20040111 (experimental)
>
> Looks like a compiler bug. I would talk to the gcc people.

Personally .. I think it is a type error - unsigned long is 32 bits.

It appears to be comparing it to an address - which is 64 bits.

There is no sign extension from 32bit to 64bit for an unsigned number.

This same problem occured in Kerberos when compiled on AMD in
64 bit mode. The solution was to use (void *).
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/