* [PATCH 00/10] clk: fix/remove module usage in non-modular code
@ 2016-07-04 21:12 Paul Gortmaker
2016-07-04 21:12 ` [PATCH 01/10] clk: meson8b: make it explicitly non-modular Paul Gortmaker
2016-07-04 21:12 ` [PATCH 02/10] clk: meson: make gxbb " Paul Gortmaker
0 siblings, 2 replies; 5+ messages in thread
From: Paul Gortmaker @ 2016-07-04 21:12 UTC (permalink / raw)
To: linus-amlogic
This series covers the audit of non-modular module code use in the
drivers/clk/ directory.
Quasi generic boiler plate description follows; included for folks who
haven't yet seen what we are aiming to achieve with this operation.
We are trying to not use module support for code that can never be built
as a module because:
(1) it is easy to accidentally write unused module_exit and remove code
(2) it can be misleading when reading the source, thinking it can be
modular when the Makefile and/or Kconfig prohibit it
(3) it requires the include of the module.h header file which in turn
includes nearly everything else, thus adding to CPP overhead.
(4) it gets copied/replicated into other code and spreads like weeds.
With respect to #1 in this instance, we see for these 10 commits:
15 files changed, 37 insertions(+), 227 deletions(-)
...which is a respectable (IMHO) net amount of removal of unused code.
Changes seen here cover the following categories:
-just replacement of modular macros with their non-modular
equivalents that CPP would have inserted anyway, such as:
module_init --> device_initcall
module_platform_driver --> builtin_platform_driver
-the removal of including module.h ; replaced with init.h
as required based on whether the file used it.
-the removal of any/all unused/orphaned __exit functions that
would never be called.
-the removal of instances of MODULE_DEVICE_TABLE and MODULE_ALIAS
that become no-ops in the non-modular case.
-the removal of any ".remove" functions that were hooked into
the driver struct. This ".remove" function would of
course not be called from the __exit function since that was
never run. However in theory, someone could have triggered it
via sysfs unbind, even though there isn't a sensible use case
for doing so. So to cover that possibility, we've also disabled
sysfs unbind in the driver.
-the removal of MODULE_DESCRIIPTION/AUTHOR/LICENSE tags that are
also no-ops for non-modular ; we ensure the information in those
tags is present in the top of file comments in each case.
There are no initcall level changes here; everything stays at the level
of initcall it was previously - either by not using modular versions to
begin with, or by using the builtin level equivalents.
As usual, we can consider making some of these tristate if an author
has strong feelings about extending support into the modular realm,
but I won't be able to run-time test any of that.
I batched the sunxi changes together since they had similar author
and maintainer fields and it helps avoid polluting history with too
many mundane commits, but I can split that up if so desired.
Build testing done on linux-next on arm/arm64 and x86/x86_64.
Paul.
---
Cc: Aleksandr Frid <afrid@nvidia.com>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Boris BREZILLON <boris.brezillon@free-electrons.com>
Cc: Carlo Caione <carlo@caione.org>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: "Emilio L?pez" <emilio@elopez.com.ar>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: Kukjin Kim <kgene@kernel.org>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Neil Armstrong <narmstrong@baylibre.com>
Cc: Padmavathi Venna <padma.v@samsung.com>
Cc: Paul Walmsley <pwalmsley@nvidia.com>
Cc: Peter De Schrijver <pdeschrijver@nvidia.com>
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Cc: Prashant Gaikwad <pgaikwad@nvidia.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Tero Kristo <t-kristo@ti.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: linux-amlogic at lists.infradead.org
Cc: linux-clk at vger.kernel.org
Cc: linux-omap at vger.kernel.org
Cc: linux-samsung-soc at vger.kernel.org
Cc: linux-tegra at vger.kernel.org
Paul Gortmaker (10):
clk: meson8b: make it explicitly non-modular
clk: meson: make gxbb explicitly non-modular
clk: mvebu: make cp110-system-controller explicitly non-modular
clk: mvebu: make ap806-system-controller explicitly non-modular
clk: oxnas: make it explicitly non-modular
clk: samsung make clk-exynos-audss explicitly non-modular
clk: samsung: make clk-s5pv210-audss explicitly non-modular
clk: sunxi: make clk-* explicitly non-modular
clk: tegra: make clk-tegra124-dfll-fcpu explicitly non-modular
clk: ti: make clk-dra7-atl explicitly non-modular
drivers/clk/clk-oxnas.c | 15 +++----------
drivers/clk/meson/gxbb.c | 18 ++++-----------
drivers/clk/meson/meson8b-clkc.c | 19 ++++------------
drivers/clk/mvebu/ap806-system-controller.c | 23 +++----------------
drivers/clk/mvebu/cp110-system-controller.c | 34 +++--------------------------
drivers/clk/samsung/clk-exynos-audss.c | 13 +----------
drivers/clk/samsung/clk-s5pv210-audss.c | 29 ++----------------------
drivers/clk/sunxi/clk-factors.c | 1 -
drivers/clk/sunxi/clk-sun6i-apb0-gates.c | 9 ++------
drivers/clk/sunxi/clk-sun6i-apb0.c | 9 ++------
drivers/clk/sunxi/clk-sun6i-ar100.c | 21 +++---------------
drivers/clk/sunxi/clk-sun8i-apb0.c | 9 ++------
drivers/clk/sunxi/clk-sun9i-mmc.c | 28 +++---------------------
drivers/clk/tegra/clk-tegra124-dfll-fcpu.c | 16 ++------------
drivers/clk/ti/clk-dra7-atl.c | 20 +++--------------
15 files changed, 37 insertions(+), 227 deletions(-)
--
2.8.4
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 01/10] clk: meson8b: make it explicitly non-modular
2016-07-04 21:12 [PATCH 00/10] clk: fix/remove module usage in non-modular code Paul Gortmaker
@ 2016-07-04 21:12 ` Paul Gortmaker
2016-07-06 22:21 ` Michael Turquette
2016-07-04 21:12 ` [PATCH 02/10] clk: meson: make gxbb " Paul Gortmaker
1 sibling, 1 reply; 5+ messages in thread
From: Paul Gortmaker @ 2016-07-04 21:12 UTC (permalink / raw)
To: linus-amlogic
The Kconfig currently controlling compilation of this code is:
drivers/clk/meson/Kconfig:config COMMON_CLK_MESON8B
drivers/clk/meson/Kconfig: bool
...meaning that it currently is not being built as a module by anyone.
However a recent commit added a bunch of modular boilerplate to this
driver.
Lets remove the modular code that is essentially orphaned, so that
when reading the driver there is no doubt it is builtin-only.
Since module_init translates to device_initcall in the non-modular
case, the init ordering remains unchanged with this commit.
Also note that MODULE DEVICE_TABLE/ALIAS are no-op when non-modular.
We also delete the MODULE_LICENSE tag etc. since all that information
was (or is now) contained at the top of the file in the comments.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Carlo Caione <carlo@caione.org>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: linux-clk at vger.kernel.org
Cc: linux-amlogic at lists.infradead.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
drivers/clk/meson/meson8b-clkc.c | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
diff --git a/drivers/clk/meson/meson8b-clkc.c b/drivers/clk/meson/meson8b-clkc.c
index b1902e91213d..4c9413cdf373 100644
--- a/drivers/clk/meson/meson8b-clkc.c
+++ b/drivers/clk/meson/meson8b-clkc.c
@@ -1,4 +1,6 @@
/*
+ * AmLogic S805 / Meson8b Clock Controller Driver
+ *
* Copyright (c) 2015 Endless Mobile, Inc.
* Author: Carlo Caione <carlo@endlessm.com>
*
@@ -23,7 +25,7 @@
#include <linux/of_address.h>
#include <dt-bindings/clock/meson8b-clkc.h>
#include <linux/platform_device.h>
-#include <linux/module.h>
+#include <linux/init.h>
#include "clkc.h"
@@ -429,7 +431,6 @@ static const struct of_device_id meson8b_clkc_match_table[] = {
{ .compatible = "amlogic,meson8b-clkc" },
{ }
};
-MODULE_DEVICE_TABLE(of, meson8b_match_table);
static struct platform_driver meson8b_driver = {
.probe = meson8b_clkc_probe,
@@ -443,16 +444,4 @@ static int __init meson8b_clkc_init(void)
{
return platform_driver_register(&meson8b_driver);
}
-module_init(meson8b_clkc_init);
-
-static void __exit meson8b_clkc_exit(void)
-{
- platform_driver_unregister(&meson8b_driver);
-}
-module_exit(meson8b_clkc_exit);
-
-MODULE_DESCRIPTION("AmLogic S805 / Meson8b Clock Controller Driver");
-MODULE_LICENSE("GPL v2");
-MODULE_ALIAS("platform:meson8b-clkc");
-MODULE_AUTHOR("Michael Turquette <mturquette@baylibre.com>");
-MODULE_AUTHOR("Carlo Caione <carlo@endlessm.com>");
+device_initcall(meson8b_clkc_init);
--
2.8.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 01/10] clk: meson8b: make it explicitly non-modular
2016-07-04 21:12 ` [PATCH 01/10] clk: meson8b: make it explicitly non-modular Paul Gortmaker
@ 2016-07-06 22:21 ` Michael Turquette
0 siblings, 0 replies; 5+ messages in thread
From: Michael Turquette @ 2016-07-06 22:21 UTC (permalink / raw)
To: linus-amlogic
Quoting Paul Gortmaker (2016-07-04 14:12:11)
> The Kconfig currently controlling compilation of this code is:
>
> drivers/clk/meson/Kconfig:config COMMON_CLK_MESON8B
> drivers/clk/meson/Kconfig: bool
>
> ...meaning that it currently is not being built as a module by anyone.
> However a recent commit added a bunch of modular boilerplate to this
> driver.
>
> Lets remove the modular code that is essentially orphaned, so that
> when reading the driver there is no doubt it is builtin-only.
>
> Since module_init translates to device_initcall in the non-modular
> case, the init ordering remains unchanged with this commit.
>
> Also note that MODULE DEVICE_TABLE/ALIAS are no-op when non-modular.
>
> We also delete the MODULE_LICENSE tag etc. since all that information
> was (or is now) contained at the top of the file in the comments.
>
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Carlo Caione <carlo@caione.org>
> Cc: Kevin Hilman <khilman@baylibre.com>
> Cc: linux-clk at vger.kernel.org
> Cc: linux-amlogic at lists.infradead.org
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Applied.
Regards,
Mike
> ---
> drivers/clk/meson/meson8b-clkc.c | 19 ++++---------------
> 1 file changed, 4 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/clk/meson/meson8b-clkc.c b/drivers/clk/meson/meson8b-clkc.c
> index b1902e91213d..4c9413cdf373 100644
> --- a/drivers/clk/meson/meson8b-clkc.c
> +++ b/drivers/clk/meson/meson8b-clkc.c
> @@ -1,4 +1,6 @@
> /*
> + * AmLogic S805 / Meson8b Clock Controller Driver
> + *
> * Copyright (c) 2015 Endless Mobile, Inc.
> * Author: Carlo Caione <carlo@endlessm.com>
> *
> @@ -23,7 +25,7 @@
> #include <linux/of_address.h>
> #include <dt-bindings/clock/meson8b-clkc.h>
> #include <linux/platform_device.h>
> -#include <linux/module.h>
> +#include <linux/init.h>
>
> #include "clkc.h"
>
> @@ -429,7 +431,6 @@ static const struct of_device_id meson8b_clkc_match_table[] = {
> { .compatible = "amlogic,meson8b-clkc" },
> { }
> };
> -MODULE_DEVICE_TABLE(of, meson8b_match_table);
>
> static struct platform_driver meson8b_driver = {
> .probe = meson8b_clkc_probe,
> @@ -443,16 +444,4 @@ static int __init meson8b_clkc_init(void)
> {
> return platform_driver_register(&meson8b_driver);
> }
> -module_init(meson8b_clkc_init);
> -
> -static void __exit meson8b_clkc_exit(void)
> -{
> - platform_driver_unregister(&meson8b_driver);
> -}
> -module_exit(meson8b_clkc_exit);
> -
> -MODULE_DESCRIPTION("AmLogic S805 / Meson8b Clock Controller Driver");
> -MODULE_LICENSE("GPL v2");
> -MODULE_ALIAS("platform:meson8b-clkc");
> -MODULE_AUTHOR("Michael Turquette <mturquette@baylibre.com>");
> -MODULE_AUTHOR("Carlo Caione <carlo@endlessm.com>");
> +device_initcall(meson8b_clkc_init);
> --
> 2.8.4
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 02/10] clk: meson: make gxbb explicitly non-modular
2016-07-04 21:12 [PATCH 00/10] clk: fix/remove module usage in non-modular code Paul Gortmaker
2016-07-04 21:12 ` [PATCH 01/10] clk: meson8b: make it explicitly non-modular Paul Gortmaker
@ 2016-07-04 21:12 ` Paul Gortmaker
2016-07-06 22:21 ` Michael Turquette
1 sibling, 1 reply; 5+ messages in thread
From: Paul Gortmaker @ 2016-07-04 21:12 UTC (permalink / raw)
To: linus-amlogic
The Kconfig currently controlling compilation of this code is:
drivers/clk/meson/Kconfig:config COMMON_CLK_GXBB
drivers/clk/meson/Kconfig: bool
...meaning that it currently is not being built as a module by anyone.
Lets remove the modular code that is essentially orphaned, so that
when reading the driver there is no doubt it is builtin-only.
Since module_init translates to device_initcall in the non-modular
case, the init ordering remains unchanged with this commit.
Also note that MODULE_DEVICE_TABLE and ALIAS are no-op for non-modules.
We also delete the MODULE_LICENSE tag etc. since all that information
was (or is now) contained at the top of the file in the comments.
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Carlo Caione <carlo@caione.org>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: linux-clk at vger.kernel.org
Cc: linux-amlogic at lists.infradead.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
drivers/clk/meson/gxbb.c | 18 ++++--------------
1 file changed, 4 insertions(+), 14 deletions(-)
diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
index 007b7157cf4b..a4c6684b3019 100644
--- a/drivers/clk/meson/gxbb.c
+++ b/drivers/clk/meson/gxbb.c
@@ -1,4 +1,6 @@
/*
+ * AmLogic S905 / GXBB Clock Controller Driver
+ *
* Copyright (c) 2016 AmLogic, Inc.
* Michael Turquette <mturquette@baylibre.com>
*
@@ -19,7 +21,7 @@
#include <linux/clk-provider.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
-#include <linux/module.h>
+#include <linux/init.h>
#include "clkc.h"
#include "gxbb.h"
@@ -926,7 +928,6 @@ static const struct of_device_id gxbb_clkc_match_table[] = {
{ .compatible = "amlogic,gxbb-clkc" },
{ }
};
-MODULE_DEVICE_TABLE(of, gxbb_match_table);
static struct platform_driver gxbb_driver = {
.probe = gxbb_clkc_probe,
@@ -940,15 +941,4 @@ static int __init gxbb_clkc_init(void)
{
return platform_driver_register(&gxbb_driver);
}
-module_init(gxbb_clkc_init);
-
-static void __exit gxbb_clkc_exit(void)
-{
- platform_driver_unregister(&gxbb_driver);
-}
-module_exit(gxbb_clkc_exit);
-
-MODULE_DESCRIPTION("AmLogic S905 / GXBB Clock Controller Driver");
-MODULE_LICENSE("GPL v2");
-MODULE_ALIAS("platform:gxbb-clkc");
-MODULE_AUTHOR("Michael Turquette <mturquette@baylibre.com>");
+device_initcall(gxbb_clkc_init);
--
2.8.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 02/10] clk: meson: make gxbb explicitly non-modular
2016-07-04 21:12 ` [PATCH 02/10] clk: meson: make gxbb " Paul Gortmaker
@ 2016-07-06 22:21 ` Michael Turquette
0 siblings, 0 replies; 5+ messages in thread
From: Michael Turquette @ 2016-07-06 22:21 UTC (permalink / raw)
To: linus-amlogic
Quoting Paul Gortmaker (2016-07-04 14:12:12)
> The Kconfig currently controlling compilation of this code is:
>
> drivers/clk/meson/Kconfig:config COMMON_CLK_GXBB
> drivers/clk/meson/Kconfig: bool
>
> ...meaning that it currently is not being built as a module by anyone.
>
> Lets remove the modular code that is essentially orphaned, so that
> when reading the driver there is no doubt it is builtin-only.
>
> Since module_init translates to device_initcall in the non-modular
> case, the init ordering remains unchanged with this commit.
>
> Also note that MODULE_DEVICE_TABLE and ALIAS are no-op for non-modules.
>
> We also delete the MODULE_LICENSE tag etc. since all that information
> was (or is now) contained at the top of the file in the comments.
>
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Carlo Caione <carlo@caione.org>
> Cc: Kevin Hilman <khilman@baylibre.com>
> Cc: linux-clk at vger.kernel.org
> Cc: linux-amlogic at lists.infradead.org
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Applied.
Regards,
Mike
> ---
> drivers/clk/meson/gxbb.c | 18 ++++--------------
> 1 file changed, 4 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
> index 007b7157cf4b..a4c6684b3019 100644
> --- a/drivers/clk/meson/gxbb.c
> +++ b/drivers/clk/meson/gxbb.c
> @@ -1,4 +1,6 @@
> /*
> + * AmLogic S905 / GXBB Clock Controller Driver
> + *
> * Copyright (c) 2016 AmLogic, Inc.
> * Michael Turquette <mturquette@baylibre.com>
> *
> @@ -19,7 +21,7 @@
> #include <linux/clk-provider.h>
> #include <linux/of_address.h>
> #include <linux/platform_device.h>
> -#include <linux/module.h>
> +#include <linux/init.h>
>
> #include "clkc.h"
> #include "gxbb.h"
> @@ -926,7 +928,6 @@ static const struct of_device_id gxbb_clkc_match_table[] = {
> { .compatible = "amlogic,gxbb-clkc" },
> { }
> };
> -MODULE_DEVICE_TABLE(of, gxbb_match_table);
>
> static struct platform_driver gxbb_driver = {
> .probe = gxbb_clkc_probe,
> @@ -940,15 +941,4 @@ static int __init gxbb_clkc_init(void)
> {
> return platform_driver_register(&gxbb_driver);
> }
> -module_init(gxbb_clkc_init);
> -
> -static void __exit gxbb_clkc_exit(void)
> -{
> - platform_driver_unregister(&gxbb_driver);
> -}
> -module_exit(gxbb_clkc_exit);
> -
> -MODULE_DESCRIPTION("AmLogic S905 / GXBB Clock Controller Driver");
> -MODULE_LICENSE("GPL v2");
> -MODULE_ALIAS("platform:gxbb-clkc");
> -MODULE_AUTHOR("Michael Turquette <mturquette@baylibre.com>");
> +device_initcall(gxbb_clkc_init);
> --
> 2.8.4
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-07-06 22:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-04 21:12 [PATCH 00/10] clk: fix/remove module usage in non-modular code Paul Gortmaker
2016-07-04 21:12 ` [PATCH 01/10] clk: meson8b: make it explicitly non-modular Paul Gortmaker
2016-07-06 22:21 ` Michael Turquette
2016-07-04 21:12 ` [PATCH 02/10] clk: meson: make gxbb " Paul Gortmaker
2016-07-06 22:21 ` Michael Turquette
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).