On Wed, Feb 04, 2004 at 01:40:47PM -0600, Jack Steiner wrote: > On Wed, Feb 04, 2004 at 02:08:05PM -0500, Martin Hicks wrote: > > > > > > On Wed, Feb 04, 2004 at 11:04:43AM -0800, Chen, Kenneth W wrote: > > > This is really confusing with two parameters that do the same thing. > > > What will happen if someone pass noirqdebug and irqdebug at the same > > > time? > > > > > > What's wrong with boot time parameter of noirqdebug? > > > > It just means that if you forget to pass this option then your machine > > never boots. Well, it will boot. Eventually. Jack is a patient man, > > and he said he never waited long enough for it to boot. > > Actually, I determined that a big system would never boot. Each cpu would have to > do about 1500usec of work every 1000usec. (highly dependent on the > system interconnect). > > Each clock tick, the desc->irq_count is incremented by each cpu. On a big > system, this creates an incredibly hot cache line. On a big system, it takes > more than a millisecond to do the update. At that point, another clock > interrupt is already pending. Forward progress stops. > > Another possible approach might be to special case note_interrupt() to > skip the update for the timer tick. (I havent actually looked at the code, but > this should be possible). Okay. This is certainly less messy, and is IA64 specific. How about this patch? I just tested it on a 512p machine and it booted. mh -- Martin Hicks || Silicon Graphics Inc. || mort@sgi.com