[lkml]   [2003]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectPCMCIA 2.5.X sleeping from illegal context
The 2.5.X PCMCIA kernel support seems to have a problem
with drivers/pcmcia/rsrc_mgr.c in function undo_irq().

This function is called from pcmcia_release_irq() in

pcmcia_release_irq() is called by individual drivers
when releasing resources.

When a device gets a CS_EVENT_CARD_REMOVAL event from
cs.c, the device sets a timer to call the release
function defined in the device driver to release resources.
This is the convention used with all PCMCIA drivers I
can see.

The release timer function is running in a context where it
is illegal to call a sleeping function.

undo_irq() has added semaphore calls down(rsrc_sem)/up(rsrc_sem)
in 2.5.X which generates the kernel 'sleeping function called
from illegal context at include/asm/semaphore.h' message.

So, are all the PCMCIA drivers supposed to be changed to not
release resources in the timer context? And if so, what
is the new convention?

Or should the synchronization used in undo_irq() be
changed to something that is legal from a timer context.


Paul Fulghum,
Microgate Corporation,

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:35    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean