Skip to contentSkip to conversation

halt and schedule

DISCUSSION [email protected] 2 participants 2 messages Nov 4, 2002

lore
Share & tools
lore
#0 lore raw

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]
__________________________

#1 lore raw
Quoted 27 lines · 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.

Quoted 6 lines

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