From patchwork Mon Nov 6 15:48:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 13447146 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 4CC06C4167B for ; Mon, 6 Nov 2023 15:49:17 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lLper5oV3Z+Ybyv0Sju3fZDZUKFilE2lesY0MdsZRIs=; b=ApwamWSyJ7+Q87 OwmG/BGPwIuHy80bnngMTxLxDWOIBgaQt9ilNoH+6/WGTheM1UqFxPpvTnIZ8nOy9c9UZbM5CtSDt FoXNtPCeJMG5OV6ABStfFJCmJCP9yucrvydNpmNN4sd539DC7gv5Hkgn9gUchNbMDTZJa+cOkQkuE 5lkvf/qxpoLhC7ho2X+QW4foxpIird/QvuWsOXCzj9tNbXbCP8noNGga9lJbyNNc8n3tLW/gCWXJR 6/YRdGRducdtawSlu1evlt9juV2vZ1IB4fcO8ef8yF2tZ2fcpzm+/GmQ+Ca6BepEFcQAS5J4l/whf 3jwOz+h3mPDQZqHvdOBA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r01qK-00H1fA-1Q; Mon, 06 Nov 2023 15:48:48 +0000 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r01qI-00H1eM-08 for linux-arm-kernel@lists.infradead.org; Mon, 06 Nov 2023 15:48:47 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r01qB-0007h8-T6; Mon, 06 Nov 2023 16:48:39 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r01qA-0074pL-KW; Mon, 06 Nov 2023 16:48:38 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1r01qA-00Dn7o-B9; Mon, 06 Nov 2023 16:48:38 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Wim Van Sebroeck , Guenter Roeck Subject: [PATCH 1/5] watchdog: at91sam9: Stop using module_platform_driver_probe() Date: Mon, 6 Nov 2023 16:48:09 +0100 Message-ID: <20231106154807.3866712-2-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.42.0.586.gbc5204569f7d.dirty In-Reply-To: <20231106154807.3866712-1-u.kleine-koenig@pengutronix.de> References: <20231106154807.3866712-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2464; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=6qCjLgRs8LjWcKpjoJFV/bKAmdWeXlVN/t58ixQNqro=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBlSQq50rUzra2wa9jK/Iw4QnaVb7bB8WtVPVrkR zuaSr0MmoWJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZUkKuQAKCRCPgPtYfRL+ TkkwB/97XYahEtj8N9mMvFKBMjHV5rsbBRZqUSuMy3WfbQOSeMx1TNnllYNNeb3BjY4titkJKRU u8MYE3UionZUlBkmJG/Fjushng/UmO3Vtc5S4NnO7bBbD2PoUkYEv2xUjQzgNTCCfjvz3mYPa+w DtHWzzltTvp+4WJJ0kfjV0z+MuFLuDKqWozOsOPa5xV4WCsS8UE45W97p5k/JoihULLerDvvveY Nh6sHCuZiALnu5nRB8YlplJqHfUjRSWLdUQDPyDeZRR2dPpDoohlIBdQ2PqQ48Tlsr1NBkA4U4I r6SCwD65Ky+fKj3th00+1nnFf2iox7ROf7+yq/CYVNOHeG0p X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231106_074846_096318_E9479453 X-CRM114-Status: GOOD ( 18.88 ) 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: , Cc: Alexandre Belloni , linux-watchdog@vger.kernel.org, linux-kbuild@vger.kernel.org, Claudiu Beznea , kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On today's platforms the benefit of platform_driver_probe() isn't that relevant any more. It allows to drop some code after booting (or module loading) for .probe() and discard the .remove() function completely if the driver is built-in. This typically saves a few 100k. The downside of platform_driver_probe() is that the driver cannot be bound and unbound at runtime which is ancient and also slightly complicates testing. There are also thoughts to deprecate platform_driver_probe() because it adds some complexity in the driver core for little gain. Also many drivers don't use it correctly. This driver for example misses to mark the driver struct with __refdata which is needed to suppress a (W=1) modpost warning: WARNING: modpost: drivers/watchdog/at91sam9_wdt: section mismatch in reference: at91wdt_driver+0x4 (section: .data) -> at91wdt_remove (section: .exit.text) Signed-off-by: Uwe Kleine-König Reviewed-by: Guenter Roeck Acked-by: Nicolas Ferre --- drivers/watchdog/at91sam9_wdt.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c index b111b28acb94..507adb12754d 100644 --- a/drivers/watchdog/at91sam9_wdt.c +++ b/drivers/watchdog/at91sam9_wdt.c @@ -324,7 +324,7 @@ static inline int of_at91wdt_init(struct device_node *np, struct at91wdt *wdt) } #endif -static int __init at91wdt_probe(struct platform_device *pdev) +static int at91wdt_probe(struct platform_device *pdev) { int err; struct at91wdt *wdt; @@ -372,7 +372,7 @@ static int __init at91wdt_probe(struct platform_device *pdev) return 0; } -static int __exit at91wdt_remove(struct platform_device *pdev) +static int at91wdt_remove(struct platform_device *pdev) { struct at91wdt *wdt = platform_get_drvdata(pdev); watchdog_unregister_device(&wdt->wdd); @@ -393,14 +393,14 @@ MODULE_DEVICE_TABLE(of, at91_wdt_dt_ids); #endif static struct platform_driver at91wdt_driver = { - .remove = __exit_p(at91wdt_remove), + .probe = at91wdt_probe, + .remove = at91wdt_remove, .driver = { .name = "at91_wdt", .of_match_table = of_match_ptr(at91_wdt_dt_ids), }, }; - -module_platform_driver_probe(at91wdt_driver, at91wdt_probe); +module_platform_driver(at91wdt_driver); MODULE_AUTHOR("Renaud CERRATO "); MODULE_DESCRIPTION("Watchdog driver for Atmel AT91SAM9x processors"); From patchwork Mon Nov 6 15:48:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 13447148 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 C6665C4167B for ; Mon, 6 Nov 2023 15:49:20 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=k3mue8TVKRb3se+T8ckFVGWk0m2KNu5/Z5p9Q4Ug3rw=; b=WEwFBesuA9MqP+ 4n2ZPE0Xqi5qHE/uqTC337avQqXSUfxp38ca+qnFS1wvRDjB21bztzInnlX0zZtNtsmkmDwE+FY2g ObPSCFFSsXYiaaq6Sq5tcoTOulE6cXK+z5NS+MICdXGY2tKQbULCNB5Elw51GFBFuE44nqxdbI8GZ 0ULKmusrgXJetva+WNYoW0fk/rUOMgPxRPYLftq/z8Ny3BWvng/pPQns3IIaKF+cfWQVHmq3nw46x yHqOEpK71+FLMf17CQmUdyHZU9ocDzK+hl0Bo9wZFyWRKWGhI6PJo1urjxyXzAzIG/4DoK3JVzn3u p89EM1IrnNGbeMqmRgvQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r01qN-00H1gE-0A; Mon, 06 Nov 2023 15:48:51 +0000 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r01qK-00H1f6-1R for linux-arm-kernel@lists.infradead.org; Mon, 06 Nov 2023 15:48:49 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r01qB-0007hA-T2; Mon, 06 Nov 2023 16:48:39 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r01qB-0074pR-26; Mon, 06 Nov 2023 16:48:39 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1r01qA-00Dn7w-P3; Mon, 06 Nov 2023 16:48:38 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Wim Van Sebroeck , Guenter Roeck Subject: [PATCH 3/5] watchdog: at91sam9_wdt: Convert to platform remove callback returning void Date: Mon, 6 Nov 2023 16:48:11 +0100 Message-ID: <20231106154807.3866712-4-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.42.0.586.gbc5204569f7d.dirty In-Reply-To: <20231106154807.3866712-1-u.kleine-koenig@pengutronix.de> References: <20231106154807.3866712-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1813; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=QjDXnUKdFeWY23VLKaqCEl5AisXjKrGyHZw5xvz6h9o=; b=owEBbQGS/pANAwAKAY+A+1h9Ev5OAcsmYgBlSQq7pnemtZheeM6ByBJ1m7V3ry4QBDuUwJnDr QOPcaJF8IaJATMEAAEKAB0WIQQ/gaxpOnoeWYmt/tOPgPtYfRL+TgUCZUkKuwAKCRCPgPtYfRL+ TrWyB/0Q1yuNiQLm+fZlEfnotb9tbJDJhs/BIacj47l3LTcKxkDkZ8TfzvVcgf4kkrn7MxFeRcj smURfjy6Tl1sCYyPiKD6sX78HvGZ87NWZrqpYWQn7BoHFOjqZsvqLzSOSVm1xCDk3ju/tuun7UW PzbVG96zq5d053jlWxgaFbG+zulsjS9vhwX773prbRsFWStis/997XZF80+ifCpmb6+bfPksUmz ozB3HPWN7folZU6mrs3mQOuCCoGPjsy6DhqCGIp2nKERdJJCEEmr1OfBaCwNM37caaZxuN+vf75 Hy03KaiVtU27zP1ohmd56+Z5coK//0SZnqOMhSNt6AldCnhb X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231106_074848_489453_25107347 X-CRM114-Status: GOOD ( 16.85 ) 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: , Cc: Alexandre Belloni , linux-watchdog@vger.kernel.org, Claudiu Beznea , kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The .remove() callback for a platform driver returns an int which makes many driver authors wrongly assume it's possible to do error handling by returning an error code. However the value returned is ignored (apart from emitting a warning) and this typically results in resource leaks. To improve here there is a quest to make the remove callback return void. In the first step of this quest all drivers are converted to .remove_new(), which already returns void. Eventually after all drivers are converted, .remove_new() will be renamed to .remove(). Trivially convert this driver from always returning zero in the remove callback to the void returning variant. Signed-off-by: Uwe Kleine-König Reviewed-by: Guenter Roeck Acked-by: Nicolas Ferre --- drivers/watchdog/at91sam9_wdt.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c index 507adb12754d..2c6474cb858b 100644 --- a/drivers/watchdog/at91sam9_wdt.c +++ b/drivers/watchdog/at91sam9_wdt.c @@ -372,15 +372,13 @@ static int at91wdt_probe(struct platform_device *pdev) return 0; } -static int at91wdt_remove(struct platform_device *pdev) +static void at91wdt_remove(struct platform_device *pdev) { struct at91wdt *wdt = platform_get_drvdata(pdev); watchdog_unregister_device(&wdt->wdd); pr_warn("I quit now, hardware will probably reboot!\n"); del_timer(&wdt->timer); - - return 0; } #if defined(CONFIG_OF) @@ -394,7 +392,7 @@ MODULE_DEVICE_TABLE(of, at91_wdt_dt_ids); static struct platform_driver at91wdt_driver = { .probe = at91wdt_probe, - .remove = at91wdt_remove, + .remove_new = at91wdt_remove, .driver = { .name = "at91_wdt", .of_match_table = of_match_ptr(at91_wdt_dt_ids),