linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] drivers/dma: drop modular code from non modular drivers
@ 2015-12-09 23:21 Paul Gortmaker
  2015-12-09 23:22 ` [PATCH 4/6] drivers/dma: make pxa_dma.c explicitly non-modular Paul Gortmaker
  2015-12-09 23:29 ` [PATCH 0/6] drivers/dma: drop modular code from non modular drivers Arnd Bergmann
  0 siblings, 2 replies; 6+ messages in thread
From: Paul Gortmaker @ 2015-12-09 23:21 UTC (permalink / raw)
  To: linux-arm-kernel

This series of commits is a slice of a larger project to ensure
people don't have dead code for module removal in non-modular
drivers.  Overall there is roughly 5k lines of dead code in the
kernel due to this.

There is a quasi-separate theme, in that some of the drivers were
allowing an unbind implicitly since it is enabled by default.  But
for core DMA infrastructure drivers, this doesn't seem useful -- so
we also disable that here which allows us to delete any ".remove"
functions from the drivers that would otherwise be called during the
(impossible to trigger) module removal.

Since ARM covers these files the best of all architectures, each
file was build tested for allmodconfig on ARM, which at the same
time confirms that the files are not built with "CC [M]" -- hence
genuinely non-modular.

My testing and the larger patch series in general has been done
against the latest linux-next tree.

Paul.
---

Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Daniel Mack <daniel@zonque.org>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
Cc: Laxman Dewangan <ldewangan@nvidia.com>
Cc: Robert Jarzmik <robert.jarzmik@free.fr>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Vinod Koul <vinod.koul@intel.com>
Cc: dmaengine at vger.kernel.org
Cc: linux-arm-kernel at lists.infradead.org
Cc: linux-tegra at vger.kernel.org


Paul Gortmaker (6):
  drivers/dma: make edma.c explicitly non-modular
  drivers/dma: make mmp_pdma.c explicitly non-modular
  drivers/dma: make mmp_tdma.c explicitly non-modular
  drivers/dma: make pxa_dma.c explicitly non-modular
  drivers/dma: make sh/shdma-*.c explicitly non-modular
  drivers/dma: make tegra20-apb-dma.c explicitly non-modular

 drivers/dma/edma.c            | 37 ++++++-------------------------------
 drivers/dma/mmp_pdma.c        | 21 ++++-----------------
 drivers/dma/mmp_tdma.c        | 22 +++-------------------
 drivers/dma/pxa_dma.c         | 38 +++-----------------------------------
 drivers/dma/sh/shdma-base.c   | 14 ++------------
 drivers/dma/sh/shdma-of.c     | 11 +++--------
 drivers/dma/tegra20-apb-dma.c | 35 ++++-------------------------------
 7 files changed, 25 insertions(+), 153 deletions(-)

-- 
2.6.1


Paul Gortmaker (6):
  drivers/dma: make edma.c explicitly non-modular
  drivers/dma: make mmp_pdma.c explicitly non-modular
  drivers/dma: make mmp_tdma.c explicitly non-modular
  drivers/dma: make pxa_dma.c explicitly non-modular
  drivers/dma: make sh/shdma-*.c explicitly non-modular
  drivers/dma: make tegra20-apb-dma.c explicitly non-modular

 drivers/dma/edma.c            | 37 ++++++-------------------------------
 drivers/dma/mmp_pdma.c        | 21 ++++-----------------
 drivers/dma/mmp_tdma.c        | 22 +++-------------------
 drivers/dma/pxa_dma.c         | 38 +++-----------------------------------
 drivers/dma/sh/shdma-base.c   | 14 ++------------
 drivers/dma/sh/shdma-of.c     | 11 +++--------
 drivers/dma/tegra20-apb-dma.c | 35 ++++-------------------------------
 7 files changed, 25 insertions(+), 153 deletions(-)

-- 
2.6.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 4/6] drivers/dma: make pxa_dma.c explicitly non-modular
  2015-12-09 23:21 [PATCH 0/6] drivers/dma: drop modular code from non modular drivers Paul Gortmaker
@ 2015-12-09 23:22 ` Paul Gortmaker
  2015-12-09 23:29 ` [PATCH 0/6] drivers/dma: drop modular code from non modular drivers Arnd Bergmann
  1 sibling, 0 replies; 6+ messages in thread
From: Paul Gortmaker @ 2015-12-09 23:22 UTC (permalink / raw)
  To: linux-arm-kernel

The Kconfig currently controlling compilation of this code is:

drivers/dma/Kconfig:config PXA_DMA
drivers/dma/Kconfig:    bool "PXA DMA support"

...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 module_platform_driver() uses the same init level priority as
builtin_platform_driver() the init ordering remains unchanged with
this commit.

Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

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: Daniel Mack <daniel@zonque.org>
Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
Cc: Robert Jarzmik <robert.jarzmik@free.fr>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Vinod Koul <vinod.koul@intel.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: dmaengine at vger.kernel.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
 drivers/dma/pxa_dma.c | 38 +++-----------------------------------
 1 file changed, 3 insertions(+), 35 deletions(-)

diff --git a/drivers/dma/pxa_dma.c b/drivers/dma/pxa_dma.c
index f2a0310ae771..5d6ab9ff2222 100644
--- a/drivers/dma/pxa_dma.c
+++ b/drivers/dma/pxa_dma.c
@@ -1,4 +1,5 @@
 /*
+ * Marvell PXA Peripheral DMA Driver
  * Copyright 2015 Robert Jarzmik <robert.jarzmik@free.fr>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -7,7 +8,6 @@
  */
 
 #include <linux/err.h>
-#include <linux/module.h>
 #include <linux/init.h>
 #include <linux/types.h>
 #include <linux/interrupt.h>
@@ -400,13 +400,8 @@ err_root:
 	pr_err("pxad: debugfs is not available\n");
 }
 
-static void pxad_cleanup_debugfs(struct pxad_device *pdev)
-{
-	debugfs_remove_recursive(pdev->dbgfs_root);
-}
 #else
 static inline void pxad_init_debugfs(struct pxad_device *pdev) {}
-static inline void pxad_cleanup_debugfs(struct pxad_device *pdev) {}
 #endif
 
 /*
@@ -1246,27 +1241,6 @@ static enum dma_status pxad_tx_status(struct dma_chan *dchan,
 	return ret;
 }
 
-static void pxad_free_channels(struct dma_device *dmadev)
-{
-	struct pxad_chan *c, *cn;
-
-	list_for_each_entry_safe(c, cn, &dmadev->channels,
-				 vc.chan.device_node) {
-		list_del(&c->vc.chan.device_node);
-		tasklet_kill(&c->vc.task);
-	}
-}
-
-static int pxad_remove(struct platform_device *op)
-{
-	struct pxad_device *pdev = platform_get_drvdata(op);
-
-	pxad_cleanup_debugfs(pdev);
-	pxad_free_channels(&pdev->slave);
-	dma_async_device_unregister(&pdev->slave);
-	return 0;
-}
-
 static int pxad_init_phys(struct platform_device *op,
 			  struct pxad_device *pdev,
 			  unsigned int nb_phy_chans)
@@ -1315,7 +1289,6 @@ static const struct of_device_id const pxad_dt_ids[] = {
 	{ .compatible = "marvell,pdma-1.0", },
 	{}
 };
-MODULE_DEVICE_TABLE(of, pxad_dt_ids);
 
 static struct dma_chan *pxad_dma_xlate(struct of_phandle_args *dma_spec,
 					   struct of_dma *ofdma)
@@ -1448,12 +1421,13 @@ static const struct platform_device_id pxad_id_table[] = {
 static struct platform_driver pxad_driver = {
 	.driver		= {
 		.name	= "pxa-dma",
+		.suppress_bind_attrs = true,
 		.of_match_table = pxad_dt_ids,
 	},
 	.id_table	= pxad_id_table,
 	.probe		= pxad_probe,
-	.remove		= pxad_remove,
 };
+builtin_platform_driver(pxad_driver);
 
 bool pxad_filter_fn(struct dma_chan *chan, void *param)
 {
@@ -1478,9 +1452,3 @@ int pxad_toggle_reserved_channel(int legacy_channel)
 	return 0;
 }
 EXPORT_SYMBOL_GPL(pxad_toggle_reserved_channel);
-
-module_platform_driver(pxad_driver);
-
-MODULE_DESCRIPTION("Marvell PXA Peripheral DMA Driver");
-MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
-MODULE_LICENSE("GPL v2");
-- 
2.6.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 0/6] drivers/dma: drop modular code from non modular drivers
  2015-12-09 23:21 [PATCH 0/6] drivers/dma: drop modular code from non modular drivers Paul Gortmaker
  2015-12-09 23:22 ` [PATCH 4/6] drivers/dma: make pxa_dma.c explicitly non-modular Paul Gortmaker
@ 2015-12-09 23:29 ` Arnd Bergmann
  2015-12-10  0:17   ` Paul Gortmaker
  1 sibling, 1 reply; 6+ messages in thread
From: Arnd Bergmann @ 2015-12-09 23:29 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday 09 December 2015 18:21:56 Paul Gortmaker wrote:
> This series of commits is a slice of a larger project to ensure
> people don't have dead code for module removal in non-modular
> drivers.  Overall there is roughly 5k lines of dead code in the
> kernel due to this.
> 
> There is a quasi-separate theme, in that some of the drivers were
> allowing an unbind implicitly since it is enabled by default.  But
> for core DMA infrastructure drivers, this doesn't seem useful -- so
> we also disable that here which allows us to delete any ".remove"
> functions from the drivers that would otherwise be called during the
> (impossible to trigger) module removal.
> 
> Since ARM covers these files the best of all architectures, each
> file was build tested for allmodconfig on ARM, which at the same
> time confirms that the files are not built with "CC [M]" -- hence
> genuinely non-modular.
> 
> My testing and the larger patch series in general has been done
> against the latest linux-next tree.
> 
> 

We are in the process of changing the DMA drivers to a new way of
passing the "filter" function around. We can soon build them
all as loadable modules again.

	Arnd

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 0/6] drivers/dma: drop modular code from non modular drivers
  2015-12-09 23:29 ` [PATCH 0/6] drivers/dma: drop modular code from non modular drivers Arnd Bergmann
@ 2015-12-10  0:17   ` Paul Gortmaker
  2015-12-10  3:12     ` Vinod Koul
  2015-12-10  9:01     ` Arnd Bergmann
  0 siblings, 2 replies; 6+ messages in thread
From: Paul Gortmaker @ 2015-12-10  0:17 UTC (permalink / raw)
  To: linux-arm-kernel

[Re: [PATCH 0/6] drivers/dma: drop modular code from non modular drivers] On 10/12/2015 (Thu 00:29) Arnd Bergmann wrote:

> On Wednesday 09 December 2015 18:21:56 Paul Gortmaker wrote:
> > This series of commits is a slice of a larger project to ensure
> > people don't have dead code for module removal in non-modular
> > drivers.  Overall there is roughly 5k lines of dead code in the
> > kernel due to this.
> > 
> > There is a quasi-separate theme, in that some of the drivers were
> > allowing an unbind implicitly since it is enabled by default.  But
> > for core DMA infrastructure drivers, this doesn't seem useful -- so
> > we also disable that here which allows us to delete any ".remove"
> > functions from the drivers that would otherwise be called during the
> > (impossible to trigger) module removal.
> > 
> > Since ARM covers these files the best of all architectures, each
> > file was build tested for allmodconfig on ARM, which at the same
> > time confirms that the files are not built with "CC [M]" -- hence
> > genuinely non-modular.
> > 
> > My testing and the larger patch series in general has been done
> > against the latest linux-next tree.
> > 
> > 
> 
> We are in the process of changing the DMA drivers to a new way of
> passing the "filter" function around. We can soon build them
> all as loadable modules again.

Hi Arnd,

Thanks for the feedback -- just to clarify, you are suggesting I hold
on the series until I see what emerges in the next merge window?

Paul.
--

> 
> 	Arnd

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 0/6] drivers/dma: drop modular code from non modular drivers
  2015-12-10  0:17   ` Paul Gortmaker
@ 2015-12-10  3:12     ` Vinod Koul
  2015-12-10  9:01     ` Arnd Bergmann
  1 sibling, 0 replies; 6+ messages in thread
From: Vinod Koul @ 2015-12-10  3:12 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Dec 09, 2015 at 07:17:42PM -0500, Paul Gortmaker wrote:
> [Re: [PATCH 0/6] drivers/dma: drop modular code from non modular drivers] On 10/12/2015 (Thu 00:29) Arnd Bergmann wrote:
> 
> > On Wednesday 09 December 2015 18:21:56 Paul Gortmaker wrote:
> > > This series of commits is a slice of a larger project to ensure
> > > people don't have dead code for module removal in non-modular
> > > drivers.  Overall there is roughly 5k lines of dead code in the
> > > kernel due to this.
> > > 
> > > There is a quasi-separate theme, in that some of the drivers were
> > > allowing an unbind implicitly since it is enabled by default.  But
> > > for core DMA infrastructure drivers, this doesn't seem useful -- so
> > > we also disable that here which allows us to delete any ".remove"
> > > functions from the drivers that would otherwise be called during the
> > > (impossible to trigger) module removal.
> > > 
> > > Since ARM covers these files the best of all architectures, each
> > > file was build tested for allmodconfig on ARM, which at the same
> > > time confirms that the files are not built with "CC [M]" -- hence
> > > genuinely non-modular.
> > > 
> > > My testing and the larger patch series in general has been done
> > > against the latest linux-next tree.
> > > 
> > > 
> > 
> > We are in the process of changing the DMA drivers to a new way of
> > passing the "filter" function around. We can soon build them
> > all as loadable modules again.
> 
> Hi Arnd,
> 
> Thanks for the feedback -- just to clarify, you are suggesting I hold
> on the series until I see what emerges in the next merge window?

Yes, with this we should be able to have loadable modules for *most* so we
may not require this

Thanks
-- 
~Vinod

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 0/6] drivers/dma: drop modular code from non modular drivers
  2015-12-10  0:17   ` Paul Gortmaker
  2015-12-10  3:12     ` Vinod Koul
@ 2015-12-10  9:01     ` Arnd Bergmann
  1 sibling, 0 replies; 6+ messages in thread
From: Arnd Bergmann @ 2015-12-10  9:01 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday 09 December 2015 19:17:42 Paul Gortmaker wrote:
> [Re: [PATCH 0/6] drivers/dma: drop modular code from non modular drivers] On 10/12/2015 (Thu 00:29) Arnd Bergmann wrote:
> 
> > On Wednesday 09 December 2015 18:21:56 Paul Gortmaker wrote:
> > > This series of commits is a slice of a larger project to ensure
> > > people don't have dead code for module removal in non-modular
> > > drivers.  Overall there is roughly 5k lines of dead code in the
> > > kernel due to this.
> > > 
> > > There is a quasi-separate theme, in that some of the drivers were
> > > allowing an unbind implicitly since it is enabled by default.  But
> > > for core DMA infrastructure drivers, this doesn't seem useful -- so
> > > we also disable that here which allows us to delete any ".remove"
> > > functions from the drivers that would otherwise be called during the
> > > (impossible to trigger) module removal.
> > > 
> > > Since ARM covers these files the best of all architectures, each
> > > file was build tested for allmodconfig on ARM, which at the same
> > > time confirms that the files are not built with "CC [M]" -- hence
> > > genuinely non-modular.
> > > 
> > > My testing and the larger patch series in general has been done
> > > against the latest linux-next tree.
> > > 
> > > 
> > 
> > We are in the process of changing the DMA drivers to a new way of
> > passing the "filter" function around. We can soon build them
> > all as loadable modules again.
> 
> Hi Arnd,
> 
> Thanks for the feedback -- just to clarify, you are suggesting I hold
> on the series until I see what emerges in the next merge window?
> 
> 

It may take a few cycles, but I think we'll get there and should not
remove the unload logic from any of these drivers. When we're done,
there is no reason for a dmaengine driver to be built-in.

	Arnd

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-12-10  9:01 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-09 23:21 [PATCH 0/6] drivers/dma: drop modular code from non modular drivers Paul Gortmaker
2015-12-09 23:22 ` [PATCH 4/6] drivers/dma: make pxa_dma.c explicitly non-modular Paul Gortmaker
2015-12-09 23:29 ` [PATCH 0/6] drivers/dma: drop modular code from non modular drivers Arnd Bergmann
2015-12-10  0:17   ` Paul Gortmaker
2015-12-10  3:12     ` Vinod Koul
2015-12-10  9:01     ` Arnd Bergmann

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).