[parisc-linux] Mysterious hangs with parisc

John David Anglin dave at hiauly1.hia.nrc.ca
Fri Jun 23 17:44:40 MDT 2006


> which corresponds to this piece of arch/parisc/kernel/time.c:do_gettimeofday():
> 
> 	while (usec >= 1000000) {
> 		usec -= 1000000;
> 		++sec;
> 	}
> 
> If you look, you'll see usec is stored in %r5 which (although an
> unsigned long) has apparently gone negative and is thus going to loop in
> here for an extremely long time.  If this happens without the softlockup
> timer, your box will definitely hang.
> 
> I suspect somehow gettimeoffset() returned a negative value, but I can't
> see how.

Locking problems?  I presume this is a 64-bit kernel.  This is probably
the same lockup that Joel has reported running his stress test.

Why not add a debug check to ensure that the value returned by gettimeoffset()
is "reasonable", and possibly take action to stop do_gettimeofday() from
looping for a long time if the value returned is very large.  This might
help identify the source of the problem.

Dave
-- 
J. David Anglin                                  dave.anglin at nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)



More information about the parisc-linux mailing list