2002-11-04 16:42:40

by Simon Haynes

[permalink] [raw]
Subject: halt and schedule


I have been changing 2.4.19 to run on some new hardware, X86
based. The system boots and runs off a ramdisk. I am having
problems which I see as pauses. The system starts up and loads
the kernel. All seems ok until the ramdisk is mouned and INIT is
started. From this point on the system appears to stop responding
for a few seconds and then start again. Eventually, when logged in
command input can be slow with pauses between entering a
character and the console displaying the character.


I have tried to debug this and found that the kernel is in the
cpu_idle() routine which is repeatedly calling default_idle() and
safe_halt(). If you then type a character on the console, using a
scope, you can see the interrupt being serviced and a character
being taken from the RX fifo, quickly. However there is no
response for some seconds. I have also noticed that if you keep the
thing busy with a benchmark or something simple like ls -lR there is
no pause.

I noticed that to get out of this loop the kernel is looking for a
process to schedule. It is as if the process is not being scheduled
as soon as it could be.

One point to consider is that this board has no RTC or CTC just the
timer wired to a 10ms interrupt.

I suspect that this is a hardware problem but I don't really know
where to start looking. Can anyone help ?

Many thanks

Simon.
__________________________

Simon Haynes - Baydel
Phone : 44 (0) 1372 378811
Email : [email protected]
__________________________


2002-11-04 17:38:09

by Richard B. Johnson

[permalink] [raw]
Subject: Re: halt and schedule

On Mon, 4 Nov 2002, wrote:

>
> I have been changing 2.4.19 to run on some new hardware, X86
> based. The system boots and runs off a ramdisk. I am having
> problems which I see as pauses. The system starts up and loads
> the kernel. All seems ok until the ramdisk is mouned and INIT is
> started. From this point on the system appears to stop responding
> for a few seconds and then start again. Eventually, when logged in
> command input can be slow with pauses between entering a
> character and the console displaying the character.
>
>
> I have tried to debug this and found that the kernel is in the
> cpu_idle() routine which is repeatedly calling default_idle() and
> safe_halt(). If you then type a character on the console, using a
> scope, you can see the interrupt being serviced and a character
> being taken from the RX fifo, quickly. However there is no
> response for some seconds. I have also noticed that if you keep the
> thing busy with a benchmark or something simple like ls -lR there is
> no pause.
>
> I noticed that to get out of this loop the kernel is looking for a
> process to schedule. It is as if the process is not being scheduled
> as soon as it could be.
>
> One point to consider is that this board has no RTC or CTC just the
> timer wired to a 10ms interrupt.
>
> I suspect that this is a hardware problem but I don't really know
> where to start looking. Can anyone help ?
>
> Many thanks
>
> Simon.

Temporarily get rid of the hlt instruction. That will allow
the scheduler to spin. On a real CPU, an interrupt (any interrupt)
is supposed to get you out of a halt. Something seems broken
on your box, but you should be able to get it to "work" by
removing the halt.


Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
Bush : The Fourth Reich of America