From patchwork Thu Jan 19 07:32:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 45620 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp188608wrn; Wed, 18 Jan 2023 23:24:35 -0800 (PST) X-Google-Smtp-Source: AMrXdXthOgyOc9xh0opbnXAh95082NQW04VIaNVjKkLYxFsM+vL0RIsJOp7rCzQeR1T9NY7elBwp X-Received: by 2002:a05:6a20:54a7:b0:b8:3131:75cc with SMTP id i39-20020a056a2054a700b000b8313175ccmr13258860pzk.19.1674113075400; Wed, 18 Jan 2023 23:24:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674113075; cv=none; d=google.com; s=arc-20160816; b=O83SNFJDl2S8TY6MV6wWKqyNhAs9XZlys0YtcfUYqcMcUFS2JsXSAFA66GKwLvOC5n EB6MPUyhLe98BdyNS7/c62wR430wkHlVF2NfAxOdwelqk3ekAA5ZeTtbxHwaEMeLzBvN U+zs9pUYjWkiqAQcc8AsBRL2CEAQ2A7geFNPJCkzMDLEukJ900y7aHTWwU9PUQSBvrUa MlxetxvqFU7sSKwGA6/ZdZ9jbbsszUdVlbP/vASveSoDRIT3Vkk/4C++d88fKoQxgUEw v3F2lkaJiATxla0w0cf/IDx+INLnhVOi3Zi7AlNRIsiDNaTB+5+5dqoVK8s9kZ1DVFAB SAfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ff69JB+uq3Z13v2HdY2EWtoJ0E3ZvONisAvIYp+k1EE=; b=Fh5QCQsv/PBqX9mxtA+sTx4UQqpdGqDSg4lCvs8pbLYpeqJMWwAg1TCU0qCYoAX2C4 0fZY66IFuS61A+7vSNvcaerdUvZCl/XobwIyEF+wwraniEu6Z8Vsoe1QWAuyZaRYzOP0 2FyzKBrqMgRtYNS/oQhj28CPnzEmKtZGExWO46E3w13Q1i0KAzq30T0jlo5BPIQXCFQt 5LfnG8C5FmT5rY43sPBH+ytOM96qmQyQdZJOv6lc7sRGuz8yDTvU6BmGbcNxVR+VbPb2 Hg6CQJ+eukEula8SA/Uc+NJCGwmwWOHvYyHP+UFw6oQe+lFE6R/sSBPdsdpAMMRGPEPM r0gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=CLpMwzCX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v25-20020a637a19000000b004b45fca9020si1943944pgc.397.2023.01.18.23.24.23; Wed, 18 Jan 2023 23:24:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=CLpMwzCX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229762AbjASHYC (ORCPT + 99 others); Thu, 19 Jan 2023 02:24:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229699AbjASHX5 (ORCPT ); Thu, 19 Jan 2023 02:23:57 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 58AC8604A6 for ; Wed, 18 Jan 2023 23:23:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674113026; x=1705649026; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FoI5xBiRDitd9OHdi7JRneCz/iRwjpZBUD404jd4Zsg=; b=CLpMwzCXkqVzQc6+7AeR5ZNzgrMEbqPdP0JoYnd8xVjP3c6CdZ/hy9f0 CCPhUjJVVZtgm4sIxbUN3MyNFkRtd7DtaErVkkjl1yopRH7yI6Bkb0IgK A2IikTkPPL68Nyncn+oNCNSCBS/r2s/DLS1egX9qdDUq15rMFVhMYS3B1 qVRQzwP35glIlJp6a2KIfT8e2joe5vE0jYqUhQUjrvfgVhjLAsn5kNXyY xbyKS7QfCk15g7lRGhHmVGYk4NzbbJJKZeJrz3xp8z9aLI8HN1zBH6PcO UZUZO7Qy0LEySANDyzRqVoKTkm4efDGRVA4T6ZyNEkWQPK8zuouKejOBu Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="322902664" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="322902664" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:45 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="662028008" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="662028008" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:38 -0800 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com Subject: [PATCH v2 1/4] soundwire: stream: use consistent pattern for freeing buffers Date: Thu, 19 Jan 2023 15:32:08 +0800 Message-Id: <20230119073211.85979-2-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> References: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755434792106979485?= X-GMAIL-MSGID: =?utf-8?q?1755434792106979485?= From: Pierre-Louis Bossart The code should free the message buffer used for data, the message structure used for control and assign the latter to NULL. The last part is missing for multi-link cases, and the order is inconsistent for single-link cases. Link: https://github.com/thesofproject/linux/issues/4056 Signed-off-by: Pierre-Louis Bossart Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/stream.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c index df3b36670df4..9c13dbd2b26e 100644 --- a/drivers/soundwire/stream.c +++ b/drivers/soundwire/stream.c @@ -723,8 +723,8 @@ static int sdw_bank_switch(struct sdw_bus *bus, int m_rt_count) } if (!multi_link) { - kfree(wr_msg); kfree(wbuf); + kfree(wr_msg); bus->defer_msg.msg = NULL; bus->params.curr_bank = !bus->params.curr_bank; bus->params.next_bank = !bus->params.next_bank; @@ -769,6 +769,7 @@ static int sdw_ml_sync_bank_switch(struct sdw_bus *bus) if (bus->defer_msg.msg) { kfree(bus->defer_msg.msg->buf); kfree(bus->defer_msg.msg); + bus->defer_msg.msg = NULL; } return 0; @@ -867,6 +868,7 @@ static int do_bank_switch(struct sdw_stream_runtime *stream) if (bus->defer_msg.msg) { kfree(bus->defer_msg.msg->buf); kfree(bus->defer_msg.msg); + bus->defer_msg.msg = NULL; } } From patchwork Thu Jan 19 07:32:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 45623 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp189029wrn; Wed, 18 Jan 2023 23:26:12 -0800 (PST) X-Google-Smtp-Source: AMrXdXsUpaPde6HkRL724X5QCPGqNPqRH8xg59/PgrvBdXuZOOPiYADXO7d2hIc1HyCjR18ihgj5 X-Received: by 2002:aa7:c393:0:b0:49e:6887:9f88 with SMTP id k19-20020aa7c393000000b0049e68879f88mr1416580edq.29.1674113171886; Wed, 18 Jan 2023 23:26:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674113171; cv=none; d=google.com; s=arc-20160816; b=vc3lxnMuNZevodmMJjz1RVWYOAPGTeWoZkfieK4pPfnC1PZ3fT4aaDSx/KPxs7eTNY da8jcgr4LaxzLiID34bxCVDSS7Y6KFKCWmycSk2NKdjIvzrSd3I52Ot3G7rrG+1lcDtB yqZAYXdnvSAZIqi1YdxHYJeXosj9w9wZEtIuu2X6i9Hvb21xcxqmYeOqubHE13epBMBR CG9x6h0Z27CONUHGkag+7bPFiEvn9toIvaUwXLeVzntpFUN+zYZUtC0/yPBDV1+gLyt+ NbmNhH9kjUZm9ZBA6vXYRapPJdRgVK1xk7CUibOk8DNxHsVNJdI96HwNMGGbGhNnNMfq I/fQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=OmS0W0j7CZEEuTdXS101EDJTyeqhGBKRni7qxqRpSRo=; b=VsMklwailj779lAqloSKzkTAI5dDL1vmzNUPMYU8fBvgYoX1wiBKBwGwerYcNsZb1r gsjLN/L5EKevETSJ28q63mcYptpaNP8f7siOeQjQ5+T1+VNbCozp2qUVgUCxjeKhFT+1 JXg4b9NUMJDLNPtFOOMMIpEN9c2mWqyzZDAPmciMKZWwKC0EqYLt/chzbesNvSse/d5g yzJeQVDcZryNs+L7XwqojXAbTezuIHjIujgoTdbQH66iIoQ0zsGEr0VW9w2L0/twZ+s4 8r4knCBpyl7CpvSoF1ZzAu0XVhW77MMigwuuukeMynfnR+EwlifHVQ4s2814e9gC0f7/ OTpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=EsR7SU2s; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f17-20020a50d551000000b004782d6db359si37272449edj.146.2023.01.18.23.25.47; Wed, 18 Jan 2023 23:26:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=EsR7SU2s; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229812AbjASHYR (ORCPT + 99 others); Thu, 19 Jan 2023 02:24:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229734AbjASHX6 (ORCPT ); Thu, 19 Jan 2023 02:23:58 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5651A61D42 for ; Wed, 18 Jan 2023 23:23:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674113032; x=1705649032; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NeP4OdNK8sHTuHKWYhMhhSE6AcrppUIxgnz/ptxTTv8=; b=EsR7SU2s35LgWC+ocpCYWiqqiJl+Vx3WL+QQf2UoYFsigs2Wz/2iiUSr lM93H4BC5aqWbKawJfT6UHlmu1mv/jr/I0SMQznoZMwVKzDcb9iAlAP+T tZbRnzP6tK89QYWDnVx5DjKmxzAJFq8c4mRhws2ArNAckX7WSXRo2yC/1 HC2R4xpOow5BBzY6M/WyT6aMr0GM3j/27WbfFpRON7qSyuVgMZGZRyVZZ AQy5b6cbgPw8oeaiQdgI1XjhA11jg+PDklDp6k9aYNgpE+NDtFd2Fv65R 34uV2MLSCoR1PHMa7OHVddSsUl9BWqv2fXj1ny6Nc7PoS0GszabjdL/3p A==; X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="322902668" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="322902668" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:45 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="662028032" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="662028032" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:41 -0800 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com Subject: [PATCH v2 2/4] soundwire: bus: remove sdw_defer argument in sdw_transfer_defer() Date: Thu, 19 Jan 2023 15:32:09 +0800 Message-Id: <20230119073211.85979-3-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> References: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755434893043831334?= X-GMAIL-MSGID: =?utf-8?q?1755434893043831334?= From: Pierre-Louis Bossart There's no point in passing an argument that is a pointer to a bus member. We can directly get the member and do an indirection when needed. This is a first step before simplifying the hardware-specific callbacks further. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/bus.c | 10 ++++------ drivers/soundwire/bus.h | 3 +-- drivers/soundwire/stream.c | 4 +--- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index 633d411b64f3..572cc9a9af41 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -225,9 +225,9 @@ static inline int do_transfer(struct sdw_bus *bus, struct sdw_msg *msg) } static inline int do_transfer_defer(struct sdw_bus *bus, - struct sdw_msg *msg, - struct sdw_defer *defer) + struct sdw_msg *msg) { + struct sdw_defer *defer = &bus->defer_msg; int retry = bus->prop.err_threshold; enum sdw_command_response resp; int ret = 0, i; @@ -335,19 +335,17 @@ EXPORT_SYMBOL(sdw_show_ping_status); * sdw_transfer_defer() - Asynchronously transfer message to a SDW Slave device * @bus: SDW bus * @msg: SDW message to be xfered - * @defer: Defer block for signal completion * * Caller needs to hold the msg_lock lock while calling this */ -int sdw_transfer_defer(struct sdw_bus *bus, struct sdw_msg *msg, - struct sdw_defer *defer) +int sdw_transfer_defer(struct sdw_bus *bus, struct sdw_msg *msg) { int ret; if (!bus->ops->xfer_msg_defer) return -ENOTSUPP; - ret = do_transfer_defer(bus, msg, defer); + ret = do_transfer_defer(bus, msg); if (ret != 0 && ret != -ENODATA) dev_err(bus->dev, "Defer trf on Slave %d failed:%d\n", msg->dev_num, ret); diff --git a/drivers/soundwire/bus.h b/drivers/soundwire/bus.h index 7631ef5e71fb..96927a143796 100644 --- a/drivers/soundwire/bus.h +++ b/drivers/soundwire/bus.h @@ -151,8 +151,7 @@ int sdw_configure_dpn_intr(struct sdw_slave *slave, int port, bool enable, int mask); int sdw_transfer(struct sdw_bus *bus, struct sdw_msg *msg); -int sdw_transfer_defer(struct sdw_bus *bus, struct sdw_msg *msg, - struct sdw_defer *defer); +int sdw_transfer_defer(struct sdw_bus *bus, struct sdw_msg *msg); #define SDW_READ_INTR_CLEAR_RETRY 10 diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c index 9c13dbd2b26e..2e39587ed1de 100644 --- a/drivers/soundwire/stream.c +++ b/drivers/soundwire/stream.c @@ -684,8 +684,6 @@ static int sdw_bank_switch(struct sdw_bus *bus, int m_rt_count) if (!wr_msg) return -ENOMEM; - bus->defer_msg.msg = wr_msg; - wbuf = kzalloc(sizeof(*wbuf), GFP_KERNEL); if (!wbuf) { ret = -ENOMEM; @@ -713,7 +711,7 @@ static int sdw_bank_switch(struct sdw_bus *bus, int m_rt_count) multi_link = bus->multi_link && (m_rt_count >= bus->hw_sync_min_links); if (multi_link) - ret = sdw_transfer_defer(bus, wr_msg, &bus->defer_msg); + ret = sdw_transfer_defer(bus, wr_msg); else ret = sdw_transfer(bus, wr_msg); From patchwork Thu Jan 19 07:32:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 45622 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp188985wrn; Wed, 18 Jan 2023 23:26:05 -0800 (PST) X-Google-Smtp-Source: AMrXdXu26iBmbXwEvuKEsXEbrrwIAD249YHcOiBYg2eFwVoS8YcsJGfvY2Bb4GvtVsPjGx9fQMjq X-Received: by 2002:a05:6a20:9b99:b0:b7:4f67:c2de with SMTP id mr25-20020a056a209b9900b000b74f67c2demr9885890pzb.40.1674113164791; Wed, 18 Jan 2023 23:26:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674113164; cv=none; d=google.com; s=arc-20160816; b=xrED8XYnj70KYuYipKqHD96i1IcHVsERA/8lNuxo41WWH/aOJvHremK8SfKMPixmIz FAFPQoCIs0Obf654u13+fp0nT7oszwFTSuRHvggus3DNqrD1mGW4UJ3dzmPpCiQxJQYf 5XV/yLBIsLYbjpvFY/PBx0hE6n1+aH4ysR+LI0WzSn3emwKVrn7iNtV3xjkibYyTfZCe M0IwA3mp3UoUt3+7M8pmipJGtr6S7Xyu1pP6OHL1gmtF1IvlLbrnNYRKHhWR0lel1p1b ZsBavulsTjI0phUOdwyueIoKnIYhruF2dOViD3e09r1Xg9HYh8AyYILlc7DfC9n6LCxO 7U1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VqAzbLLYDseDH0aFLZJIW14txJxVr4Q7ny9rkhD2g6s=; b=KQuh/a/2xVmI5GhIZetReqihZK+BD0XftMi/uET6pXpaq2kdRsCNLk549dP/RQ//2c ARw7XqdPk/4JKcmDuuHbPUeN7OIoG6OuVyKOue5LC9lS09SXzXGjKE1zRWR0X2syAYnF 2ivsCeQAXlXMLY26syI45ESJypkuKg7OaC3J0v8wE50GRwXCrU7A41SvOBsRKgBngen+ TXrSXzLALeQFaX677BcPWd0hlUQt8wkhAUTCNl976KPKQZm6ZEiVqZ0YeMdD323rg07B UljShfVKbBbLgwojE48iARSYjyrN5e7lB2nR+SG9agavE+peif6mxwPcLJAvPOfa5H21 KbWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=fwSFWCA3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n6-20020a634d46000000b004a32a462c19si37471282pgl.843.2023.01.18.23.25.52; Wed, 18 Jan 2023 23:26:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=fwSFWCA3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229720AbjASHYX (ORCPT + 99 others); Thu, 19 Jan 2023 02:24:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229779AbjASHYE (ORCPT ); Thu, 19 Jan 2023 02:24:04 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CE18F61D65 for ; Wed, 18 Jan 2023 23:23:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674113036; x=1705649036; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9EfKDqwT5iUG/3vSHRo63HrB7tHmjW3+OTAvgNE6xiU=; b=fwSFWCA3VoaA+T3ht/94ELuEjUP++xTsHwrnz+eOMokFII9xJ8Jm6uYC dEdIltuHUA6TW1NxSb28QqERTluvlhqRg0o1txLuBDH5Q5HdHwYz7N3KC Efuf308thWRbWBK3WpCBdP/9IVCLzoDlppeVHBhArZn98YnoHUo08avE8 8rw22lqc27GcT35CK8C00F6IHFMGXH5APdrd8amHHTpaDmw55zvSKvX15 Yt3ISuh3+Jb6mBqMEmi4vUYoKXID8NXzY/PGDyNAe79yT2SANqEp1zcTc UUQ4faZGBgzFmjFk+9cKg/ALFmtOtMvbOGcDTtxeQA8LLDHFhvvW6nYm1 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="322902678" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="322902678" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:51 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="662028041" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="662028041" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:44 -0800 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com Subject: [PATCH v2 3/4] soundwire: cadence: use directly bus sdw_defer structure Date: Thu, 19 Jan 2023 15:32:10 +0800 Message-Id: <20230119073211.85979-4-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> References: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755434885604200762?= X-GMAIL-MSGID: =?utf-8?q?1755434885604200762?= From: Pierre-Louis Bossart Copying the bus sdw_defer structure into the Cadence internals leads to using stale pointers and kernel oopses on errors. It's just simpler and safer to use the bus sdw_defer structure directly. Link: https://github.com/thesofproject/linux/issues/4056 Signed-off-by: Pierre-Louis Bossart Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/bus.c | 2 +- drivers/soundwire/cadence_master.c | 17 ++++++++--------- drivers/soundwire/cadence_master.h | 5 +---- include/linux/soundwire/sdw.h | 3 +-- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index 572cc9a9af41..fc192d0c61e7 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -237,7 +237,7 @@ static inline int do_transfer_defer(struct sdw_bus *bus, init_completion(&defer->complete); for (i = 0; i <= retry; i++) { - resp = bus->ops->xfer_msg_defer(bus, msg, defer); + resp = bus->ops->xfer_msg_defer(bus, msg); ret = find_response_code(resp); /* if cmd is ok or ignored return */ if (ret == 0 || ret == -ENODATA) diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c index 521387322145..2365395cb181 100644 --- a/drivers/soundwire/cadence_master.c +++ b/drivers/soundwire/cadence_master.c @@ -750,7 +750,7 @@ EXPORT_SYMBOL(cdns_xfer_msg); enum sdw_command_response cdns_xfer_msg_defer(struct sdw_bus *bus, - struct sdw_msg *msg, struct sdw_defer *defer) + struct sdw_msg *msg) { struct sdw_cdns *cdns = bus_to_cdns(bus); int cmd = 0, ret; @@ -763,9 +763,6 @@ cdns_xfer_msg_defer(struct sdw_bus *bus, if (ret) return SDW_CMD_FAIL_OTHER; - cdns->defer = defer; - cdns->defer->length = msg->len; - return _cdns_xfer_msg(cdns, msg, cmd, 0, msg->len, true); } EXPORT_SYMBOL(cdns_xfer_msg_defer); @@ -893,13 +890,15 @@ irqreturn_t sdw_cdns_irq(int irq, void *dev_id) return IRQ_NONE; if (int_status & CDNS_MCP_INT_RX_WL) { + struct sdw_bus *bus = &cdns->bus; + struct sdw_defer *defer = &bus->defer_msg; + cdns_read_response(cdns); - if (cdns->defer) { - cdns_fill_msg_resp(cdns, cdns->defer->msg, - cdns->defer->length, 0); - complete(&cdns->defer->complete); - cdns->defer = NULL; + if (defer && defer->msg) { + cdns_fill_msg_resp(cdns, defer->msg, + defer->length, 0); + complete(&defer->complete); } else { complete(&cdns->tx_complete); } diff --git a/drivers/soundwire/cadence_master.h b/drivers/soundwire/cadence_master.h index fa9dc38264a4..53029d22822d 100644 --- a/drivers/soundwire/cadence_master.h +++ b/drivers/soundwire/cadence_master.h @@ -109,7 +109,6 @@ struct sdw_cdns_dai_runtime { * @instance: instance number * @response_buf: SoundWire response buffer * @tx_complete: Tx completion - * @defer: Defer pointer * @ports: Data ports * @num_ports: Total number of data ports * @pcm: PCM streams @@ -130,7 +129,6 @@ struct sdw_cdns { u32 response_buf[CDNS_MCP_IP_MAX_CMD_LEN + 2]; struct completion tx_complete; - struct sdw_defer *defer; struct sdw_cdns_port *ports; int num_ports; @@ -189,8 +187,7 @@ enum sdw_command_response cdns_xfer_msg(struct sdw_bus *bus, struct sdw_msg *msg); enum sdw_command_response -cdns_xfer_msg_defer(struct sdw_bus *bus, - struct sdw_msg *msg, struct sdw_defer *defer); +cdns_xfer_msg_defer(struct sdw_bus *bus, struct sdw_msg *msg); u32 cdns_read_ping_status(struct sdw_bus *bus); diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index 3cd2a761911f..fb2bd1524a26 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -852,8 +852,7 @@ struct sdw_master_ops { enum sdw_command_response (*xfer_msg) (struct sdw_bus *bus, struct sdw_msg *msg); enum sdw_command_response (*xfer_msg_defer) - (struct sdw_bus *bus, struct sdw_msg *msg, - struct sdw_defer *defer); + (struct sdw_bus *bus, struct sdw_msg *msg); enum sdw_command_response (*reset_page_addr) (struct sdw_bus *bus, unsigned int dev_num); int (*set_bus_conf)(struct sdw_bus *bus, From patchwork Thu Jan 19 07:32:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bard Liao X-Patchwork-Id: 45621 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp188791wrn; Wed, 18 Jan 2023 23:25:21 -0800 (PST) X-Google-Smtp-Source: AMrXdXsZ7/z8k1HOpfd3UDSuxZOTQlKWqwJH+qRokq9JEXr5zYLjuFP6i//TBDoko1fYhb0QkNEW X-Received: by 2002:a05:6a00:d68:b0:576:dc40:6db9 with SMTP id n40-20020a056a000d6800b00576dc406db9mr8835144pfv.13.1674113121317; Wed, 18 Jan 2023 23:25:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674113121; cv=none; d=google.com; s=arc-20160816; b=Um6RT7AnQHoctb5eY/ZugPU9kk2MDYhrLHP+8DrHSwT2yiFx7v33f47108v0zm7YAK QCn8Fepmi0P6/azZG4cgU2Kqw76KrbChWTg4aaO2CxZ8PfQnZaumcM9Tgn5rtr6h0M9K fVJ3EZEJ5m/5m61c+WUkLB7zstcD/aERCl29liU9ho6BqRiAnDUzw8AQz4E+i5Egn9C0 m2gLyyzpdBbPN6A2u/TVBCzgc6h9ayNMjlFcMauNnLRY9PxWTLpNqMrKe23ESbKhLS5/ trSBxb2z+l3DkcuQWbVRQCZboOBRtXgBsO3JMtVYGo9O7BrQX6PvjTImf/jzykhKl3Cp UJIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=qeFz/lhRARXoxOv3b6j7k2gyST8cu9qzUlLs4flH1ZM=; b=YLe5g9gLqH6lVGOea7cBIS6kAAw+KBWmQJovD8LW3EHE59dhrwrL7gbvLpqGqNHPow hxnQiMcD4lK+H3RHmFVSYiObuZKMrIhXFBGhOAsrEDVj5k8MYECR1OCPS7pvFrZnOF8v 95yK5DOWZMudGetPgCjk3KvlzQxDfF23p46sKP7X9fpsyeGwvjAh9VIP25ulHxM/I2BL UYQ9yVbRTLYhtPXR+VS3YSH3W9AwXFqrDScnhDGfhOsQJuHkpQ+yfIPw0q4UuB8Tt6xx Tcj5RnscbscIAqk4QmHSKXnGOeA6r/jmMoyM/2VlYbS/E7kebT04DII/UZqOxyntj6uD WvKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=n1X18AGW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t24-20020aa78f98000000b0058d97ce5372si12857974pfs.249.2023.01.18.23.25.09; Wed, 18 Jan 2023 23:25:21 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=n1X18AGW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229801AbjASHYM (ORCPT + 99 others); Thu, 19 Jan 2023 02:24:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229784AbjASHYE (ORCPT ); Thu, 19 Jan 2023 02:24:04 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF7A062D15 for ; Wed, 18 Jan 2023 23:23:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674113036; x=1705649036; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vexI4bXkLQNgnzQp46b1BOfBvYLiQ1hk43f3ShONtl8=; b=n1X18AGWpEHQbZiFJY7Pk2tC/V+7uNzf5kyLWPzH60Pjz4T+R6AklHT/ 5CZNATNMYz+BoezcfhRzwp2iFA2ShPZnoJyelIflPmShXP1hU60bUKG/V B/Y2LAjcFnT/4hlEy2ksgUhXpujP84gqLrNawpg3NNW4sBRWSmCZTGLLv MuXGquzcchXe6fCJH7ooRuZYaQL5LYLgKL+AjcHG9Yb3TQe7DL2kukipJ dyISKKdUzs04OujxZRHoRYCHqpE7DCQuJ7naK277OZAi/2x5k90Uz8rVk UCqNX4ZBI5pvwxTGte20ZPzB9SKXJu1l6J+cm1Sni5UZIL2MTOHLmz6Uc Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="322902682" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="322902682" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:51 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="662028052" X-IronPort-AV: E=Sophos;i="5.97,228,1669104000"; d="scan'208";a="662028052" Received: from bard-ubuntu.sh.intel.com ([10.239.185.57]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 23:23:46 -0800 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, pierre-louis.bossart@linux.intel.com, bard.liao@intel.com Subject: [PATCH v2 4/4] soundwire: cadence: further simplify low-level xfer_msg_defer() callback Date: Thu, 19 Jan 2023 15:32:11 +0800 Message-Id: <20230119073211.85979-5-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> References: <20230119073211.85979-1-yung-chuan.liao@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755434840491289976?= X-GMAIL-MSGID: =?utf-8?q?1755434840491289976?= From: Pierre-Louis Bossart The message pointer is already stored in the bus->defer structure, not need to pass it as an argument. Suggested-by: Ranjani Sridharan Signed-off-by: Pierre-Louis Bossart Reviewed-by: Ranjani Sridharan Signed-off-by: Bard Liao --- drivers/soundwire/bus.c | 2 +- drivers/soundwire/cadence_master.c | 5 +++-- drivers/soundwire/cadence_master.h | 2 +- include/linux/soundwire/sdw.h | 5 +++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index fc192d0c61e7..ed94c92bc575 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -237,7 +237,7 @@ static inline int do_transfer_defer(struct sdw_bus *bus, init_completion(&defer->complete); for (i = 0; i <= retry; i++) { - resp = bus->ops->xfer_msg_defer(bus, msg); + resp = bus->ops->xfer_msg_defer(bus); ret = find_response_code(resp); /* if cmd is ok or ignored return */ if (ret == 0 || ret == -ENODATA) diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c index 2365395cb181..ece0ad89746f 100644 --- a/drivers/soundwire/cadence_master.c +++ b/drivers/soundwire/cadence_master.c @@ -749,10 +749,11 @@ cdns_xfer_msg(struct sdw_bus *bus, struct sdw_msg *msg) EXPORT_SYMBOL(cdns_xfer_msg); enum sdw_command_response -cdns_xfer_msg_defer(struct sdw_bus *bus, - struct sdw_msg *msg) +cdns_xfer_msg_defer(struct sdw_bus *bus) { struct sdw_cdns *cdns = bus_to_cdns(bus); + struct sdw_defer *defer = &bus->defer_msg; + struct sdw_msg *msg = defer->msg; int cmd = 0, ret; /* for defer only 1 message is supported */ diff --git a/drivers/soundwire/cadence_master.h b/drivers/soundwire/cadence_master.h index 53029d22822d..63c58b9b1f59 100644 --- a/drivers/soundwire/cadence_master.h +++ b/drivers/soundwire/cadence_master.h @@ -187,7 +187,7 @@ enum sdw_command_response cdns_xfer_msg(struct sdw_bus *bus, struct sdw_msg *msg); enum sdw_command_response -cdns_xfer_msg_defer(struct sdw_bus *bus, struct sdw_msg *msg); +cdns_xfer_msg_defer(struct sdw_bus *bus); u32 cdns_read_ping_status(struct sdw_bus *bus); diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index fb2bd1524a26..86e320cf27b1 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -837,7 +837,8 @@ struct sdw_defer { * @read_prop: Read Master properties * @override_adr: Override value read from firmware (quirk for buggy firmware) * @xfer_msg: Transfer message callback - * @xfer_msg_defer: Defer version of transfer message callback + * @xfer_msg_defer: Defer version of transfer message callback. The message is handled with the + * bus struct @sdw_defer * @reset_page_addr: Reset the SCP page address registers * @set_bus_conf: Set the bus configuration * @pre_bank_switch: Callback for pre bank switch @@ -852,7 +853,7 @@ struct sdw_master_ops { enum sdw_command_response (*xfer_msg) (struct sdw_bus *bus, struct sdw_msg *msg); enum sdw_command_response (*xfer_msg_defer) - (struct sdw_bus *bus, struct sdw_msg *msg); + (struct sdw_bus *bus); enum sdw_command_response (*reset_page_addr) (struct sdw_bus *bus, unsigned int dev_num); int (*set_bus_conf)(struct sdw_bus *bus,