All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] siox: two cleanups
@ 2020-11-24 14:18 Uwe Kleine-König
  2020-11-24 14:18 ` [PATCH v2 1/2] siox: Use bus_type functions for probe, remote and shutdown Uwe Kleine-König
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Uwe Kleine-König @ 2020-11-24 14:18 UTC (permalink / raw)
  To: Thorsten Scherer, Greg Kroah-Hartman
  Cc: linux-kernel, Pengutronix Kernel Team

Hello,

compared to v1 sent starting with
Message-Id:20201119132311.2604232-1-u.kleine-koenig@pengutronix.de:

 - Prepare siox_shutdown() to be called even for unbound devices in
   patch 1.
 - remove stray "if (sdriver->probe)" in patch 1 (how embarrassing).
 - Fix grammar in patch 2's commit log.

Uwe Kleine-König (2):
  siox: Use bus_type functions for probe, remote and shutdown
  siox: Make remove callback return void

 drivers/siox/siox-core.c | 50 ++++++++++++++++++++--------------------
 include/linux/siox.h     |  2 +-
 2 files changed, 26 insertions(+), 26 deletions(-)


base-commit: 418baf2c28f3473039f2f7377760bd8f6897ae18
-- 
2.29.2


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

* [PATCH v2 1/2] siox: Use bus_type functions for probe, remote and shutdown
  2020-11-24 14:18 [PATCH v2 0/2] siox: two cleanups Uwe Kleine-König
@ 2020-11-24 14:18 ` Uwe Kleine-König
  2020-11-24 20:58   ` Thorsten Scherer
  2020-11-24 14:18 ` [PATCH v2 2/2] siox: Make remove callback return void Uwe Kleine-König
  2020-11-24 20:58 ` [PATCH v2 0/2] siox: two cleanups Thorsten Scherer
  2 siblings, 1 reply; 7+ messages in thread
From: Uwe Kleine-König @ 2020-11-24 14:18 UTC (permalink / raw)
  To: Thorsten Scherer, Greg Kroah-Hartman
  Cc: linux-kernel, Pengutronix Kernel Team

The eventual goal is to get rid of the callbacks in struct
device_driver.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/siox/siox-core.c | 49 ++++++++++++++++++++--------------------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/drivers/siox/siox-core.c b/drivers/siox/siox-core.c
index f8c08fb9891d..b56cdcb52967 100644
--- a/drivers/siox/siox-core.c
+++ b/drivers/siox/siox-core.c
@@ -512,41 +512,48 @@ static int siox_match(struct device *dev, struct device_driver *drv)
 	return 1;
 }
 
-static struct bus_type siox_bus_type = {
-	.name = "siox",
-	.match = siox_match,
-};
-
-static int siox_driver_probe(struct device *dev)
+static int siox_probe(struct device *dev)
 {
 	struct siox_driver *sdriver = to_siox_driver(dev->driver);
 	struct siox_device *sdevice = to_siox_device(dev);
-	int ret;
 
-	ret = sdriver->probe(sdevice);
-	return ret;
+	return sdriver->probe(sdevice);
 }
 
-static int siox_driver_remove(struct device *dev)
+static int siox_remove(struct device *dev)
 {
 	struct siox_driver *sdriver =
 		container_of(dev->driver, struct siox_driver, driver);
 	struct siox_device *sdevice = to_siox_device(dev);
-	int ret;
+	int ret = 0;
+
+	if (sdriver->remove)
+		ret = sdriver->remove(sdevice);
 
-	ret = sdriver->remove(sdevice);
 	return ret;
 }
 
-static void siox_driver_shutdown(struct device *dev)
+static void siox_shutdown(struct device *dev)
 {
-	struct siox_driver *sdriver =
-		container_of(dev->driver, struct siox_driver, driver);
 	struct siox_device *sdevice = to_siox_device(dev);
+	struct siox_driver *sdriver;
 
-	sdriver->shutdown(sdevice);
+	if (!dev->driver)
+		return;
+
+	sdriver = container_of(dev->driver, struct siox_driver, driver);
+	if (sdriver->shutdown)
+		sdriver->shutdown(sdevice);
 }
 
+static struct bus_type siox_bus_type = {
+	.name = "siox",
+	.match = siox_match,
+	.probe = siox_probe,
+	.remove = siox_remove,
+	.shutdown = siox_shutdown,
+};
+
 static ssize_t active_show(struct device *dev,
 			   struct device_attribute *attr, char *buf)
 {
@@ -882,7 +889,8 @@ int __siox_driver_register(struct siox_driver *sdriver, struct module *owner)
 	if (unlikely(!siox_is_registered))
 		return -EPROBE_DEFER;
 
-	if (!sdriver->set_data && !sdriver->get_data) {
+	if (!sdriver->probe ||
+	    (!sdriver->set_data && !sdriver->get_data)) {
 		pr_err("Driver %s doesn't provide needed callbacks\n",
 		       sdriver->driver.name);
 		return -EINVAL;
@@ -891,13 +899,6 @@ int __siox_driver_register(struct siox_driver *sdriver, struct module *owner)
 	sdriver->driver.owner = owner;
 	sdriver->driver.bus = &siox_bus_type;
 
-	if (sdriver->probe)
-		sdriver->driver.probe = siox_driver_probe;
-	if (sdriver->remove)
-		sdriver->driver.remove = siox_driver_remove;
-	if (sdriver->shutdown)
-		sdriver->driver.shutdown = siox_driver_shutdown;
-
 	ret = driver_register(&sdriver->driver);
 	if (ret)
 		pr_err("Failed to register siox driver %s (%d)\n",
-- 
2.29.2


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

* [PATCH v2 2/2] siox: Make remove callback return void
  2020-11-24 14:18 [PATCH v2 0/2] siox: two cleanups Uwe Kleine-König
  2020-11-24 14:18 ` [PATCH v2 1/2] siox: Use bus_type functions for probe, remote and shutdown Uwe Kleine-König
@ 2020-11-24 14:18 ` Uwe Kleine-König
  2020-11-24 20:58   ` Thorsten Scherer
  2020-11-24 20:58 ` [PATCH v2 0/2] siox: two cleanups Thorsten Scherer
  2 siblings, 1 reply; 7+ messages in thread
From: Uwe Kleine-König @ 2020-11-24 14:18 UTC (permalink / raw)
  To: Thorsten Scherer, Greg Kroah-Hartman
  Cc: linux-kernel, Pengutronix Kernel Team

The driver core ignores the return value of the remove callback, so
don't give siox drivers the chance to provide a value.

All siox drivers only allocate devm-managed resources in
.probe, so there is no .remove callback to fix.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/siox/siox-core.c | 5 ++---
 include/linux/siox.h     | 2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/siox/siox-core.c b/drivers/siox/siox-core.c
index b56cdcb52967..1794ff0106bc 100644
--- a/drivers/siox/siox-core.c
+++ b/drivers/siox/siox-core.c
@@ -525,12 +525,11 @@ static int siox_remove(struct device *dev)
 	struct siox_driver *sdriver =
 		container_of(dev->driver, struct siox_driver, driver);
 	struct siox_device *sdevice = to_siox_device(dev);
-	int ret = 0;
 
 	if (sdriver->remove)
-		ret = sdriver->remove(sdevice);
+		sdriver->remove(sdevice);
 
-	return ret;
+	return 0;
 }
 
 static void siox_shutdown(struct device *dev)
diff --git a/include/linux/siox.h b/include/linux/siox.h
index da7225bf1877..6bfbda3f634c 100644
--- a/include/linux/siox.h
+++ b/include/linux/siox.h
@@ -36,7 +36,7 @@ bool siox_device_connected(struct siox_device *sdevice);
 
 struct siox_driver {
 	int (*probe)(struct siox_device *sdevice);
-	int (*remove)(struct siox_device *sdevice);
+	void (*remove)(struct siox_device *sdevice);
 	void (*shutdown)(struct siox_device *sdevice);
 
 	/*
-- 
2.29.2


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

* Re: [PATCH v2 0/2] siox: two cleanups
  2020-11-24 14:18 [PATCH v2 0/2] siox: two cleanups Uwe Kleine-König
  2020-11-24 14:18 ` [PATCH v2 1/2] siox: Use bus_type functions for probe, remote and shutdown Uwe Kleine-König
  2020-11-24 14:18 ` [PATCH v2 2/2] siox: Make remove callback return void Uwe Kleine-König
@ 2020-11-24 20:58 ` Thorsten Scherer
  2 siblings, 0 replies; 7+ messages in thread
From: Thorsten Scherer @ 2020-11-24 20:58 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Greg Kroah-Hartman, linux-kernel, Pengutronix Kernel Team

Hello,

On Tue, Nov 24, 2020 at 03:18:32PM +0100, Uwe Kleine-König wrote:
> Hello,
> 
> compared to v1 sent starting with
> Message-Id:20201119132311.2604232-1-u.kleine-koenig@pengutronix.de:
> 
>  - Prepare siox_shutdown() to be called even for unbound devices in
>    patch 1.
>  - remove stray "if (sdriver->probe)" in patch 1 (how embarrassing).
>  - Fix grammar in patch 2's commit log.

I successfully ran our siox testcases with this series applied.  

Though not expecting this result to change, i will re-run them on v3 and
then add a Tested-by.

> 
> Uwe Kleine-König (2):
>   siox: Use bus_type functions for probe, remote and shutdown
>   siox: Make remove callback return void
> 
>  drivers/siox/siox-core.c | 50 ++++++++++++++++++++--------------------
>  include/linux/siox.h     |  2 +-
>  2 files changed, 26 insertions(+), 26 deletions(-)
> 
> 
> base-commit: 418baf2c28f3473039f2f7377760bd8f6897ae18
> -- 
> 2.29.2
> 

Kind regards
Thorsten

--
Thorsten Scherer | Eckelmann AG | www.eckelmann.de |

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

* Re: [PATCH v2 1/2] siox: Use bus_type functions for probe, remote and shutdown
  2020-11-24 14:18 ` [PATCH v2 1/2] siox: Use bus_type functions for probe, remote and shutdown Uwe Kleine-König
@ 2020-11-24 20:58   ` Thorsten Scherer
  0 siblings, 0 replies; 7+ messages in thread
From: Thorsten Scherer @ 2020-11-24 20:58 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Greg Kroah-Hartman, linux-kernel, Pengutronix Kernel Team

Hello Uwe,

you already know, but FTR, there is a typo in the subject.

s/remote/remove/

On Tue, Nov 24, 2020 at 03:18:33PM +0100, Uwe Kleine-König wrote:
> The eventual goal is to get rid of the callbacks in struct
> device_driver.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
>  drivers/siox/siox-core.c | 49 ++++++++++++++++++++--------------------
>  1 file changed, 25 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/siox/siox-core.c b/drivers/siox/siox-core.c
> index f8c08fb9891d..b56cdcb52967 100644
> --- a/drivers/siox/siox-core.c
> +++ b/drivers/siox/siox-core.c

[...]

Apart from this you can add

Acked-by: Thorsten Scherer <t.scherer@eckelmann.de>

Kind regards
Thorsten

--
Thorsten Scherer | Eckelmann AG | www.eckelmann.de |

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

* Re: [PATCH v2 2/2] siox: Make remove callback return void
  2020-11-24 14:18 ` [PATCH v2 2/2] siox: Make remove callback return void Uwe Kleine-König
@ 2020-11-24 20:58   ` Thorsten Scherer
  2020-11-25  7:06     ` Uwe Kleine-König
  0 siblings, 1 reply; 7+ messages in thread
From: Thorsten Scherer @ 2020-11-24 20:58 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Greg Kroah-Hartman, linux-kernel, Pengutronix Kernel Team

Hello,

On Tue, Nov 24, 2020 at 03:18:34PM +0100, Uwe Kleine-König wrote:
> The driver core ignores the return value of the remove callback, so
> don't give siox drivers the chance to provide a value.
> 
> All siox drivers only allocate devm-managed resources in
> .probe, so there is no .remove callback to fix.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
>  drivers/siox/siox-core.c | 5 ++---
>  include/linux/siox.h     | 2 +-
>  2 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/siox/siox-core.c b/drivers/siox/siox-core.c
> index b56cdcb52967..1794ff0106bc 100644
> --- a/drivers/siox/siox-core.c
> +++ b/drivers/siox/siox-core.c
> @@ -525,12 +525,11 @@ static int siox_remove(struct device *dev)

Shouldn't this return void?

>  	struct siox_driver *sdriver =
>  		container_of(dev->driver, struct siox_driver, driver);
>  	struct siox_device *sdevice = to_siox_device(dev);
> -	int ret = 0;
>  
>  	if (sdriver->remove)
> -		ret = sdriver->remove(sdevice);
> +		sdriver->remove(sdevice);
>  
> -	return ret;
> +	return 0;
>  }
>  

[...]

> -- 
> 2.29.2
> 

Kind regards
Thorsten

--
Thorsten Scherer | Eckelmann AG | www.eckelmann.de |

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

* Re: [PATCH v2 2/2] siox: Make remove callback return void
  2020-11-24 20:58   ` Thorsten Scherer
@ 2020-11-25  7:06     ` Uwe Kleine-König
  0 siblings, 0 replies; 7+ messages in thread
From: Uwe Kleine-König @ 2020-11-25  7:06 UTC (permalink / raw)
  To: Thorsten Scherer
  Cc: Greg Kroah-Hartman, linux-kernel, Pengutronix Kernel Team

[-- Attachment #1: Type: text/plain, Size: 1323 bytes --]

On Tue, Nov 24, 2020 at 09:58:45PM +0100, Thorsten Scherer wrote:
> Hello,
> 
> On Tue, Nov 24, 2020 at 03:18:34PM +0100, Uwe Kleine-König wrote:
> > The driver core ignores the return value of the remove callback, so
> > don't give siox drivers the chance to provide a value.
> >
> > All siox drivers only allocate devm-managed resources in
> > .probe, so there is no .remove callback to fix.
> >
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > ---
> >  drivers/siox/siox-core.c | 5 ++---
> >  include/linux/siox.h     | 2 +-
> >  2 files changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/siox/siox-core.c b/drivers/siox/siox-core.c
> > index b56cdcb52967..1794ff0106bc 100644
> > --- a/drivers/siox/siox-core.c
> > +++ b/drivers/siox/siox-core.c
> > @@ -525,12 +525,11 @@ static int siox_remove(struct device *dev)
> 
> Shouldn't this return void?

This is the callback used for struct device_driver::remove (and after
patch 2 struct bus_type::remove) which still has to return int. But in
the long run I want to change these to void, too.

Best regards and thanks for your feedback
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | https://www.pengutronix.de/ |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

end of thread, other threads:[~2020-11-25  7:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-24 14:18 [PATCH v2 0/2] siox: two cleanups Uwe Kleine-König
2020-11-24 14:18 ` [PATCH v2 1/2] siox: Use bus_type functions for probe, remote and shutdown Uwe Kleine-König
2020-11-24 20:58   ` Thorsten Scherer
2020-11-24 14:18 ` [PATCH v2 2/2] siox: Make remove callback return void Uwe Kleine-König
2020-11-24 20:58   ` Thorsten Scherer
2020-11-25  7:06     ` Uwe Kleine-König
2020-11-24 20:58 ` [PATCH v2 0/2] siox: two cleanups Thorsten Scherer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.