[alsa-devel] [PATCH] ALSA: hda - Do not assign streams in reverse order

Anssi Hannula anssi.hannula at iki.fi
Tue Apr 8 09:50:18 CEST 2014


08.04.2014 10:35, Takashi Iwai kirjoitti:
> At Mon,  7 Apr 2014 22:36:38 +0300,
> Anssi Hannula wrote:
>>
>> Currently stream numbers are assigned in reverse order.
>>
>> Unfortunately commit 7546abfb8e1f9933b5 ("ALSA: hda - Increment
>> default stream numbers for AMD HDMI controllers") assumed this was not
>> the case (specifically, it had the "old cards had single device only"
>> => "extra unused stream numbers do not matter" assumption), causing
>> non-working audio regressions for AMD Radeon HDMI users on v3.14.
>>
>> Change the stream numbers to be assigned in increasing order instead.
>>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77002
>> Reported-by: Christian Güdel <cg at dmesg.ch>
>> Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
>> Tested-by: Christian Güdel <cg at dmesg.ch>
>> Cc: Alex Deucher <alexander.deucher at amd.com>
>> Cc: <stable at vger.kernel.org> # 3.14
>> ---
>>
>> Takashi, please check I didn't miss anything (I'm not that familiar
>> with this low-level HDA code). :)
> 
> In that case, let's revert the commit instead.  There was a reason to
> behave in that way, although I don't remember well.  That said, this
> change might lead to another regression.  Thus, if a fix is needed for
> stable, the revert would be the best choice as a first aid.  Of
> course, this change is good to have, so let's implement this for 3.15
> and see whether it works well for all nasty controllers.

We tested reverting (on top of v3.14) with Christian and it works as
well, so you can add:
Tested-by: Christian Güdel <cg at dmesg.ch>

> Besides, this patch can't be applied any longer to the current code
> base since it's been rewritten a lot; most of codes have been moved to
> another file hda_controller.c.  Could you rebase the patch for the
> latest tree?  Meanwhile I'll prepare a revert that is applied only to
> 3.14.x.

Will do.

> 
> thanks,
> 
> Takashi
> 
>>
>>
>>  sound/pci/hda/hda_intel.c | 9 +++++----
>>  1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
>> index e354ab1ec20f..7a7b7b10dddf 100644
>> --- a/sound/pci/hda/hda_intel.c
>> +++ b/sound/pci/hda/hda_intel.c
>> @@ -1856,13 +1856,14 @@ azx_assign_device(struct azx *chip, struct snd_pcm_substream *substream)
>>  		struct azx_dev *azx_dev = &chip->azx_dev[dev];
>>  		dsp_lock(azx_dev);
>>  		if (!azx_dev->opened && !dsp_is_locked(azx_dev)) {
>> -			res = azx_dev;
>> -			if (res->assigned_key == key) {
>> -				res->opened = 1;
>> -				res->assigned_key = key;
>> +			if (azx_dev->assigned_key == key) {
>> +				azx_dev->opened = 1;
>> +				azx_dev->assigned_key = key;
>>  				dsp_unlock(azx_dev);
>>  				return azx_dev;
>>  			}
>> +			if (!res)
>> +				res = azx_dev;
>>  		}
>>  		dsp_unlock(azx_dev);
>>  	}
>> -- 
>> 1.8.4.5
>>


-- 
Anssi Hannula


More information about the Alsa-devel mailing list