* [PATCH 0/3] soc: avoid module usage in non-modular code
@ 2016-11-13 19:02 Paul Gortmaker
2016-11-13 19:03 ` [PATCH 3/3] soc: fsl: make guts driver explicitly non-modular Paul Gortmaker
0 siblings, 1 reply; 3+ messages in thread
From: Paul Gortmaker @ 2016-11-13 19:02 UTC (permalink / raw)
To: linux-kernel
Cc: Paul Gortmaker, Alexandre Courbot, Arnd Bergmann, Maxime Ripard,
Scott Wood, Stephen Warren, Thierry Reding, Ulf Hansson,
Yangbo Lu, linux-arm-kernel, linuxppc-dev, linux-tegra
This series of commits is a part of a larger project to ensure
people don't reference modular support functions in non-modular
code. Overall there was roughly 5k lines of dead code in the
kernel due to this. So far we've fixed several areas, like tty,
x86, net, gpio ... and we continue to work on other areas.
There are several reasons to not use module support for code that
can never be built as a module, but the big ones are:
(1) it is easy to accidentally code up 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.
Two of the changes are essentially source only -- the resuting module
will be binary equivalent. Only the FSL driver has unused code in
addition to the use of modular macros that get converted.
Note the FSL SOC driver just appeared in linux-next and so this series
won't apply on Linus' master branch. These commits were applied to
linux-next and build tested there.
Paul.
---
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Scott Wood <oss@buserror.net>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Yangbo Lu <yangbo.lu@nxp.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-tegra@vger.kernel.org
Paul Gortmaker (3):
soc: sunxi: make sunxi_sram explicitly non-modular
soc: tegra: make fuse-tegra explicitly non-modular
soc: fsl: make guts driver explicitly non-modular
drivers/soc/fsl/guts.c | 17 ++---------------
drivers/soc/sunxi/sunxi_sram.c | 9 ++-------
drivers/soc/tegra/fuse/fuse-tegra.c | 4 ++--
3 files changed, 6 insertions(+), 24 deletions(-)
--
2.10.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 3/3] soc: fsl: make guts driver explicitly non-modular
2016-11-13 19:02 [PATCH 0/3] soc: avoid module usage in non-modular code Paul Gortmaker
@ 2016-11-13 19:03 ` Paul Gortmaker
2016-11-15 5:10 ` Scott Wood
0 siblings, 1 reply; 3+ messages in thread
From: Paul Gortmaker @ 2016-11-13 19:03 UTC (permalink / raw)
To: linux-kernel
Cc: Paul Gortmaker, Scott Wood, Yangbo Lu, Arnd Bergmann, Ulf Hansson,
linuxppc-dev, linux-arm-kernel
The Kconfig currently controlling compilation of this code is:
drivers/soc/fsl/Kconfig:config FSL_GUTS
drivers/soc/fsl/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.
We explicitly disallow a driver unbind, since that doesn't have a
sensible use case anyway, and it allows us to drop the ".remove"
code for non-modular drivers.
Since the code was already not using module_init, the init ordering
remains unchanged with this commit.
Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
Cc: Scott Wood <oss@buserror.net>
Cc: Yangbo Lu <yangbo.lu@nxp.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
drivers/soc/fsl/guts.c | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c
index 0ac88263c2d7..b4d2fd9263b2 100644
--- a/drivers/soc/fsl/guts.c
+++ b/drivers/soc/fsl/guts.c
@@ -11,7 +11,7 @@
#include <linux/io.h>
#include <linux/slab.h>
-#include <linux/module.h>
+#include <linux/init.h>
#include <linux/of_fdt.h>
#include <linux/sys_soc.h>
#include <linux/of_address.h>
@@ -180,12 +180,6 @@ static int fsl_guts_probe(struct platform_device *pdev)
return 0;
}
-static int fsl_guts_remove(struct platform_device *dev)
-{
- soc_device_unregister(soc_dev);
- return 0;
-}
-
/*
* Table for matching compatible strings, for device tree
* guts node, for Freescale QorIQ SOCs.
@@ -212,15 +206,14 @@ static const struct of_device_id fsl_guts_of_match[] = {
{ .compatible = "fsl,ls2080a-dcfg", },
{}
};
-MODULE_DEVICE_TABLE(of, fsl_guts_of_match);
static struct platform_driver fsl_guts_driver = {
.driver = {
.name = "fsl-guts",
+ .suppress_bind_attrs = true,
.of_match_table = fsl_guts_of_match,
},
.probe = fsl_guts_probe,
- .remove = fsl_guts_remove,
};
static int __init fsl_guts_init(void)
@@ -228,9 +221,3 @@ static int __init fsl_guts_init(void)
return platform_driver_register(&fsl_guts_driver);
}
core_initcall(fsl_guts_init);
-
-static void __exit fsl_guts_exit(void)
-{
- platform_driver_unregister(&fsl_guts_driver);
-}
-module_exit(fsl_guts_exit);
--
2.10.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 3/3] soc: fsl: make guts driver explicitly non-modular
2016-11-13 19:03 ` [PATCH 3/3] soc: fsl: make guts driver explicitly non-modular Paul Gortmaker
@ 2016-11-15 5:10 ` Scott Wood
0 siblings, 0 replies; 3+ messages in thread
From: Scott Wood @ 2016-11-15 5:10 UTC (permalink / raw)
To: Paul Gortmaker, linux-kernel
Cc: Yangbo Lu, Arnd Bergmann, Ulf Hansson, linuxppc-dev,
linux-arm-kernel
On Sun, 2016-11-13 at 14:03 -0500, Paul Gortmaker wrote:
> The Kconfig currently controlling compilation of this code is:
>
> drivers/soc/fsl/Kconfig:config FSL_GUTS
> drivers/soc/fsl/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.
>
> We explicitly disallow a driver unbind, since that doesn't have a
> sensible use case anyway, and it allows us to drop the ".remove"
> code for non-modular drivers.
>
> Since the code was already not using module_init, the init ordering
> remains unchanged with this commit.
>
> Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
>
> Cc: Scott Wood <oss@buserror.net>
> Cc: Yangbo Lu <yangbo.lu@nxp.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Cc: linuxppc-dev@lists.ozlabs.org
> Cc: linux-arm-kernel@lists.infradead.org
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Acked-by: Scott Wood <oss@buserror.net>
-Scott
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-11-15 5:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-13 19:02 [PATCH 0/3] soc: avoid module usage in non-modular code Paul Gortmaker
2016-11-13 19:03 ` [PATCH 3/3] soc: fsl: make guts driver explicitly non-modular Paul Gortmaker
2016-11-15 5:10 ` Scott Wood
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).