Patch "ALSA: usb-audio: Relax hw constraints for implicit fb sync" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ALSA: usb-audio: Relax hw constraints for implicit fb sync

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     alsa-usb-audio-relax-hw-constraints-for-implicit-fb-.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 50ae6e718898d4d28086dc799abe0741bb634ccd
Author: Takashi Iwai <tiwai@xxxxxxx>
Date:   Mon Jan 2 18:07:58 2023 +0100

    ALSA: usb-audio: Relax hw constraints for implicit fb sync
    
    [ Upstream commit d463ac1acb454fafed58f695cb3067fbf489f3a0 ]
    
    The fix commit the commit e4ea77f8e53f ("ALSA: usb-audio: Always apply
    the hw constraints for implicit fb sync") tried to address the bug
    where an incorrect PCM parameter is chosen when two (implicit fb)
    streams are set up at the same time.  This change had, however, some
    side effect: once when the sync endpoint is chosen and set up, this
    restriction is applied at the next hw params unless it's freed via hw
    free explicitly.
    
    This patch is a workaround for the problem by relaxing the hw
    constraints a bit for the implicit fb sync.  We still keep applying
    the hw constraints for implicit fb sync, but only when the matching
    sync EP is being used by other streams.
    
    Fixes: e4ea77f8e53f ("ALSA: usb-audio: Always apply the hw constraints for implicit fb sync")
    Reported-by: Ruud van Asseldonk <ruud@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/4e509aea-e563-e592-e652-ba44af6733fe@xxxxxxxxxxxxxx
    Link: https://lore.kernel.org/r/20230102170759.29610-3-tiwai@xxxxxxx
    Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index 535eb95bc9ee..29838000eee0 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -939,8 +939,13 @@ get_sync_ep_from_substream(struct snd_usb_substream *subs)
 			continue;
 		/* for the implicit fb, check the sync ep as well */
 		ep = snd_usb_get_endpoint(chip, fp->sync_ep);
-		if (ep && ep->cur_audiofmt)
-			return ep;
+		if (ep && ep->cur_audiofmt) {
+			/* ditto, if the sync (data) ep is used by others,
+			 * this stream is restricted by the sync ep
+			 */
+			if (ep != subs->sync_endpoint || ep->opened > 1)
+				return ep;
+		}
 	}
 	return NULL;
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux