public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Use of mutex in interrupt context flawed/impossible, need advice.
@ 2007-11-22 16:02 Leon Woestenberg
  2007-11-22 16:11 ` Oliver Neukum
  2007-11-22 17:17 ` Arjan van de Ven
  0 siblings, 2 replies; 6+ messages in thread
From: Leon Woestenberg @ 2007-11-22 16:02 UTC (permalink / raw)
  To: linux-kernel

Hello,


I'm converting an out-of-tree (*1) driver from binary semaphore to mutex.

Userspace updates a look-up-table using write(). The driver tries to
write this LUT to the FPGA in the (video frame) interrupt handler. It
is important that the LUT is consistent and thus changed atomically.
Note that it is not important that the LUT is updated each interrupt.

The current approach is to try-down()ing a binary semaphore in
interrupt context, and write the LUT to the FPGA if the semaphore was
down()ed, do nothing else.
The write() down()s the semaphore as well before updating the
in-driver-copy of the LUT, then up()s it again.

I understand this design is not clean (*2), and not even possible with
mutexes, as mutex_trylock() is not interrupt safe.

My current approach would be to have userspace write into a shadow
copy, and use a spinlock to update the live copy. The interrupt then
would try a spinlock.

My feeling is that we have a  valid use of mutex_trylock() in
interrupt context; "i.e. update LUT if we can do so consistently and
in time, or not at all".

I would like to know why this is not so, and if someone has a cleaner
proposal than the "try spinlock" approach?

Regards,
-- 
Leon

*1: specific to driving a certain FPGA with certain logic. I can post
the source code on request.
*2: http://lkml.org/lkml/2007/6/23/143

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-11-23  1:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <fa.DDwTo7jhtvU2nkv268RloCrwiwc@ifi.uio.no>
2007-11-23  1:07 ` Use of mutex in interrupt context flawed/impossible, need advice Robert Hancock
2007-11-22 16:02 Leon Woestenberg
2007-11-22 16:11 ` Oliver Neukum
2007-11-22 16:19   ` Leon Woestenberg
2007-11-22 16:49     ` Michal Schmidt
2007-11-22 17:17 ` Arjan van de Ven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox