* [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular
@ 2015-10-18 22:21 Paul Gortmaker
2015-10-20 15:10 ` Alexandre Belloni
[not found] ` <1445206878-12455-1-git-send-email-paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>
0 siblings, 2 replies; 6+ messages in thread
From: Paul Gortmaker @ 2015-10-18 22:21 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-soc-u79uwXL29TY76Z2rM5mHXA, Michael Ellerman,
linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, Andy Gross, Nicolas Ferre,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Paul Gortmaker, Kumar Gala,
linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Anton Blanchard,
linux-serial-u79uwXL29TY76Z2rM5mHXA, Jiri Slaby, Matthias Brugger,
David Brown, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
This next set of patches to drivers/tty fixes up more drivers that would
perhaps appear modular when looking at the code, but are controlled by
a bool Kconfig. We make sure they don't look modular and get rid
of module related code in the drivers that would never be used.
The one common thread here for all the patches is that we also
scrap the .remove functions which would only be used for module
unload (impossible) and driver unbind. For the drivers here, there
doesn't seem to be a sensible unbind use case (vs. e.g. a multiport
PCI ethernet driver where one port is unbound and passed through to
a kvm guest or similar). Hence we just explicitly disallow any
driver unbind operations to help prevent root from doing something
illogical to the machine that they could have done previously.
We've already done this for drivers/tty/serial/mpsc.c previously.
Build tested for allmodconfig on ARM64 and powerpc for tty/tty-testing.
Paul.
---
Cc: Andy Gross <agross-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Cc: Anton Blanchard <anton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
Cc: David Brown <davidb-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Cc: Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
Cc: Jiri Slaby <jslaby-IBi9RG/b67k@public.gmane.org>
Cc: Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Cc: Matthias Brugger <matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org>
Cc: Nicolas Ferre <nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
Cc: linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: linux-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Paul Gortmaker (5):
drivers/tty: make hvc/hvc_vio.c explicitly non-modular
drivers/tty: make ehv_bytechan.c explicitly non-modular
drivers/tty/serial: make serial/atmel_serial.c explicitly non-modular
drivers/tty/serial: make msm_serial.c explicitly non-modular
drivers/tty/serial: make 8250/8250_mtk.c explicitly non-modular
drivers/tty/ehv_bytechan.c | 40 +++------------------------------
drivers/tty/hvc/hvc_vio.c | 29 ++++--------------------
drivers/tty/serial/8250/8250_mtk.c | 35 ++++++-----------------------
drivers/tty/serial/atmel_serial.c | 45 ++++----------------------------------
drivers/tty/serial/msm_serial.c | 30 ++++---------------------
5 files changed, 22 insertions(+), 157 deletions(-)
--
2.6.1
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular 2015-10-18 22:21 [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular Paul Gortmaker @ 2015-10-20 15:10 ` Alexandre Belloni [not found] ` <20151020151052.GI3421-m++hUPXGwpdeoWH0uzbU5w@public.gmane.org> [not found] ` <1445206878-12455-1-git-send-email-paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org> 1 sibling, 1 reply; 6+ messages in thread From: Alexandre Belloni @ 2015-10-20 15:10 UTC (permalink / raw) To: Paul Gortmaker Cc: Greg Kroah-Hartman, linux-soc, Michael Ellerman, linux-arm-msm, Andy Gross, Nicolas Ferre, linux-kernel, Kumar Gala, linux-mediatek, Anton Blanchard, linux-serial, Jiri Slaby, Matthias Brugger, David Brown, linuxppc-dev, linux-arm-kernel On 18/10/2015 at 18:21:13 -0400, Paul Gortmaker wrote : > The one common thread here for all the patches is that we also > scrap the .remove functions which would only be used for module > unload (impossible) and driver unbind. For the drivers here, there > doesn't seem to be a sensible unbind use case (vs. e.g. a multiport > PCI ethernet driver where one port is unbound and passed through to > a kvm guest or similar). Hence we just explicitly disallow any > driver unbind operations to help prevent root from doing something > illogical to the machine that they could have done previously. > > We've already done this for drivers/tty/serial/mpsc.c previously. > > Build tested for allmodconfig on ARM64 and powerpc for tty/tty-testing. > So, how does this actually build test atmel_serial? A proper solution would be to actually make it a tristate and allow building as a module. I think it currently fails because of console_initcall() but that is certainly fixable. -- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <20151020151052.GI3421-m++hUPXGwpdeoWH0uzbU5w@public.gmane.org>]
* Re: [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular [not found] ` <20151020151052.GI3421-m++hUPXGwpdeoWH0uzbU5w@public.gmane.org> @ 2015-10-21 0:20 ` Paul Gortmaker 2015-10-21 8:38 ` Alexandre Belloni 0 siblings, 1 reply; 6+ messages in thread From: Paul Gortmaker @ 2015-10-21 0:20 UTC (permalink / raw) To: Alexandre Belloni Cc: linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ, Greg Kroah-Hartman, Andy Gross, Nicolas Ferre, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Kumar Gala, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Michael Ellerman, linux-serial-u79uwXL29TY76Z2rM5mHXA, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, Matthias Brugger, Jiri Slaby, David Brown, linux-soc-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Anton Blanchard [Re: [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular] On 20/10/2015 (Tue 17:10) Alexandre Belloni wrote: > On 18/10/2015 at 18:21:13 -0400, Paul Gortmaker wrote : > > The one common thread here for all the patches is that we also > > scrap the .remove functions which would only be used for module > > unload (impossible) and driver unbind. For the drivers here, there > > doesn't seem to be a sensible unbind use case (vs. e.g. a multiport > > PCI ethernet driver where one port is unbound and passed through to > > a kvm guest or similar). Hence we just explicitly disallow any > > driver unbind operations to help prevent root from doing something > > illogical to the machine that they could have done previously. > > > > We've already done this for drivers/tty/serial/mpsc.c previously. > > > > Build tested for allmodconfig on ARM64 and powerpc for tty/tty-testing. > > > > So, how does this actually build test atmel_serial? Not sure why this should be a surprise; I build test it exactly like this: paul@builder-02:~/git/linux-head$ echo $ARCH arm64 paul@builder-02:~/git/linux-head$ echo $CROSS_COMPILE aarch64-linux-gnu- paul@builder-02:~/git/linux-head$ make O=../arm-build/ drivers/tty/serial/atmel_serial.o make[1]: Entering directory '/home/paul/git/arm-build' arch/arm64/Makefile:25: LSE atomics not supported by binutils CHK include/config/kernel.release Using /home/paul/git/linux-head as source for kernel GEN ./Makefile CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h [...] HOSTCC scripts/sign-file HOSTCC scripts/extract-cert CC drivers/tty/serial/atmel_serial.o make[1]: Leaving directory '/home/paul/git/arm-build' paul@builder-02:~/git/linux-head$ It did build; no warning/error. Would you call it an invalid build test? > > A proper solution would be to actually make it a tristate and allow > building as a module. I think it currently fails because of > console_initcall() but that is certainly fixable. Well, as per other threads on this topic, if people want to extend the functionality to support tristate, then great. But please do not confuse that with existing functionality which is clearly non modular in this case. Thanks, Paul. -- > > > -- > Alexandre Belloni, Free Electrons > Embedded Linux, Kernel and Android engineering > http://free-electrons.com ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular 2015-10-21 0:20 ` Paul Gortmaker @ 2015-10-21 8:38 ` Alexandre Belloni 0 siblings, 0 replies; 6+ messages in thread From: Alexandre Belloni @ 2015-10-21 8:38 UTC (permalink / raw) To: Paul Gortmaker Cc: Greg Kroah-Hartman, linux-soc, Michael Ellerman, linux-arm-msm, Andy Gross, Nicolas Ferre, linux-kernel, Kumar Gala, linux-mediatek, Anton Blanchard, linux-serial, Jiri Slaby, Matthias Brugger, David Brown, linuxppc-dev, linux-arm-kernel On 20/10/2015 at 20:20:07 -0400, Paul Gortmaker wrote : > [Re: [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular] On 20/10/2015 (Tue 17:10) Alexandre Belloni wrote: > > > On 18/10/2015 at 18:21:13 -0400, Paul Gortmaker wrote : > > > The one common thread here for all the patches is that we also > > > scrap the .remove functions which would only be used for module > > > unload (impossible) and driver unbind. For the drivers here, there > > > doesn't seem to be a sensible unbind use case (vs. e.g. a multiport > > > PCI ethernet driver where one port is unbound and passed through to > > > a kvm guest or similar). Hence we just explicitly disallow any > > > driver unbind operations to help prevent root from doing something > > > illogical to the machine that they could have done previously. > > > > > > We've already done this for drivers/tty/serial/mpsc.c previously. > > > > > > Build tested for allmodconfig on ARM64 and powerpc for tty/tty-testing. > > > > > > > So, how does this actually build test atmel_serial? > > Not sure why this should be a surprise; I build test it exactly like this: > CONFIG_SERIAL_ATMEL is not selected by allmodconfig on arm64 or powerpc so this is not explaining how you build tested atmel_serial. > paul@builder-02:~/git/linux-head$ echo $ARCH > arm64 > paul@builder-02:~/git/linux-head$ echo $CROSS_COMPILE > aarch64-linux-gnu- > paul@builder-02:~/git/linux-head$ make O=../arm-build/ drivers/tty/serial/atmel_serial.o > make[1]: Entering directory '/home/paul/git/arm-build' > arch/arm64/Makefile:25: LSE atomics not supported by binutils > CHK include/config/kernel.release > Using /home/paul/git/linux-head as source for kernel > GEN ./Makefile > CHK include/generated/uapi/linux/version.h > CHK include/generated/utsrelease.h > > [...] > > HOSTCC scripts/sign-file > HOSTCC scripts/extract-cert > CC drivers/tty/serial/atmel_serial.o > make[1]: Leaving directory '/home/paul/git/arm-build' > paul@builder-02:~/git/linux-head$ > > It did build; no warning/error. Would you call it an invalid build test? > What you describe is a different test. I end up with 4 warnings when doing that on my machine. -- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <1445206878-12455-1-git-send-email-paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>]
* [PATCH 5/5] drivers/tty/serial: make 8250/8250_mtk.c explicitly non-modular [not found] ` <1445206878-12455-1-git-send-email-paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org> @ 2015-10-18 22:21 ` Paul Gortmaker 2015-12-15 22:29 ` [PATCH 0/5] drivers/tty: make more bool drivers " Paul Gortmaker 1 sibling, 0 replies; 6+ messages in thread From: Paul Gortmaker @ 2015-10-18 22:21 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, Paul Gortmaker, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-serial-u79uwXL29TY76Z2rM5mHXA, Jiri Slaby, Matthias Brugger, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r The Kconfig currently controlling compilation of this code is: drivers/tty/serial/8250/Kconfig:config SERIAL_8250_MT6577 drivers/tty/serial/8250/Kconfig: bool "Mediatek serial port 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. We also delete the MODULE_LICENSE tag etc. since all that information is already contained at the top of the file in the comments. Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code. Cc: Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org> Cc: Jiri Slaby <jslaby-IBi9RG/b67k@public.gmane.org> Cc: Matthias Brugger <matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Cc: linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Cc: linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Signed-off-by: Paul Gortmaker <paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org> --- drivers/tty/serial/8250/8250_mtk.c | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c index 78883ca64ddd..0e590b233f03 100644 --- a/drivers/tty/serial/8250/8250_mtk.c +++ b/drivers/tty/serial/8250/8250_mtk.c @@ -16,7 +16,7 @@ */ #include <linux/clk.h> #include <linux/io.h> -#include <linux/module.h> +#include <linux/init.h> #include <linux/of_irq.h> #include <linux/of_platform.h> #include <linux/platform_device.h> @@ -245,23 +245,6 @@ static int mtk8250_probe(struct platform_device *pdev) return 0; } -static int mtk8250_remove(struct platform_device *pdev) -{ - struct mtk8250_data *data = platform_get_drvdata(pdev); - - pm_runtime_get_sync(&pdev->dev); - - serial8250_unregister_port(data->line); - - pm_runtime_disable(&pdev->dev); - pm_runtime_put_noidle(&pdev->dev); - - if (!pm_runtime_status_suspended(&pdev->dev)) - mtk8250_runtime_suspend(&pdev->dev); - - return 0; -} - #ifdef CONFIG_PM_SLEEP static int mtk8250_suspend(struct device *dev) { @@ -292,18 +275,18 @@ static const struct of_device_id mtk8250_of_match[] = { { .compatible = "mediatek,mt6577-uart" }, { /* Sentinel */ } }; -MODULE_DEVICE_TABLE(of, mtk8250_of_match); static struct platform_driver mtk8250_platform_driver = { .driver = { - .name = "mt6577-uart", - .pm = &mtk8250_pm_ops, - .of_match_table = mtk8250_of_match, + .name = "mt6577-uart", + .pm = &mtk8250_pm_ops, + .of_match_table = mtk8250_of_match, + .suppress_bind_attrs = true, + }, .probe = mtk8250_probe, - .remove = mtk8250_remove, }; -module_platform_driver(mtk8250_platform_driver); +builtin_platform_driver(mtk8250_platform_driver); #ifdef CONFIG_SERIAL_8250_CONSOLE static int __init early_mtk8250_setup(struct earlycon_device *device, @@ -319,7 +302,3 @@ static int __init early_mtk8250_setup(struct earlycon_device *device, OF_EARLYCON_DECLARE(mtk8250, "mediatek,mt6577-uart", early_mtk8250_setup); #endif - -MODULE_AUTHOR("Matthias Brugger"); -MODULE_LICENSE("GPL"); -MODULE_DESCRIPTION("Mediatek 8250 serial port driver"); -- 2.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular [not found] ` <1445206878-12455-1-git-send-email-paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org> 2015-10-18 22:21 ` [PATCH 5/5] drivers/tty/serial: make 8250/8250_mtk.c " Paul Gortmaker @ 2015-12-15 22:29 ` Paul Gortmaker 1 sibling, 0 replies; 6+ messages in thread From: Paul Gortmaker @ 2015-12-15 22:29 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: linux-soc-u79uwXL29TY76Z2rM5mHXA, Michael Ellerman, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, Jiri Slaby, Nicolas Ferre, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Anton Blanchard, linux-serial-u79uwXL29TY76Z2rM5mHXA, Kumar Gala, Matthias Brugger, David Brown, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Andy Gross [[PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular] On 18/10/2015 (Sun 18:21) Paul Gortmaker wrote: > This next set of patches to drivers/tty fixes up more drivers that would > perhaps appear modular when looking at the code, but are controlled by > a bool Kconfig. We make sure they don't look modular and get rid > of module related code in the drivers that would never be used. [...] > Paul Gortmaker (5): > drivers/tty: make hvc/hvc_vio.c explicitly non-modular > drivers/tty: make ehv_bytechan.c explicitly non-modular > drivers/tty/serial: make serial/atmel_serial.c explicitly non-modular > drivers/tty/serial: make msm_serial.c explicitly non-modular > drivers/tty/serial: make 8250/8250_mtk.c explicitly non-modular Hi Greg, You've merged the #3 atmel patch and #5 the 8250_mtk patch; the msm_serial patch (#4) is no longer applicable since the authors changed it to tristate. That leaves the top two patches; both for PPC hardware. Did you skip those because you wanted them pushed through the powerpc tree? If so, that is fine, I can do that. Just let me know. Thanks, Paul. -- > > drivers/tty/ehv_bytechan.c | 40 +++------------------------------ > drivers/tty/hvc/hvc_vio.c | 29 ++++-------------------- > drivers/tty/serial/8250/8250_mtk.c | 35 ++++++----------------------- > drivers/tty/serial/atmel_serial.c | 45 ++++---------------------------------- > drivers/tty/serial/msm_serial.c | 30 ++++--------------------- > 5 files changed, 22 insertions(+), 157 deletions(-) > > -- > 2.6.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-12-15 22:29 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-18 22:21 [PATCH 0/5] drivers/tty: make more bool drivers explicitly non-modular Paul Gortmaker
2015-10-20 15:10 ` Alexandre Belloni
[not found] ` <20151020151052.GI3421-m++hUPXGwpdeoWH0uzbU5w@public.gmane.org>
2015-10-21 0:20 ` Paul Gortmaker
2015-10-21 8:38 ` Alexandre Belloni
[not found] ` <1445206878-12455-1-git-send-email-paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>
2015-10-18 22:21 ` [PATCH 5/5] drivers/tty/serial: make 8250/8250_mtk.c " Paul Gortmaker
2015-12-15 22:29 ` [PATCH 0/5] drivers/tty: make more bool drivers " Paul Gortmaker
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).