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
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?
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to email@example.com
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sun Sep 30 2001 - 21:00:56 EST