From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9818A1990D4; Wed, 5 Jun 2024 11:50:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717588217; cv=none; b=H8GOXRzqVxLPrU2xvy/XBvH7Wb9lOzoqy7YSuUYXhLhtTkas1uqQhWiN7GjBMprzBcVw3u7u4R7HWoow3sTvZOxeNT7fNfDj9dCpdaqU2sL4TYmAq8zEI9IbjYXN5pwVgBFDxVK4TxVFSsrBh1/FIbTSr7Wb2O6+dRQRnkaGMo0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717588217; c=relaxed/simple; bh=ofMFuZutyc8UqgcT5XmcJ+uqQ0V9bPSOejxM9gZ7iic=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=eKM0ZhqMUVYdPSee2tbHRxLuvqNaIuWp5KnTsIO0BPZfFZRBLL3Hu1+gFCS3bcB8AGmRwHLIBymP3vLy3+wA2lYl3riCN4sjXJlbuFnE2pXijLgeBn33hgq2GqyhELADSd5D2n4VGD/Apl6SG+KwK83uAGhZIcPVrHQZUrmBQaI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fMskRonR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fMskRonR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4FE3C4AF07; Wed, 5 Jun 2024 11:50:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717588217; bh=ofMFuZutyc8UqgcT5XmcJ+uqQ0V9bPSOejxM9gZ7iic=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fMskRonRrRM6NmUpu7eFzU4ZWSt+5/GZnDifC3g5BBKW+cIyLqr00OYR8rRxZ9UsL 5WFQvNnsU6NRPay7sxnmi/L7cbw0Twi85pDxxneGixBjvBodQdw3ntmd2a4kpJbbRN rQhIXHckPbbWOtUKKwfNUJ/y0iR/067B76ZOOaX0r1/NSCsgwu2S5yRBMiY7iBuZf1 fDuz2gjYcniE5jgW7mJBrOKynD0taRtEo6ScCGWMZTZ0bXlUrkdbNHdvJ9KKf9MHtt NWHD4YX2sJyOfTOieCbn7d3dMJgHM9Ixc1KEi4aFpSuHw/ItNh6xukkB0zQYke9+J1 c4NeqYaU1cVBQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Alexander Stein , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Andi Shyti , Sasha Levin , aisheng.dong@nxp.com, shawnguo@kernel.org, linux-i2c@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 6.9 21/28] i2c: lpi2c: Avoid calling clk_get_rate during transfer Date: Wed, 5 Jun 2024 07:48:50 -0400 Message-ID: <20240605114927.2961639-21-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240605114927.2961639-1-sashal@kernel.org> References: <20240605114927.2961639-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.9.3 Content-Transfer-Encoding: 8bit From: Alexander Stein [ Upstream commit 4268254a39484fc11ba991ae148bacbe75d9cc0a ] Instead of repeatedly calling clk_get_rate for each transfer, lock the clock rate and cache the value. A deadlock has been observed while adding tlv320aic32x4 audio codec to the system. When this clock provider adds its clock, the clk mutex is locked already, it needs to access i2c, which in return needs the mutex for clk_get_rate as well. Signed-off-by: Alexander Stein Reviewed-by: Uwe Kleine-König Reviewed-by: Andi Shyti Signed-off-by: Andi Shyti Signed-off-by: Sasha Levin --- drivers/i2c/busses/i2c-imx-lpi2c.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c index 6d72e4e126dde..36e8f6196a87b 100644 --- a/drivers/i2c/busses/i2c-imx-lpi2c.c +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c @@ -99,6 +99,7 @@ struct lpi2c_imx_struct { __u8 *rx_buf; __u8 *tx_buf; struct completion complete; + unsigned long rate_per; unsigned int msglen; unsigned int delivered; unsigned int block_data; @@ -212,9 +213,7 @@ static int lpi2c_imx_config(struct lpi2c_imx_struct *lpi2c_imx) lpi2c_imx_set_mode(lpi2c_imx); - clk_rate = clk_get_rate(lpi2c_imx->clks[0].clk); - if (!clk_rate) - return -EINVAL; + clk_rate = lpi2c_imx->rate_per; if (lpi2c_imx->mode == HS || lpi2c_imx->mode == ULTRA_FAST) filt = 0; @@ -611,6 +610,20 @@ static int lpi2c_imx_probe(struct platform_device *pdev) if (ret) return ret; + /* + * Lock the parent clock rate to avoid getting parent clock upon + * each transfer + */ + ret = devm_clk_rate_exclusive_get(&pdev->dev, lpi2c_imx->clks[0].clk); + if (ret) + return dev_err_probe(&pdev->dev, ret, + "can't lock I2C peripheral clock rate\n"); + + lpi2c_imx->rate_per = clk_get_rate(lpi2c_imx->clks[0].clk); + if (!lpi2c_imx->rate_per) + return dev_err_probe(&pdev->dev, -EINVAL, + "can't get I2C peripheral clock rate\n"); + pm_runtime_set_autosuspend_delay(&pdev->dev, I2C_PM_TIMEOUT); pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_get_noresume(&pdev->dev); -- 2.43.0 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 5E4FAC25B76 for ; Wed, 5 Jun 2024 11:50:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=X2V4nxfcOhlsFMwCGBQONHkXTEYfJF2Jmc3W+9YdND4=; b=b2HoaLx+oI+hrV Uti6eTm47AzoGMb3l3OcZSZCAODxDe0eVbvkdJysnmAF3nthjUuXFswuT+j1xXSNyYKGv5HokvvtR M7X6U6vWQeBAzAMOzPsZv8ApNIiq+woJe9wzBSQD3C1ha1JzUd3lMmOmZTTRNYi+8C8impHwtV0vM cdbaXGZI+IavGc0ddkpVg6sO69b+U0l/qxxNWq8o1qt12P0TkB7Ms78vCoIJxpcb2LBzo5GijYguJ Yv9e9eA03FfsPgiypyRF888da9u+CKsoYeadAVZuKnL/xI0TIShdqTfEZFtacNgbpgDrSeMOzDKX2 kvjmbt8mIlaHdC2c64Bg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sEp9s-00000005md7-2RDP; Wed, 05 Jun 2024 11:50:24 +0000 Received: from sin.source.kernel.org ([145.40.73.55]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sEp9n-00000005mZa-2Kfq for linux-arm-kernel@lists.infradead.org; Wed, 05 Jun 2024 11:50:21 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C07D3CE1788; Wed, 5 Jun 2024 11:50:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4FE3C4AF07; Wed, 5 Jun 2024 11:50:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717588217; bh=ofMFuZutyc8UqgcT5XmcJ+uqQ0V9bPSOejxM9gZ7iic=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fMskRonRrRM6NmUpu7eFzU4ZWSt+5/GZnDifC3g5BBKW+cIyLqr00OYR8rRxZ9UsL 5WFQvNnsU6NRPay7sxnmi/L7cbw0Twi85pDxxneGixBjvBodQdw3ntmd2a4kpJbbRN rQhIXHckPbbWOtUKKwfNUJ/y0iR/067B76ZOOaX0r1/NSCsgwu2S5yRBMiY7iBuZf1 fDuz2gjYcniE5jgW7mJBrOKynD0taRtEo6ScCGWMZTZ0bXlUrkdbNHdvJ9KKf9MHtt NWHD4YX2sJyOfTOieCbn7d3dMJgHM9Ixc1KEi4aFpSuHw/ItNh6xukkB0zQYke9+J1 c4NeqYaU1cVBQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Alexander Stein , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Andi Shyti , Sasha Levin , aisheng.dong@nxp.com, shawnguo@kernel.org, linux-i2c@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 6.9 21/28] i2c: lpi2c: Avoid calling clk_get_rate during transfer Date: Wed, 5 Jun 2024 07:48:50 -0400 Message-ID: <20240605114927.2961639-21-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240605114927.2961639-1-sashal@kernel.org> References: <20240605114927.2961639-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.9.3 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240605_045020_054229_BED8F786 X-CRM114-Status: GOOD ( 13.99 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3RlaW5AZXcudHEtZ3JvdXAuY29tPgoK WyBVcHN0cmVhbSBjb21taXQgNDI2ODI1NGEzOTQ4NGZjMTFiYTk5MWFlMTQ4YmFjYmU3NWQ5Y2Mw YSBdCgpJbnN0ZWFkIG9mIHJlcGVhdGVkbHkgY2FsbGluZyBjbGtfZ2V0X3JhdGUgZm9yIGVhY2gg dHJhbnNmZXIsIGxvY2sKdGhlIGNsb2NrIHJhdGUgYW5kIGNhY2hlIHRoZSB2YWx1ZS4KQSBkZWFk bG9jayBoYXMgYmVlbiBvYnNlcnZlZCB3aGlsZSBhZGRpbmcgdGx2MzIwYWljMzJ4NCBhdWRpbyBj b2RlYyB0bwp0aGUgc3lzdGVtLiBXaGVuIHRoaXMgY2xvY2sgcHJvdmlkZXIgYWRkcyBpdHMgY2xv Y2ssIHRoZSBjbGsgbXV0ZXggaXMKbG9ja2VkIGFscmVhZHksIGl0IG5lZWRzIHRvIGFjY2VzcyBp MmMsIHdoaWNoIGluIHJldHVybiBuZWVkcyB0aGUgbXV0ZXgKZm9yIGNsa19nZXRfcmF0ZSBhcyB3 ZWxsLgoKU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3RlaW5AZXcu dHEtZ3JvdXAuY29tPgpSZXZpZXdlZC1ieTogVXdlIEtsZWluZS1Lw7ZuaWcgPHUua2xlaW5lLWtv ZW5pZ0BwZW5ndXRyb25peC5kZT4KUmV2aWV3ZWQtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlA a2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBrZXJuZWwu b3JnPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+Ci0tLQog ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXgtbHBpMmMuYyB8IDE5ICsrKysrKysrKysrKysrKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaW14LWxwaTJjLmMgYi9kcml2ZXJzL2ky Yy9idXNzZXMvaTJjLWlteC1scGkyYy5jCmluZGV4IDZkNzJlNGUxMjZkZGUuLjM2ZThmNjE5NmE4 N2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaW14LWxwaTJjLmMKKysrIGIv ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXgtbHBpMmMuYwpAQCAtOTksNiArOTksNyBAQCBzdHJ1 Y3QgbHBpMmNfaW14X3N0cnVjdCB7CiAJX191OAkJCSpyeF9idWY7CiAJX191OAkJCSp0eF9idWY7 CiAJc3RydWN0IGNvbXBsZXRpb24JY29tcGxldGU7CisJdW5zaWduZWQgbG9uZwkJcmF0ZV9wZXI7 CiAJdW5zaWduZWQgaW50CQltc2dsZW47CiAJdW5zaWduZWQgaW50CQlkZWxpdmVyZWQ7CiAJdW5z aWduZWQgaW50CQlibG9ja19kYXRhOwpAQCAtMjEyLDkgKzIxMyw3IEBAIHN0YXRpYyBpbnQgbHBp MmNfaW14X2NvbmZpZyhzdHJ1Y3QgbHBpMmNfaW14X3N0cnVjdCAqbHBpMmNfaW14KQogCiAJbHBp MmNfaW14X3NldF9tb2RlKGxwaTJjX2lteCk7CiAKLQljbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShs cGkyY19pbXgtPmNsa3NbMF0uY2xrKTsKLQlpZiAoIWNsa19yYXRlKQotCQlyZXR1cm4gLUVJTlZB TDsKKwljbGtfcmF0ZSA9IGxwaTJjX2lteC0+cmF0ZV9wZXI7CiAKIAlpZiAobHBpMmNfaW14LT5t b2RlID09IEhTIHx8IGxwaTJjX2lteC0+bW9kZSA9PSBVTFRSQV9GQVNUKQogCQlmaWx0ID0gMDsK QEAgLTYxMSw2ICs2MTAsMjAgQEAgc3RhdGljIGludCBscGkyY19pbXhfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJLyoKKwkg KiBMb2NrIHRoZSBwYXJlbnQgY2xvY2sgcmF0ZSB0byBhdm9pZCBnZXR0aW5nIHBhcmVudCBjbG9j ayB1cG9uCisJICogZWFjaCB0cmFuc2ZlcgorCSAqLworCXJldCA9IGRldm1fY2xrX3JhdGVfZXhj bHVzaXZlX2dldCgmcGRldi0+ZGV2LCBscGkyY19pbXgtPmNsa3NbMF0uY2xrKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCByZXQsCisJCQkJICAgICAiY2Fu J3QgbG9jayBJMkMgcGVyaXBoZXJhbCBjbG9jayByYXRlXG4iKTsKKworCWxwaTJjX2lteC0+cmF0 ZV9wZXIgPSBjbGtfZ2V0X3JhdGUobHBpMmNfaW14LT5jbGtzWzBdLmNsayk7CisJaWYgKCFscGky Y19pbXgtPnJhdGVfcGVyKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCAtRUlO VkFMLAorCQkJCSAgICAgImNhbid0IGdldCBJMkMgcGVyaXBoZXJhbCBjbG9jayByYXRlXG4iKTsK KwogCXBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KCZwZGV2LT5kZXYsIEkyQ19QTV9U SU1FT1VUKTsKIAlwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZCgmcGRldi0+ZGV2KTsKIAlwbV9y dW50aW1lX2dldF9ub3Jlc3VtZSgmcGRldi0+ZGV2KTsKLS0gCjIuNDMuMAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK