From patchwork Sat Sep 16 00:10:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 140807 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp1396819vqi; Fri, 15 Sep 2023 17:16:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGOt9ix1C39OEzYfdl6XJaOy0vOBZiNdwNMQNGmVs1RK0jyJTxNp73QJ6g1zKmS3GZ9bX0M X-Received: by 2002:a17:907:a053:b0:9a1:f96c:4baf with SMTP id gz19-20020a170907a05300b009a1f96c4bafmr2590800ejc.5.1694823366907; Fri, 15 Sep 2023 17:16:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694823366; cv=none; d=google.com; s=arc-20160816; b=cN/BTqCBkRMtgwLGcHQhMn6DztSRZNUL+ObBeBNQa2nnYhJqIcsJuBcWiuXO5m47HR Qj7JdFvXRt90opp3qH8jFjlQCoeSWdFWLm0WOp5RYOW4//1AdLuMPyCl1mrwoctWov3Y mOULF2XhNKJxrKoK6y5FvMhFgK1+EjOPVCPSZzTfC/dtqgwDpBqEYahdLXjC90C9q5MW Qfbv1JsmOp3tyqBB5Q979sXtoBb95sb8hCgS4p+2Cgf1caNuq1npzS/AZ7bevaMWmWp0 6W1nwu1HDNYSZpBVOT8mTk+Jb6A4VZdq1UuVY03DGkDZgJcP/Mv4mmyFX15eEIVZMD3p RgTQ== 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=QxTZGJWFKmkKOUcnf3grtKnC5GrdewlCr0PTksHZ717kIyRnhBRJpmPmV57hBv+tzg zWnIsPEqjUEapYtsKtaV/M23AdvySfWTiauEWkghvKSYDwi03aTxDF8UgNUh+RLcs0VM uDOtemDj2ud7U2zY0FwyjIEUY6Ku2qscTnJ4FeJ4It5SP6mRr0wCxviKMcXhqPemkgiB 8FibgNsJw+M8MHvxyowPcpq4ZsUgwPFmz7AGc9fOUG6iuDbovwLm9Yl3TdXO1wSk3DhN 2bcE3URKe/BYO1PnIMbh80IVlFzI4+FTOLQo951PgU7fZ6tAJmc8pxnCXKILZOhW9M30 fwpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=SwE0mDaj; 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 c24-20020a170906925800b0099bc8c2fbcfsi3793825ejx.718.2023.09.15.17.16.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Sep 2023 17:16:06 -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=SwE0mDaj; 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 1B3A783470FA; Fri, 15 Sep 2023 17:14:46 -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 S238369AbjIPAL5 (ORCPT + 28 others); Fri, 15 Sep 2023 20:11:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238218AbjIPALH (ORCPT ); Fri, 15 Sep 2023 20:11:07 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E06362707; Fri, 15 Sep 2023 17:11:00 -0700 (PDT) Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38FNT1ir022472; Sat, 16 Sep 2023 00:10:48 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=SwE0mDajyGOia6grIW67ETp+GmyCzblF7xZiEkPI+uMJCcwtx6fZs+g8aITqmN6I82h4 rn1m1NZU0YPVxitKuHX6nSeQ41C5ku3GO0McTzaJgVu+hh0NZw6qrM41l32Tp6BxUSFf 5JXbMpXdD9GuQ9FmYdjc2Fk7LDkjdM7Rm/rJJ+pfZq9FmYEN5drsSy9+gGajdAAJf1L9 9QvY6Do2P8OYqaoOKX1OeUNPGG4308vtp5ur1tZNziJ+IX/sMCp7hOJXsXBPj9aI3/62 0pfRQZvj4J6VjlEx/qOVGnRGmHs/MSMhcoVV31ADLN+3NcaifkWBrisLT5aHcH5JLl9h UA== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3t4fwn2dhm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 16 Sep 2023 00:10:48 +0000 Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 38G0Aknp011943 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 16 Sep 2023 00:10:47 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; Fri, 15 Sep 2023 17:10:46 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , Wesley Cheng Subject: [PATCH v6 33/33] ASoC: usb: Rediscover USB SND devices on USB port add Date: Fri, 15 Sep 2023 17:10:26 -0700 Message-ID: <20230916001026.315-34-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230916001026.315-1-quic_wcheng@quicinc.com> References: <20230916001026.315-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-GUID: XKOUhTeVgjkoUxxK_4Tp0pYdTIpNg7mk X-Proofpoint-ORIG-GUID: XKOUhTeVgjkoUxxK_4Tp0pYdTIpNg7mk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-09-15_20,2023-09-15_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 mlxscore=0 phishscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2308100000 definitions=main-2309160000 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]); Fri, 15 Sep 2023 17:14:46 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777151106653854356 X-GMAIL-MSGID: 1777151106653854356 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);