Messages in this thread |  | | Date | Thu, 27 Sep 2001 16:58:16 +0200 | From | Norbert Roos <> | Subject | Re: System hangs during interruptible_sleep_on_timeout() under 2.4.9 |
| |
Ingo Molnar wrote:
> are you sure timer interrupts are processed while you are waiting for the > timeout to expire? I'd suggest to put a: > > printk("<%d>", irq); > > into arch/i386/kernel/irq.c:do_IRQ().
Until the call of interruptible_sleep_on_timeout(), timer interrupts were processed. Right after the call no more output is made.
> So you can see what kind of > interrupt traffic there is while the device initializes and you are > waiting for it to generate an interrupt.
I use the function only for a short delay (switch on the device's reset, wait and switch it off again), so the device even does not generate a PCI interrupt.
In the time inbetween I have traced the problem: Inside the sleep_on() functions there is the macro SLEEP_ON_HEAD containing the call wq_write_lock_irqsave(), where the error happens. This is a macro, too, which at last expands to
__asm__ __volatile__("pushfl ; popl %0":"=g" (x): /* no input */)
(x ist the variable where the IRQ flags are stored) I'm not familiar with x86 assembler; is it possible that something can go wrong here?
bye, Norbert - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |