All of lore.kernel.org
 help / color / mirror / Atom feed
* 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.