From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6542EC636CC for ; Tue, 7 Feb 2023 23:13:21 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id EA17483D; Wed, 8 Feb 2023 00:12:28 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz EA17483D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1675811599; bh=RNlLY3tCZ1mjIAHVos9N4PH1bLkIYj/SFHNw7YDn/m8=; h=Date:Subject:To:References:From:In-Reply-To:CC:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=KMQr0W3Ho02wZH7Kagcshf5/iHIaUxuN1B3Wt6Q959RKU3DeDrlwnzqy2mf+oHs1E pwrQtzhpwiPqjhtcqU9lUkEJS6I4ZG0zLNYZgQMOcdGfhIDglDSryoE3WaTsG6bDol w1nt8rbDVcCxpwHpuqhgwAZLdp0fYWanNBmKVc2k= Received: from mailman-core.alsa-project.org (mailman-core.alsa-project.org [10.254.200.10]) by alsa1.perex.cz (Postfix) with ESMTP id B3231F8051F; Wed, 8 Feb 2023 00:12:06 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id E787AF80526; Wed, 8 Feb 2023 00:12:03 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id F34F9F80224 for ; Wed, 8 Feb 2023 00:11:58 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz F34F9F80224 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=VN+j6e2y DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675811520; x=1707347520; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=w4yUWgdrMkSu5h1zXbr5sfr/CirMhN4jXxr0vnH7soA=; b=VN+j6e2y75F9CanGTsIGv5X/l/j6yfWacLy2d3rWRsW32IZanRAHMlrU AkN5uXovt/YV1D/JBDTF/puvKcIySa8NTp9yI7xKXqL68Ub0lTJ90D22h Ub/8f/34kzGGs5PzAwz7SEMYthfpweJxiBAprFcPOQPn8KPztcNyAJIU/ hh0/0C5t0+8oNV0JPtvdxbrr0fc1FpXTguEQBa0s94DOiQ9rzUZve7WMf 1e6AivLZbHQs8l/pn+E40OaMzNtBECMM5NibUZmnFjZMVN48aZTHnGxrv vaGUG+8qKigBO096//fDevAcPJXv1/H2ajM/htei7eMtGcPGrFPHf3KnO Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10614"; a="357027927" X-IronPort-AV: E=Sophos;i="5.97,279,1669104000"; d="scan'208";a="357027927" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2023 14:44:26 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10614"; a="616981528" X-IronPort-AV: E=Sophos;i="5.97,279,1669104000"; d="scan'208";a="616981528" Received: from jinggu-mobl.amr.corp.intel.com (HELO [10.212.120.142]) ([10.212.120.142]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2023 14:44:23 -0800 Message-ID: Date: Tue, 7 Feb 2023 07:29:19 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.4.2 Subject: Re: [RFC PATCH v2 20/22] sound: usb: Prevent starting of audio stream if in use To: Wesley Cheng , srinivas.kandagatla@linaro.org, mathias.nyman@intel.com, perex@perex.cz, lgirdwood@gmail.com, andersson@kernel.org, krzysztof.kozlowski+dt@linaro.org, gregkh@linuxfoundation.org, Thinh.Nguyen@synopsys.com, broonie@kernel.org, bgoswami@quicinc.com, tiwai@suse.com, robh+dt@kernel.org, agross@kernel.org References: <20230126031424.14582-1-quic_wcheng@quicinc.com> <20230126031424.14582-21-quic_wcheng@quicinc.com> <557f8f76-38f5-5e07-905e-774e03120bd2@linux.intel.com> Content-Language: en-US From: Pierre-Louis Bossart In-Reply-To: Message-ID-Hash: 2HCJYB32Y4VGPVMIAZUZC5R6URSKKGXO X-Message-ID-Hash: 2HCJYB32Y4VGPVMIAZUZC5R6URSKKGXO X-MailFrom: pierre-louis.bossart@linux.intel.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-alsa-devel.alsa-project.org-0; header-match-alsa-devel.alsa-project.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: devicetree@vger.kernel.org, alsa-devel@alsa-project.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, quic_jackp@quicinc.com, quic_plai@quicinc.com X-Mailman-Version: 3.3.8 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCk9uIDIvNi8yMyAxOToxNSwgV2VzbGV5IENoZW5nIHdyb3RlOg0KPiBIaSBQaWVycmUsDQo+ IA0KPiBPbiAxLzI2LzIwMjMgODoxMiBBTSwgUGllcnJlLUxvdWlzIEJvc3NhcnQgd3JvdGU6DQo+ Pg0KPj4NCj4+IE9uIDEvMjUvMjMgMjE6MTQsIFdlc2xleSBDaGVuZyB3cm90ZToNCj4+PiBXaXRo IFVTQiBhdWRpbyBvZmZsb2FkaW5nLCBhbiBhdWRpbyBzZXNzaW9uIGlzIHN0YXJ0ZWQgZnJvbSB0 aGUgQVNvQw0KPj4+IHBsYXRmb3JtIHNvdW5kIGNhcmQgYW5kIFBDTSBkZXZpY2VzLsKgIExpa2V3 aXNlLCB0aGUgVVNCIFNORCBwYXRoIGlzDQo+Pj4gc3RpbGwNCj4+PiByZWFkaWx5IGF2YWlsYWJs ZSBmb3IgdXNlLCBpbiBjYXNlIHRoZSBub24tb2ZmbG9hZCBwYXRoIGlzIGRlc2lyZWQuwqAgSW4N Cj4+PiBvcmRlciB0byBwcmV2ZW50IHRoZSB0d28gZW50aXRpZXMgZnJvbSBhdHRlbXB0aW5nIHRv IHVzZSB0aGUgVVNCIGJ1cywNCj4+PiBpbnRyb2R1Y2UgYSBmbGFnIHRoYXQgZGV0ZXJtaW5lcyB3 aGVuIGVpdGhlciBwYXRocyBhcmUgaW4gdXNlLg0KPj4+DQo+Pj4gSWYgYSBQQ00gZGV2aWNlIGlz IGFscmVhZHkgaW4gdXNlLCB0aGUgY2hlY2sgd2lsbCByZXR1cm4gYW4gZXJyb3IgdG8NCj4+PiB1 c2Vyc3BhY2Ugbm90aWZ5aW5nIHRoYXQgdGhlIHN0cmVhbSBpcyBjdXJyZW50bHkgYnVzeS7CoCBU aGlzIGVuc3VyZXMNCj4+PiB0aGF0DQo+Pj4gb25seSBvbmUgcGF0aCBpcyB1c2luZyB0aGUgVVNC IHN1YnN0cmVhbS4NCj4+DQo+PiBJdCdzIGdvb2QgdG8gbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2lv biwgYnV0IGl0J3Mgc3RpbGwgdmVyeSBoYXJkIGZvciBhbg0KPj4gYXBwbGljYXRpb24gdG8gZmln dXJlIG91dCB3aGljaCBjYXJkIGNhbiBiZSB1c2VkIHdoZW4uDQo+Pg0KPj4gUmV0dXJuaW5nIC1F QlVTWSBpcyBub3Qgc3VwZXIgaGVscGZ1bC4gVGhlcmUgc2hvdWxkIGJlIHNvbWV0aGluZyBsaWtl IGENCj4+IG5vdGlmaWNhdGlvbiBvciBjb25uZWN0aW9uIHN0YXR1cyBzbyB0aGF0IHJvdXRpbmcg ZGVjaXNpb25zIGNhbiBiZSBtYWRlDQo+PiB3aXRob3V0IHRyaWFsLWFuZC1lcnJvci4NCj4+DQo+ IA0KPiBUaGUgVVNCIG9mZmxvYWQgZHJpdmVyIGRvZXMgaGF2ZSBhY2Nlc3MgdG8gdGhlIFVTQiBz dWJzdHJlYW0gdGhhdCBpcw0KPiBiZWluZyB1dGlsaXplZC9vZmZsb2FkZWQuwqAgTWF5YmUgaW4g YWRkaXRpb24gdG8gdGhpcyBjaGVjaywgd2UgY2FuIGFsc28NCj4gc2V0IHRoZSBQQ00gcnVudGlt ZSBzdGF0ZSBhcyB3ZWxsIChmb3IgdGhhdCBwYXJ0aWN1bGFyIHN1YnN0cmVhbSk/wqAgVGhhdA0K PiB3YXkgdXNlcnNwYWNlIGNhbiBmZXRjaCBpbmZvcm1hdGlvbiBhYm91dCBpZiB0aGUgc3RyZWFt IGlzIGJ1c3kgb3Igbm90Lg0KDQpZb3UncmUgbWlzc2luZyB0aGUgcG9pbnQuIFdoZW4gYSBjYXJk IGlzIGV4cG9zZWQgYnV0IHRoZSBQQ00gZGV2aWNlcyBtYXkNCm9yIG1heSBub3QgYmUgdXNhYmxl IChjb25zdW1pbmcgZGF0YSB3aXRoIG5vIHNvdW5kIHJlbmRlcmVkIG9yIHJldHVybmluZw0KYW4g ZXJyb3IpLCBpdCdzIG11Y2ggYmV0dGVyIHRvIHByb3ZpZGUgYSBjbGVhciBjb25uZWN0aW9uIHN0 YXR1cyB0bw0KdXNlcnNwYWNlLg0KDQpMZXQgbWUgZ2l2ZSB5b3UgYW4gZXhhbXBsZS4gSW50ZWwg ZHJpdmVycyBjYW4gZXhwb3NlIDMgSERNSS9EUCBQQ00NCmRldmljZXMuIFVzZXJzcGFjZSBoYXMg bm8gaWRlYSB3aGljaCBvbmUgdG8gdXNlLCBzbyB0aGVyZSdzIGEgamFjaw0KY29udHJvbCB0aGF0 IHRlbGxzIHVzZXJzcGFjZSB3aGV0aGVyIHRoZXJlIGlzIGEgcmVjZWl2ZXIgY29ubmVjdGVkIHNv DQp0aGF0IHRoZSBhdWRpbyBzZXJ2ZXIgY2FuIHVzZSB0aGUgcmVsZXZhbnQgUENNIGRldmljZS4N Cg0KQXVkaW8gcm91dGluZyBiYXNlZCBvbiB0cmlhbCBhbmQgZXJyb3IgaXMgcmVhbGx5IHByb2Js ZW1hdGljLCBlcnJvcnMgY2FuDQpoYXBwZW4gYnV0IHRoZXkgc2hvdWxkIGJlIGV4Y2VwdGlvbmFs IChlLmcuIHhydW5zKSwgbm90IGEgbWVhbnMgb2YNCmRyaXZlci11c2Vyc3BhY2UgY29tbXVuaWNh dGlvbiBvbiB0aGUgZGV2aWNlIHN0YXR1cy4NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0IC0tIGFsc2EtZGV2ZWxA YWxzYS1wcm9qZWN0Lm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGFsc2EtZGV2 ZWwtbGVhdmVAYWxzYS1wcm9qZWN0Lm9yZwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B50C4C636CC for ; Tue, 7 Feb 2023 22:44:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229589AbjBGWo2 (ORCPT ); Tue, 7 Feb 2023 17:44:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229505AbjBGWo1 (ORCPT ); Tue, 7 Feb 2023 17:44:27 -0500 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE95B9EC0; Tue, 7 Feb 2023 14:44:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675809866; x=1707345866; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=w4yUWgdrMkSu5h1zXbr5sfr/CirMhN4jXxr0vnH7soA=; b=HfO1bJch7urb36Y8969+dlDJjzJG33h4btEq+2Q74gm5aF1+wEJxGWhq 0xy1m4whevJPOkWbzdj3CZeMzZQqag+0Fu3AjZdS1q88zE9t6dbMtgXCF l/d3EY2EI4CDZVQMfKenurSVnlBbnQZ2313G6c3ER7BWqTI26qqGeFPa5 3iThx4tVsArsSqARBR6Pdi6RAg9btw0r4XUQUd+o9q8Xwx7YsoMxIkwNy N/rGoUCtODkCee/Hdy7lDNN2rMH2PQmvbDXLlNvZ7Hf6GlxmaO9bNffSf XcytN1lDVwzGomT8AL0AdhINWJH91r/Rmq3fUsKSDyR9ddbZO0igPBMab g==; X-IronPort-AV: E=McAfee;i="6500,9779,10614"; a="357027931" X-IronPort-AV: E=Sophos;i="5.97,279,1669104000"; d="scan'208";a="357027931" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2023 14:44:26 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10614"; a="616981528" X-IronPort-AV: E=Sophos;i="5.97,279,1669104000"; d="scan'208";a="616981528" Received: from jinggu-mobl.amr.corp.intel.com (HELO [10.212.120.142]) ([10.212.120.142]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2023 14:44:23 -0800 Message-ID: Date: Tue, 7 Feb 2023 07:29:19 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.4.2 Subject: Re: [RFC PATCH v2 20/22] sound: usb: Prevent starting of audio stream if in use To: Wesley Cheng , srinivas.kandagatla@linaro.org, mathias.nyman@intel.com, perex@perex.cz, lgirdwood@gmail.com, andersson@kernel.org, krzysztof.kozlowski+dt@linaro.org, gregkh@linuxfoundation.org, Thinh.Nguyen@synopsys.com, broonie@kernel.org, bgoswami@quicinc.com, tiwai@suse.com, robh+dt@kernel.org, agross@kernel.org Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, quic_jackp@quicinc.com, quic_plai@quicinc.com References: <20230126031424.14582-1-quic_wcheng@quicinc.com> <20230126031424.14582-21-quic_wcheng@quicinc.com> <557f8f76-38f5-5e07-905e-774e03120bd2@linux.intel.com> Content-Language: en-US From: Pierre-Louis Bossart In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 2/6/23 19:15, Wesley Cheng wrote: > Hi Pierre, > > On 1/26/2023 8:12 AM, Pierre-Louis Bossart wrote: >> >> >> On 1/25/23 21:14, Wesley Cheng wrote: >>> With USB audio offloading, an audio session is started from the ASoC >>> platform sound card and PCM devices.  Likewise, the USB SND path is >>> still >>> readily available for use, in case the non-offload path is desired.  In >>> order to prevent the two entities from attempting to use the USB bus, >>> introduce a flag that determines when either paths are in use. >>> >>> If a PCM device is already in use, the check will return an error to >>> userspace notifying that the stream is currently busy.  This ensures >>> that >>> only one path is using the USB substream. >> >> It's good to maintain mutual exclusion, but it's still very hard for an >> application to figure out which card can be used when. >> >> Returning -EBUSY is not super helpful. There should be something like a >> notification or connection status so that routing decisions can be made >> without trial-and-error. >> > > The USB offload driver does have access to the USB substream that is > being utilized/offloaded.  Maybe in addition to this check, we can also > set the PCM runtime state as well (for that particular substream)?  That > way userspace can fetch information about if the stream is busy or not. You're missing the point. When a card is exposed but the PCM devices may or may not be usable (consuming data with no sound rendered or returning an error), it's much better to provide a clear connection status to userspace. Let me give you an example. Intel drivers can expose 3 HDMI/DP PCM devices. Userspace has no idea which one to use, so there's a jack control that tells userspace whether there is a receiver connected so that the audio server can use the relevant PCM device. Audio routing based on trial and error is really problematic, errors can happen but they should be exceptional (e.g. xruns), not a means of driver-userspace communication on the device status.