Re: 2.5.63: 'Debug: sleeping function called from illegal context

Benjamin Herrenschmidt (benh@kernel.crashing.org)
02 Mar 2003 10:53:45 +0100


On Sun, 2003-03-02 at 02:26, Alan Cox wrote:
> On Sat, 2003-03-01 at 21:05, Dr. David Alan Gilbert wrote:
> > Hi,
> > 2.5.63 had a good go at trying to boot for me; the only error during
> > boot was 'Debug: sleeping function called from illegal context at
> > mm/slab.c:1617' during the IDE startup.
>
> Known problem. Its a bug in the request_irq code on x86. IDE just
> happens to be a victim of it.

Well... it's a bug in _all_ archs. They (almost) all call the proc
stuff from request_irq, and worse, on x86, I think, has the
kmalloc inside request_irq changed to GFP_ATOMIC.

You really think request_irq should be safe to be called from irq
context ?

I tend to think IDE is at fault here. It doesn't seem to be a
sane requirement to me to have request_irq be called at IRQ
time. It's rather easy to fix it's kmalloc to be GFP_ATOMIC
instead of GFP_KERNEL, but what about /proc stuff ? And the
day we want to fit IRQs in the driver model, that will probably
involve taking a semaphore as well here and do other IRQ tree
management task that are definitely not something we want to
do at IRQ time.

Ben.
-
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/