* snd-ctxfi oops
@ 2009-06-12 3:52 The Source
2009-06-12 7:20 ` Takashi Iwai
0 siblings, 1 reply; 7+ messages in thread
From: The Source @ 2009-06-12 3:52 UTC (permalink / raw)
To: Takashi Iwai, alsa-devel
Hello. I use snd-ctxfi from 8 June snapshot. I hadn't oopses since I
installed this driver but recently I got one again:
Kernel failure message 1:
BUG: sleeping function called from invalid context at mm/slub.c:1599
in_atomic(): 0, irqs_disabled(): 1, pid: 2537, name: gstreamer-prope
Pid: 2537, comm: gstreamer-prope Tainted: P
2.6.29.4-167.fc11.x86_64 #1
Call Trace:
[<ffffffff8103ff0f>] __might_sleep+0x10b/0x110
[<ffffffff810cd734>] __kmalloc+0x73/0x130
[<ffffffffa0b4b142>] ? daio_rsc_init+0xaa/0x125 [snd_ctxfi]
[<ffffffffa0b4b212>] dao_rsc_init+0x55/0x1c0 [snd_ctxfi]
[<ffffffffa0b4b3d2>] dao_rsc_reinit+0x55/0x5d [snd_ctxfi]
[<ffffffff813abd6c>] ? _spin_lock_irqsave+0x32/0x3b
[<ffffffffa0b454fe>] atc_spdif_out_passthru+0x92/0x136 [snd_ctxfi]
[<ffffffffa0b4744d>] ct_pcm_playback_open+0x8b/0x11a [snd_ctxfi]
[<ffffffffa0b34498>] snd_pcm_open_substream+0x46/0x83 [snd_pcm]
[<ffffffffa0b345a8>] snd_pcm_open+0xd3/0x1db [snd_pcm]
[<ffffffff810406fd>] ? default_wake_function+0x0/0x14
[<ffffffffa0b3471a>] snd_pcm_playback_open+0x31/0x36 [snd_pcm]
[<ffffffff813abe16>] ? lock_kernel+0x21/0x31
[<ffffffffa00ec57d>] snd_open+0x105/0x184 [snd]
[<ffffffff810d7da3>] chrdev_open+0x152/0x171
[<ffffffff810d7c51>] ? chrdev_open+0x0/0x171
[<ffffffff810d3922>] __dentry_open+0x143/0x273
[<ffffffff810d3b22>] nameidata_to_filp+0x42/0x53
[<ffffffff810df1bd>] do_filp_open+0x3fd/0x7b8
[<ffffffff810e0f0b>] ? vfs_ioctl+0x22/0x87
[<ffffffff811b95b2>] ? might_fault+0x1f/0x21
[<ffffffff811b96b1>] ? __strncpy_from_user+0x1e/0x49
[<ffffffff810e859c>] ? alloc_fd+0x11b/0x12d
[<ffffffff810d3712>] do_sys_open+0x59/0xda
[<ffffffff810d37c6>] sys_open+0x20/0x22
[<ffffffff8101133a>] system_call_fastpath+0x16/0x1b
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: snd-ctxfi oops
2009-06-12 3:52 snd-ctxfi oops The Source
@ 2009-06-12 7:20 ` Takashi Iwai
[not found] ` <4A329D02.8070202@gmail.com>
0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2009-06-12 7:20 UTC (permalink / raw)
To: The Source; +Cc: alsa-devel
At Fri, 12 Jun 2009 07:52:22 +0400,
The Source wrote:
>
> Hello. I use snd-ctxfi from 8 June snapshot. I hadn't oopses since I
> installed this driver but recently I got one again:
>
> Kernel failure message 1:
> BUG: sleeping function called from invalid context at mm/slub.c:1599
Could you try the patch below?
thanks,
Takashi
---
diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
index 80fb2ba..b0adc80 100644
--- a/sound/pci/ctxfi/ctatc.c
+++ b/sound/pci/ctxfi/ctatc.c
@@ -259,7 +259,6 @@ static int atc_pcm_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
int n_amixer = apcm->substream->runtime->channels, i = 0;
int device = apcm->substream->pcm->device;
unsigned int pitch;
- unsigned long flags;
if (NULL != apcm->src) {
/* Prepared pcm playback */
@@ -311,10 +310,10 @@ static int atc_pcm_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
src = apcm->src;
for (i = 0; i < n_amixer; i++) {
amixer = apcm->amixers[i];
- spin_lock_irqsave(&atc->atc_lock, flags);
+ mutex_lock(&atc->atc_mutex);
amixer->ops->setup(amixer, &src->rsc,
INIT_VOL, atc->pcm[i+device*2]);
- spin_unlock_irqrestore(&atc->atc_lock, flags);
+ mutex_unlock(&atc->atc_mutex);
src = src->ops->next_interleave(src);
if (NULL == src)
src = apcm->src;
@@ -865,7 +864,6 @@ static int
spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm *apcm)
{
struct dao *dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
- unsigned long flags;
unsigned int rate = apcm->substream->runtime->rate;
unsigned int status;
int err;
@@ -885,7 +883,7 @@ spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm *apcm)
return -ENOENT;
}
- spin_lock_irqsave(&atc->atc_lock, flags);
+ mutex_lock(&atc->atc_mutex);
dao->ops->get_spos(dao, &status);
if (((status >> 24) & IEC958_AES3_CON_FS) != iec958_con_fs) {
status &= ((~IEC958_AES3_CON_FS) << 24);
@@ -895,7 +893,7 @@ spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm *apcm)
}
if ((rate != atc->pll_rate) && (32000 != rate))
err = atc_pll_init(atc, rate);
- spin_unlock_irqrestore(&atc->atc_lock, flags);
+ mutex_unlock(&atc->atc_mutex);
return err;
}
@@ -908,7 +906,6 @@ spdif_passthru_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
struct dao *dao;
int err;
int i;
- unsigned long flags;
if (NULL != apcm->src)
return 0;
@@ -934,13 +931,13 @@ spdif_passthru_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
src = apcm->src;
}
/* Connect to SPDIFOO */
- spin_lock_irqsave(&atc->atc_lock, flags);
+ mutex_lock(&atc->atc_mutex);
dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
amixer = apcm->amixers[0];
dao->ops->set_left_input(dao, &amixer->rsc);
amixer = apcm->amixers[1];
dao->ops->set_right_input(dao, &amixer->rsc);
- spin_unlock_irqrestore(&atc->atc_lock, flags);
+ mutex_unlock(&atc->atc_mutex);
ct_timer_prepare(apcm->timer);
@@ -1088,7 +1085,6 @@ static int atc_spdif_out_set_status(struct ct_atc *atc, unsigned int status)
static int atc_spdif_out_passthru(struct ct_atc *atc, unsigned char state)
{
- unsigned long flags;
struct dao_desc da_dsc = {0};
struct dao *dao;
int err;
@@ -1096,7 +1092,7 @@ static int atc_spdif_out_passthru(struct ct_atc *atc, unsigned char state)
struct rsc *rscs[2] = {NULL};
unsigned int spos = 0;
- spin_lock_irqsave(&atc->atc_lock, flags);
+ mutex_lock(&atc->atc_mutex);
dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
da_dsc.msr = state ? 1 : atc->msr;
da_dsc.passthru = state ? 1 : 0;
@@ -1114,7 +1110,7 @@ static int atc_spdif_out_passthru(struct ct_atc *atc, unsigned char state)
}
dao->ops->set_spos(dao, spos);
dao->ops->commit_write(dao);
- spin_unlock_irqrestore(&atc->atc_lock, flags);
+ mutex_unlock(&atc->atc_mutex);
return err;
}
@@ -1572,7 +1568,7 @@ int __devinit ct_atc_create(struct snd_card *card, struct pci_dev *pci,
atc->msr = msr;
atc->chip_type = chip_type;
- spin_lock_init(&atc->atc_lock);
+ mutex_init(&atc->atc_mutex);
/* Find card model */
err = atc_identify_card(atc);
diff --git a/sound/pci/ctxfi/ctatc.h b/sound/pci/ctxfi/ctatc.h
index a033472..9fe620e 100644
--- a/sound/pci/ctxfi/ctatc.h
+++ b/sound/pci/ctxfi/ctatc.h
@@ -19,7 +19,7 @@
#define CTATC_H
#include <linux/types.h>
-#include <linux/spinlock_types.h>
+#include <linux/mutex.h>
#include <linux/pci.h>
#include <linux/timer.h>
#include <sound/core.h>
@@ -90,7 +90,7 @@ struct ct_atc {
void (*unmap_audio_buffer)(struct ct_atc *atc, struct ct_atc_pcm *apcm);
unsigned long (*get_ptp_phys)(struct ct_atc *atc, int index);
- spinlock_t atc_lock;
+ struct mutex atc_mutex;
int (*pcm_playback_prepare)(struct ct_atc *atc,
struct ct_atc_pcm *apcm);
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: snd-ctxfi oops
[not found] ` <4A329D02.8070202@gmail.com>
@ 2009-06-13 6:05 ` The Source
2009-06-13 8:07 ` Takashi Iwai
0 siblings, 1 reply; 7+ messages in thread
From: The Source @ 2009-06-13 6:05 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
On 12.06.2009 22:22, The Source wrote:
> On 12.06.2009 11:20, Takashi Iwai wrote:
>> At Fri, 12 Jun 2009 07:52:22 +0400,
>> The Source wrote:
>>> Hello. I use snd-ctxfi from 8 June snapshot. I hadn't oopses since I
>>> installed this driver but recently I got one again:
>>>
>>> Kernel failure message 1:
>>> BUG: sleeping function called from invalid context at mm/slub.c:1599
>> Could you try the patch below?
>>
>>
>> thanks,
>>
>> Takashi
>>
>> ---
>> diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
>> index 80fb2ba..b0adc80 100644
>> --- a/sound/pci/ctxfi/ctatc.c
>> +++ b/sound/pci/ctxfi/ctatc.c
>> @@ -259,7 +259,6 @@ static int atc_pcm_playback_prepare(struct ct_atc
>> *atc, struct ct_atc_pcm *apcm)
>> int n_amixer = apcm->substream->runtime->channels, i = 0;
>> int device = apcm->substream->pcm->device;
>> unsigned int pitch;
>> - unsigned long flags;
>>
>> if (NULL != apcm->src) {
>> /* Prepared pcm playback */
>> @@ -311,10 +310,10 @@ static int atc_pcm_playback_prepare(struct
>> ct_atc *atc, struct ct_atc_pcm *apcm)
>> src = apcm->src;
>> for (i = 0; i< n_amixer; i++) {
>> amixer = apcm->amixers[i];
>> - spin_lock_irqsave(&atc->atc_lock, flags);
>> + mutex_lock(&atc->atc_mutex);
>> amixer->ops->setup(amixer,&src->rsc,
>> INIT_VOL, atc->pcm[i+device*2]);
>> - spin_unlock_irqrestore(&atc->atc_lock, flags);
>> + mutex_unlock(&atc->atc_mutex);
>> src = src->ops->next_interleave(src);
>> if (NULL == src)
>> src = apcm->src;
>> @@ -865,7 +864,6 @@ static int
>> spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm
>> *apcm)
>> {
>> struct dao *dao = container_of(atc->daios[SPDIFOO], struct dao,
>> daio);
>> - unsigned long flags;
>> unsigned int rate = apcm->substream->runtime->rate;
>> unsigned int status;
>> int err;
>> @@ -885,7 +883,7 @@ spdif_passthru_playback_setup(struct ct_atc *atc,
>> struct ct_atc_pcm *apcm)
>> return -ENOENT;
>> }
>>
>> - spin_lock_irqsave(&atc->atc_lock, flags);
>> + mutex_lock(&atc->atc_mutex);
>> dao->ops->get_spos(dao,&status);
>> if (((status>> 24)& IEC958_AES3_CON_FS) != iec958_con_fs) {
>> status&= ((~IEC958_AES3_CON_FS)<< 24);
>> @@ -895,7 +893,7 @@ spdif_passthru_playback_setup(struct ct_atc *atc,
>> struct ct_atc_pcm *apcm)
>> }
>> if ((rate != atc->pll_rate)&& (32000 != rate))
>> err = atc_pll_init(atc, rate);
>> - spin_unlock_irqrestore(&atc->atc_lock, flags);
>> + mutex_unlock(&atc->atc_mutex);
>>
>> return err;
>> }
>> @@ -908,7 +906,6 @@ spdif_passthru_playback_prepare(struct ct_atc
>> *atc, struct ct_atc_pcm *apcm)
>> struct dao *dao;
>> int err;
>> int i;
>> - unsigned long flags;
>>
>> if (NULL != apcm->src)
>> return 0;
>> @@ -934,13 +931,13 @@ spdif_passthru_playback_prepare(struct ct_atc
>> *atc, struct ct_atc_pcm *apcm)
>> src = apcm->src;
>> }
>> /* Connect to SPDIFOO */
>> - spin_lock_irqsave(&atc->atc_lock, flags);
>> + mutex_lock(&atc->atc_mutex);
>> dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
>> amixer = apcm->amixers[0];
>> dao->ops->set_left_input(dao,&amixer->rsc);
>> amixer = apcm->amixers[1];
>> dao->ops->set_right_input(dao,&amixer->rsc);
>> - spin_unlock_irqrestore(&atc->atc_lock, flags);
>> + mutex_unlock(&atc->atc_mutex);
>>
>> ct_timer_prepare(apcm->timer);
>>
>> @@ -1088,7 +1085,6 @@ static int atc_spdif_out_set_status(struct
>> ct_atc *atc, unsigned int status)
>>
>> static int atc_spdif_out_passthru(struct ct_atc *atc, unsigned char
>> state)
>> {
>> - unsigned long flags;
>> struct dao_desc da_dsc = {0};
>> struct dao *dao;
>> int err;
>> @@ -1096,7 +1092,7 @@ static int atc_spdif_out_passthru(struct ct_atc
>> *atc, unsigned char state)
>> struct rsc *rscs[2] = {NULL};
>> unsigned int spos = 0;
>>
>> - spin_lock_irqsave(&atc->atc_lock, flags);
>> + mutex_lock(&atc->atc_mutex);
>> dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
>> da_dsc.msr = state ? 1 : atc->msr;
>> da_dsc.passthru = state ? 1 : 0;
>> @@ -1114,7 +1110,7 @@ static int atc_spdif_out_passthru(struct ct_atc
>> *atc, unsigned char state)
>> }
>> dao->ops->set_spos(dao, spos);
>> dao->ops->commit_write(dao);
>> - spin_unlock_irqrestore(&atc->atc_lock, flags);
>> + mutex_unlock(&atc->atc_mutex);
>>
>> return err;
>> }
>> @@ -1572,7 +1568,7 @@ int __devinit ct_atc_create(struct snd_card
>> *card, struct pci_dev *pci,
>> atc->msr = msr;
>> atc->chip_type = chip_type;
>>
>> - spin_lock_init(&atc->atc_lock);
>> + mutex_init(&atc->atc_mutex);
>>
>> /* Find card model */
>> err = atc_identify_card(atc);
>> diff --git a/sound/pci/ctxfi/ctatc.h b/sound/pci/ctxfi/ctatc.h
>> index a033472..9fe620e 100644
>> --- a/sound/pci/ctxfi/ctatc.h
>> +++ b/sound/pci/ctxfi/ctatc.h
>> @@ -19,7 +19,7 @@
>> #define CTATC_H
>>
>> #include<linux/types.h>
>> -#include<linux/spinlock_types.h>
>> +#include<linux/mutex.h>
>> #include<linux/pci.h>
>> #include<linux/timer.h>
>> #include<sound/core.h>
>> @@ -90,7 +90,7 @@ struct ct_atc {
>> void (*unmap_audio_buffer)(struct ct_atc *atc, struct
>> ct_atc_pcm *apcm);
>> unsigned long (*get_ptp_phys)(struct ct_atc *atc, int index);
>>
>> - spinlock_t atc_lock;
>> + struct mutex atc_mutex;
>>
>> int (*pcm_playback_prepare)(struct ct_atc *atc,
>> struct ct_atc_pcm *apcm);
>>
> No oopses with this patch so far, thank you.
Tested the patch more. Really no oopses. Instead of them I get rare
system lockups.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: snd-ctxfi oops
2009-06-13 6:05 ` The Source
@ 2009-06-13 8:07 ` Takashi Iwai
2009-06-15 12:56 ` Takashi Iwai
0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2009-06-13 8:07 UTC (permalink / raw)
To: The Source; +Cc: alsa-devel
At Sat, 13 Jun 2009 10:05:08 +0400,
The Source wrote:
>
> On 12.06.2009 22:22, The Source wrote:
> > On 12.06.2009 11:20, Takashi Iwai wrote:
> >> At Fri, 12 Jun 2009 07:52:22 +0400,
> >> The Source wrote:
> >>> Hello. I use snd-ctxfi from 8 June snapshot. I hadn't oopses since I
> >>> installed this driver but recently I got one again:
> >>>
> >>> Kernel failure message 1:
> >>> BUG: sleeping function called from invalid context at mm/slub.c:1599
> >> Could you try the patch below?
> >>
> >>
> >> thanks,
> >>
> >> Takashi
> >>
> >> ---
> >> diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
> >> index 80fb2ba..b0adc80 100644
> >> --- a/sound/pci/ctxfi/ctatc.c
> >> +++ b/sound/pci/ctxfi/ctatc.c
> >> @@ -259,7 +259,6 @@ static int atc_pcm_playback_prepare(struct ct_atc
> >> *atc, struct ct_atc_pcm *apcm)
> >> int n_amixer = apcm->substream->runtime->channels, i = 0;
> >> int device = apcm->substream->pcm->device;
> >> unsigned int pitch;
> >> - unsigned long flags;
> >>
> >> if (NULL != apcm->src) {
> >> /* Prepared pcm playback */
> >> @@ -311,10 +310,10 @@ static int atc_pcm_playback_prepare(struct
> >> ct_atc *atc, struct ct_atc_pcm *apcm)
> >> src = apcm->src;
> >> for (i = 0; i< n_amixer; i++) {
> >> amixer = apcm->amixers[i];
> >> - spin_lock_irqsave(&atc->atc_lock, flags);
> >> + mutex_lock(&atc->atc_mutex);
> >> amixer->ops->setup(amixer,&src->rsc,
> >> INIT_VOL, atc->pcm[i+device*2]);
> >> - spin_unlock_irqrestore(&atc->atc_lock, flags);
> >> + mutex_unlock(&atc->atc_mutex);
> >> src = src->ops->next_interleave(src);
> >> if (NULL == src)
> >> src = apcm->src;
> >> @@ -865,7 +864,6 @@ static int
> >> spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm
> >> *apcm)
> >> {
> >> struct dao *dao = container_of(atc->daios[SPDIFOO], struct dao,
> >> daio);
> >> - unsigned long flags;
> >> unsigned int rate = apcm->substream->runtime->rate;
> >> unsigned int status;
> >> int err;
> >> @@ -885,7 +883,7 @@ spdif_passthru_playback_setup(struct ct_atc *atc,
> >> struct ct_atc_pcm *apcm)
> >> return -ENOENT;
> >> }
> >>
> >> - spin_lock_irqsave(&atc->atc_lock, flags);
> >> + mutex_lock(&atc->atc_mutex);
> >> dao->ops->get_spos(dao,&status);
> >> if (((status>> 24)& IEC958_AES3_CON_FS) != iec958_con_fs) {
> >> status&= ((~IEC958_AES3_CON_FS)<< 24);
> >> @@ -895,7 +893,7 @@ spdif_passthru_playback_setup(struct ct_atc *atc,
> >> struct ct_atc_pcm *apcm)
> >> }
> >> if ((rate != atc->pll_rate)&& (32000 != rate))
> >> err = atc_pll_init(atc, rate);
> >> - spin_unlock_irqrestore(&atc->atc_lock, flags);
> >> + mutex_unlock(&atc->atc_mutex);
> >>
> >> return err;
> >> }
> >> @@ -908,7 +906,6 @@ spdif_passthru_playback_prepare(struct ct_atc
> >> *atc, struct ct_atc_pcm *apcm)
> >> struct dao *dao;
> >> int err;
> >> int i;
> >> - unsigned long flags;
> >>
> >> if (NULL != apcm->src)
> >> return 0;
> >> @@ -934,13 +931,13 @@ spdif_passthru_playback_prepare(struct ct_atc
> >> *atc, struct ct_atc_pcm *apcm)
> >> src = apcm->src;
> >> }
> >> /* Connect to SPDIFOO */
> >> - spin_lock_irqsave(&atc->atc_lock, flags);
> >> + mutex_lock(&atc->atc_mutex);
> >> dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
> >> amixer = apcm->amixers[0];
> >> dao->ops->set_left_input(dao,&amixer->rsc);
> >> amixer = apcm->amixers[1];
> >> dao->ops->set_right_input(dao,&amixer->rsc);
> >> - spin_unlock_irqrestore(&atc->atc_lock, flags);
> >> + mutex_unlock(&atc->atc_mutex);
> >>
> >> ct_timer_prepare(apcm->timer);
> >>
> >> @@ -1088,7 +1085,6 @@ static int atc_spdif_out_set_status(struct
> >> ct_atc *atc, unsigned int status)
> >>
> >> static int atc_spdif_out_passthru(struct ct_atc *atc, unsigned char
> >> state)
> >> {
> >> - unsigned long flags;
> >> struct dao_desc da_dsc = {0};
> >> struct dao *dao;
> >> int err;
> >> @@ -1096,7 +1092,7 @@ static int atc_spdif_out_passthru(struct ct_atc
> >> *atc, unsigned char state)
> >> struct rsc *rscs[2] = {NULL};
> >> unsigned int spos = 0;
> >>
> >> - spin_lock_irqsave(&atc->atc_lock, flags);
> >> + mutex_lock(&atc->atc_mutex);
> >> dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
> >> da_dsc.msr = state ? 1 : atc->msr;
> >> da_dsc.passthru = state ? 1 : 0;
> >> @@ -1114,7 +1110,7 @@ static int atc_spdif_out_passthru(struct ct_atc
> >> *atc, unsigned char state)
> >> }
> >> dao->ops->set_spos(dao, spos);
> >> dao->ops->commit_write(dao);
> >> - spin_unlock_irqrestore(&atc->atc_lock, flags);
> >> + mutex_unlock(&atc->atc_mutex);
> >>
> >> return err;
> >> }
> >> @@ -1572,7 +1568,7 @@ int __devinit ct_atc_create(struct snd_card
> >> *card, struct pci_dev *pci,
> >> atc->msr = msr;
> >> atc->chip_type = chip_type;
> >>
> >> - spin_lock_init(&atc->atc_lock);
> >> + mutex_init(&atc->atc_mutex);
> >>
> >> /* Find card model */
> >> err = atc_identify_card(atc);
> >> diff --git a/sound/pci/ctxfi/ctatc.h b/sound/pci/ctxfi/ctatc.h
> >> index a033472..9fe620e 100644
> >> --- a/sound/pci/ctxfi/ctatc.h
> >> +++ b/sound/pci/ctxfi/ctatc.h
> >> @@ -19,7 +19,7 @@
> >> #define CTATC_H
> >>
> >> #include<linux/types.h>
> >> -#include<linux/spinlock_types.h>
> >> +#include<linux/mutex.h>
> >> #include<linux/pci.h>
> >> #include<linux/timer.h>
> >> #include<sound/core.h>
> >> @@ -90,7 +90,7 @@ struct ct_atc {
> >> void (*unmap_audio_buffer)(struct ct_atc *atc, struct
> >> ct_atc_pcm *apcm);
> >> unsigned long (*get_ptp_phys)(struct ct_atc *atc, int index);
> >>
> >> - spinlock_t atc_lock;
> >> + struct mutex atc_mutex;
> >>
> >> int (*pcm_playback_prepare)(struct ct_atc *atc,
> >> struct ct_atc_pcm *apcm);
> >>
> > No oopses with this patch so far, thank you.
> Tested the patch more. Really no oopses. Instead of them I get rare
> system lockups.
In which situation, exactly?
Could you check whether it happens with use_system_timer=1 module
option, too?
Takashi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: snd-ctxfi oops
2009-06-13 8:07 ` Takashi Iwai
@ 2009-06-15 12:56 ` Takashi Iwai
[not found] ` <4A3645C9.40804@gmail.com>
0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2009-06-15 12:56 UTC (permalink / raw)
To: The Source; +Cc: alsa-devel
At Sat, 13 Jun 2009 10:07:49 +0200,
I wrote:
>
> > Tested the patch more. Really no oopses. Instead of them I get rare
> > system lockups.
>
> In which situation, exactly?
> Could you check whether it happens with use_system_timer=1 module
> option, too?
Or try the very latest alsa-driver-snapshot (not daily tarball).
I fixed a deadlock issue in cttimer.c now.
thanks,
Takashi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: snd-ctxfi oops
[not found] ` <s5htz2hejmx.wl%tiwai@suse.de>
@ 2009-06-17 13:09 ` The Source
2009-06-18 0:17 ` Ted T. Logan
0 siblings, 1 reply; 7+ messages in thread
From: The Source @ 2009-06-17 13:09 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
On 15.06.2009 17:01, Takashi Iwai wrote:
> At Mon, 15 Jun 2009 15:00:03 +0200,
> I wrote:
>
>> At Mon, 15 Jun 2009 16:59:53 +0400,
>> The Source wrote:
>>
>>> On 15.06.2009 16:56, Takashi Iwai wrote:
>>>
>>>> At Sat, 13 Jun 2009 10:07:49 +0200,
>>>> I wrote:
>>>>
>>>>
>>>>>
>>>>>
>>>>>> Tested the patch more. Really no oopses. Instead of them I get rare
>>>>>> system lockups.
>>>>>>
>>>>>>
>>>>> In which situation, exactly?
>>>>> Could you check whether it happens with use_system_timer=1 module
>>>>> option, too?
>>>>>
>>>>>
>>>> Or try the very latest alsa-driver-snapshot (not daily tarball).
>>>> I fixed a deadlock issue in cttimer.c now.
>>>>
>>>>
>>>> thanks,
>>>>
>>>> Takashi
>>>>
>>>>
>>>>
>>> Should I apply that patch to this snapshot?
>>>
>> Which patch do you mean?
>> Just grab the latest alsa-driver-snapshot.tar.gz from
>> ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/
>>
> Also, check alsa-driver/alsa-kernel/HEAD whether the commit
> 8dca419721d188bfee5f19fad45275856c619a5c
> ALSA: ctxfi - Fix deadlock with xfi-timer
> is included.
>
>
> Takashi
>
>
Tested the driver and it's fine so far. No craches with any application
including Doom 3, which caused system lockups often with earlier
versions of the driver.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: snd-ctxfi oops
2009-06-17 13:09 ` The Source
@ 2009-06-18 0:17 ` Ted T. Logan
0 siblings, 0 replies; 7+ messages in thread
From: Ted T. Logan @ 2009-06-18 0:17 UTC (permalink / raw)
To: The Source; +Cc: Takashi Iwai, alsa-devel
I upgraded to this new snapshot and have the same click every 1.5
seconds on every single application with my x-fi.
I'm just confused as to why this didn't occur at all with the old
driver, as in, was something strange introduced?
On Wed, 2009-06-17 at 17:09 +0400, The Source wrote:
> On 15.06.2009 17:01, Takashi Iwai wrote:
> > At Mon, 15 Jun 2009 15:00:03 +0200,
> > I wrote:
> >
> >> At Mon, 15 Jun 2009 16:59:53 +0400,
> >> The Source wrote:
> >>
> >>> On 15.06.2009 16:56, Takashi Iwai wrote:
> >>>
> >>>> At Sat, 13 Jun 2009 10:07:49 +0200,
> >>>> I wrote:
> >>>>
> >>>>
> >>>>>
> >>>>>
> >>>>>> Tested the patch more. Really no oopses. Instead of them I get rare
> >>>>>> system lockups.
> >>>>>>
> >>>>>>
> >>>>> In which situation, exactly?
> >>>>> Could you check whether it happens with use_system_timer=1 module
> >>>>> option, too?
> >>>>>
> >>>>>
> >>>> Or try the very latest alsa-driver-snapshot (not daily tarball).
> >>>> I fixed a deadlock issue in cttimer.c now.
> >>>>
> >>>>
> >>>> thanks,
> >>>>
> >>>> Takashi
> >>>>
> >>>>
> >>>>
> >>> Should I apply that patch to this snapshot?
> >>>
> >> Which patch do you mean?
> >> Just grab the latest alsa-driver-snapshot.tar.gz from
> >> ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/
> >>
> > Also, check alsa-driver/alsa-kernel/HEAD whether the commit
> > 8dca419721d188bfee5f19fad45275856c619a5c
> > ALSA: ctxfi - Fix deadlock with xfi-timer
> > is included.
> >
> >
> > Takashi
> >
> >
> Tested the driver and it's fine so far. No craches with any application
> including Doom 3, which caused system lockups often with earlier
> versions of the driver.
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-06-18 0:17 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-12 3:52 snd-ctxfi oops The Source
2009-06-12 7:20 ` Takashi Iwai
[not found] ` <4A329D02.8070202@gmail.com>
2009-06-13 6:05 ` The Source
2009-06-13 8:07 ` Takashi Iwai
2009-06-15 12:56 ` Takashi Iwai
[not found] ` <4A3645C9.40804@gmail.com>
[not found] ` <s5hvdmxejos.wl%tiwai@suse.de>
[not found] ` <s5htz2hejmx.wl%tiwai@suse.de>
2009-06-17 13:09 ` The Source
2009-06-18 0:17 ` Ted T. Logan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.