SMP Kernel hangs in wait_on_irq - Stuck in bottom half handler

From: Terence Murphy (tsmurphy@ichips.intel.com)
Date: Wed Apr 19 2000 - 19:57:34 EST


        

I have been getting the following error message on a 4-way IA-32 system
running Linux 2.2.12:

wait_on_irq, CPU 3:
irq: 0 [0 0 0 0]
bh: 1 [1 0 0 0]

And then the kernel hangs.

Apparently, processor 3 is waiting for all IRQ's to be serviced in the
system, but processor 0 is executing a bottom half handler and won't
release its lock, for whatever reason.

What I am wondering is if there is a known bug in Linux which would cause
this. I have a program which will hit this in about two-three minutes.
In the program, three of the processors are looping, calling sched_yield
and then nanosleeping (repeating these two operations for ever).
sched_yield is bombarding the other processors with the reschedule IPI.

Basically, what I am wondering is if the kernel is being bombarded with
IPI's, if it is possible for this to happen. It seems strange to me that
in that continuous loop checking for the values in wait_on_irq, that there
is not one instant where there it is OK to proceed. I would like to debug
this further and figure out what is causing this to occur. I also do not
quite understand what is a bottom half handler - my understanding was that
incoming interrupts would be placed into a queue and serviced later. Is
this correct?

Thanks for any suggestions about how to approach this problem.

-- Terry

Speaking for myself.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Apr 23 2000 - 21:00:16 EST