Because the interrupt timer is not enabled.
So jiffies never changes - which is a real bummer.
The culprit is a line of some dosisms that still remain.
-Tom
On Thu, 8 Feb 1996, Warner Losh wrote:
> OK. I've let the machine run overnight (and it didn't ever finish).
> The problem is that it is stuck in the following kernel code:
>
> printk("Calibrating delay loop.. ");
> while (loops_per_sec <<= 1) {
> /* wait for "start of" clock tick */
> ticks = jiffies;
> while (ticks == jiffies)
> printk("Jiffies = %d\r", jiffies ) /* nothing */;
> /* Go .. */
> ticks = jiffies;
> __delay(loops_per_sec);
> ticks = jiffies - ticks;
> if (ticks)
> break;
> }
>
> Will just print Jiffies = 0 forever :-(
>
> I'm at a loss to understand why this is happening to me. The
> declaration looks correct to me:
>
> include/linux/sched.h: extern unsigned long volatile jiffies;
>
> so it likely is the case that I'm not taking interrupts that cause the
> jiffies count to be incremented.
>
> Any ideas on what to look for? I've gone ahead and added a sti() just
> before the while loop, so I know interrupts are enabled.
>
> I've not (yet) upgraded to 1.5.59, but a quick peek at the patches
> doesn't reveal anything that looked like it would help the situation.
>
> There must be something different between the 1.2.9ish kernel that I
> had working before and this one....
>
> Anyway, I'd love to hear any ideas that people have...
>
> Warner
>
---- Where theory and reality meet.
---- Thomas Riemer, triemer@wesleyan.edu
|