All of lore.kernel.org
 help / color / mirror / Atom feed
* snd_array_free - snd: bad kfree when HDA reconfig
@ 2011-09-02  7:16 Raymond Yau
  2011-09-12  7:46 ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Raymond Yau @ 2011-09-02  7:16 UTC (permalink / raw)
  To: ALSA Development Mailing List, Takashi Iwai

These errors "snd: bad kfree" occur when reconfig HDA from model
"6stack-dig-fp" to "auto" and vice versa

Is "HD-Audio reconfiguration" still experimental ?

BTW, it seem that HDA Digital PCBeep assigned to different input after
each reconfig

input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input7
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input8
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input9


aplay -l
card 1: Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 1: AD198x Digital [AD198x Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 2: AD198x Headphone [AD198x Headphone]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


echo "auto" > /sys/class/sound/hwC1D0/modelname
echo 1 > /sys/class/sound/hwC1D0/reconfig


aplay -l
card 1: Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 1: AD198x Digital [AD198x Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


echo "6stack-dig-fp" > /sys/class/sound/hwC1D0/modelname
echo 1 > /sys/class/sound/hwC1D0/reconfig

aplay -l
card 1: Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 1: AD198x Digital [AD198x Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 2: AD198x Headphone [AD198x Headphone]
  Subdevices: 1/1
  Subdevice #0: subdevice #0







ALSA hda_hwdep.c:220: hda-codec: reconfiguring
snd: bad kfree (called from f8be4636)
Pid: 8079, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be807e>] snd_hda_ctls_clear+0x35/0x45 [snd_hda_codec]
 [<f8be8180>] snd_hda_codec_reset+0xf2/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
snd: bad kfree (called from f8be4636)
Pid: 8079, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be8089>] snd_hda_ctls_clear+0x40/0x45 [snd_hda_codec]
 [<f8be8180>] snd_hda_codec_reset+0xf2/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
snd: bad kfree (called from f8be4636)
Pid: 8079, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be81de>] snd_hda_codec_reset+0x150/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
snd: bad kfree (called from f8be4636)
Pid: 8079, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be81e9>] snd_hda_codec_reset+0x15b/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
ALSA hda_codec.c:3961: hda_codec: model 'auto' is selected
ALSA hda_codec.c:4900: autoconfig: line_outs=4
(0x12/0x16/0x24/0x25/0x0) type:line
ALSA hda_codec.c:4904:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
ALSA hda_codec.c:4908:    hp_outs=1 (0x11/0x0/0x0/0x0/0x0)
ALSA hda_codec.c:4909:    mono: mono_out=0x0
ALSA hda_codec.c:4912:    dig-out=0x1b/0x0
ALSA hda_codec.c:4913:    inputs:<7>ALSA hda_codec.c:4917:  Front
Mic=0x14<7>ALSA hda_codec.c:4917:  Rear Mic=0x17<7>ALSA
hda_codec.c:4917:  Line=0x15<7>ALSA hda_codec.c:4917:  CD=0x18<7>ALSA
hda_codec.c:4919:
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input8
ALSA hda_codec.c:2370: Cannot find slave Mono Playback Volume, skipped
ALSA hda_codec.c:2370: Cannot find slave Speaker Playback Volume, skipped
ALSA hda_codec.c:2370: Cannot find slave Mono Playback Switch, skipped
ALSA hda_codec.c:2370: Cannot find slave Speaker Playback Switch, skipped
snd: bad kfree (called from f8be4636)
Pid: 8079, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8b79d29>] ad198x_free_kctls+0x37/0x3c [snd_hda_codec_analog]
 [<f8b7ad5a>] ad198x_build_controls+0x190/0x217 [snd_hda_codec_analog]
 [<f8be7481>] snd_hda_codec_build_controls+0x31/0x3d [snd_hda_codec]
 [<f8bec704>] reconfig_store+0x83/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================



ALSA hda_hwdep.c:220: hda-codec: reconfiguring
snd: bad kfree (called from f8be4636)
Pid: 8201, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be807e>] snd_hda_ctls_clear+0x35/0x45 [snd_hda_codec]
 [<f8be8180>] snd_hda_codec_reset+0xf2/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
snd: bad kfree (called from f8be4636)
Pid: 8201, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be8089>] snd_hda_ctls_clear+0x40/0x45 [snd_hda_codec]
 [<f8be8180>] snd_hda_codec_reset+0xf2/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
snd: bad kfree (called from f8be4636)
Pid: 8201, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be81de>] snd_hda_codec_reset+0x150/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
snd: bad kfree (called from f8be4636)
Pid: 8201, comm: bash Not tainted 2.6.27.41-170.2.117.fc10.i686 #1
 [<c06aa30b>] ? printk+0xf/0x14
 [<f895523e>] snd_hidden_kfree+0x2a/0x70 [snd]
 [<f8be4636>] ? snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be4636>] snd_array_free+0xe/0x25 [snd_hda_codec]
 [<f8be81e9>] snd_hda_codec_reset+0x15b/0x250 [snd_hda_codec]
 [<f8959ab8>] ? __snd_printk+0x33/0x3c [snd]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<f8bec6bf>] reconfig_store+0x3e/0xab [snd_hda_codec]
 [<f8bec681>] ? reconfig_store+0x0/0xab [snd_hda_codec]
 [<c0594ee1>] dev_attr_store+0x1b/0x23
 [<c04ce68a>] sysfs_write_file+0xb4/0xdf
 [<c04ce5d6>] ? sysfs_write_file+0x0/0xdf
 [<c04932ee>] vfs_write+0x84/0xdf
 [<c04933e2>] sys_write+0x3b/0x60
 [<c0404c8a>] syscall_call+0x7/0xb
 =======================
ALSA hda_codec.c:3961: hda_codec: model '6stack-dig-fp' is selected
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input9

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

* Re: snd_array_free - snd: bad kfree when HDA reconfig
  2011-09-02  7:16 snd_array_free - snd: bad kfree when HDA reconfig Raymond Yau
@ 2011-09-12  7:46 ` Takashi Iwai
  2011-09-14  0:04   ` Raymond Yau
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2011-09-12  7:46 UTC (permalink / raw)
  To: Raymond Yau; +Cc: ALSA Development Mailing List

At Fri, 2 Sep 2011 15:16:28 +0800,
Raymond Yau wrote:
> 
> These errors "snd: bad kfree" occur when reconfig HDA from model
> "6stack-dig-fp" to "auto" and vice versa

Doesn't this happen when you unload the device, right?
And, it happens when writing to /sys/class/sound/hwC0D0/clear?

> Is "HD-Audio reconfiguration" still experimental ?

Somehow yet, but mostly it worked for me :)

> BTW, it seem that HDA Digital PCBeep assigned to different input after
> each reconfig
> 
> input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input7
> input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input8
> input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input9

This is unavoidable, unfortunately.  It's the designed implementation
of input layer.

> ALSA hda_hwdep.c:220: hda-codec: reconfiguring
> snd: bad kfree (called from f8be4636)

Hmm, this is a magic check in external alsa-driver builds.
I guess it's just a bug there -- the override of krealloc() is
missing.

Does the patch below (to alsa-driver tree) fix the problem?


thanks,

Takashi

---
diff --git a/acore/memory_debug.c b/acore/memory_debug.c
index 4527378..0baf9b9 100644
--- a/acore/memory_debug.c
+++ b/acore/memory_debug.c
@@ -128,6 +128,21 @@ void snd_hidden_kfree(const void *obj)
 	snd_wrapper_kfree(obj);
 }
 
+size_t snd_hidden_ksize(const void *obj)
+{
+	struct snd_alloc_track *t;
+	if (!obj)
+		return 0;
+	t = snd_alloc_track_entry(obj);
+	if (t->magic != KMALLOC_MAGIC) {
+		printk(KERN_WARNING "snd: bad ksize (called from %p)\n",
+		       __builtin_return_address(0));
+		dump_stack();
+		return 0;
+	}
+	return t->size;
+}
+
 char *snd_hidden_kstrdup(const char *s, gfp_t gfp_flags)
 {
 	int len;
diff --git a/include/adriver.h b/include/adriver.h
index 1418a5e..fe70442 100644
--- a/include/adriver.h
+++ b/include/adriver.h
@@ -892,6 +892,7 @@ void *snd_hidden_kcalloc(size_t n, size_t size, gfp_t flags);
 char *snd_hidden_kstrdup(const char *s, gfp_t flags);
 char *snd_hidden_kstrndup(const char *s, size_t len, gfp_t flags);
 void snd_hidden_kfree(const void *obj);
+size_t snd_hidden_ksize(const void *obj);
 
 static inline void *snd_wrapper_kmalloc(size_t size, gfp_t flags)
 {
@@ -907,6 +908,7 @@ static inline void snd_wrapper_kfree(const void *obj)
 #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags)
 #define kstrdup(s, flags)  snd_hidden_kstrdup(s, flags)
 #define kstrndup(s, len, flags)  snd_hidden_kstrndup(s, len, flags)
+#define ksize(obj) snd_hidden_ksize(obj)
 #define kfree(obj) snd_hidden_kfree(obj)
 
 #define kmalloc_nocheck(size, flags) snd_wrapper_kmalloc(size, flags)
@@ -2000,9 +2002,9 @@ static inline bool flush_delayed_work_sync(struct delayed_work *dwork)
 #endif
 
 /* krealloc() wrapper */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) || defined(CONFIG_SND_DEBUG_MEMORY)
 #include <linux/slab.h>
-static inline void *krealloc(const void *p, size_t new_size, gfp_t flags)
+static inline void *snd_compat_krealloc(const void *p, size_t new_size, gfp_t flags)
 {
 	void *n;
 	if (!p)
@@ -2018,6 +2020,7 @@ static inline void *krealloc(const void *p, size_t new_size, gfp_t flags)
 	kfree(p);
 	return n;
 }
+#define krealloc(p, s, f)	snd_compat_krealloc(p, s, f)
 #endif
 
 #endif /* __SOUND_LOCAL_DRIVER_H */

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

* Re: snd_array_free - snd: bad kfree when HDA reconfig
  2011-09-12  7:46 ` Takashi Iwai
@ 2011-09-14  0:04   ` Raymond Yau
  2011-09-14  6:02     ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Raymond Yau @ 2011-09-14  0:04 UTC (permalink / raw)
  To: Takashi Iwai, ALSA Development Mailing List

2011/9/12 Takashi Iwai <tiwai@suse.de>:
> At Fri, 2 Sep 2011 15:16:28 +0800,
> Raymond Yau wrote:
>>
>> These errors "snd: bad kfree" occur when reconfig HDA from model
>> "6stack-dig-fp" to "auto" and vice versa
>
> Doesn't this happen when you unload the device, right?

These errors "snd: bad kfree" also happen when unload and reload the driver

rmmod snd-hda-intel
insmod snd-hda-inteel


> And, it happens when writing to /sys/class/sound/hwC0D0/clear?
>
>> Is "HD-Audio reconfiguration" still experimental ?
>
> Somehow yet, but mostly it worked for me :)
>

I just use hda reconfig to change the model="auto" to "6stack-dig-fp"
and vice versa

This mean that I need to implement "Independent HP" switch which allow
user to change the topology if this feature is still experimental

>
>> ALSA hda_hwdep.c:220: hda-codec: reconfiguring
>> snd: bad kfree (called from f8be4636)
>
> Hmm, this is a magic check in external alsa-driver builds.
> I guess it's just a bug there -- the override of krealloc() is
> missing.
>
> Does the patch below (to alsa-driver tree) fix the problem?
>

Do I need to specify any option and run configure script again ?

alsa-driver compiled without error but fail to loaded and complain
ksize undefined symbol

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

* Re: snd_array_free - snd: bad kfree when HDA reconfig
  2011-09-14  0:04   ` Raymond Yau
@ 2011-09-14  6:02     ` Takashi Iwai
  2011-09-15 14:23       ` Raymond Yau
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2011-09-14  6:02 UTC (permalink / raw)
  To: Raymond Yau; +Cc: ALSA Development Mailing List

At Wed, 14 Sep 2011 08:04:46 +0800,
Raymond Yau wrote:
> 
> 2011/9/12 Takashi Iwai <tiwai@suse.de>:
> > At Fri, 2 Sep 2011 15:16:28 +0800,
> > Raymond Yau wrote:
> >>
> >> These errors "snd: bad kfree" occur when reconfig HDA from model
> >> "6stack-dig-fp" to "auto" and vice versa
> >
> > Doesn't this happen when you unload the device, right?
> 
> These errors "snd: bad kfree" also happen when unload and reload the driver
> 
> rmmod snd-hda-intel
> insmod snd-hda-inteel

OK, then it's just alsa-driver's debug stuff, no problem in the kernel
tree itself.

> > And, it happens when writing to /sys/class/sound/hwC0D0/clear?
> >
> >> Is "HD-Audio reconfiguration" still experimental ?
> >
> > Somehow yet, but mostly it worked for me :)
> >
> 
> I just use hda reconfig to change the model="auto" to "6stack-dig-fp"
> and vice versa
> 
> This mean that I need to implement "Independent HP" switch which allow
> user to change the topology if this feature is still experimental

The feature is anyway optional (i.e. not all users enable it).

> >> ALSA hda_hwdep.c:220: hda-codec: reconfiguring
> >> snd: bad kfree (called from f8be4636)
> >
> > Hmm, this is a magic check in external alsa-driver builds.
> > I guess it's just a bug there -- the override of krealloc() is
> > missing.
> >
> > Does the patch below (to alsa-driver tree) fix the problem?
> >
> 
> Do I need to specify any option and run configure script again ?

No.

> alsa-driver compiled without error but fail to loaded and complain
> ksize undefined symbol

Try the patch below in addition to the previous one.


thanks,

Takashi

---
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] Add missing export of snd_hidden_ksize()

Also fix the ifdef of krealloc() wrapper for some corner cases.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 acore/sound.inc   |    1 +
 include/adriver.h |    3 ++-
 2 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/acore/sound.inc b/acore/sound.inc
index a79755e..2e63c98 100644
--- a/acore/sound.inc
+++ b/acore/sound.inc
@@ -3,6 +3,7 @@
 EXPORT_SYMBOL(snd_hidden_kmalloc);
 EXPORT_SYMBOL(snd_hidden_kzalloc);
 EXPORT_SYMBOL(snd_hidden_kcalloc);
+EXPORT_SYMBOL(snd_hidden_ksize);
 EXPORT_SYMBOL(snd_hidden_kfree);
 EXPORT_SYMBOL(snd_hidden_kstrdup);
 EXPORT_SYMBOL(snd_hidden_kstrndup);
diff --git a/include/adriver.h b/include/adriver.h
index fe70442..848bc17 100644
--- a/include/adriver.h
+++ b/include/adriver.h
@@ -2002,7 +2002,8 @@ static inline bool flush_delayed_work_sync(struct delayed_work *dwork)
 #endif
 
 /* krealloc() wrapper */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) || defined(CONFIG_SND_DEBUG_MEMORY)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) || \
+	(defined(CONFIG_SND_DEBUG_MEMORY) && !defined(SKIP_HIDDEN_MALLOCS))
 #include <linux/slab.h>
 static inline void *snd_compat_krealloc(const void *p, size_t new_size, gfp_t flags)
 {
-- 
1.7.6.1

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

* Re: snd_array_free - snd: bad kfree when HDA reconfig
  2011-09-14  6:02     ` Takashi Iwai
@ 2011-09-15 14:23       ` Raymond Yau
  2011-09-15 14:30         ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Raymond Yau @ 2011-09-15 14:23 UTC (permalink / raw)
  To: Takashi Iwai, ALSA Development Mailing List

2011/9/14 Takashi Iwai <tiwai@suse.de>:
>
> Try the patch below in addition to the previous one.
>
>
> thanks,
>
> Takashi
>
> ---
> From: Takashi Iwai <tiwai@suse.de>
> Subject: [PATCH] Add missing export of snd_hidden_ksize()
>
> Also fix the ifdef of krealloc() wrapper for some corner cases.
>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>  acore/sound.inc   |    1 +
>  include/adriver.h |    3 ++-
>  2 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/acore/sound.inc b/acore/sound.inc
> index a79755e..2e63c98 100644
> --- a/acore/sound.inc
> +++ b/acore/sound.inc
> @@ -3,6 +3,7 @@
>  EXPORT_SYMBOL(snd_hidden_kmalloc);
>  EXPORT_SYMBOL(snd_hidden_kzalloc);
>  EXPORT_SYMBOL(snd_hidden_kcalloc);
> +EXPORT_SYMBOL(snd_hidden_ksize);
>  EXPORT_SYMBOL(snd_hidden_kfree);
>  EXPORT_SYMBOL(snd_hidden_kstrdup);
>  EXPORT_SYMBOL(snd_hidden_kstrndup);
> diff --git a/include/adriver.h b/include/adriver.h
> index fe70442..848bc17 100644
> --- a/include/adriver.h
> +++ b/include/adriver.h
> @@ -2002,7 +2002,8 @@ static inline bool flush_delayed_work_sync(struct delayed_work *dwork)
>  #endif
>
>  /* krealloc() wrapper */
> -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) || defined(CONFIG_SND_DEBUG_MEMORY)
> +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) || \
> +       (defined(CONFIG_SND_DEBUG_MEMORY) && !defined(SKIP_HIDDEN_MALLOCS))
>  #include <linux/slab.h>
>  static inline void *snd_compat_krealloc(const void *p, size_t new_size, gfp_t flags)
>  {
> --
> 1.7.6.1
>
>

your patch fix the problem

BTW, there is some strange behaviour of the non-sticky pcm
implementation on ad1988

Refer to commit 0e7adbe263f89ea2ef15b5af5e80a812b2a85025

Disable sticky PCM stream assignment for AD codecs

why hda_codec_cleanup_stream is called twice  and this also occur with
capture and playback


ALSA hda_intel.c:1755: azx_pcm_prepare: bufsize=0x10000, format=0x4011
ALSA hda_codec.c:1408: hda_codec_setup_stream: NID=0x4, stream=0x5,
channel=0, format=0x4011
ALSA hda_codec.c:1408: hda_codec_setup_stream: NID=0x3, stream=0x5,
channel=0, format=0x4011
ALSA hda_codec.c:1408: hda_codec_setup_stream: NID=0x6, stream=0x5,
channel=0, format=0x4011
ALSA hda_codec.c:1408: hda_codec_setup_stream: NID=0x5, stream=0x5,
channel=0, format=0x4011
ALSA hda_codec.c:1408: hda_codec_setup_stream: NID=0xa, stream=0x5,
channel=0, format=0x4011
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x4
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x6
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x5
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0xa
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x3
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x4
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x6
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x5
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0xa
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x3



ALSA hda_intel.c:1755: azx_pcm_prepare: bufsize=0x10000, format=0x4011
ALSA hda_codec.c:1408: hda_codec_setup_stream: NID=0x8, stream=0x1,
channel=0, format=0x4011
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x8
ALSA hda_codec.c:1471: hda_codec_cleanup_stream: NID=0x8

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

* Re: snd_array_free - snd: bad kfree when HDA reconfig
  2011-09-15 14:23       ` Raymond Yau
@ 2011-09-15 14:30         ` Takashi Iwai
  0 siblings, 0 replies; 6+ messages in thread
From: Takashi Iwai @ 2011-09-15 14:30 UTC (permalink / raw)
  To: Raymond Yau; +Cc: ALSA Development Mailing List

At Thu, 15 Sep 2011 22:23:12 +0800,
Raymond Yau wrote:
> 
> 2011/9/14 Takashi Iwai <tiwai@suse.de>:
> >
> > Try the patch below in addition to the previous one.
> >
> >
> > thanks,
> >
> > Takashi
> >
> > ---
> > From: Takashi Iwai <tiwai@suse.de>
> > Subject: [PATCH] Add missing export of snd_hidden_ksize()
> >
> > Also fix the ifdef of krealloc() wrapper for some corner cases.
> >
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > ---
> >  acore/sound.inc   |    1 +
> >  include/adriver.h |    3 ++-
> >  2 files changed, 3 insertions(+), 1 deletions(-)
> >
> > diff --git a/acore/sound.inc b/acore/sound.inc
> > index a79755e..2e63c98 100644
> > --- a/acore/sound.inc
> > +++ b/acore/sound.inc
> > @@ -3,6 +3,7 @@
> >  EXPORT_SYMBOL(snd_hidden_kmalloc);
> >  EXPORT_SYMBOL(snd_hidden_kzalloc);
> >  EXPORT_SYMBOL(snd_hidden_kcalloc);
> > +EXPORT_SYMBOL(snd_hidden_ksize);
> >  EXPORT_SYMBOL(snd_hidden_kfree);
> >  EXPORT_SYMBOL(snd_hidden_kstrdup);
> >  EXPORT_SYMBOL(snd_hidden_kstrndup);
> > diff --git a/include/adriver.h b/include/adriver.h
> > index fe70442..848bc17 100644
> > --- a/include/adriver.h
> > +++ b/include/adriver.h
> > @@ -2002,7 +2002,8 @@ static inline bool flush_delayed_work_sync(struct delayed_work *dwork)
> >  #endif
> >
> >  /* krealloc() wrapper */
> > -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) || defined(CONFIG_SND_DEBUG_MEMORY)
> > +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)) || \
> > +       (defined(CONFIG_SND_DEBUG_MEMORY) && !defined(SKIP_HIDDEN_MALLOCS))
> >  #include <linux/slab.h>
> >  static inline void *snd_compat_krealloc(const void *p, size_t new_size, gfp_t flags)
> >  {
> > --
> > 1.7.6.1
> >
> >
> 
> your patch fix the problem
> 
> BTW, there is some strange behaviour of the non-sticky pcm
> implementation on ad1988
> 
> Refer to commit 0e7adbe263f89ea2ef15b5af5e80a812b2a85025
> 
> Disable sticky PCM stream assignment for AD codecs
> 
> why hda_codec_cleanup_stream is called twice  and this also occur with
> capture and playback

Isn't it just the power-save?  The suspend calls
hda_cleanup_all_streams().

That is, the first call is the normal one, and it doesn't clean up the
stream actually because of stickiness.  The second call is the real
cleanup at power-saving.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

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

end of thread, other threads:[~2011-09-15 14:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-02  7:16 snd_array_free - snd: bad kfree when HDA reconfig Raymond Yau
2011-09-12  7:46 ` Takashi Iwai
2011-09-14  0:04   ` Raymond Yau
2011-09-14  6:02     ` Takashi Iwai
2011-09-15 14:23       ` Raymond Yau
2011-09-15 14:30         ` Takashi Iwai

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.