Re: [PATCH] drivers/hwtracing: make coresight-* explicitly non-modular

From: Mathieu Poirier
Date: Mon Feb 15 2016 - 20:26:07 EST


On 14 February 2016 at 10:19, Paul Gortmaker
<paul.gortmaker@xxxxxxxxxxxxx> wrote:
> None of the Kconfig currently controlling compilation of any of
> the files here are tristate, meaning that none of it currently
> is being built as a module by anyone.
>
> We need not be concerned about .remove functions and blocking the
> unbind sysfs operations, since that was already done in a recent
> commit.
>
> Lets remove any remaining modular references, so that when reading the
> drivers there is no doubt they are builtin-only.
>
> All drivers get mostly the same changes, so they are handled in batch.
> Changes are (1) convert to builtin_amba_driver, (2) delete module.h
> include where unused, and (3) relocate the description into the
> comments so we don't need MODULE_DESCRIPTION and associated tags.
>
> The etm3x and etm4x use module_param_named, and have been adjusted
> to just include moduleparam.h for that purpose.
>
> In commit f309d4443130bf814e991f836e919dca22df37ae ("platform_device:
> better support builtin boilerplate avoidance") we introduced the
> builtin_driver macro.
>
> Here we use that support and extend it to amba driver registration,
> so where a driver is clearly non-modular and builtin-only, we can
> update with the simple mapping of
>
> module_amba_driver(...) ---> builtin_amba_driver(...)
>
> Since module_amba_driver() uses the same init level priority as
> builtin_amba_driver() the init ordering remains unchanged with
> this commit.
>
> Cc: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx>
> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> Signed-off-by: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx>
> ---
>
> [This is what I sent back in October[1], but with the .remove and
> .suppress bits stripped out, since that is now in Mathieu's queue.
> And to make this a standalone commit that Mathieu can also add to
> his queue, I've squished the amba/bus.h change[2] into this change.]
>
> [1] http://www.spinics.net/lists/kernel/msg2096702.html
> [2] http://lkml.iu.edu/hypermail/linux/kernel/1510.1/02464.html
>
> drivers/hwtracing/coresight/coresight-etb10.c | 9 +++------
> drivers/hwtracing/coresight/coresight-etm3x.c | 14 ++++++++------
> drivers/hwtracing/coresight/coresight-etm4x.c | 4 +---
> drivers/hwtracing/coresight/coresight-funnel.c | 9 +++------
> drivers/hwtracing/coresight/coresight-replicator-qcom.c | 4 +---
> drivers/hwtracing/coresight/coresight-replicator.c | 7 ++-----
> drivers/hwtracing/coresight/coresight-tmc.c | 9 +++------
> drivers/hwtracing/coresight/coresight-tpiu.c | 9 +++------
> drivers/hwtracing/coresight/coresight.c | 3 ---
> drivers/hwtracing/coresight/of_coresight.c | 1 -
> include/linux/amba/bus.h | 9 +++++++++
> 11 files changed, 33 insertions(+), 45 deletions(-)
>
> diff --git a/drivers/hwtracing/coresight/coresight-etb10.c b/drivers/hwtracing/coresight/coresight-etb10.c
> index 92969dae739d..21f6afd24a66 100644
> --- a/drivers/hwtracing/coresight/coresight-etb10.c
> +++ b/drivers/hwtracing/coresight/coresight-etb10.c
> @@ -1,5 +1,7 @@
> /* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
> *
> + * Description: CoreSight Embedded Trace Buffer driver
> + *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License version 2 and
> * only version 2 as published by the Free Software Foundation.
> @@ -11,7 +13,6 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> #include <linux/init.h>
> #include <linux/types.h>
> #include <linux/device.h>
> @@ -534,8 +535,4 @@ static struct amba_driver etb_driver = {
> .probe = etb_probe,
> .id_table = etb_ids,
> };
> -
> -module_amba_driver(etb_driver);
> -
> -MODULE_LICENSE("GPL v2");
> -MODULE_DESCRIPTION("CoreSight Embedded Trace Buffer driver");
> +builtin_amba_driver(etb_driver);
> diff --git a/drivers/hwtracing/coresight/coresight-etm3x.c b/drivers/hwtracing/coresight/coresight-etm3x.c
> index aae80e14508d..8750b432ad36 100644
> --- a/drivers/hwtracing/coresight/coresight-etm3x.c
> +++ b/drivers/hwtracing/coresight/coresight-etm3x.c
> @@ -1,5 +1,7 @@
> /* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
> *
> + * Description: CoreSight Program Flow Trace driver
> + *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License version 2 and
> * only version 2 as published by the Free Software Foundation.
> @@ -11,7 +13,7 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> +#include <linux/moduleparam.h>
> #include <linux/init.h>
> #include <linux/types.h>
> #include <linux/device.h>
> @@ -35,6 +37,10 @@
>
> #include "coresight-etm.h"
>
> +/*
> + * not really modular but using module_param is the easiest way to
> + * remain consistent with existing use cases for now.
> + */
> static int boot_enable;
> module_param_named(boot_enable, boot_enable, int, S_IRUGO);
>
> @@ -1950,8 +1956,4 @@ static struct amba_driver etm_driver = {
> .probe = etm_probe,
> .id_table = etm_ids,
> };
> -
> -module_amba_driver(etm_driver);
> -
> -MODULE_LICENSE("GPL v2");
> -MODULE_DESCRIPTION("CoreSight Program Flow Trace driver");
> +builtin_amba_driver(etm_driver);
> diff --git a/drivers/hwtracing/coresight/coresight-etm4x.c b/drivers/hwtracing/coresight/coresight-etm4x.c
> index d6a92c6d3a66..040327ac6e1f 100644
> --- a/drivers/hwtracing/coresight/coresight-etm4x.c
> +++ b/drivers/hwtracing/coresight/coresight-etm4x.c
> @@ -15,7 +15,6 @@
> #include <linux/init.h>
> #include <linux/types.h>
> #include <linux/device.h>
> -#include <linux/module.h>
> #include <linux/io.h>
> #include <linux/err.h>
> #include <linux/fs.h>
> @@ -2714,5 +2713,4 @@ static struct amba_driver etm4x_driver = {
> .probe = etm4_probe,
> .id_table = etm4_ids,
> };
> -
> -module_amba_driver(etm4x_driver);
> +builtin_amba_driver(etm4x_driver);
> diff --git a/drivers/hwtracing/coresight/coresight-funnel.c b/drivers/hwtracing/coresight/coresight-funnel.c
> index 25e8ea140a09..2c1850c8dbe7 100644
> --- a/drivers/hwtracing/coresight/coresight-funnel.c
> +++ b/drivers/hwtracing/coresight/coresight-funnel.c
> @@ -1,5 +1,7 @@
> /* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
> *
> + * Description: CoreSight Funnel driver
> + *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License version 2 and
> * only version 2 as published by the Free Software Foundation.
> @@ -11,7 +13,6 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> #include <linux/init.h>
> #include <linux/types.h>
> #include <linux/device.h>
> @@ -270,8 +271,4 @@ static struct amba_driver funnel_driver = {
> .probe = funnel_probe,
> .id_table = funnel_ids,
> };
> -
> -module_amba_driver(funnel_driver);
> -
> -MODULE_LICENSE("GPL v2");
> -MODULE_DESCRIPTION("CoreSight Funnel driver");
> +builtin_amba_driver(funnel_driver);
> diff --git a/drivers/hwtracing/coresight/coresight-replicator-qcom.c b/drivers/hwtracing/coresight/coresight-replicator-qcom.c
> index 444815179460..6344dcf19639 100644
> --- a/drivers/hwtracing/coresight/coresight-replicator-qcom.c
> +++ b/drivers/hwtracing/coresight/coresight-replicator-qcom.c
> @@ -15,7 +15,6 @@
> #include <linux/clk.h>
> #include <linux/coresight.h>
> #include <linux/device.h>
> -#include <linux/module.h>
> #include <linux/err.h>
> #include <linux/init.h>
> #include <linux/io.h>
> @@ -202,5 +201,4 @@ static struct amba_driver replicator_driver = {
> .probe = replicator_probe,
> .id_table = replicator_ids,
> };
> -
> -module_amba_driver(replicator_driver);
> +builtin_amba_driver(replicator_driver);
> diff --git a/drivers/hwtracing/coresight/coresight-replicator.c b/drivers/hwtracing/coresight/coresight-replicator.c
> index b77d700a3f0e..d31da8004d2e 100644
> --- a/drivers/hwtracing/coresight/coresight-replicator.c
> +++ b/drivers/hwtracing/coresight/coresight-replicator.c
> @@ -1,5 +1,7 @@
> /* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
> *
> + * Description: CoreSight Replicator driver
> + *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License version 2 and
> * only version 2 as published by the Free Software Foundation.
> @@ -11,7 +13,6 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> #include <linux/device.h>
> #include <linux/platform_device.h>
> #include <linux/io.h>
> @@ -168,8 +169,4 @@ static struct platform_driver replicator_driver = {
> .suppress_bind_attrs = true,
> },
> };
> -
> builtin_platform_driver(replicator_driver);
> -
> -MODULE_LICENSE("GPL v2");
> -MODULE_DESCRIPTION("CoreSight Replicator driver");
> diff --git a/drivers/hwtracing/coresight/coresight-tmc.c b/drivers/hwtracing/coresight/coresight-tmc.c
> index c4fa70ed14ce..021cbb5d9eb3 100644
> --- a/drivers/hwtracing/coresight/coresight-tmc.c
> +++ b/drivers/hwtracing/coresight/coresight-tmc.c
> @@ -1,5 +1,7 @@
> /* Copyright (c) 2012, The Linux Foundation. All rights reserved.
> *
> + * Description: CoreSight Trace Memory Controller driver
> + *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License version 2 and
> * only version 2 as published by the Free Software Foundation.
> @@ -11,7 +13,6 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> #include <linux/init.h>
> #include <linux/types.h>
> #include <linux/device.h>
> @@ -787,8 +788,4 @@ static struct amba_driver tmc_driver = {
> .probe = tmc_probe,
> .id_table = tmc_ids,
> };
> -
> -module_amba_driver(tmc_driver);
> -
> -MODULE_LICENSE("GPL v2");
> -MODULE_DESCRIPTION("CoreSight Trace Memory Controller driver");
> +builtin_amba_driver(tmc_driver);
> diff --git a/drivers/hwtracing/coresight/coresight-tpiu.c b/drivers/hwtracing/coresight/coresight-tpiu.c
> index ca50e73d9df7..e24bfb04f168 100644
> --- a/drivers/hwtracing/coresight/coresight-tpiu.c
> +++ b/drivers/hwtracing/coresight/coresight-tpiu.c
> @@ -1,5 +1,7 @@
> /* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
> *
> + * Description: CoreSight Trace Port Interface Unit driver
> + *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License version 2 and
> * only version 2 as published by the Free Software Foundation.
> @@ -11,7 +13,6 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> #include <linux/init.h>
> #include <linux/device.h>
> #include <linux/io.h>
> @@ -220,8 +221,4 @@ static struct amba_driver tpiu_driver = {
> .probe = tpiu_probe,
> .id_table = tpiu_ids,
> };
> -
> -module_amba_driver(tpiu_driver);
> -
> -MODULE_LICENSE("GPL v2");
> -MODULE_DESCRIPTION("CoreSight Trace Port Interface Unit driver");
> +builtin_amba_driver(tpiu_driver);
> diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c
> index 7e6e9ff27dd1..4b33f1938a58 100644
> --- a/drivers/hwtracing/coresight/coresight.c
> +++ b/drivers/hwtracing/coresight/coresight.c
> @@ -11,7 +11,6 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/module.h>
> #include <linux/init.h>
> #include <linux/types.h>
> #include <linux/device.h>
> @@ -766,5 +765,3 @@ void coresight_unregister(struct coresight_device *csdev)
> device_unregister(&csdev->dev);
> }
> EXPORT_SYMBOL_GPL(coresight_unregister);
> -
> -MODULE_LICENSE("GPL v2");
> diff --git a/drivers/hwtracing/coresight/of_coresight.c b/drivers/hwtracing/coresight/of_coresight.c
> index 3cc57c1e3b5d..b68da1888fd5 100644
> --- a/drivers/hwtracing/coresight/of_coresight.c
> +++ b/drivers/hwtracing/coresight/of_coresight.c
> @@ -10,7 +10,6 @@
> * GNU General Public License for more details.
> */
>
> -#include <linux/module.h>
> #include <linux/types.h>
> #include <linux/err.h>
> #include <linux/slab.h>
> diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h
> index 9006c4e75cf7..3d8dcdd1aeae 100644
> --- a/include/linux/amba/bus.h
> +++ b/include/linux/amba/bus.h
> @@ -163,4 +163,13 @@ struct amba_device name##_device = { \
> #define module_amba_driver(__amba_drv) \
> module_driver(__amba_drv, amba_driver_register, amba_driver_unregister)
>
> +/*
> + * builtin_amba_driver() - Helper macro for drivers that don't do anything
> + * special in driver initcall. This eliminates a lot of boilerplate. Each
> + * driver may only use this macro once, and calling it replaces the instance
> + * device_initcall().
> + */
> +#define builtin_amba_driver(__amba_drv) \
> + builtin_driver(__amba_drv, amba_driver_register)
> +
> #endif
> --
> 2.6.1
>

I'm good with this patch on the CS side but Russell maintains the amba
subsystem and as such needs to agree with the new macro. Russell, I
offer to take this through my tree if you're fine with the changes.

Thanks,
Mathieu