All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
@ 2008-10-07  6:56 Wu Fengguang
  2008-10-07  8:10 ` Takashi Iwai
  0 siblings, 1 reply; 8+ messages in thread
From: Wu Fengguang @ 2008-10-07  6:56 UTC (permalink / raw)
  To: patch; +Cc: alsa-devel

Enlarge snd_card.components[80] to 128 bytes, with space for 4 codecs.
The previous size 80 cannot support HP 2230s which has 3 codecs.

Signed-off-by: Wu Fengguang <wfg@linux.intel.com>
---

diff --git a/include/sound/asound.h b/include/sound/asound.h
index ca2f358..b3801b0 100644
--- a/include/sound/asound.h
+++ b/include/sound/asound.h
@@ -708,7 +708,7 @@ struct snd_ctl_card_info {
 	unsigned char longname[80];	/* name + info text about soundcard */
 	unsigned char reserved_[16];	/* reserved for future (was ID of mixer) */
 	unsigned char mixername[80];	/* visual mixer identification */
-	unsigned char components[80];	/* card components / fine identification, delimited with one space (AC97 etc..) */
+	unsigned char components[128];	/* card components / fine identification, delimited with one space (AC97 etc..) */
 	unsigned char reserved[48];	/* reserved for future */
 };
 
diff --git a/include/sound/core.h b/include/sound/core.h
index f52ab6f..dcbc424 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -116,7 +116,7 @@ struct snd_card {
 	char shortname[32];		/* short name of this soundcard */
 	char longname[80];		/* name of this soundcard */
 	char mixername[80];		/* mixer name */
-	char components[80];		/* card components delimited with
+	char components[128];		/* card components delimited with
 								space */
 	struct module *module;		/* top-level module */

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

* Re: [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
  2008-10-07  6:56 [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs Wu Fengguang
@ 2008-10-07  8:10 ` Takashi Iwai
  2008-10-07  8:34   ` Wu Fengguang
  0 siblings, 1 reply; 8+ messages in thread
From: Takashi Iwai @ 2008-10-07  8:10 UTC (permalink / raw)
  To: Wu Fengguang; +Cc: alsa-devel, patch

At Tue, 7 Oct 2008 14:56:06 +0800,
Wu Fengguang wrote:
> 
> Enlarge snd_card.components[80] to 128 bytes, with space for 4 codecs.
> The previous size 80 cannot support HP 2230s which has 3 codecs.
> 
> Signed-off-by: Wu Fengguang <wfg@linux.intel.com>

Thanks for the patch.  Unfortunately, this can't be applied as is.
struct snd_ctl_card_info is exported and used as the ioctl parameter,
thus you cannot change the size.

One possible fix is to merge reserved[48] into components[80]
so that the struct size is kept as is.
But still we have to be very careful to such a change, and need to
investigate all possible places to refer it.


Takashi

> ---
> 
> diff --git a/include/sound/asound.h b/include/sound/asound.h
> index ca2f358..b3801b0 100644
> --- a/include/sound/asound.h
> +++ b/include/sound/asound.h
> @@ -708,7 +708,7 @@ struct snd_ctl_card_info {
>  	unsigned char longname[80];	/* name + info text about soundcard */
>  	unsigned char reserved_[16];	/* reserved for future (was ID of mixer) */
>  	unsigned char mixername[80];	/* visual mixer identification */
> -	unsigned char components[80];	/* card components / fine identification, delimited with one space (AC97 etc..) */
> +	unsigned char components[128];	/* card components / fine identification, delimited with one space (AC97 etc..) */
>  	unsigned char reserved[48];	/* reserved for future */
>  };
>  
> diff --git a/include/sound/core.h b/include/sound/core.h
> index f52ab6f..dcbc424 100644
> --- a/include/sound/core.h
> +++ b/include/sound/core.h
> @@ -116,7 +116,7 @@ struct snd_card {
>  	char shortname[32];		/* short name of this soundcard */
>  	char longname[80];		/* name of this soundcard */
>  	char mixername[80];		/* mixer name */
> -	char components[80];		/* card components delimited with
> +	char components[128];		/* card components delimited with
>  								space */
>  	struct module *module;		/* top-level module */
>  
> 

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

* Re: [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
  2008-10-07  8:10 ` Takashi Iwai
@ 2008-10-07  8:34   ` Wu Fengguang
  2008-10-07  9:00     ` Takashi Iwai
  0 siblings, 1 reply; 8+ messages in thread
From: Wu Fengguang @ 2008-10-07  8:34 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, patch

On Tue, Oct 07, 2008 at 10:10:43AM +0200, Takashi Iwai wrote:
> At Tue, 7 Oct 2008 14:56:06 +0800,
> Wu Fengguang wrote:
> > 
> > Enlarge snd_card.components[80] to 128 bytes, with space for 4 codecs.
> > The previous size 80 cannot support HP 2230s which has 3 codecs.
> > 
> > Signed-off-by: Wu Fengguang <wfg@linux.intel.com>
> 
> Thanks for the patch.  Unfortunately, this can't be applied as is.
> struct snd_ctl_card_info is exported and used as the ioctl parameter,
> thus you cannot change the size.
> 
> One possible fix is to merge reserved[48] into components[80]
> so that the struct size is kept as is.
> But still we have to be very careful to such a change, and need to
> investigate all possible places to refer it.

OK.

FYI, this is the debug patch and kernel message(lookout the first line) on HP 2230s:

diff --git a/sound/core/init.c b/sound/core/init.c
index 8af467d..704d7e8 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -706,6 +706,8 @@ int snd_component_add(struct snd_card *card, const char *component)
 			return 1;
 	}
 	if (strlen(card->components) + 1 + len + 1 > sizeof(card->components)) {
+		snd_printk(KERN_ERR "components = %s + %s\n",
+				card->components, component);
 		snd_BUG();
 		return -ENOMEM;
 	}


[   12.590150] ALSA sound/core/init.c:710: components = HDA:11d4194a,103c3037,00100400 HDA:11c11040,103c1378,00100200 + HDA:80862802,80860101,00100000
[   12.590163] ------------[ cut here ]------------
[   12.590166] WARNING: at sound/core/init.c:711 snd_component_add+0xfa/0x110 [snd]()
[   12.590168] BUG?
[   12.590170] Modules linked in: snd_hda_intel(+) snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss iwlagn snd_pcm snd_timer iwlcore snd_page_alloc snd_hwdep rfkill snd pcspkr led_class sky2 wmi soundcore uhci_hcd ohci_hcd ehci_hcd
[   12.590197] Pid: 2410, comm: modprobe Not tainted 2.6.27-rc7 #4
[   12.590200] 
[   12.590200] Call Trace:
[   12.590209]  [<ffffffff81045d47>] warn_slowpath+0xb7/0xf0
[   12.590213]  [<ffffffff8106c000>] ? static_obj+0x80/0x90
[   12.590217]  [<ffffffff8106e29d>] ? trace_hardirqs_on+0xd/0x10
[   12.590220]  [<ffffffff8106c065>] ? lockdep_init_map+0x55/0x5c0
[   12.590225]  [<ffffffff811e37a9>] ? __next_cpu+0x19/0x30
[   12.590234]  [<ffffffffa003cbb5>] ? snd_verbose_printk+0x85/0xe0 [snd]
[   12.590238]  [<ffffffff811eb4d8>] ? sprintf+0x68/0x70
[   12.590242]  [<ffffffff810607c4>] ? __mutex_init+0x54/0x70
[   12.590247]  [<ffffffffa004ede8>] ? snd_hwdep_new+0xc8/0x150 [snd_hwdep]
[   12.590255]  [<ffffffffa0036eea>] snd_component_add+0xfa/0x110 [snd]
[   12.590273]  [<ffffffffa01056ce>] snd_hda_codec_new+0x45d/0x68e [snd_hda_intel]
[   12.590290]  [<ffffffffa01046bc>] azx_probe+0x4dc/0xdb0 [snd_hda_intel]
[   12.590306]  [<ffffffffa00e1490>] ? azx_send_cmd+0x0/0x170 [snd_hda_intel]
[   12.590321]  [<ffffffffa00e1600>] ? azx_get_response+0x0/0x2a0 [snd_hda_intel]
[   12.590336]  [<ffffffffa00e1080>] ? azx_power_notify+0x0/0x80 [snd_hda_intel]
[   12.590341]  [<ffffffff81201048>] pci_device_probe+0xd8/0x130
[   12.590346]  [<ffffffff8112e75e>] ? sysfs_create_link+0xe/0x10
[   12.590351]  [<ffffffff812c1fe2>] driver_probe_device+0xa2/0x1e0
[   12.590355]  [<ffffffff812c21ab>] __driver_attach+0x8b/0x90
[   12.590358]  [<ffffffff812c2120>] ? __driver_attach+0x0/0x90
[   12.590361]  [<ffffffff812c177b>] bus_for_each_dev+0x6b/0xa0
[   12.590365]  [<ffffffff812c1e2c>] driver_attach+0x1c/0x20
[   12.590368]  [<ffffffff812c0f98>] bus_add_driver+0x208/0x280
[   12.590372]  [<ffffffff812c2393>] driver_register+0x73/0x170
[   12.590376]  [<ffffffff8120131d>] __pci_register_driver+0x7d/0xd0
[   12.590388]  [<ffffffffa016d000>] ? alsa_card_azx_init+0x0/0x20 [snd_hda_intel]
[   12.590400]  [<ffffffffa016d01e>] alsa_card_azx_init+0x1e/0x20 [snd_hda_intel]
[   12.590404]  [<ffffffff81009040>] _stext+0x40/0x1a0
[   12.590407]  [<ffffffff8106e239>] ? trace_hardirqs_on_caller+0x129/0x180
[   12.590413]  [<ffffffff8107bf1f>] sys_init_module+0xaf/0x1e0
[   12.590416]  [<ffffffff8100c60a>] system_call_fastpath+0x16/0x1b
[   12.590418] 
[   12.590421] ---[ end trace 5ac18ecbb660a8b0 ]---

Cheers,
Fengguang

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

* Re: [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
  2008-10-07  8:34   ` Wu Fengguang
@ 2008-10-07  9:00     ` Takashi Iwai
  2008-10-07  9:06       ` Jaroslav Kysela
  2008-10-07  9:11       ` Wu Fengguang
  0 siblings, 2 replies; 8+ messages in thread
From: Takashi Iwai @ 2008-10-07  9:00 UTC (permalink / raw)
  To: Wu Fengguang; +Cc: alsa-devel

At Tue, 7 Oct 2008 16:34:29 +0800,
Wu Fengguang wrote:
> 
> On Tue, Oct 07, 2008 at 10:10:43AM +0200, Takashi Iwai wrote:
> > At Tue, 7 Oct 2008 14:56:06 +0800,
> > Wu Fengguang wrote:
> > > 
> > > Enlarge snd_card.components[80] to 128 bytes, with space for 4 codecs.
> > > The previous size 80 cannot support HP 2230s which has 3 codecs.
> > > 
> > > Signed-off-by: Wu Fengguang <wfg@linux.intel.com>
> > 
> > Thanks for the patch.  Unfortunately, this can't be applied as is.
> > struct snd_ctl_card_info is exported and used as the ioctl parameter,
> > thus you cannot change the size.
> > 
> > One possible fix is to merge reserved[48] into components[80]
> > so that the struct size is kept as is.
> > But still we have to be very careful to such a change, and need to
> > investigate all possible places to refer it.
> 
> OK.
> 
> FYI, this is the debug patch and kernel message(lookout the first line) on HP 2230s:
> 
> diff --git a/sound/core/init.c b/sound/core/init.c
> index 8af467d..704d7e8 100644
> --- a/sound/core/init.c
> +++ b/sound/core/init.c
> @@ -706,6 +706,8 @@ int snd_component_add(struct snd_card *card, const char *component)
>  			return 1;
>  	}
>  	if (strlen(card->components) + 1 + len + 1 > sizeof(card->components)) {
> +		snd_printk(KERN_ERR "components = %s + %s\n",
> +				card->components, component);
>  		snd_BUG();
>  		return -ENOMEM;
>  	}
> 
> 
> [   12.590150] ALSA sound/core/init.c:710: components = HDA:11d4194a,103c3037,00100400 HDA:11c11040,103c1378,00100200 + HDA:80862802,80860101,00100000
> [   12.590163] ------------[ cut here ]------------
> [   12.590166] WARNING: at sound/core/init.c:711 snd_component_add+0xfa/0x110 [snd]()
> [   12.590168] BUG?
> [   12.590170] Modules linked in: snd_hda_intel(+) snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss iwlagn snd_pcm snd_timer iwlcore snd_page_alloc snd_hwdep rfkill snd pcspkr led_class sky2 wmi soundcore uhci_hcd ohci_hcd ehci_hcd
> [   12.590197] Pid: 2410, comm: modprobe Not tainted 2.6.27-rc7 #4
(snip)

Argh, that's bad. 
Then I agree with increasing the components as a simple workaround.

How about the patch below?  The control protocol number is increased
for this change as well.


thanks,

Takashi

diff --git a/include/sound/asound.h b/include/sound/asound.h
index 3eaf155..fbfe992 100644
--- a/include/sound/asound.h
+++ b/include/sound/asound.h
@@ -696,7 +696,7 @@ struct snd_timer_tread {
  *                                                                          *
  ****************************************************************************/
 
-#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 5)
+#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 6)
 
 struct snd_ctl_card_info {
 	int card;			/* card number */
@@ -707,8 +707,7 @@ struct snd_ctl_card_info {
 	unsigned char longname[80];	/* name + info text about soundcard */
 	unsigned char reserved_[16];	/* reserved for future (was ID of mixer) */
 	unsigned char mixername[80];	/* visual mixer identification */
-	unsigned char components[80];	/* card components / fine identification, delimited with one space (AC97 etc..) */
-	unsigned char reserved[48];	/* reserved for future */
+	unsigned char components[128];	/* card components / fine identification, delimited with one space (AC97 etc..) */
 };
 
 typedef int __bitwise snd_ctl_elem_type_t;
diff --git a/include/sound/core.h b/include/sound/core.h
index 558b962..221554e 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -114,7 +114,7 @@ struct snd_card {
 	char shortname[32];		/* short name of this soundcard */
 	char longname[80];		/* name of this soundcard */
 	char mixername[80];		/* mixer name */
-	char components[80];		/* card components delimited with
+	char components[128];		/* card components delimited with
 								space */
 	struct module *module;		/* top-level module */

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

* Re: [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
  2008-10-07  9:00     ` Takashi Iwai
@ 2008-10-07  9:06       ` Jaroslav Kysela
  2008-10-07  9:42         ` Takashi Iwai
  2008-10-07  9:11       ` Wu Fengguang
  1 sibling, 1 reply; 8+ messages in thread
From: Jaroslav Kysela @ 2008-10-07  9:06 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: ALSA development, Wu Fengguang

On Tue, 7 Oct 2008, Takashi Iwai wrote:

> Then I agree with increasing the components as a simple workaround.
> 
> How about the patch below?  The control protocol number is increased
> for this change as well.
> 
> 
> thanks,
> 
> Takashi
> 
> diff --git a/include/sound/asound.h b/include/sound/asound.h
> index 3eaf155..fbfe992 100644
> --- a/include/sound/asound.h
> +++ b/include/sound/asound.h
> @@ -696,7 +696,7 @@ struct snd_timer_tread {
>   *                                                                          *
>   ****************************************************************************/
>  
> -#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 5)
> +#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 6)
>  
>  struct snd_ctl_card_info {
>  	int card;			/* card number */
> @@ -707,8 +707,7 @@ struct snd_ctl_card_info {
>  	unsigned char longname[80];	/* name + info text about soundcard */
>  	unsigned char reserved_[16];	/* reserved for future (was ID of mixer) */
>  	unsigned char mixername[80];	/* visual mixer identification */
> -	unsigned char components[80];	/* card components / fine identification, delimited with one space (AC97 etc..) */
> -	unsigned char reserved[48];	/* reserved for future */
> +	unsigned char components[128];	/* card components / fine identification, delimited with one space (AC97 etc..) */
>  };
>  
>  typedef int __bitwise snd_ctl_elem_type_t;
> diff --git a/include/sound/core.h b/include/sound/core.h
> index 558b962..221554e 100644
> --- a/include/sound/core.h
> +++ b/include/sound/core.h
> @@ -114,7 +114,7 @@ struct snd_card {
>  	char shortname[32];		/* short name of this soundcard */
>  	char longname[80];		/* name of this soundcard */
>  	char mixername[80];		/* mixer name */
> -	char components[80];		/* card components delimited with
> +	char components[128];		/* card components delimited with
>  								space */
>  	struct module *module;		/* top-level module */

Acked-by: Jaroslav Kysela <perex@perex.cz>

-----
Jaroslav Kysela <perex@perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.

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

* Re: [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
  2008-10-07  9:00     ` Takashi Iwai
  2008-10-07  9:06       ` Jaroslav Kysela
@ 2008-10-07  9:11       ` Wu Fengguang
  2008-10-07  9:48         ` Takashi Iwai
  1 sibling, 1 reply; 8+ messages in thread
From: Wu Fengguang @ 2008-10-07  9:11 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Tue, Oct 07, 2008 at 11:00:26AM +0200, Takashi Iwai wrote:
> At Tue, 7 Oct 2008 16:34:29 +0800,
> > FYI, this is the debug patch and kernel message(lookout the first line) on HP 2230s:
> > 
> > diff --git a/sound/core/init.c b/sound/core/init.c
> > index 8af467d..704d7e8 100644
> > --- a/sound/core/init.c
> > +++ b/sound/core/init.c
> > @@ -706,6 +706,8 @@ int snd_component_add(struct snd_card *card, const char *component)
> >  			return 1;
> >  	}
> >  	if (strlen(card->components) + 1 + len + 1 > sizeof(card->components)) {
> > +		snd_printk(KERN_ERR "components = %s + %s\n",
> > +				card->components, component);
> >  		snd_BUG();
> >  		return -ENOMEM;
> >  	}
> > 
> > 
> > [   12.590150] ALSA sound/core/init.c:710: components = HDA:11d4194a,103c3037,00100400 HDA:11c11040,103c1378,00100200 + HDA:80862802,80860101,00100000
> > [   12.590163] ------------[ cut here ]------------
> > [   12.590166] WARNING: at sound/core/init.c:711 snd_component_add+0xfa/0x110 [snd]()
> > [   12.590168] BUG?
> (snip)
> 
> Argh, that's bad. 
> Then I agree with increasing the components as a simple workaround.
> 
> How about the patch below?  The control protocol number is increased
> for this change as well.

The modified patch looks fine, I'll test it out in the following days.

So far grep gives the following referees:

./alsa-driver/acore/ioctl32/ioctl32_new.c:      MAP_COMPAT(SNDRV_CTL_IOCTL_CARD_INFO),
./alsa-driver/acore/ioctl32/ioctl32_old.c:      MAP_COMPAT(SNDRV_CTL_IOCTL_CARD_INFO),
./alsa-kernel/sound/core/control_compat.c:      case SNDRV_CTL_IOCTL_CARD_INFO:
./alsa-kernel/sound/core/control.c:     case SNDRV_CTL_IOCTL_CARD_INFO:
./alsa-kernel/include/sound/asound.h:   SNDRV_CTL_IOCTL_CARD_INFO = _IOR('U', 0x01, struct snd_ctl_card_info),
./alsa-lib/src/control/control_shm.c:   ctrl->cmd = SNDRV_CTL_IOCTL_CARD_INFO;
./alsa-lib/src/control/control_hw.c:    if (ioctl(hw->fd, SNDRV_CTL_IOCTL_CARD_INFO, info) < 0) {
./alsa-lib/src/control/control_hw.c:            SYSERR("SNDRV_CTL_IOCTL_CARD_INFO failed");
./alsa-lib/aserver/aserver.c:   case SNDRV_CTL_IOCTL_CARD_INFO:
./alsa-lib/include/sound/asound.h:      SNDRV_CTL_IOCTL_CARD_INFO = _IOR('U', 0x01, struct sndrv_ctl_card_info),

Thanks,
Fengguang
---

> 
> thanks,
> 
> Takashi
> 
> diff --git a/include/sound/asound.h b/include/sound/asound.h
> index 3eaf155..fbfe992 100644
> --- a/include/sound/asound.h
> +++ b/include/sound/asound.h
> @@ -696,7 +696,7 @@ struct snd_timer_tread {
>   *                                                                          *
>   ****************************************************************************/
>  
> -#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 5)
> +#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 6)
>  
>  struct snd_ctl_card_info {
>  	int card;			/* card number */
> @@ -707,8 +707,7 @@ struct snd_ctl_card_info {
>  	unsigned char longname[80];	/* name + info text about soundcard */
>  	unsigned char reserved_[16];	/* reserved for future (was ID of mixer) */
>  	unsigned char mixername[80];	/* visual mixer identification */
> -	unsigned char components[80];	/* card components / fine identification, delimited with one space (AC97 etc..) */
> -	unsigned char reserved[48];	/* reserved for future */
> +	unsigned char components[128];	/* card components / fine identification, delimited with one space (AC97 etc..) */
>  };
>  
>  typedef int __bitwise snd_ctl_elem_type_t;
> diff --git a/include/sound/core.h b/include/sound/core.h
> index 558b962..221554e 100644
> --- a/include/sound/core.h
> +++ b/include/sound/core.h
> @@ -114,7 +114,7 @@ struct snd_card {
>  	char shortname[32];		/* short name of this soundcard */
>  	char longname[80];		/* name of this soundcard */
>  	char mixername[80];		/* mixer name */
> -	char components[80];		/* card components delimited with
> +	char components[128];		/* card components delimited with
>  								space */
>  	struct module *module;		/* top-level module */
>  

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

* Re: [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
  2008-10-07  9:06       ` Jaroslav Kysela
@ 2008-10-07  9:42         ` Takashi Iwai
  0 siblings, 0 replies; 8+ messages in thread
From: Takashi Iwai @ 2008-10-07  9:42 UTC (permalink / raw)
  To: Jaroslav Kysela; +Cc: ALSA development, Wu Fengguang

At Tue, 7 Oct 2008 11:06:28 +0200 (CEST),
Jaroslav Kysela wrote:
> 
> On Tue, 7 Oct 2008, Takashi Iwai wrote:
> 
> > Then I agree with increasing the components as a simple workaround.
> > 
> > How about the patch below?  The control protocol number is increased
> > for this change as well.
> > 
> > 
> > thanks,
> > 
> > Takashi
> > 
> > diff --git a/include/sound/asound.h b/include/sound/asound.h
> > index 3eaf155..fbfe992 100644
> > --- a/include/sound/asound.h
> > +++ b/include/sound/asound.h
> > @@ -696,7 +696,7 @@ struct snd_timer_tread {
> >   *                                                                          *
> >   ****************************************************************************/
> >  
> > -#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 5)
> > +#define SNDRV_CTL_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 6)
> >  
> >  struct snd_ctl_card_info {
> >  	int card;			/* card number */
> > @@ -707,8 +707,7 @@ struct snd_ctl_card_info {
> >  	unsigned char longname[80];	/* name + info text about soundcard */
> >  	unsigned char reserved_[16];	/* reserved for future (was ID of mixer) */
> >  	unsigned char mixername[80];	/* visual mixer identification */
> > -	unsigned char components[80];	/* card components / fine identification, delimited with one space (AC97 etc..) */
> > -	unsigned char reserved[48];	/* reserved for future */
> > +	unsigned char components[128];	/* card components / fine identification, delimited with one space (AC97 etc..) */
> >  };
> >  
> >  typedef int __bitwise snd_ctl_elem_type_t;
> > diff --git a/include/sound/core.h b/include/sound/core.h
> > index 558b962..221554e 100644
> > --- a/include/sound/core.h
> > +++ b/include/sound/core.h
> > @@ -114,7 +114,7 @@ struct snd_card {
> >  	char shortname[32];		/* short name of this soundcard */
> >  	char longname[80];		/* name of this soundcard */
> >  	char mixername[80];		/* mixer name */
> > -	char components[80];		/* card components delimited with
> > +	char components[128];		/* card components delimited with
> >  								space */
> >  	struct module *module;		/* top-level module */
> 
> Acked-by: Jaroslav Kysela <perex@perex.cz>

OK, applied now...
Will change alsa-lib, too.


thanks,

Takashi

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

* Re: [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs
  2008-10-07  9:11       ` Wu Fengguang
@ 2008-10-07  9:48         ` Takashi Iwai
  0 siblings, 0 replies; 8+ messages in thread
From: Takashi Iwai @ 2008-10-07  9:48 UTC (permalink / raw)
  To: Wu Fengguang; +Cc: alsa-devel

At Tue, 7 Oct 2008 17:11:18 +0800,
Wu Fengguang wrote:
> 
> On Tue, Oct 07, 2008 at 11:00:26AM +0200, Takashi Iwai wrote:
> > At Tue, 7 Oct 2008 16:34:29 +0800,
> > > FYI, this is the debug patch and kernel message(lookout the first line) on HP 2230s:
> > > 
> > > diff --git a/sound/core/init.c b/sound/core/init.c
> > > index 8af467d..704d7e8 100644
> > > --- a/sound/core/init.c
> > > +++ b/sound/core/init.c
> > > @@ -706,6 +706,8 @@ int snd_component_add(struct snd_card *card, const char *component)
> > >  			return 1;
> > >  	}
> > >  	if (strlen(card->components) + 1 + len + 1 > sizeof(card->components)) {
> > > +		snd_printk(KERN_ERR "components = %s + %s\n",
> > > +				card->components, component);
> > >  		snd_BUG();
> > >  		return -ENOMEM;
> > >  	}
> > > 
> > > 
> > > [   12.590150] ALSA sound/core/init.c:710: components = HDA:11d4194a,103c3037,00100400 HDA:11c11040,103c1378,00100200 + HDA:80862802,80860101,00100000
> > > [   12.590163] ------------[ cut here ]------------
> > > [   12.590166] WARNING: at sound/core/init.c:711 snd_component_add+0xfa/0x110 [snd]()
> > > [   12.590168] BUG?
> > (snip)
> > 
> > Argh, that's bad. 
> > Then I agree with increasing the components as a simple workaround.
> > 
> > How about the patch below?  The control protocol number is increased
> > for this change as well.
> 
> The modified patch looks fine, I'll test it out in the following days.
> 
> So far grep gives the following referees:
> 
> ./alsa-driver/acore/ioctl32/ioctl32_new.c:      MAP_COMPAT(SNDRV_CTL_IOCTL_CARD_INFO),
> ./alsa-driver/acore/ioctl32/ioctl32_old.c:      MAP_COMPAT(SNDRV_CTL_IOCTL_CARD_INFO),
> ./alsa-kernel/sound/core/control_compat.c:      case SNDRV_CTL_IOCTL_CARD_INFO:
> ./alsa-kernel/sound/core/control.c:     case SNDRV_CTL_IOCTL_CARD_INFO:
> ./alsa-kernel/include/sound/asound.h:   SNDRV_CTL_IOCTL_CARD_INFO = _IOR('U', 0x01, struct snd_ctl_card_info),
> ./alsa-lib/src/control/control_shm.c:   ctrl->cmd = SNDRV_CTL_IOCTL_CARD_INFO;
> ./alsa-lib/src/control/control_hw.c:    if (ioctl(hw->fd, SNDRV_CTL_IOCTL_CARD_INFO, info) < 0) {
> ./alsa-lib/src/control/control_hw.c:            SYSERR("SNDRV_CTL_IOCTL_CARD_INFO failed");
> ./alsa-lib/aserver/aserver.c:   case SNDRV_CTL_IOCTL_CARD_INFO:
> ./alsa-lib/include/sound/asound.h:      SNDRV_CTL_IOCTL_CARD_INFO = _IOR('U', 0x01, struct sndrv_ctl_card_info),

Thanks.  These are all just referring to the struct, so it must be OK.
We need a similar fix for alsa-lib.  I'll work on it now.


Takashi

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

end of thread, other threads:[~2008-10-07  9:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-07  6:56 [PATCH] snd-core: enlarge snd_card.components for up to 4 codecs Wu Fengguang
2008-10-07  8:10 ` Takashi Iwai
2008-10-07  8:34   ` Wu Fengguang
2008-10-07  9:00     ` Takashi Iwai
2008-10-07  9:06       ` Jaroslav Kysela
2008-10-07  9:42         ` Takashi Iwai
2008-10-07  9:11       ` Wu Fengguang
2008-10-07  9:48         ` 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.