From patchwork Sun Mar 9 12:50:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 14008405 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 F30E9C28B25 for ; Sun, 9 Mar 2025 12:57:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=P/WbteE2uE9evzP/bYrygew09XhuNjI4OrWKNDTxp60=; b=uEO+b7dAceElpK1Ig0+Ai3CuxI YIiUAZVTnVWPqvw7cobKGCvZTdt+26SBWlmVxshsdf3PU1iZBFVS067CFy5xkcGcBuwo854b/VeT7 lSCLc7W7/lkp/ghjNs4eUctY3xYsEcmVUVnNrkncueL0zc0TA7g38Zk/mGkp85tvtgTc2sUNKyILc 9vIpiPjYTSg/fmLlcdRaoBoU+wzcVw25kX7obzzikZYV9QvFSWjpZQyooM28voDfW5lNdE1n1SayD 0FB1yfavamj1/NaEKvuoJXRvk05xQDWt+E0fCW4EIOs5W5cDyTA30QMbzyujEJHbTxokBPchIqSiA nMjsa+QQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trGDH-00000000X9z-24gW; Sun, 09 Mar 2025 12:57:03 +0000 Received: from mout.gmx.net ([212.227.15.15]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trG6s-00000000Wgi-1OMU for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 12:50:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1741524620; x=1742129420; i=wahrenst@gmx.net; bh=P/WbteE2uE9evzP/bYrygew09XhuNjI4OrWKNDTxp60=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=fge2YdQSoLjP/g431yvO3mWevQXpMeIeik9KLizjXsh7eEFdDB8RD2CymzDQDju2 93ufimY5fust3LPCdmnUFGFLRAdOhSUXRjPRHiQFv/eWttTJ4ONECcFMXBCGUBZoF LXvR5WHCF34nKWFBbyvGVhVgE9o+nv5ccdi2ImKTV7XsCkvi7v+mHaI+zBk7rzbjJ MhMkLwWNdpvGN46Qdo3vToc1N4VE8Fc2U0P1ZTcxTB7SMsrwEZF+5eFKYxWYPC4hN pd1I9Vsvh3xwwrbiNGsH8wa+dHiD0iqIAOTPRCPXRyWghYwF3XVp4mzhGksJXmHV5 yzjeNA62/y5XvJG/yw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from stefanw-SCHENKER ([37.4.251.153]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MyKHm-1t1Uu73WMW-00sfgE; Sun, 09 Mar 2025 13:50:19 +0100 From: Stefan Wahren To: Florian Fainelli , Greg Kroah-Hartman Cc: Umang Jain , Ojaswin Mujoo , Laurent Pinchart , Kieran Bingham , Dan Carpenter , linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, kernel-list@raspberrypi.com, linux-staging@lists.linux.dev, Stefan Wahren Subject: [PATCH 1/5] staging: vchiq_arm: Register debugfs after cdev Date: Sun, 9 Mar 2025 13:50:10 +0100 Message-Id: <20250309125014.37166-2-wahrenst@gmx.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309125014.37166-1-wahrenst@gmx.net> References: <20250309125014.37166-1-wahrenst@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:kptK/+PtUtRYwf35RfcAu+TpPIIYdWRfjShOuBGBJc5b8NXFm95 7OESYLU4OgTLjAOWWIcl2Q2dP307/5HHgP4np1ydmcehhYAFfBRJrVyMZhi7pdh6rsJD7pE NhFtvQdVnTl3HNM7gDeM3rj+Qg9MHJgbT2zzWAXK1zZEFAJMVNIUcQx5YsNpBccBn6CiPe/ LmZ0u21+X8C/CISx1fCCw== UI-OutboundReport: notjunk:1;M01:P0:PCguVzfA8w4=;VJ1hG7dTUxCcPbWzp8o42u+Uc69 qEZLeEmgQxOUZZ9QdDriH9SIIUBrVXBTiS9Ls3JsOhY+3KynlMCvCRhK33gyKPjLM5DckUCxP 6SqPzrjWgP/h4ygw0/wx0aRrFitiqX3ZauMGyAK+v0eoTU/WET8eK2Jc1vdrqcyHqhjuIT6nZ n8Gdpnhs/zt7XtyRdQhBPgAGoiviGJtZImHEzjEOe2fHt881/9If2wtT/q+LyEnKUacNdMHp7 zJjHXAxzIq1hB59kxF/de6IhbL4fnMCHPJYaRLpAxv6C1tlxQ11MvI3pW7Zn5vymyR6RqFD4z FffrZEnZuta5bo6A1eKw4W/Rrk7tboP2EC8YFBw1bNPgIW5NlkSGU77lxvWLD9zDMPfJKEzWO fqvQfmDNp0GJzLeqkfRkPA6xqBtiHDdFfJ8SvnnmJpRBMHDlzTERuIYpz/Q+2zdvp9hNjReYZ gn6QX0L7lpUJViVWvnf2JwKwF49ofgAEpbhhFjjhNYxVwNPwQ6ZRoeCJvW4YBPOxMtgHrmt+d edmxAFWTtCVnEPdQSgqH+WYwYgwKBDnL/9puEAxcEHge5RbAut5fgcGHc22FOUx/WuVg+9mTM 2KVeXtgge/9JTCXFt4waGALh1gJoqucfMKqZnkt3TeeHqgB90qWm99Tt32v0NN7Wrrq2aY44Q Xz3WPzhvlHIbQXD5l7B+7tjvPxhzI1VM7l5UfUX9jctq4DPpvmL5pf+1/lu66iMzDQ9Iu/WB0 7ZPOkqoXqejFP+DoA4Ap28XT3g6HS7Tvsin/OCcXOw752ufOTvSMRX5cJ7m+zvIpd1ljO0On5 ni6ZEAr4CLceEQovSRo1sm4zODlvrym1ia4TJCSjx85PkEJbcGLEYKs0D7Jnj5epBotMRgMsB 2lSgYaehIqZb2Ygfn4IxhnWTQ10VWZ+7HQs79iQZjduOagHsJuBfftbC0QWAPQAc8zavrh4SD 8/2pxNGuREzdvBaMBdiPzMewttr6OpS14Nh0d9CLeN+BWobULWKpqWWanz6JxMAFKW/2lzqD9 k5JjBGD0CDxQ1yLyLMkkKL1JkTzUHRB69ZCzyTDCyWsBvcK5NaSPh6cHa4P1+tiFVM2uYFHoW KsEshW1z5Uu2BNulk7DmyBWtPd/YWGp/QWXJ5e0x+FP5ta2/+kS1G0CSwGwno+gctslavWpQQ Ikan3QlA13X/2oqGTEEYm8bKToX1rvE6s01jj6sYos8/VmlWog19ZTlDGE/bWW5Ojh6Xg23fy XFYgfj6oiriH2aJaNDvgk3vHtgzRY1r925Iw4S2IIusScCq7vI0yLL0tns56ev+Jo+yBmtfXG sHjkP6aFjJh5Gv9CqMcxR6hq71RzKZWQpsXx7aMHJ9uk3zYHCGjaD2RNoRAy8zVK4IC7gVUsq 7dgzNDHTnDJ/jQy0OF/w458N2B8+O9JvKXiAMX1465wz5a7U36HLGPoi4k X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_055026_667352_9F280058 X-CRM114-Status: GOOD ( 10.08 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The commit 2a4d15a4ae98 ("staging: vchiq: Refactor vchiq cdev code") moved the debugfs directory creation before vchiq character device registration. In case the latter fails, the debugfs directory won't be cleaned up. Fixes: 2a4d15a4ae98 ("staging: vchiq: Refactor vchiq cdev code") Signed-off-by: Stefan Wahren --- drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.34.1 diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index a4e83e5d619b..e2e80e90b555 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -1386,8 +1386,6 @@ static int vchiq_probe(struct platform_device *pdev) return ret; } - vchiq_debugfs_init(&mgmt->state); - dev_dbg(&pdev->dev, "arm: platform initialised - version %d (min %d)\n", VCHIQ_VERSION, VCHIQ_VERSION_MIN); @@ -1401,6 +1399,8 @@ static int vchiq_probe(struct platform_device *pdev) return ret; } + vchiq_debugfs_init(&mgmt->state); + bcm2835_audio = vchiq_device_register(&pdev->dev, "bcm2835-audio"); bcm2835_camera = vchiq_device_register(&pdev->dev, "bcm2835-camera"); From patchwork Sun Mar 9 12:50:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 14008406 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 5D915C28B25 for ; Sun, 9 Mar 2025 12:58:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=h7/mEgicejaKA4VrMPZI0e0xkSVHXfl/zPMNtGlu1+o=; b=HxE7LnDU0sbePq6oiiuqlSL8qC Kut9UDiTaqIXKaJEYbjtVPvwvDjdn6DAzR494RWQsa8foAg34QB0mWdVpDi5t9Y84Je8M6ipm9pjn y2eWaD6ny63E4DHmTZaiQdJwhpXXwry+oaqkyQrEOs+yLrGJMnS+55WjOn2qAn+rEhbVGUTJKsvpK ZJB2eqNb3suQvg0o0tt02cuLDTrlgnN+f/CyDE3JiLy8IChd5g5oPcE7Oh9mU9OBMNK9lcE2znJ4F 0BR+OtYlLHsZFvCS57c6/hPRweOCFBlW4wPJT6xIObfOiX5tPrdnKmPEAdpLrJC9GMLcyTN7VZPqY uQP+62pw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trGEs-00000000XFa-289W; Sun, 09 Mar 2025 12:58:42 +0000 Received: from mout.gmx.net ([212.227.15.19]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trG6v-00000000Wiq-4ASU for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 12:50:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1741524620; x=1742129420; i=wahrenst@gmx.net; bh=h7/mEgicejaKA4VrMPZI0e0xkSVHXfl/zPMNtGlu1+o=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=biz3TKPnrFbr4v0B8nI1bjcL2Ucg9DsIOi7SuySBUgI2WlHtDnDJoDQirUoaJgs+ AA7F8VQbwkHVY3q10XyupSbcmsFJpx8/9Kc+/d/Uhz3mh1ojpZG2qW6ra2NwKlUo7 kgJtU9lbRgpTkO7EHZ/4auGDOSUppTHYWr5v/0kmWSTJAunlzRILAHEFQ5HhublpE Q3rZpgzIwk2YHCuTWeMgjZno+Wy4ivZiqHsOHBdcw0xGU+g5JMst0QeUGI0wjHdsJ 5T5Ap0jCoYvCQWn8bfj+Bk2rjNzP0tr498gEXNCPBiU6eAhQ58MYVb2CGrCMo8MSU F0J0VLZ+QccNezfreg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from stefanw-SCHENKER ([37.4.251.153]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MD9T1-1tzopZ1Hn7-00GH4N; Sun, 09 Mar 2025 13:50:20 +0100 From: Stefan Wahren To: Florian Fainelli , Greg Kroah-Hartman Cc: Umang Jain , Ojaswin Mujoo , Laurent Pinchart , Kieran Bingham , Dan Carpenter , linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, kernel-list@raspberrypi.com, linux-staging@lists.linux.dev, Stefan Wahren Subject: [PATCH 2/5] staging: vchiq_arm: Fix possible NPR of keep-alive thread Date: Sun, 9 Mar 2025 13:50:11 +0100 Message-Id: <20250309125014.37166-3-wahrenst@gmx.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309125014.37166-1-wahrenst@gmx.net> References: <20250309125014.37166-1-wahrenst@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:WwznDqt6oKXT5S2jrIInUGthm4b8b3T3xCA8v2HsfRauQegO+dH UJR9xNK9TSDODWvlF7zEksnZqB/g5CJkXda4ij+b7tTexLA9IyPTARYNPCoJwQXrA1pocvq O4WQ4pbkJDl8SZO6N7wyZtlB9IKDl9wMIbZZLtZ8GPV56k3/yvUBq5P6roX3YLxKIb7bExK bLHfrZ6p+z2suRqmZZn9g== UI-OutboundReport: notjunk:1;M01:P0:HFKrSyDKaiM=;qaWKqODarzkqXYJgcRjPbZuykZq uHaxkI0emexZIU8JhP8qBhmtWj/3OvF8kXUh8T+ja/WsqODaEwLBPk/iJihLWQAYE/chJfgi0 3bYvCh606au6m1UVmBmIuVTcAF+oEg8GcVIkZh/3bFa2T6IaaartgGlm+NOqRBAZtFro/zPkl UZy5UGikEVxLclX0F116aPR4Pqmh2ht//BPOdKXsXisi+1qhj1cn6OGvKST+CjSar9TCVv54i ipcMaDJWyVzkOOoylouIh8fxVywB5mbxk8n5D4HPHpkKQlMO+8xtryeTwyLCfiXc2ntwle+1T mAToBNKwEPUobSTQ+rKV6SosuOGyBgi2uUrTnar+POgOqQGVDZVyNkdWjwxs6OXzch5uH8qOf TPZs3zgjWZxr1jyNGjjsLs8/CgkWvB25RF0vmlBDVyxhbfqtYtx9uGGf6/xian1fwBPpyr7Sv 9SqwokTvtNGUKdm5eeUqnQMbPTu+xMQvA8rzwRp0QONdLAx1iXDoacN1b7d300ZbpcNlIdCJr QL8CSNMXxtwH6fyr+IsbP2hoE6Sjz/yzVGPhh8o9fGiQswix4nk6lXVcbIEhb2WAXMDiC+grk OZlL6w1dDAytuf1s0Ap5lGJ+jaVezjoX5nWqe7X/4zBsWWwJT0QA+FP8dwUwaeNT0Pc5+SDO7 AQmOfnjBvAju8UDnfZSXKt8ll7PwXIAL84H+yozVQpxNJzmfQ7AJQbGDo/bn0tlU7x5OuLj/T R4LMDB3OvtFRDrMz/2s0PyUUEtOa38/6Z9eKOvG9ziH5vTLaZny3Z5dgEXz/rChtZt3qGSoHq rz9EEkwVt3EJCjN0c5XcUV8RVtjRM9pQPXGpiSPb3tsspcx6Ew2bI4sXq7kQPKtKOAneMkORl MpXTVBIVyLZodntwcGkZnufSwrjnJEVqHftLeqfbL2KHgICMgrmm78P6whqqvxeb8KnlMyYab QfGz0rLDkUCZwWIyoNTZeSDDOkSSFDfps2Vyq83VKe7fWY/E8n+pIL8CLCm85B5PYvDe5F/Pb lI2dKbQszFttX3ftt1TtbrVZNz5OaWhztOfJzRg86pdWHk4LNqDuqBBUqhsciYcvHj/AZkcgO /0rNgi4fc0KAc/pDclT35sAhIf5/2nS+1l8ex85X27cBfLLSTGgIAcPwL92i4ZGL3V0eCKz0U gJ2ZZpsQ+X5NKbJ5PFuFB3gLbd7dcEnqHY4sewSqdJrjzFaCDKYQPURrM38pHlY9sPwUnNhuK fN3YpIdLTfai4MptOmCewlc+ta3sbwRyAXL3EDzuhm+T6jPicObRs5l9GHcEytlVGtRc9xUcX rmpVezJdKEaKT9giF3ucVFwoddqJWvKLuKfXGX8/7Bp5UhfCYMmGlwcmsLr0DEzNzY2rG/uHz 7vIycBk/QgSmdkliaaG5Mgk1jyfGs9Y+604JZfCq/L+IacUokDfb6OczMc X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_055030_331307_488E651D X-CRM114-Status: GOOD ( 10.91 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In case vchiq_platform_conn_state_changed() is never called or fails before driver removal, ka_thread won't be a valid pointer to a task_struct. So do the necessary checks before calling kthread_stop to avoid a crash. Fixes: 863a756aaf49 ("staging: vc04_services: vchiq_core: Stop kthreads on vchiq module unload") Signed-off-by: Stefan Wahren --- drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.34.1 diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index e2e80e90b555..d3b7d1227d7d 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -1422,7 +1422,8 @@ static void vchiq_remove(struct platform_device *pdev) kthread_stop(mgmt->state.slot_handler_thread); arm_state = vchiq_platform_get_arm_state(&mgmt->state); - kthread_stop(arm_state->ka_thread); + if (!IS_ERR_OR_NULL(arm_state->ka_thread)) + kthread_stop(arm_state->ka_thread); } static struct platform_driver vchiq_driver = { From patchwork Sun Mar 9 12:50:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 14008404 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 14519C28B25 for ; Sun, 9 Mar 2025 12:55:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=L81Da1fwz3YhZrikm7gOGIYqhJdk4hwp55sdoIZ0BJk=; b=ep6kfdV/Wu5IkCAGpkFCL2pNd2 WdMwOnu6fDXqS+t7GqpEkXBq5LXgWqEkWEjjpKTdkiXo73IjeJE3s+Y8hU1tp8N0IAwdQgfFR9DV+ Iq6knwmHv5plvylqgUZDvuS0p8AjAHlo6BTGuqLYXVIFysmTzcFEPOP6lks+0jzJDcVm9VLNSYopm 9GXQbRTdl/pIvaO/XKoC5r8X6/LariMMHv1yIWGCtBGdQJFCdMClh+N2hDBO41t4x+H8lg+HTLGFx WJl1MwSNfr/cR6qWiqIe5UVz5NwpxH5Z6Gp37+jgV7SfufHNMZ6gD0sc9cY6LhOMpj7TuNKIeuRwq Sazijo+A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trGBg-00000000X3c-3XUH; Sun, 09 Mar 2025 12:55:24 +0000 Received: from mout.gmx.net ([212.227.15.15]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trG6s-00000000Wgo-0QP5 for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 12:50:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1741524621; x=1742129421; i=wahrenst@gmx.net; bh=L81Da1fwz3YhZrikm7gOGIYqhJdk4hwp55sdoIZ0BJk=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=e5hsBrOYwtTfJCvhnKKEuwJLWUoUnNqI37yRzfA+2pTYao6pVmmkEKVDP/oX4B59 JeL77DR7KyceKaCnWhKfa7KGlvhUrl+mwJNHaXkHiLZUO+lbWqVMgnybdTTesbuNA dDcMqAA8R+0ZSFJdFCCRA8KHEtrjO792EhoF0Ixlsr6nAADMpDFj3e3QXy5mLd4jI mOeu1xAFx3pR8Ji8WvgI7kO5BvdXfqXp6/zQrV32sEq0mftu8mPyvb3L8STOUJPPB Mb06lxNA1vkbIZNNuprq7/N7ResNETMoLGV2lxkZEEv0F4RidOtb83DHrEeYIZfLD eCX4i7iQ14oragT5mw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from stefanw-SCHENKER ([37.4.251.153]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MZkpR-1tm9Kl3VbT-00U6QH; Sun, 09 Mar 2025 13:50:20 +0100 From: Stefan Wahren To: Florian Fainelli , Greg Kroah-Hartman Cc: Umang Jain , Ojaswin Mujoo , Laurent Pinchart , Kieran Bingham , Dan Carpenter , linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, kernel-list@raspberrypi.com, linux-staging@lists.linux.dev, Stefan Wahren Subject: [PATCH 3/5] staging: vchiq_arm: Stop kthreads if vchiq cdev register fails Date: Sun, 9 Mar 2025 13:50:12 +0100 Message-Id: <20250309125014.37166-4-wahrenst@gmx.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309125014.37166-1-wahrenst@gmx.net> References: <20250309125014.37166-1-wahrenst@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:kS7DLLj2vdWuPI1nrmfS3oHbOvUv+XHxzXuEpzaDvzVe55MhS7D CBtHOtBVrkEYJj8QgrsZhvy5MPNFtk8EU980pmJiojb8SX5XME7j3lMixYCV765e9r7SB49 xSawcq4CVzLCQFsj3FNSBY68RnGhWb6XShaAbrhFV1pzNQWwiMnsC6B7AGxAJ0oHDCMGi3M HHWcWFQxp3THsW9lBgbkw== UI-OutboundReport: notjunk:1;M01:P0:KlqeDkoNN7E=;fZbia8Tl4jXYgfeTQK8fcqMwgH4 KCwrGPphznyY4bJAp+lFO6TbE4MvMidpU2fYFoHiLAujLDG4wiVSkPlvp85KDjb0vbi5Essu3 6lLwPzfzPFzGkDcsUaITukxEhDNMVfNBWzpsQC3DLRUX3Fu5AS5H5gbAYnjt/DvNpTyhaxokL RU9M5Ba52zSItrxnJlwGVd4A2PSPr0hDOl34S/uWCa2nji9B1iZLhCtif2/1YA+jtsTb3srR9 xptitbHFFsPNJDi77Y8nrWa4ulmshtsJOXbhZ4Ucojrw1cx9Fg6mMIRlvNisQiIwuaI2rsIhI BlOrf8yU06XgLTI4O/5w1E00nsqmgM7GNGMvopkZvRcRP2PeNZ3HtpJn19xSiFPT1NGlGTelD o3Ku0pymlkpZrFQlSERjq0Vig056q/qQGZ63gFoyIW5/ife9wnP6ZsRB3jHD7Y609brkzl0rs yU3Lq1nNwwvKG7d50igEilMPY9WT9yrZwHXYQvYU2KdRic8KoKv27HZgi7zSi/TIX8XaIPzTx 3+FnDJP5M7MPS07CfRmXzeNRIcw7k8gkp2S3uqJh6PSwBL8tJnxzCX7DySNfgBtrk1JKySd4P PiNuNMGqKjPc8MafAjkrS/ReZUsODJoO6Z4gID9lm/1dMD6KdadaUO8TZMZBqfYayz9Uzfzdy Z1Vqu24TuAezw1PwONvz9uJEzqhUu8fb1GeHJnBfXIj4IZlHLUNfEDAoJbxckoytumkX4bksj U/LtGDFJi2+15TT+7PXFWs5Kug24BAk6XIqMV1ja7M4xKffc4EGzXXHbmW2pmmnzkLsnHVrjD bnc1hNaqs6L/G0avFt8JKRcYZiJvW3s3aQJi3gx0R3kLKjM9Ldn03YKEoqXYq7ro3p/+GvMOH p0nMgaktDTpgLPMU8yT6Xl4cJ7Vljkt4+/Fn5dOwgaYrN9M63SArpG/i99bXeGeE6CAYJPPmV GEIKr4pNLOJyrRPOy8rv/e04a8GW1MCW7hNX1UFiaUwLm9vEziQhmCTfVSp9K18ioBcThsLnB C/TdnK1jAOt8M/pkYETxWKLVHQ4sABHMqI+hStbko9ZwTwVsE5MCRudFNFP5rdbQVcnk3pAep 1YE5x7lxou2Dsf20YJp6OMdCfnRNkWT9zkiI6ZhMClAvhXyA0S+c+RCq1Ut1DZJxYia+dVeQG T0C9+vyvg5vL3IC2F6TEiBfpdMeSczhrDzW063hngcW8rdAkh7w+/epoNY/odR3cbxqL4lmsO pyh1qbM1pxHtNuY548N9ca8WnvAUoxxgZDGfXX8XE1uh8wXDcfqJLv9JBsgj5eX1d3SLO/dwq kp3iqGAtWFUEbFY6hU2fANZY5GyH1sWEtSht3fyZkDH5wd+5Eiziuem9emQzkE3NAxiciBC/w LWM21x6P0m1GGGkhfwMdA6EQT6AMBigyrwsPS06VIv/457dqYHQhYZac7l X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_055026_441918_372E43C1 X-CRM114-Status: GOOD ( 11.86 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In case the vchiq character device cannot be registered during probe, all kthreads needs to be stopped to avoid resource leaks. Fixes: 863a756aaf49 ("staging: vc04_services: vchiq_core: Stop kthreads on vchiq module unload") Signed-off-by: Stefan Wahren --- .../interface/vchiq_arm/vchiq_arm.c | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) -- 2.34.1 diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index d3b7d1227d7d..0c7ea2d0ee85 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -308,6 +308,20 @@ static struct vchiq_arm_state *vchiq_platform_get_arm_state(struct vchiq_state * return (struct vchiq_arm_state *)state->platform_state; } +static void +vchiq_platform_uninit(struct vchiq_drv_mgmt *mgmt) +{ + struct vchiq_arm_state *arm_state; + + kthread_stop(mgmt->state.sync_thread); + kthread_stop(mgmt->state.recycle_thread); + kthread_stop(mgmt->state.slot_handler_thread); + + arm_state = vchiq_platform_get_arm_state(&mgmt->state); + if (!IS_ERR_OR_NULL(arm_state->ka_thread)) + kthread_stop(arm_state->ka_thread); +} + void vchiq_dump_platform_state(struct seq_file *f) { seq_puts(f, " Platform: 2835 (VC master)\n"); @@ -1396,6 +1410,7 @@ static int vchiq_probe(struct platform_device *pdev) ret = vchiq_register_chrdev(&pdev->dev); if (ret) { dev_err(&pdev->dev, "arm: Failed to initialize vchiq cdev\n"); + vchiq_platform_uninit(mgmt); return ret; } @@ -1410,20 +1425,12 @@ static int vchiq_probe(struct platform_device *pdev) static void vchiq_remove(struct platform_device *pdev) { struct vchiq_drv_mgmt *mgmt = dev_get_drvdata(&pdev->dev); - struct vchiq_arm_state *arm_state; vchiq_device_unregister(bcm2835_audio); vchiq_device_unregister(bcm2835_camera); vchiq_debugfs_deinit(); vchiq_deregister_chrdev(); - - kthread_stop(mgmt->state.sync_thread); - kthread_stop(mgmt->state.recycle_thread); - kthread_stop(mgmt->state.slot_handler_thread); - - arm_state = vchiq_platform_get_arm_state(&mgmt->state); - if (!IS_ERR_OR_NULL(arm_state->ka_thread)) - kthread_stop(arm_state->ka_thread); + vchiq_platform_uninit(mgmt); } static struct platform_driver vchiq_driver = { From patchwork Sun Mar 9 12:50:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 14008403 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 D7035C28B2F for ; Sun, 9 Mar 2025 12:53:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=IMW8k1nI/dgdeyw/NhQxjX7qpdqP40lF9jKMaJt7+LQ=; b=Z9fy6oxnx6xbQ4jwLL6Zxe+9iL 2PT3QYDnsORLUQdZJnluKLK3RxWqLzzgkyZauf8+3TP8BgFSHXGdwaRH0Y5E8v42Lgk1xzKYpCkRW oBrzL013XGhbAFsoLoHEmOJjflBTmD0Mg45gjmvT/UKldMpR5mzK89c6w1iHvTJyxyr6/B2E71aWI w8Di9HCnmcIyu/TSIZI/rBfiBMVSK6z+vNtMSiDQTsd8rDk/IrHQaNnj0EaYFKlxyB2aAjfNuNVhI bHMCeRuM4ulj7ED14LMfGs1pASIuxEqgztS6L7pEl37Zs1jSQ1c+GqBqp4XSai4p8MO5tzdhXbmq7 MlDPF7wA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trGA5-00000000Wxz-0f9G; Sun, 09 Mar 2025 12:53:45 +0000 Received: from mout.gmx.net ([212.227.15.19]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trG6q-00000000Wgp-2stb for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 12:50:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1741524621; x=1742129421; i=wahrenst@gmx.net; bh=IMW8k1nI/dgdeyw/NhQxjX7qpdqP40lF9jKMaJt7+LQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=e+2Rs/vs826tmnRSYrKLREDD0tzr6jmZn6C/Tl5vmJ5hS6VDIfG6qo0loofWFhfu kYnqgWp5WSArpyOBCzWaw6HPTgdv5FXVhCETeY1aO6rMSYnPXYEEyXaoxLdEOw05S xYGRKSlzYRh/TIPc1J8NhFaGGTFWW1LHQCY69whNxGzN8hgL2Xo3GbYvsgr3dH7Xq efYw4LDLCMHv7DRt6UXW6JYQdAsa/m/92Uaron0w6sCIRI7r1N5qWuS7DdtB/ew60 X7c7De174IvT6H6PYW58+SIGvANfieLCOd5UAnf7wT1agf1DN61o72mPVqLZt531K lnzowSawyZsUcIvJUA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from stefanw-SCHENKER ([37.4.251.153]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M3DJv-1tnfjk1M33-006KOF; Sun, 09 Mar 2025 13:50:21 +0100 From: Stefan Wahren To: Florian Fainelli , Greg Kroah-Hartman Cc: Umang Jain , Ojaswin Mujoo , Laurent Pinchart , Kieran Bingham , Dan Carpenter , linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, kernel-list@raspberrypi.com, linux-staging@lists.linux.dev, Stefan Wahren Subject: [PATCH 4/5] staging: vchiq_arm: Create keep-alive thread during probe Date: Sun, 9 Mar 2025 13:50:13 +0100 Message-Id: <20250309125014.37166-5-wahrenst@gmx.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309125014.37166-1-wahrenst@gmx.net> References: <20250309125014.37166-1-wahrenst@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:HDJIk4tIYimiHZF2NbRm3BtZemIDLp0JOg4FIVzSC6KtMikw2vO 0TP7V3zvpHqzTgADwMeKP3UOL5EScw71WbOQC414qhyaRRmwBjd8HUFJ16FaCOOlGf3Nx2l 1+1sdgH5J34onXnDDo4vaZb8Vq+4a1VXl5pLtD7wQ/hfvwf1J07eGThvNgLNrN/EQI64tZL p0ebEoop8muR6dZgCYHlw== UI-OutboundReport: notjunk:1;M01:P0:w1NyaykYv84=;FgHtxjabk8vWDmPUJrKgoUclf79 HKvO8paN/ErWQyyWsPQf237qn+MXko9sPUqN0Jk92ZHLLhHbwggKwDMi65TJjSCbIo5GutbSH grhwqAdILYWLdbuKZxaXcdJsb3xSddHzejR9gl4Ql6L4RCffWiYcYs3XMs+Fe1V9zaR3aEsg7 +YHoxEA1ivSU9eeca5h2VCizRT8NhhGbjwmVpww59cTR14hryT1gmbURpIatWCOpaS7aDvXZG mNhKl6aIlXkhfVKCJRuxByk39UAUlq+914oK41V/tezjvFLfLVizaZynTlVXIqxrK9AKnQ80m AqVjO0m1FPrlDXqVhsNUJje2NS3cxwJlG/+25anRLOjMOh0XVRc1DSXROrmT7X2tnsjN8QkR6 Lmvd66msgP7B72pfwK/3j5p/dSm+g1IT/qraU5eWKonBgLUX/Qm2HNrlpJbGBHfrwmB4BH3xt lhE34c/uzmIDGkN9ec+8PJCh5WHAaBKB4VwF8iZu+vx64cBjR2TfKvZkMZfEHvcgfM7x6dIbI jL/4s7bbjidIOyiYdnLt5MoAG22LF5JGKEnXsF7DAH7RK81redQsytIfMa/ilkuua7u44G7PT sHmqinfbmiRq8B2on1XRoe+gXXcAv0+IfecvbVW10w+SKLVfBDOTeXgbrc5YOOTJrNGX4lzx5 jnN8j3cxEKO3bWvgVt26dFTl8bqkbanlxMZnD7RYZSsclM9WOPEXDe0dHwvlqa/ybIKVEF6PE D4WSb/3XcCVrfcuWuFyKjNVEEsWC8mdLtlJjXO02Rl1ukQ8Jxv4ncJ+P8FLx+YcmPNCQpKkvR bJtiSzyopD8dbk2ADh2HfRyTfSdH8cSdzqoV6wYQKOMD4qPV8YWXcu/G7fG0+5Ya2KB9Nh+72 FdDKoLgXsFqznz6LVipoW23ipHKBRAgqX1qmKxxwkL7+yiU1FpcuLNz67Bc+okP3MDrujqiyE pPp8vF7Q+6iR4DV0RgNwZbv1++VPCeAWOjzBHv76ZNyJNuRqpMFY6+RvxbFZFpxSKkounpCH1 ivO6/GWX5r1UtopyKk0u3VMf7kCFm55u40WlXJN1YHfGiSK08JuSW0HpQtr9bLgcJPuL7UyD1 1O3HURrf9Ig3alfbH9p80mPWhsfNJXo6gQmJ9IxBpWFlFUft0OSNBkLvkOm6t0K5l2I8Jflg1 nSgy70NWJhiL5J2peq4GFcO2uBE53xOkzqem/ui8AGTSB+//Y75IXyR7VVoc/7Rwmq3R2AFhv 2cVnGr3sgB8B7MBFmBkVW16rFUcDBv4xMXTODESxTe1EMo1mGcBN/s5lb7jLR5TqbwgoLi3T1 iYnY6bZCMMI6udnqhpr4SRCRJLUjpeFrv+/dnDDeKKHtaOwM21R6eHes8F2qZUYGn0U2OWHi+ or0/84wUZKfzTcMtGzLem0yc+R+d2dYmK9B90XLzG3OjvFxHfXYNKID59T X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_055025_024395_0EE00153 X-CRM114-Status: GOOD ( 11.95 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Creating the keep-alive thread in vchiq_platform_init_state have the following advantages: - abort driver probe if kthread_create fails (more consistent behavior) - make resource release process easier Since vchiq_keepalive_thread_func is defined below vchiq_platform_init_state, the latter must be moved. Signed-off-by: Stefan Wahren --- .../interface/vchiq_arm/vchiq_arm.c | 69 +++++++++---------- 1 file changed, 34 insertions(+), 35 deletions(-) -- 2.34.1 diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index 0c7ea2d0ee85..64f9536f1232 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -280,29 +280,6 @@ static int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state return 0; } -int -vchiq_platform_init_state(struct vchiq_state *state) -{ - struct vchiq_arm_state *platform_state; - - platform_state = devm_kzalloc(state->dev, sizeof(*platform_state), GFP_KERNEL); - if (!platform_state) - return -ENOMEM; - - rwlock_init(&platform_state->susp_res_lock); - - init_completion(&platform_state->ka_evt); - atomic_set(&platform_state->ka_use_count, 0); - atomic_set(&platform_state->ka_use_ack_count, 0); - atomic_set(&platform_state->ka_release_count, 0); - - platform_state->state = state; - - state->platform_state = (struct opaque_platform_state *)platform_state; - - return 0; -} - static struct vchiq_arm_state *vchiq_platform_get_arm_state(struct vchiq_state *state) { return (struct vchiq_arm_state *)state->platform_state; @@ -1011,6 +988,39 @@ vchiq_keepalive_thread_func(void *v) return 0; } +int +vchiq_platform_init_state(struct vchiq_state *state) +{ + struct vchiq_arm_state *platform_state; + char threadname[16]; + + platform_state = devm_kzalloc(state->dev, sizeof(*platform_state), GFP_KERNEL); + if (!platform_state) + return -ENOMEM; + + snprintf(threadname, sizeof(threadname), "vchiq-keep/%d", + state->id); + platform_state->ka_thread = kthread_create(&vchiq_keepalive_thread_func, + (void *)state, threadname); + if (IS_ERR(platform_state->ka_thread)) { + dev_err(state->dev, "couldn't create thread %s\n", threadname); + return PTR_ERR(platform_state->ka_thread); + } + + rwlock_init(&platform_state->susp_res_lock); + + init_completion(&platform_state->ka_evt); + atomic_set(&platform_state->ka_use_count, 0); + atomic_set(&platform_state->ka_use_ack_count, 0); + atomic_set(&platform_state->ka_release_count, 0); + + platform_state->state = state; + + state->platform_state = (struct opaque_platform_state *)platform_state; + + return 0; +} + int vchiq_use_internal(struct vchiq_state *state, struct vchiq_service *service, enum USE_TYPE_E use_type) @@ -1331,7 +1341,6 @@ void vchiq_platform_conn_state_changed(struct vchiq_state *state, enum vchiq_connstate newstate) { struct vchiq_arm_state *arm_state = vchiq_platform_get_arm_state(state); - char threadname[16]; dev_dbg(state->dev, "suspend: %d: %s->%s\n", state->id, get_conn_state_name(oldstate), get_conn_state_name(newstate)); @@ -1346,17 +1355,7 @@ void vchiq_platform_conn_state_changed(struct vchiq_state *state, arm_state->first_connect = 1; write_unlock_bh(&arm_state->susp_res_lock); - snprintf(threadname, sizeof(threadname), "vchiq-keep/%d", - state->id); - arm_state->ka_thread = kthread_create(&vchiq_keepalive_thread_func, - (void *)state, - threadname); - if (IS_ERR(arm_state->ka_thread)) { - dev_err(state->dev, "suspend: Couldn't create thread %s\n", - threadname); - } else { - wake_up_process(arm_state->ka_thread); - } + wake_up_process(arm_state->ka_thread); } static const struct of_device_id vchiq_of_match[] = { From patchwork Sun Mar 9 12:50:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 14008407 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 D597FC28B25 for ; Sun, 9 Mar 2025 13:00:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=WvaaM+FLfRS5VdXZOdeYPQhThs+XUaNWcJ7xxiUyZ/I=; b=axSb9RKfqRWHJLfD27gLr2NY5i vYYAXxDFr37cwCb05CKHXAYhUymKrAtx1BSEYFD7j2GyZffzRY4xNQi5OhzP2Y6HjnDQro99XqKaF b5g0P/MW4M7ROB12Lct1pOiMwJC4v570mGYHu3H6DzyI6HsLB50sX21hY0YAD3HXXuu3ju7X0LwDw +zCiAhIv/N3lke53m53Z87soXxEGr2TxnzRTosudR9V5HoFDQq8hyO5c/3IXcNf/Tw0lETe0HYZSA 1cQFTmMQlhspH8zsGMaaSbXlD3UmYS8LP/pQIg9hEpmDd2BWpHzitwQC8qsHZ9/n8EPY/CLRvuG61 FBg0gyjw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trGGT-00000000XMd-0ZKj; Sun, 09 Mar 2025 13:00:21 +0000 Received: from mout.gmx.net ([212.227.15.19]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trG6x-00000000Wj3-1Eqv for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 12:50:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1741524622; x=1742129422; i=wahrenst@gmx.net; bh=WvaaM+FLfRS5VdXZOdeYPQhThs+XUaNWcJ7xxiUyZ/I=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=ZGNdHz/AdHGyY/T6hT3mwiEI3F/x/JKITS7Fwun8wxisa+nbb46F7dXa54qyVqS9 2n131KuQXCEaomBcn1j2b5xQ54Ns8s6A1wvNnNfK9m5OG0jwdou9P/l4AUM1QM4Sl qo9fUCLgKaoQBkaQoSksEysfhoqK6TOc6kf9tHd/niBtyYDFtl2SIjSxbujer/VGO +Pfz0jHR8nbKh3Caf3hf70t5ptpWPHIvIk4L4CYD8IyviKODDLozS/9aAg4nQsFm9 1HejfJ7iL9eZXzJDDLKNMcYZeBm4FnSNEiTjlWaeNlbT5QYaO/Vic+C7yqW7YxWWs /FA2GodNj6Yh/2+40A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from stefanw-SCHENKER ([37.4.251.153]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M9Wys-1tuZUv3Lee-003sTW; Sun, 09 Mar 2025 13:50:21 +0100 From: Stefan Wahren To: Florian Fainelli , Greg Kroah-Hartman Cc: Umang Jain , Ojaswin Mujoo , Laurent Pinchart , Kieran Bingham , Dan Carpenter , linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, kernel-list@raspberrypi.com, linux-staging@lists.linux.dev, Stefan Wahren Subject: [PATCH 5/5] staging: vchiq_arm: Improve initial VCHIQ connect Date: Sun, 9 Mar 2025 13:50:14 +0100 Message-Id: <20250309125014.37166-6-wahrenst@gmx.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309125014.37166-1-wahrenst@gmx.net> References: <20250309125014.37166-1-wahrenst@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:FgPEJhdrmJRi1lxTwbDo6Nx83ecah4hheEEdvqCuiVj1Iv8qP3o zsNShoAbsn8tKrgggRNb//GVkxulhUdPibR3mAG7u8J+oHtengY24aUebJq69xP81DGxByn sydioE/U+XFKSSyfUu0tlNaFkqCuzEQki7TB543iI9z5RFghEcPazWQvLKFxZB43jtzhBIx a1lTT4XLbbmsjap2SD9EQ== UI-OutboundReport: notjunk:1;M01:P0:WdGkj7iZjhE=;3ow2XZSaaC3rj/W0dHKeCFfqb8s OzQoi1XS0hWvL/BoqfB1EKzRsOdB397NcCsFdxPgsaC0SUhDlQnNGzPXhf6sIj4ssfeW/i8u2 VrHYFo2X2zuJwpsmU4d1/BN9yBCW2RQB5eIRn8SWmhmeBo0yiT6sU5mNt6M4WjSZ8q1WQnzRK DlHw6uLkJ+gLPaqdgdt7UDLbZmKH/cZX7XYLojGZoC7jYAxCkAjDfrsIEN/wiHeWt9hraniGS CGBaRYheNYXUx4QOp28PDvDY2kmZCWhomVdGCdJySU9q7rGZF4MV+eTbJvEEig0EV3tp5vRjT TS1BEwmSmVfx3bs4euA0jNvgTt4av51OLnrpyuFzuhFEbbEn2IN33ELzvW9CRMcilnuHlWMBJ DZIqzg3SWwbxxyDDGVEvwsxFFD7EWd/XirywlMUYWInwzjsEYGF8viT4LoEDYCrDXjbESeZ3u MIFnAKgXJQrIUAfIiv4qXDwhCa6RoUMsbLqdFbolsDFX+AuqqimzfIa/Wc+6QAR5j82ue9NGa KDvq6YvsRbuyeanjmeua0lujLvEZK7Xv9QcoXGozfTDbvSZwcQ+pO49uP5IqFi7HTuZw/vMnD 097sWbWUHwWj2qcVxKoIM/6Dac0D9IxxmwQKxh9WyRsXgA5ALSVMJb9Xh0aN7x31HPVFvqfHv TIJ6lubE4/FIEI61cyTMRg7MCnGtPLkev3nqGz1V+W9hELhV+CHIcLW7zayOkljxugecckFjF 5AKoAu6pfnYz8tWfr9swL0RMyFj50OwXVZ9iribCdh5lFWpAK8DJjiLi7cGxshrADkQHiApZR nXb9uZMUzJG/Y3MHExPsSafXbVIMKJ7p1chsyEYSX4olJcFZuZRztKrlbZz5y+O0OJDQrrXlJ dGyKpneled7fj77R5OpR1B62Fpjl1Z1EdschWUnD89f3xdaEK3ltPQ7HuFleitspFcwMXutEn MEjQLHz+Av402b0fqSVkQYEenphvOeiLm6xC/SiABJ9UxfaMskHWvdINHD/tBGlofpxwjX1+2 JZslZ7VhFbi4TY/0YR29EfyUUFpjlVT3lz9jL/jOmnwbLUHFpuNgTzOYNmk9YVQN0NUpHHMr5 x5lYQHm9NGOpvWVrr7vBmyDBQS+OhwkYYCvoo7wWSqv9InrSXC/+mbRS4015wT2kKuzPJjdHF CquV4H+VRd5mDaizC1FV5OavEU3/7Rt9xllXXdynmoGyMDYgBJt9M1tAjWM04I+fy+SELN+uG 1jircSoRpA5v5TzcpzfDiEyReM8hod6nMQab+sJBa7A4ePHJeXWxblovrQNTXbcoses1s5IkY 1lP2yhQEPIUy8uUHfXowk6fZ2t2jDW5zs5ZzqT1pCi+cxSxKbMWJbQaQY0hUxAIsEKw+WQXt+ XcuUdnJ34yBtW/TlrvB2y6oK/LG2EpziBnUBZWFS2E8DIdRCl/k+rUuERp X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_055031_646536_CD9B2F8A X-CRM114-Status: GOOD ( 12.80 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The code to start the keep-alive thread on initial VCHIQ connect within vchiq_platform_conn_state_changed is unnecessary complex. Move the keep-alive thread wake-up into a separate function and call it during VCHIQ connect. Signed-off-by: Stefan Wahren --- .../interface/vchiq_arm/vchiq_arm.c | 28 +++++-------------- .../interface/vchiq_arm/vchiq_core.c | 1 + .../interface/vchiq_arm/vchiq_core.h | 2 ++ 3 files changed, 10 insertions(+), 21 deletions(-) -- 2.34.1 diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index 64f9536f1232..be0c2bf9561a 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -97,13 +97,6 @@ struct vchiq_arm_state { * tracked separately with the state. */ int peer_use_count; - - /* - * Flag to indicate that the first vchiq connect has made it through. - * This means that both sides should be fully ready, and we should - * be able to suspend after this point. - */ - int first_connect; }; static int @@ -1336,26 +1329,19 @@ vchiq_check_service(struct vchiq_service *service) return ret; } +void vchiq_platform_connected(struct vchiq_state *state) +{ + struct vchiq_arm_state *arm_state = vchiq_platform_get_arm_state(state); + + wake_up_process(arm_state->ka_thread); +} + void vchiq_platform_conn_state_changed(struct vchiq_state *state, enum vchiq_connstate oldstate, enum vchiq_connstate newstate) { - struct vchiq_arm_state *arm_state = vchiq_platform_get_arm_state(state); - dev_dbg(state->dev, "suspend: %d: %s->%s\n", state->id, get_conn_state_name(oldstate), get_conn_state_name(newstate)); - if (state->conn_state != VCHIQ_CONNSTATE_CONNECTED) - return; - - write_lock_bh(&arm_state->susp_res_lock); - if (arm_state->first_connect) { - write_unlock_bh(&arm_state->susp_res_lock); - return; - } - - arm_state->first_connect = 1; - write_unlock_bh(&arm_state->susp_res_lock); - wake_up_process(arm_state->ka_thread); } static const struct of_device_id vchiq_of_match[] = { diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c index 8d5795db4f39..5e38609aad06 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c @@ -3343,6 +3343,7 @@ vchiq_connect_internal(struct vchiq_state *state, struct vchiq_instance *instanc return -EAGAIN; vchiq_set_conn_state(state, VCHIQ_CONNSTATE_CONNECTED); + vchiq_platform_connected(state); complete(&state->connect); } diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h index 9b4e766990a4..3b5c0618e567 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h @@ -575,6 +575,8 @@ int vchiq_send_remote_use(struct vchiq_state *state); int vchiq_send_remote_use_active(struct vchiq_state *state); +void vchiq_platform_connected(struct vchiq_state *state); + void vchiq_platform_conn_state_changed(struct vchiq_state *state, enum vchiq_connstate oldstate, enum vchiq_connstate newstate);