Re: Race in setup_irq?

From: Dmitry Adamushko
Date: Sun Nov 11 2007 - 16:11:39 EST


On 11/11/2007, Adrian McMenamin <lkmladrian@xxxxxxxxx> wrote
> I am writing a device driver for the Dreamcast CD Drive (the "GD Rom")
> and I am hitting what looks like some sort of race in
> kernel/irq/manage.c. Can anybody point me in the right direction or is
> there a bug here?
>
> This never seems to return in setup_irq:
>
> spin_unlock_irqrestore(&desc->lock, flags);
>
> (line 597)

I guess, you are referring to setup_irq() (the line without a
particular kernel version doesn't make much sense).

What do you mean by "never seems to return"? Does your machine hang?

If so, the reason might be some kind of (logical) error in your ISR.
spin_unlock_irqrestore() unmasks the interrupts and your target device
might have already generated an interrupt by this moment (sure, it
depends on the initialization logic of your code and device spec.)...
--> ISR runs and due to some error e.g. loops endlessly/deadlocks/etc.

Tried placing printk() at the beginning of ISR?

--
Best regards,
Dmitry Adamushko
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/