public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* via82cxxx_audio locking problems
@ 2001-09-20  8:39 Thomas Sailer
  2001-09-20 11:33 ` Nicholas Knight
  2001-09-20 16:33 ` via82cxxx_audio locking problems Jeff Garzik
  0 siblings, 2 replies; 13+ messages in thread
From: Thomas Sailer @ 2001-09-20  8:39 UTC (permalink / raw)
  To: jgarzik, linux-kernel

This applies to version 1.1.5 as well as the version in
linux-2.4.10-pre12 and linux-2.4.9-ac12.

1) There is one semaphore (syscall_sem) that is held during
   calls from userspace. It is even kept while going to sleep
   during read and write syscalls. This locks out other users,
   eg. mixers, for a potentially very long time, seconds are
   common but it may almost be arbitrarily long. Try changing
   the volume with eg. gmix while playing something with eg. xmms.

   Dropping and reacquiring syscall_sem around interruptible_sleep_on
   in via_dsp_do_read, via_dsp_do_write and via_dsp_drain_playback
   should solve the problem. Does anyone see a problem with this?

2) When some kind of error happens during read or write after
   some samples have already been dequeued and copied to the user
   buffer, the number of copied bytes should be returned instead
   of the error code, to avoid loosing samples.

3) The use of interruptible_sleep_on results in a small race where
   wake_ups may be lost. Unlikely to hit though.

4) The down_trylock and returning -EAGAIN in via_down_syscall looks
   questionable, EAGAIN with O_NONBLOCK normally means I/O has to
   be completed first, not that there is contention on some internal
   synchronisation primitive.

Jeff, do you object any of this? Would you accept a patch to ameliorate
the situation? Or would you like to fix this yourself?

Tom

PS: Is there any better publicly available chip documentation than
the 120 page PDF file?

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

end of thread, other threads:[~2001-09-21 12:57 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-09-20  8:39 via82cxxx_audio locking problems Thomas Sailer
2001-09-20 11:33 ` Nicholas Knight
2001-09-20 12:07   ` Adrian Cox
2001-09-20 12:24     ` Nicholas Knight
2001-09-20 13:40       ` André Dahlqvist
2001-09-20 13:41         ` Thomas Sailer
2001-09-21  9:27         ` Thomas Sailer
2001-09-21 12:06           ` André Dahlqvist
2001-09-21 13:01             ` Lockups fixed! (Was: via82cxxx_audio locking problems) André Dahlqvist
2001-09-20 16:33 ` via82cxxx_audio locking problems Jeff Garzik
2001-09-21  7:50   ` Adrian Cox
2001-09-21  8:36     ` David Chow
2001-09-21  8:50       ` David Chow

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