* Re: [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning [not found] <bug-10701-10286@http.bugzilla.kernel.org/> @ 2008-05-15 18:02 ` Andrew Morton 2008-05-16 12:46 ` Thomas Gleixner 0 siblings, 1 reply; 7+ messages in thread From: Andrew Morton @ 2008-05-15 18:02 UTC (permalink / raw) To: Thomas Gleixner; +Cc: bugme-daemon, linux-kernel, Ingo Molnar (switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface). On Thu, 15 May 2008 03:43:36 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=10701 > > Summary: snd_pcsp lockdep warning > Product: Drivers > Version: 2.5 > KernelVersion: 2.6.26-rc2 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: Sound(ALSA) > AssignedTo: perex@perex.cz > ReportedBy: nuclearcat@nuclearcat.com > > > Latest working kernel version: unknown > Earliest failing kernel version: 2.6.26-rc2 > Distribution: Gentoo > Hardware Environment: Intel 965 chipset, Core 2 Duo > Software Environment: mplayer > Problem Description: Just lockdep warning in dmesg This looks like a problem in the core hrtimers code? > Steps to reproduce: while playing HD video got this. > [52478.405955] ======================================================= > [52478.405955] [ INFO: possible circular locking dependency detected ] > [52478.405955] 2.6.26-rc2-devel #1 > [52478.405955] ------------------------------------------------------- > [52478.405955] mplayer/4814 is trying to acquire lock: > [52478.405955] (&pcsp_chip.substream_lock){++..}, at: [<f88af285>] > pcsp_do_timer+0x51/0x2a8 [snd_pcsp] > [52478.405955] > [52478.405955] but task is already holding lock: > [52478.405955] (&cpu_base->lock){++..}, at: [<c0136ac4>] > hrtimer_interrupt+0x6c/0x154 > [52478.405955] > [52478.405955] which lock already depends on the new lock. > [52478.405955] > [52478.405955] > [52478.405955] the existing dependency chain (in reverse order) is: > [52478.405955] > [52478.405955] -> #5 (&cpu_base->lock){++..}: > [52478.405955] [<c013fc8e>] __lock_acquire+0x982/0xb37 > [52478.405955] [<c013feaf>] lock_acquire+0x6c/0x89 > [52478.405955] [<c030783a>] _spin_lock_irqsave+0x25/0x55 > [52478.405955] [<c01366c2>] lock_hrtimer_base+0x18/0x33 > [52478.405955] [<c01367aa>] hrtimer_start+0x19/0x100 > [52478.405955] [<c011b656>] enqueue_rt_entity+0xf7/0x10e > [52478.405955] [<c011b6cb>] enqueue_task_rt+0x36/0x4a > [52478.405955] [<c0118235>] enqueue_task+0x4c/0x58 > [52478.405955] [<c011825a>] activate_task+0x19/0x1f > [52478.405955] [<c011a9f7>] try_to_wake_up+0x17c/0x1be > [52478.405955] [<c011aa61>] wake_up_process+0xf/0x11 > [52478.405955] [<c0303060>] migration_call+0xb4/0x403 > [52478.405955] [<c0440d1b>] migration_init+0x38/0x45 > [52478.405955] [<c043439b>] kernel_init+0x49/0x22a > [52478.405955] [<c01045af>] kernel_thread_helper+0x7/0x10 > [52478.405955] [<ffffffff>] 0xffffffff > [52478.405955] > [52478.405955] -> #4 (&rt_b->rt_runtime_lock){++..}: > [52478.405955] [<c013fc8e>] __lock_acquire+0x982/0xb37 > [52478.405955] [<c013feaf>] lock_acquire+0x6c/0x89 > [52478.405955] [<c030748f>] _spin_lock+0x1c/0x49 > [52478.405955] [<c011b613>] enqueue_rt_entity+0xb4/0x10e > [52478.405955] [<c011b6cb>] enqueue_task_rt+0x36/0x4a > [52478.405955] [<c0118235>] enqueue_task+0x4c/0x58 > [52478.405955] [<c011825a>] activate_task+0x19/0x1f > [52478.405955] [<c011a9f7>] try_to_wake_up+0x17c/0x1be > [52478.405955] [<c011aa61>] wake_up_process+0xf/0x11 > [52478.405955] [<c0303060>] migration_call+0xb4/0x403 > [52478.405955] [<c0440d1b>] migration_init+0x38/0x45 > [52478.405955] [<c043439b>] kernel_init+0x49/0x22a > [52478.405955] [<c01045af>] kernel_thread_helper+0x7/0x10 > [52478.405955] [<ffffffff>] 0xffffffff > [52478.405955] > [52478.405955] -> #3 (&rq->rq_lock_key){++..}: > [52478.405955] [<c013fc8e>] __lock_acquire+0x982/0xb37 > [52478.405955] [<c013feaf>] lock_acquire+0x6c/0x89 > [52478.405955] [<c030748f>] _spin_lock+0x1c/0x49 > [52478.405955] [<c011a634>] task_rq_lock+0x36/0x5d > [52478.405955] [<c011a8a5>] try_to_wake_up+0x2a/0x1be > [52478.405955] [<c011aa44>] default_wake_function+0xb/0xd > [52478.405955] [<c0117dad>] __wake_up_common+0x2f/0x5a > [52478.405955] [<c0119c2a>] complete+0x2b/0x3e > [52478.405955] [<c0133b93>] kthread+0x1f/0x64 > [52478.405955] [<c01045af>] kernel_thread_helper+0x7/0x10 > [52478.405955] [<ffffffff>] 0xffffffff > [52478.405955] > [52478.405955] -> #2 (&q->lock){++..}: > [52478.405955] [<c013fc8e>] __lock_acquire+0x982/0xb37 > [52478.405955] [<c013feaf>] lock_acquire+0x6c/0x89 > [52478.405955] [<c030783a>] _spin_lock_irqsave+0x25/0x55 > [52478.405955] [<c0119c96>] __wake_up+0x15/0x3b > [52478.405955] [<f88c6f2d>] snd_pcm_post_stop+0x51/0x5a [snd_pcm] > [52478.405955] [<f88c6353>] snd_pcm_action_single+0x33/0x4b [snd_pcm] > [52478.405955] [<f88c7238>] snd_pcm_action+0x68/0x74 [snd_pcm] > [52478.405955] [<f88c7268>] snd_pcm_stop+0x11/0x13 [snd_pcm] > [52478.405955] [<f88c7302>] snd_pcm_drop+0x98/0xbb [snd_pcm] > [52478.405955] [<f88c9cf0>] snd_pcm_common_ioctl1+0xe7c/0xf6d [snd_pcm] > [52478.405955] [<f88ca4a3>] snd_pcm_playback_ioctl1+0x355/0x36c > [snd_pcm] > [52478.405955] [<f88ca4f2>] snd_pcm_kernel_ioctl+0x38/0x5d [snd_pcm] > [52478.405955] [<f89fc93e>] snd_pcm_oss_change_params+0xaee/0xea7 > [snd_pcm_oss] > [52478.405955] [<f89fd04f>] snd_pcm_oss_get_active_substream+0x34/0x4c > [snd_pcm_oss] > [52478.405955] [<f89fd075>] snd_pcm_oss_get_format+0xe/0x20 > [snd_pcm_oss] > [52478.405955] [<f89fe246>] snd_pcm_oss_ioctl+0x3c0/0x9a5 [snd_pcm_oss] > [52478.405955] [<c0179202>] vfs_ioctl+0x22/0x67 > [52478.405955] [<c01794ab>] do_vfs_ioctl+0x264/0x27b > [52478.405955] [<c01794ee>] sys_ioctl+0x2c/0x46 > [52478.405955] [<c01038b9>] sysenter_past_esp+0x6a/0xb1 > [52478.405955] [<ffffffff>] 0xffffffff > [52478.405955] > [52478.405955] -> #1 (&substream->self_group.lock){.+..}: > [52478.405955] [<c013fc8e>] __lock_acquire+0x982/0xb37 > [52478.405955] [<c013feaf>] lock_acquire+0x6c/0x89 > [52478.405955] [<c030748f>] _spin_lock+0x1c/0x49 > [52478.405955] [<f88af2b3>] pcsp_do_timer+0x7f/0x2a8 [snd_pcsp] > [52478.405955] [<c0136372>] run_hrtimer_pending+0x3a/0xcb > [52478.405955] [<c0136419>] run_hrtimer_softirq+0x16/0x18 > [52478.405955] [<c0127f51>] __do_softirq+0x6f/0xe9 > [52478.405955] [<c01059c3>] do_softirq+0x5e/0xa8 > [52478.405955] [<ffffffff>] 0xffffffff > [52478.405955] > [52478.405955] -> #0 (&pcsp_chip.substream_lock){++..}: > [52478.405955] [<c013fbb5>] __lock_acquire+0x8a9/0xb37 > [52478.405955] [<c013feaf>] lock_acquire+0x6c/0x89 > [52478.405955] [<c030783a>] _spin_lock_irqsave+0x25/0x55 > [52478.405955] [<f88af285>] pcsp_do_timer+0x51/0x2a8 [snd_pcsp] > [52478.405955] [<c0136311>] __run_hrtimer+0x49/0x70 > [52478.405955] [<c0136b43>] hrtimer_interrupt+0xeb/0x154 > [52478.405955] [<c0110670>] smp_apic_timer_interrupt+0x6c/0x80 > [52478.405955] [<c0104417>] apic_timer_interrupt+0x33/0x38 > [52478.405955] [<f89ff159>] snd_pcm_plug_write_transfer+0x75/0x9f > [snd_pcm_oss] > [52478.405955] [<f89fb6d8>] snd_pcm_oss_write2+0x82/0xc0 [snd_pcm_oss] > [52478.405955] [<f89fcfb6>] snd_pcm_oss_write+0x165/0x1ca [snd_pcm_oss] > [52478.405955] [<c016f557>] vfs_write+0x8c/0x108 > [52478.405955] [<c016faee>] sys_write+0x3b/0x60 > [52478.405955] [<c01038b9>] sysenter_past_esp+0x6a/0xb1 > [52478.405955] [<ffffffff>] 0xffffffff > [52478.405955] > [52478.405955] other info that might help us debug this: > [52478.405955] > [52478.405955] 2 locks held by mplayer/4814: > [52478.405955] #0: (&runtime->oss.params_lock){--..}, at: [<f89fceb7>] > snd_pcm_oss_write+0x66/0x1ca [snd_pcm_oss] > [52478.405955] #1: (&cpu_base->lock){++..}, at: [<c0136ac4>] > hrtimer_interrupt+0x6c/0x154 > [52478.405955] > [52478.405955] stack backtrace: > [52478.405955] Pid: 4814, comm: mplayer Not tainted 2.6.26-rc2-devel #1 > [52478.405955] [<c013de71>] print_circular_bug_tail+0x5b/0x66 > [52478.405955] [<c013fbb5>] __lock_acquire+0x8a9/0xb37 > [52478.405955] [<c013feaf>] lock_acquire+0x6c/0x89 > [52478.405955] [<f88af285>] ? pcsp_do_timer+0x51/0x2a8 [snd_pcsp] > [52478.405955] [<c030783a>] _spin_lock_irqsave+0x25/0x55 > [52478.405955] [<f88af285>] ? pcsp_do_timer+0x51/0x2a8 [snd_pcsp] > [52478.405955] [<f88af234>] ? pcsp_do_timer+0x0/0x2a8 [snd_pcsp] > [52478.405955] [<f88af285>] pcsp_do_timer+0x51/0x2a8 [snd_pcsp] > [52478.405955] [<c0136134>] ? __remove_hrtimer+0x62/0x6a > [52478.405955] [<f88af234>] ? pcsp_do_timer+0x0/0x2a8 [snd_pcsp] > [52478.405955] [<c0136311>] __run_hrtimer+0x49/0x70 > [52478.405955] [<c0136b43>] hrtimer_interrupt+0xeb/0x154 > [52478.405955] [<c0110670>] smp_apic_timer_interrupt+0x6c/0x80 > [52478.405955] [<c0104417>] apic_timer_interrupt+0x33/0x38 > [52478.405955] [<f8a0022d>] ? linear_transfer+0xce/0x155 [snd_pcm_oss] > [52478.405955] [<f89ff159>] snd_pcm_plug_write_transfer+0x75/0x9f > [snd_pcm_oss] > [52478.405955] [<f89fb6d8>] snd_pcm_oss_write2+0x82/0xc0 [snd_pcm_oss] > [52478.405955] [<f89fcfb6>] snd_pcm_oss_write+0x165/0x1ca [snd_pcm_oss] > [52478.405955] [<f89fce51>] ? snd_pcm_oss_write+0x0/0x1ca [snd_pcm_oss] > [52478.405955] [<c016f557>] vfs_write+0x8c/0x108 > [52478.405955] [<c016faee>] sys_write+0x3b/0x60 > [52478.405955] [<c01038b9>] sysenter_past_esp+0x6a/0xb1 > [52478.405955] ======================= ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning 2008-05-15 18:02 ` [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning Andrew Morton @ 2008-05-16 12:46 ` Thomas Gleixner 2008-05-16 17:38 ` Andrew Morton 0 siblings, 1 reply; 7+ messages in thread From: Thomas Gleixner @ 2008-05-16 12:46 UTC (permalink / raw) To: Andrew Morton; +Cc: bugme-daemon, linux-kernel, Ingo Molnar On Thu, 15 May 2008, Andrew Morton wrote: > (switched to email. Please respond via emailed reply-to-all, not via the > bugzilla web interface). > > On Thu, 15 May 2008 03:43:36 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote: > > > http://bugzilla.kernel.org/show_bug.cgi?id=10701 > > > > Summary: snd_pcsp lockdep warning > > Product: Drivers > > Version: 2.5 > > KernelVersion: 2.6.26-rc2 > > Platform: All > > OS/Version: Linux > > Tree: Mainline > > Status: NEW > > Severity: normal > > Priority: P1 > > Component: Sound(ALSA) > > AssignedTo: perex@perex.cz > > ReportedBy: nuclearcat@nuclearcat.com > > > > > > Latest working kernel version: unknown > > Earliest failing kernel version: 2.6.26-rc2 > > Distribution: Gentoo > > Hardware Environment: Intel 965 chipset, Core 2 Duo > > Software Environment: mplayer > > Problem Description: Just lockdep warning in dmesg > > This looks like a problem in the core hrtimers code? No, this is a problem in the sound code. It uses the hrtimer callback mode HRTIMER_CB_IRQSAFE. This mode was never intended to provide a lock free call mode and was created for very fast callbacks like wakeups and the like. Also I find it pretty amazing that the pscp code has the following comment: /* * We need the hrtimer_start as a tasklet to avoid * the nasty locking problem. :( * The problem: * - The timer handler is called with the cpu_base->lock * already held by hrtimer code. * - snd_pcm_period_elapsed() takes the * substream->self_group.lock. * So far so good. * But the snd_pcsp_trigger() is called with the * substream->self_group.lock held, and it calls * hrtimer_start(), which takes the cpu_base->lock. * You see the problem. We have the code pathes * which take two locks in a reverse order. This * can deadlock and the lock validator complains. * The only solution I could find was to move the * hrtimer_start() into a tasklet. -stsp */ So the author was well aware of locking problem and the whole code is just a stupid hack around the problem without solving it. This code is not at all suited for HRTIMER_CB_IRQSAFE. Thanks, tglx ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning 2008-05-16 12:46 ` Thomas Gleixner @ 2008-05-16 17:38 ` Andrew Morton 2008-05-16 19:32 ` Thomas Gleixner 0 siblings, 1 reply; 7+ messages in thread From: Andrew Morton @ 2008-05-16 17:38 UTC (permalink / raw) To: Thomas Gleixner Cc: bugme-daemon, linux-kernel, Ingo Molnar, Stas Sergeev, Takashi Iwai On Fri, 16 May 2008 14:46:31 +0200 (CEST) Thomas Gleixner <tglx@linutronix.de> wrote: > On Thu, 15 May 2008, Andrew Morton wrote: > > > (switched to email. Please respond via emailed reply-to-all, not via the > > bugzilla web interface). > > > > On Thu, 15 May 2008 03:43:36 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote: > > > > > http://bugzilla.kernel.org/show_bug.cgi?id=10701 > > > > > > Summary: snd_pcsp lockdep warning > > > Product: Drivers > > > Version: 2.5 > > > KernelVersion: 2.6.26-rc2 > > > Platform: All > > > OS/Version: Linux > > > Tree: Mainline > > > Status: NEW > > > Severity: normal > > > Priority: P1 > > > Component: Sound(ALSA) > > > AssignedTo: perex@perex.cz > > > ReportedBy: nuclearcat@nuclearcat.com > > > > > > > > > Latest working kernel version: unknown > > > Earliest failing kernel version: 2.6.26-rc2 > > > Distribution: Gentoo > > > Hardware Environment: Intel 965 chipset, Core 2 Duo > > > Software Environment: mplayer > > > Problem Description: Just lockdep warning in dmesg > > > > This looks like a problem in the core hrtimers code? > > No, this is a problem in the sound code. It uses the hrtimer callback > mode HRTIMER_CB_IRQSAFE. This mode was never intended to provide a > lock free call mode and was created for very fast callbacks like > wakeups and the like. Also I find it pretty amazing that the pscp code > has the following comment: > > /* > * We need the hrtimer_start as a tasklet to avoid > * the nasty locking problem. :( > * The problem: > * - The timer handler is called with the cpu_base->lock > * already held by hrtimer code. > * - snd_pcm_period_elapsed() takes the > * substream->self_group.lock. > * So far so good. > * But the snd_pcsp_trigger() is called with the > * substream->self_group.lock held, and it calls > * hrtimer_start(), which takes the cpu_base->lock. > * You see the problem. We have the code pathes > * which take two locks in a reverse order. This > * can deadlock and the lock validator complains. > * The only solution I could find was to move the > * hrtimer_start() into a tasklet. -stsp > */ > > So the author was well aware of locking problem and the whole code is > just a stupid hack around the problem without solving it. This code is > not at all suited for HRTIMER_CB_IRQSAFE. You sound impressed! So what's the fix? HRTIMER_CB_SOFTIRQ? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning 2008-05-16 17:38 ` Andrew Morton @ 2008-05-16 19:32 ` Thomas Gleixner 2008-05-17 13:45 ` Takashi Iwai 0 siblings, 1 reply; 7+ messages in thread From: Thomas Gleixner @ 2008-05-16 19:32 UTC (permalink / raw) To: Andrew Morton Cc: bugme-daemon, linux-kernel, Ingo Molnar, Stas Sergeev, Takashi Iwai On Fri, 16 May 2008, Andrew Morton wrote: > > So the author was well aware of locking problem and the whole code is > > just a stupid hack around the problem without solving it. This code is > > not at all suited for HRTIMER_CB_IRQSAFE. > > You sound impressed! So what's the fix? HRTIMER_CB_SOFTIRQ? Yeah, impressed by creativity. HRTIMER_CB_SOFTIRQ should be the right thing. Thanks, tglx ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning 2008-05-16 19:32 ` Thomas Gleixner @ 2008-05-17 13:45 ` Takashi Iwai 2008-05-17 15:24 ` Thomas Gleixner 0 siblings, 1 reply; 7+ messages in thread From: Takashi Iwai @ 2008-05-17 13:45 UTC (permalink / raw) To: Thomas Gleixner Cc: Andrew Morton, bugme-daemon, linux-kernel, Ingo Molnar, Stas Sergeev At Fri, 16 May 2008 21:32:49 +0200 (CEST), Thomas Gleixner wrote: > > On Fri, 16 May 2008, Andrew Morton wrote: > > > So the author was well aware of locking problem and the whole code is > > > just a stupid hack around the problem without solving it. This code is > > > not at all suited for HRTIMER_CB_IRQSAFE. > > > > You sound impressed! So what's the fix? HRTIMER_CB_SOFTIRQ? > > Yeah, impressed by creativity. HRTIMER_CB_SOFTIRQ should be the right > thing. Well, it'd be basically a similar way like snd-pcsp currently does ("a stupid hack" :) But, it's good to have a fix, anyway, since this sounds like a generic problem with a callback in a spinlock. If the callback requires another own lock, this can easily lead to a AB/BA deadlock. Actually, ALSA PCM core had sometimes similar problems, too. thanks, Takashi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning 2008-05-17 13:45 ` Takashi Iwai @ 2008-05-17 15:24 ` Thomas Gleixner 2008-05-18 7:55 ` Takashi Iwai 0 siblings, 1 reply; 7+ messages in thread From: Thomas Gleixner @ 2008-05-17 15:24 UTC (permalink / raw) To: Takashi Iwai Cc: Andrew Morton, bugme-daemon, linux-kernel, Ingo Molnar, Stas Sergeev On Sat, 17 May 2008, Takashi Iwai wrote: > At Fri, 16 May 2008 21:32:49 +0200 (CEST), > Thomas Gleixner wrote: > > > > On Fri, 16 May 2008, Andrew Morton wrote: > > > > So the author was well aware of locking problem and the whole code is > > > > just a stupid hack around the problem without solving it. This code is > > > > not at all suited for HRTIMER_CB_IRQSAFE. > > > > > > You sound impressed! So what's the fix? HRTIMER_CB_SOFTIRQ? > > > > Yeah, impressed by creativity. HRTIMER_CB_SOFTIRQ should be the right > > thing. > > Well, it'd be basically a similar way like snd-pcsp currently does ("a > stupid hack" :) But, it's good to have a fix, anyway, since this > sounds like a generic problem with a callback in a spinlock. If the > callback requires another own lock, this can easily lead to a AB/BA > deadlock. Actually, ALSA PCM core had sometimes similar problems, > too. HRTIMER_CB_SOFTIRQ is not a stupid hack :) It's the default for hrtimers and it does not hold any locks when calling the callback. We really want to avoid tons of callbacks in the timer interrupt itself. Thanks, tglx ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning 2008-05-17 15:24 ` Thomas Gleixner @ 2008-05-18 7:55 ` Takashi Iwai 0 siblings, 0 replies; 7+ messages in thread From: Takashi Iwai @ 2008-05-18 7:55 UTC (permalink / raw) To: Thomas Gleixner Cc: Andrew Morton, bugme-daemon, linux-kernel, Ingo Molnar, Stas Sergeev At Sat, 17 May 2008 17:24:22 +0200 (CEST), Thomas Gleixner wrote: > > On Sat, 17 May 2008, Takashi Iwai wrote: > > At Fri, 16 May 2008 21:32:49 +0200 (CEST), > > Thomas Gleixner wrote: > > > > > > On Fri, 16 May 2008, Andrew Morton wrote: > > > > > So the author was well aware of locking problem and the whole code is > > > > > just a stupid hack around the problem without solving it. This code is > > > > > not at all suited for HRTIMER_CB_IRQSAFE. > > > > > > > > You sound impressed! So what's the fix? HRTIMER_CB_SOFTIRQ? > > > > > > Yeah, impressed by creativity. HRTIMER_CB_SOFTIRQ should be the right > > > thing. > > > > Well, it'd be basically a similar way like snd-pcsp currently does ("a > > stupid hack" :) But, it's good to have a fix, anyway, since this > > sounds like a generic problem with a callback in a spinlock. If the > > callback requires another own lock, this can easily lead to a AB/BA > > deadlock. Actually, ALSA PCM core had sometimes similar problems, > > too. > > HRTIMER_CB_SOFTIRQ is not a stupid hack :) It's the default for > hrtimers and it does not hold any locks when calling the callback. We > really want to avoid tons of callbacks in the timer interrupt itself. Yes, this would be an easy workaround for snd-pcsp problem, I guess. A better fix would be to make snd-pcsp hrtimer calback just change the pc-speaker port (0x61 and 0x42) and update the position. These should be really fast path. Then, occasionally invoke a tasklet that will call snd_pcm_period_elapsed(), which could be a (relatively) slow path and lead to a spinlock mess. thanks, Takashi ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-05-18 7:55 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <bug-10701-10286@http.bugzilla.kernel.org/>
2008-05-15 18:02 ` [Bugme-new] [Bug 10701] New: snd_pcsp lockdep warning Andrew Morton
2008-05-16 12:46 ` Thomas Gleixner
2008-05-16 17:38 ` Andrew Morton
2008-05-16 19:32 ` Thomas Gleixner
2008-05-17 13:45 ` Takashi Iwai
2008-05-17 15:24 ` Thomas Gleixner
2008-05-18 7:55 ` Takashi Iwai
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®