summaryrefslogtreecommitdiffstats
path: root/sound/drivers/opl3
Commit message (Collapse)AuthorAgeFilesLines
* ALSA: opl3: circular locking in the snd_opl3_note_on() and snd_opl3_note_off()Krzysztof Helt2009-10-081-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix following circular locking in the opl3 driver. ======================================================= [ INFO: possible circular locking dependency detected ] 2.6.32-rc3 #87 ------------------------------------------------------- swapper/0 is trying to acquire lock: (&opl3->voice_lock){..-...}, at: [<cca748fe>] snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth] but task is already holding lock: (&opl3->sys_timer_lock){..-...}, at: [<cca75169>] snd_opl3_timer_func+0x19/0xc0 [snd_opl3_synth] which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&opl3->sys_timer_lock){..-...}: [<c02461d5>] validate_chain+0xa25/0x1040 [<c0246aca>] __lock_acquire+0x2da/0xab0 [<c024731a>] lock_acquire+0x7a/0xa0 [<c044c300>] _spin_lock_irqsave+0x40/0x60 [<cca75046>] snd_opl3_note_on+0x686/0x790 [snd_opl3_synth] [<cca68912>] snd_midi_process_event+0x322/0x590 [snd_seq_midi_emul] [<cca74245>] snd_opl3_synth_event_input+0x15/0x20 [snd_opl3_synth] [<cca4dcc0>] snd_seq_deliver_single_event+0x100/0x200 [snd_seq] [<cca4de07>] snd_seq_deliver_event+0x47/0x1f0 [snd_seq] [<cca4e50b>] snd_seq_dispatch_event+0x3b/0x140 [snd_seq] [<cca5008c>] snd_seq_check_queue+0x10c/0x120 [snd_seq] [<cca5037b>] snd_seq_enqueue_event+0x6b/0xe0 [snd_seq] [<cca4e0fd>] snd_seq_client_enqueue_event+0xdd/0x100 [snd_seq] [<cca4eb7a>] snd_seq_write+0xea/0x190 [snd_seq] [<c02827b6>] vfs_write+0x96/0x160 [<c0282c9d>] sys_write+0x3d/0x70 [<c0202c45>] syscall_call+0x7/0xb -> #0 (&opl3->voice_lock){..-...}: [<c02467e6>] validate_chain+0x1036/0x1040 [<c0246aca>] __lock_acquire+0x2da/0xab0 [<c024731a>] lock_acquire+0x7a/0xa0 [<c044c300>] _spin_lock_irqsave+0x40/0x60 [<cca748fe>] snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth] [<cca751f0>] snd_opl3_timer_func+0xa0/0xc0 [snd_opl3_synth] [<c022ac46>] run_timer_softirq+0x166/0x1e0 [<c02269e8>] __do_softirq+0x78/0x110 [<c0226ac6>] do_softirq+0x46/0x50 [<c0226e26>] irq_exit+0x36/0x40 [<c0204bd2>] do_IRQ+0x42/0xb0 [<c020328e>] common_interrupt+0x2e/0x40 [<c021092f>] apm_cpu_idle+0x10f/0x290 [<c0201b11>] cpu_idle+0x21/0x40 [<c04443cd>] rest_init+0x4d/0x60 [<c055c835>] start_kernel+0x235/0x280 [<c055c066>] i386_start_kernel+0x66/0x70 other info that might help us debug this: 2 locks held by swapper/0: #0: (&opl3->tlist){+.-...}, at: [<c022abd0>] run_timer_softirq+0xf0/0x1e0 #1: (&opl3->sys_timer_lock){..-...}, at: [<cca75169>] snd_opl3_timer_func+0x19/0xc0 [snd_opl3_synth] stack backtrace: Pid: 0, comm: swapper Not tainted 2.6.32-rc3 #87 Call Trace: [<c0245188>] print_circular_bug+0xc8/0xd0 [<c02467e6>] validate_chain+0x1036/0x1040 [<c0247f14>] ? check_usage_forwards+0x54/0xd0 [<c0246aca>] __lock_acquire+0x2da/0xab0 [<c024731a>] lock_acquire+0x7a/0xa0 [<cca748fe>] ? snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth] [<c044c300>] _spin_lock_irqsave+0x40/0x60 [<cca748fe>] ? snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth] [<cca748fe>] snd_opl3_note_off+0x1e/0xe0 [snd_opl3_synth] [<c044c307>] ? _spin_lock_irqsave+0x47/0x60 [<cca751f0>] snd_opl3_timer_func+0xa0/0xc0 [snd_opl3_synth] [<c022ac46>] run_timer_softirq+0x166/0x1e0 [<c022abd0>] ? run_timer_softirq+0xf0/0x1e0 [<cca75150>] ? snd_opl3_timer_func+0x0/0xc0 [snd_opl3_synth] [<c02269e8>] __do_softirq+0x78/0x110 [<c044c0fd>] ? _spin_unlock+0x1d/0x20 [<c025915f>] ? handle_level_irq+0xaf/0xe0 [<c0226ac6>] do_softirq+0x46/0x50 [<c0226e26>] irq_exit+0x36/0x40 [<c0204bd2>] do_IRQ+0x42/0xb0 [<c024463c>] ? trace_hardirqs_on_caller+0x12c/0x180 [<c020328e>] common_interrupt+0x2e/0x40 [<c0208d88>] ? default_idle+0x38/0x50 [<c021092f>] apm_cpu_idle+0x10f/0x290 [<c0201b11>] cpu_idle+0x21/0x40 [<c04443cd>] rest_init+0x4d/0x60 [<c055c835>] start_kernel+0x235/0x280 [<c055c210>] ? unknown_bootoption+0x0/0x210 [<c055c066>] i386_start_kernel+0x66/0x70 Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: clean up the logic for building sequencer modulesMichal Marek2009-05-291-9/+1
| | | | | | | | Instead of mangling the CONFIG_* variables in the makefiles over and over, set a few helper variables in Kconfig. Signed-off-by: Michal Marek <mmarek@suse.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: Add missing KERN_* prefix to printk in sound/driversTakashi Iwai2009-02-054-20/+22
| | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: Kill snd_assert() in other placesTakashi Iwai2008-08-134-10/+20
| | | | | | | | Kill snd_assert() in other places, either removed or replaced with if () with snd_BUG_ON(). Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] opl3 - Fix compilation without sequencer supportTakashi Iwai2008-02-221-0/+8
| | | | | | | | Add proper ifdef's to the patch loading code moved from the old instr layer so that opl3 driver can be compiled without the sequencer support. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* [ALSA] opl3 - Fix build errorsTakashi Iwai2008-01-312-0/+2
| | | | | | | | I applied a wrong patch for 'opl3 - simplify exclusive access lock'. Fixed now. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] opl3 - simplify exclusive access lockTakashi Iwai2008-01-313-23/+12
| | | | | | | Use the exclusive access lock in hwdep instead of the own one. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] opl3 - Use hwdep for patch loadingTakashi Iwai2008-01-315-153/+215
| | | | | | | | | Use the hwdep device for loading OPL2/3 patch data instead of the messy sequencer instrument layer. Due to this change, the sbiload program should be updated, too. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* Fix misspellings of "system", "controller", "interrupt" and "necessary".Robert P. J. Day2007-10-191-1/+1
| | | | | | | | Fix the various misspellings of "system", controller", "interrupt" and "[un]necessary". Signed-off-by: Robert P. J. Day <rpjday@mindspring.com> Signed-off-by: Adrian Bunk <bunk@kernel.org>
* [ALSA] Changed Jaroslav Kysela's e-mail from perex@suse.cz to perex@perex.czJaroslav Kysela2007-10-162-3/+3
| | | | Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] Clean up MakefileTakashi Iwai2007-10-161-4/+2
| | | | | | | | Clean up Makefile using xxx- style instead of ifeq(CONFIG_XXX,y). Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
* [ALSA] add more sequencer port type information bitsClemens Ladisch2006-06-222-2/+6
| | | | | | | | Add four new information flags SNDRV_SEQ_PORT_TYPE_HARDWARE, _SOFTWARE, _SYNTHESIZER, _PORT for sequencer ports. This makes it easier for apps like Rosegarden to make policy decisions based on the port type. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
* [ALSA] fix port type bitsClemens Ladisch2006-06-222-3/+2
| | | | | | | Fix the port information about non-MIDI messages that had wrong values for some OPL3 and EmuX ports. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
* [ALSA] opl3 - Move EXPORT_SYMBOL() to adjacent to each functionTakashi Iwai2006-06-222-9/+14
| | | | | | Move EXPORT_SYMBOL() to adjacent to each exported function/variable. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] Fix use after free in opl3_seq and opl3_ossDave Jones2006-03-222-8/+16
| | | | | | | | | | | | | Modules: OPL3 Don't read from free'd memory. Also make use of the return value, and don't register the device if something went wrong creating the port. Coverity #954, #955 Signed-off-by: Dave Jones <davej@redhat.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] semaphore -> mutex (driver part)Ingo Molnar2006-03-223-11/+11
| | | | | | | | | | | Semaphore to mutex conversion. The conversion was generated via scripts, and the result was validated automatically via a script as well. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [PATCH] alsa: fix bogus snd_device_free() in opl3-oss.cTakashi Iwai2006-02-241-1/+1
| | | | | | | | | | | Remove snd_device_free() for an opl3-oss instance which should have been released. Signed-off-by: Takashi Iwai <tiwai@suse.de> Cc: Jaroslav Kysela <perex@suse.cz> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [ALSA] opl3 - Fix the unreleased resourcesTakashi Iwai2006-01-041-3/+3
| | | | | | | | Modules: OPL3 Fix the unreleased resources in the error path of snd_opl3_create(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] seq: set client name in snd_seq_create_kernel_client()Clemens Ladisch2006-01-031-11/+6
| | | | | | | | | All users of snd_seq_create_kernel_client() have to set the client name anyway, so we can just pass the name as parameter. This relieves us from having to muck around with a struct snd_seq_client_info in these cases. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
* [ALSA] seq: remove struct snd_seq_client_callbackClemens Ladisch2006-01-031-5/+1
| | | | | | | The fields of struct snd_seq_client_callback either aren't used or are always set to the same value, so we can get rid of it altogether. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
* [ALSA] Fix possible races in timer callbacksTakashi Iwai2006-01-031-2/+3
| | | | | | Fix possible races in timer callbacks. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] Add error messagesTakashi Iwai2006-01-031-1/+3
| | | | | | Add error messages in the critial error path to be more verbose. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] Remove xxx_t typedefs: OPL3Takashi Iwai2006-01-037-191/+194
| | | | | | | | Modules: OPL3,Raw OPL FM Remove xxx_t typedefs from the OPL3 driver Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] Remove vmalloc wrapper, kfree_nocheck()Takashi Iwai2005-11-041-8/+2
| | | | | | | | - Remove vmalloc wrapper - Add release_and_free_resource() to remove kfree_nocheck() from each driver and simplify the code Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] Replace with kzalloc() - othersTakashi Iwai2005-09-122-2/+2
| | | | | | | | | | | Documentation,SA11xx UDA1341 driver,Generic drivers,MPU401 UART,OPL3 OPL4,Digigram VX core,I2C cs8427,I2C lib core,I2C tea6330t,L3 drivers AK4114 receiver,AK4117 receiver,PDAudioCF driver,PPC PMAC driver SPARC AMD7930 driver,SPARC cs4231 driver,Synth,Common EMU synth USB generic driver,USB USX2Y Replace kcalloc(1,..) with kzalloc(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Linux-2.6.12-rc2v2.6.12-rc2Linus Torvalds2005-04-168-0/+2845
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!