From patchwork Wed Oct 11 00:21:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 151060 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp220831vqb; Tue, 10 Oct 2023 17:23:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH25ndK+u2ZBk6RX0z4eR8UO0SbJoBy2+CfmCDUR1w3vDkTSyaMqSlVKxeoTnZ3+PkUEhWf X-Received: by 2002:a05:6808:1a1a:b0:3a9:e85d:b689 with SMTP id bk26-20020a0568081a1a00b003a9e85db689mr24277166oib.0.1696983809399; Tue, 10 Oct 2023 17:23:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696983809; cv=none; d=google.com; s=arc-20160816; b=uxGuflNusUfkoXWrDsAUEhNCwF6O0YSd6WcLU8DH9/ZQWnoPVWqjWvvAYpINpGlvWa 01zr+qeXoCS1ov9jmA5+9bsSLRnSu+3xUgfbr/xLxIWAB5njCz13FJeBPE1VKsW84AMK 55Ln1O4KZqF7d++u4KU8ho8xEr5vYXC+KNZkXIn8tvQXaQLbvxr93JBAQe4ewha05X3k M6DEUrGT0ifutrZQYoLB+kyECkj1zX5EmyaRsq3JjX0PSRM/EF9apsCJUcd4+0W3VPpt OhP1TE6MUjx7gIXTJhKV09BMvHPNIaW0EJztfneEMDNvg/Cbx7wVnd0peg/i/Xpw69Tg V2Qg== 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=DoJZgskjuTAjvQWKHDVwm5LpAAOTSIH3Fsab8vjZneA=; fh=ASZxE/GudOQkGCAz0d02NHHSpg4iNHYOcDWl1imlof0=; b=p/ZyTsLu/RRZjRXlPEMQboGqrfMfXvAafEM99FKZVd0SdoAzRSFA//vNnQSrL2Bcv8 3rM3HwIc3e/BnarlnL5WF1J9e9l37cMPTQ0zJxPiJsz5XrFCg0Zb02MfdIOPM1TO0Uxd CidXt/16lxuHv9/4bRi8SraalZLrtOZN1zpBKhs/hvY4sgAbTQ9pM01qqlEmlmH/VPoU A1MO7GjoOVyBoLQqu613vxH8pZtErEsYhtLowJnbqTwk/pnGtKv1uXDHL5Md+N+afYhK rZIIV3z1vlNQTmIWKXTP4lcAS5ZXjh0EuvHtLFymFnEJ7fN2fDRyym4CZxkWIErWPm7J pENw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ffOWkcuy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 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 snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id d16-20020a631d50000000b005694b757228si2197765pgm.688.2023.10.10.17.23.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 17:23:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ffOWkcuy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 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 snail.vger.email (Postfix) with ESMTP id AD1C4810661F; Tue, 10 Oct 2023 17:23:28 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344488AbjJKAXW (ORCPT + 19 others); Tue, 10 Oct 2023 20:23:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36498 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344366AbjJKAXP (ORCPT ); Tue, 10 Oct 2023 20:23:15 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D6E90AF; Tue, 10 Oct 2023 17:23:10 -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 39B0McF7018070; Wed, 11 Oct 2023 00:22:41 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=DoJZgskjuTAjvQWKHDVwm5LpAAOTSIH3Fsab8vjZneA=; b=ffOWkcuyRhGA7Hbirr0BhmzzmuM92lWc36GgJHxHJUMRi9ltcpT7OmCY1PouWJoQ/qD9 LYz7WfI2B8+jvmhj/5Br0J+7ancO5anFep2S0jUC4XyVZgQiEHoaoq36/xKG/TUDBwU9 7S7dj03/j4tavJpyLLaHHgNCGq0df8bDLTe0CSeSX0DtYYvqPeEwU4jl2E54g3BM+lWB roNkbilY15uONZo4F2ZkGc7sDbP3GIUkhS+7gc8hqxAxaugJDhF9audLdS6Rs8XNBOat L71Y8p0JGbCFxJCF6aTbSxg0Q/4uSWmxP5RBmqOANhNBVisj7u86368r58vC8J3aXAPO ZQ== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3tne0q08m1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 11 Oct 2023 00:22:41 +0000 Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 39B0MeaP027127 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 11 Oct 2023 00:22:40 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; Tue, 10 Oct 2023 17:22:39 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , Wesley Cheng Subject: [PATCH v8 34/34] ASoC: usb: Rediscover USB SND devices on USB port add Date: Tue, 10 Oct 2023 17:21:46 -0700 Message-ID: <20231011002146.1821-35-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231011002146.1821-1-quic_wcheng@quicinc.com> References: <20231011002146.1821-1-quic_wcheng@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) 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-GUID: VaKnbIZdUT5nujuIAEDJWxsAF2z8WIEL X-Proofpoint-ORIG-GUID: VaKnbIZdUT5nujuIAEDJWxsAF2z8WIEL 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-10-10_19,2023-10-10_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 spamscore=0 mlxscore=0 clxscore=1015 priorityscore=1501 phishscore=0 adultscore=0 impostorscore=0 suspectscore=0 lowpriorityscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310110001 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Tue, 10 Oct 2023 17:23:28 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779416494962539156 X-GMAIL-MSGID: 1779416494962539156 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 7407678a993e..60aafbe87c36 100644 --- a/sound/soc/soc-usb.c +++ b/sound/soc/soc-usb.c @@ -104,6 +104,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);