From patchwork Thu Sep 21 21:48:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 143776 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:910f:0:b0:403:3b70:6f57 with SMTP id r15csp28801vqg; Fri, 22 Sep 2023 18:45:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHOOAtej9YKxHQbJkHrkmIYmzYIXa2An5OzPZCRwK9D9yVATWTUxGOxnw+SjzyWIcW8DivU X-Received: by 2002:a05:6808:3da:b0:3a7:88ce:7ac8 with SMTP id o26-20020a05680803da00b003a788ce7ac8mr1333753oie.47.1695433541610; Fri, 22 Sep 2023 18:45:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695433541; cv=none; d=google.com; s=arc-20160816; b=TB/n6vIjnPiS9MVsV5TaxSuV2OY9H6Y+9uHlmk9zydlst6kjW+WE/yXIKJ5sHYZ6EU t/lINnn7F28rIwihuWc3bkGDcxeHVAVZNTo52sO80LmNdj9GQE7AxJmIEaXfL72MSfds ttPtEb9fHZHIcV6GBb0+xoe1QjFBB5SYq/GOFc4jpcQDqBIk4FVq3ImddqI3k/iDFF3y amJnG66WjL1MBmrSkC2DUTsWCwZvy5FHpBkxgsm8w+2DmYlTdFUhwbwhv9KVSUQOBHzd YSFyk5jeCJdaLxAS6xYxNnqmdK6siwcV0PBlBUREjchoAmbUpxgVUMZwGtn3cy3XR2m0 mr7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=jt0oIgTyqjbTXFE8R+uBXHTwbnogDehsEUidVF5fLmc=; fh=MhCCCRx4c0AeUz43uLzZOKA4YzcBN2mk3tAWrRRVvW4=; b=lky/yg5pZapwU8yDx29s8omnmvtyNB2bSbK7rJ1TBckl3rPw00ytScKQi3cXcxMX6G ETLE4D5h0okqYETye7cPZSeDB8CKHn9/J6bR64wqUp4IR21rVmz95cUoLUJMPnN4U4jN 6eUIyeQFYkz/VgcLadz5zpt4+TzJjHAOnwnf0bffgCywAGZCFVIilnDj2zW2aKn3ClIk B9rweTW9kRg//RcRz94yEqvk31fwTDVKSck+1knIdIUhUX9itGWeAaobLjrrx+4UCXYr 3G604poSFc2WWuT7CvQsQQms1cR+GM6dgDCmkTTnv9h23xqa8y533p89ToplZoyzeNkd mMAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=MepJ+upG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id f23-20020a63f117000000b0056679c8e70csi5166190pgi.272.2023.09.22.18.45.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Sep 2023 18:45:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=MepJ+upG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 715938370879; Thu, 21 Sep 2023 14:54:21 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233062AbjIUVyO (ORCPT + 29 others); Thu, 21 Sep 2023 17:54:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40008 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230439AbjIUVxX (ORCPT ); Thu, 21 Sep 2023 17:53:23 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9901410C6; Thu, 21 Sep 2023 14:49:41 -0700 (PDT) Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38LJp8sC021537; Thu, 21 Sep 2023 21:49:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=jt0oIgTyqjbTXFE8R+uBXHTwbnogDehsEUidVF5fLmc=; b=MepJ+upGMC1sdTcJTSVbHR4RoDqNx6wVoRzmygug+04KquPz9HEL7lRSToIR0rsC9fX9 C5mY3pk8tiXTyL3cPecy9FBFpfIyZbVNdqhaEsS5EAa5gEDA74vaf836/dJWmBuGAn5I dGYJgPZTUcOFQeZTK4mpVPSgK/RA7NUj3WIxeGg6HdmFF2/CgJNiUsPT+SvvVzw+/wJE x1Y2U7iOjT9gXMVYRUsg8KztGRfaGldOab8l6JOFWLCX83DsgQ7X88s5mtzFhLsEsSqG ycmoHrGJlPxdHNCtlx01i+/mgnXYny9LvK+E1IYmkptE9OpvPMW7RYA1H/mJWlQ0wMN3 FA== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3t8u5n0bqa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Sep 2023 21:49:18 +0000 Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA03.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 38LLn36L012662 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Sep 2023 21:49:03 GMT Received: from hu-wcheng-lv.qualcomm.com (10.49.16.6) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.36; Thu, 21 Sep 2023 14:49:02 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , Wesley Cheng Subject: [PATCH v7 33/33] ASoC: usb: Rediscover USB SND devices on USB port add Date: Thu, 21 Sep 2023 14:48:43 -0700 Message-ID: <20230921214843.18450-34-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230921214843.18450-1-quic_wcheng@quicinc.com> References: <20230921214843.18450-1-quic_wcheng@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01a.na.qualcomm.com (10.47.209.196) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: Ge7Hcxdn640ava6jWa6SIXk8D6arxYXD X-Proofpoint-GUID: Ge7Hcxdn640ava6jWa6SIXk8D6arxYXD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-21_19,2023-09-21_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 priorityscore=1501 malwarescore=0 spamscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 mlxscore=0 clxscore=1015 adultscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309210189 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Thu, 21 Sep 2023 14:54:21 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777790921223979023 X-GMAIL-MSGID: 1777790921223979023 In case the USB backend device has not been initialized/probed, USB SND device connections can still occur. When the USB backend is eventually made available, previous USB SND device connections are not communicated to the USB backend. Call snd_usb_rediscover_devices() to generate the connect callbacks for all USB SND devices connected. This will allow for the USB backend to be updated with the current set of devices available. The chip array entries are all populated and removed while under the register_mutex, so going over potential race conditions: Thread#1: q6usb_component_probe() --> snd_soc_usb_add_port() --> snd_usb_rediscover_devices() --> mutex_lock(register_mutex) Thread#2 --> usb_audio_disconnect() --> mutex_lock(register_mutex) So either thread#1 or thread#2 will complete first. If Thread#1 completes before thread#2: SOC USB will notify DPCM backend of the device connection. Shortly after, once thread#2 runs, we will get a disconnect event for the connected device. Thread#2 completes before thread#1: Then during snd_usb_rediscover_devices() it won't notify of any connection for that particular chip index. Signed-off-by: Wesley Cheng --- sound/soc/soc-usb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sound/soc/soc-usb.c b/sound/soc/soc-usb.c index 619f9bfd6999..7df7f93cf5a2 100644 --- a/sound/soc/soc-usb.c +++ b/sound/soc/soc-usb.c @@ -115,6 +115,8 @@ struct snd_soc_usb *snd_soc_usb_add_port(struct device *dev, void *priv, list_add_tail(&usb->list, &usb_ctx_list); mutex_unlock(&ctx_mutex); + snd_usb_rediscover_devices(); + return usb; } EXPORT_SYMBOL_GPL(snd_soc_usb_add_port);