linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] serial: pmac_zilog: Drop usage of platform_driver_probe()
       [not found] <2e3783106bf6bd9a7bdeb12b706378fb16316471.1711748999.git.u.kleine-koenig@pengutronix.de>
@ 2024-03-29 21:54 ` Uwe Kleine-König
  2024-04-03  5:15   ` Michael Ellerman
  0 siblings, 1 reply; 2+ messages in thread
From: Uwe Kleine-König @ 2024-03-29 21:54 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Jiri Slaby, Michael Ellerman, Dawei Li,
	Damien Le Moal, Jakub Kicinski, Thomas Gleixner
  Cc: kernel, linux-kbuild, Aneesh Kumar K.V, Nicholas Piggin,
	linux-serial, Naveen N. Rao, linuxppc-dev

There are considerations to drop platform_driver_probe() as a concept
that isn't relevant any more today. It comes with an added complexity
that makes many users hold it wrong. (E.g. this driver should have
marked the driver struct with __refdata to prevent the below mentioned
false positive section mismatch warning.)

This fixes a W=1 build warning:

	WARNING: modpost: drivers/tty/serial/pmac_zilog: section mismatch in reference: pmz_driver+0x8 (section: .data) -> pmz_detach (section: .exit.text)

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/tty/serial/pmac_zilog.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/tty/serial/pmac_zilog.c b/drivers/tty/serial/pmac_zilog.c
index 05d97e89511e..e44621218248 100644
--- a/drivers/tty/serial/pmac_zilog.c
+++ b/drivers/tty/serial/pmac_zilog.c
@@ -1695,7 +1695,7 @@ static void pmz_dispose_port(struct uart_pmac_port *uap)
 	memset(uap, 0, sizeof(struct uart_pmac_port));
 }
 
-static int __init pmz_attach(struct platform_device *pdev)
+static int pmz_attach(struct platform_device *pdev)
 {
 	struct uart_pmac_port *uap;
 	int i;
@@ -1714,7 +1714,7 @@ static int __init pmz_attach(struct platform_device *pdev)
 	return uart_add_one_port(&pmz_uart_reg, &uap->port);
 }
 
-static void __exit pmz_detach(struct platform_device *pdev)
+static void pmz_detach(struct platform_device *pdev)
 {
 	struct uart_pmac_port *uap = platform_get_drvdata(pdev);
 
@@ -1789,7 +1789,8 @@ static struct macio_driver pmz_driver = {
 #else
 
 static struct platform_driver pmz_driver = {
-	.remove_new	= __exit_p(pmz_detach),
+	.probe		= pmz_attach,
+	.remove_new	= pmz_detach,
 	.driver		= {
 		.name		= "scc",
 	},
@@ -1837,7 +1838,7 @@ static int __init init_pmz(void)
 #ifdef CONFIG_PPC_PMAC
 	return macio_register_driver(&pmz_driver);
 #else
-	return platform_driver_probe(&pmz_driver, pmz_attach);
+	return platform_driver_register(&pmz_driver);
 #endif
 }
 
base-commit: a6bd6c9333397f5a0e2667d4d82fef8c970108f2
-- 
2.43.0


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

* Re: [PATCH] serial: pmac_zilog: Drop usage of platform_driver_probe()
  2024-03-29 21:54 ` [PATCH] serial: pmac_zilog: Drop usage of platform_driver_probe() Uwe Kleine-König
@ 2024-04-03  5:15   ` Michael Ellerman
  0 siblings, 0 replies; 2+ messages in thread
From: Michael Ellerman @ 2024-04-03  5:15 UTC (permalink / raw)
  To: Uwe Kleine-König, Greg Kroah-Hartman, Jiri Slaby, Dawei Li,
	Damien Le Moal, Jakub Kicinski, Thomas Gleixner
  Cc: kernel, linux-kbuild, Aneesh Kumar K.V, Nicholas Piggin,
	linux-serial, Naveen N. Rao, linuxppc-dev

Uwe Kleine-König <u.kleine-koenig@pengutronix.de> writes:
> There are considerations to drop platform_driver_probe() as a concept
> that isn't relevant any more today. It comes with an added complexity
> that makes many users hold it wrong. (E.g. this driver should have
> marked the driver struct with __refdata to prevent the below mentioned
> false positive section mismatch warning.)
>
> This fixes a W=1 build warning:
>
> 	WARNING: modpost: drivers/tty/serial/pmac_zilog: section mismatch in reference: pmz_driver+0x8 (section: .data) -> pmz_detach (section: .exit.text)
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
>  drivers/tty/serial/pmac_zilog.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)

I gave it a quick spin in qemu, no issues.

Tested-by: Michael Ellerman <mpe@ellerman.id.au>

cheers

> diff --git a/drivers/tty/serial/pmac_zilog.c b/drivers/tty/serial/pmac_zilog.c
> index 05d97e89511e..e44621218248 100644
> --- a/drivers/tty/serial/pmac_zilog.c
> +++ b/drivers/tty/serial/pmac_zilog.c
> @@ -1695,7 +1695,7 @@ static void pmz_dispose_port(struct uart_pmac_port *uap)
>  	memset(uap, 0, sizeof(struct uart_pmac_port));
>  }
>  
> -static int __init pmz_attach(struct platform_device *pdev)
> +static int pmz_attach(struct platform_device *pdev)
>  {
>  	struct uart_pmac_port *uap;
>  	int i;
> @@ -1714,7 +1714,7 @@ static int __init pmz_attach(struct platform_device *pdev)
>  	return uart_add_one_port(&pmz_uart_reg, &uap->port);
>  }
>  
> -static void __exit pmz_detach(struct platform_device *pdev)
> +static void pmz_detach(struct platform_device *pdev)
>  {
>  	struct uart_pmac_port *uap = platform_get_drvdata(pdev);
>  
> @@ -1789,7 +1789,8 @@ static struct macio_driver pmz_driver = {
>  #else
>  
>  static struct platform_driver pmz_driver = {
> -	.remove_new	= __exit_p(pmz_detach),
> +	.probe		= pmz_attach,
> +	.remove_new	= pmz_detach,
>  	.driver		= {
>  		.name		= "scc",
>  	},
> @@ -1837,7 +1838,7 @@ static int __init init_pmz(void)
>  #ifdef CONFIG_PPC_PMAC
>  	return macio_register_driver(&pmz_driver);
>  #else
> -	return platform_driver_probe(&pmz_driver, pmz_attach);
> +	return platform_driver_register(&pmz_driver);
>  #endif
>  }
>  
> base-commit: a6bd6c9333397f5a0e2667d4d82fef8c970108f2
> -- 
> 2.43.0

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

end of thread, other threads:[~2024-04-03  5:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <2e3783106bf6bd9a7bdeb12b706378fb16316471.1711748999.git.u.kleine-koenig@pengutronix.de>
2024-03-29 21:54 ` [PATCH] serial: pmac_zilog: Drop usage of platform_driver_probe() Uwe Kleine-König
2024-04-03  5:15   ` Michael Ellerman

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