From: "Niklas Söderlund" <niklas.soderlund@ragnatech.se> To: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Hans Verkuil <hverkuil@xs4all.nl>, linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, tomoharu.fukawa.eb@renesas.com, Kieran Bingham <kieran.bingham@ideasonboard.com> Subject: Re: [PATCH v9 03/28] rcar-vin: unregister video device on driver removal Date: Fri, 8 Dec 2017 14:09:21 +0100 [thread overview] Message-ID: <20171208130921.GN31989@bigcity.dyn.berto.se> (raw) In-Reply-To: <1762416.X4GW5MWmCZ@avalon> Hi Laurent, Thanks for your comments. On 2017-12-08 09:54:31 +0200, Laurent Pinchart wrote: > Hi Niklas, > > Thank you for the patch. > > On Friday, 8 December 2017 03:08:17 EET Niklas Söderlund wrote: > > If the video device was registered by the complete() callback it should > > be unregistered when the driver is removed. > > The .remove() operation indicates device removal, not driver removal (or, the > be more precise, it indicates that the device is unbound from the driver). I'd > update the commit message accordingly. I'm not sure I fully understand this comment. My take is that .remove() indicates that the device is removed and not the driver itself, as the driver might be used by multiple devices and the .remove() function is therefor not an indication that the driver is being unloaded. So if I understood you correctly the following would be a better to go in the commit message: "If the video device was registered by the complete() callback it should be unregistered when a device is unbound from the driver." > > > Protect from printing an uninitialized video device node name by adding a > > check in rvin_v4l2_unregister() to identify that the video device is > > registered. > > > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > > Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> > > Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com> > > --- > > drivers/media/platform/rcar-vin/rcar-core.c | 2 ++ > > drivers/media/platform/rcar-vin/rcar-v4l2.c | 3 +++ > > 2 files changed, 5 insertions(+) > > > > diff --git a/drivers/media/platform/rcar-vin/rcar-core.c > > b/drivers/media/platform/rcar-vin/rcar-core.c index > > f7a4c21909da6923..6d99542ec74b49a7 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-core.c > > +++ b/drivers/media/platform/rcar-vin/rcar-core.c > > @@ -272,6 +272,8 @@ static int rcar_vin_remove(struct platform_device *pdev) > > > > pm_runtime_disable(&pdev->dev); > > > > + rvin_v4l2_unregister(vin); > > Unless I'm mistaken, you're unregistering the video device both here and in > the unbound() function. That's messy, but it's not really your fault, the V4L2 > core is very messy in the first place, and registering video devices in the > complete() handler is a bad idea. As that can't be fixed for now, > > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Big thanks for this :-) > > Hans, I still would like to hear your opinion on how this should be solved. > You've voiced a few weeks ago that register video devices at probe() time > isn't a good idea but you've never explained how we should fix the problem. I > still firmly believe that video devices should be registered at probe time, > and we need to reach an agreement on a technical solution to this problem. > > > v4l2_async_notifier_unregister(&vin->notifier); > > v4l2_async_notifier_cleanup(&vin->notifier); > > > > diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c > > b/drivers/media/platform/rcar-vin/rcar-v4l2.c index > > 178aecc94962abe2..32a658214f48fa49 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-v4l2.c > > +++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c > > @@ -841,6 +841,9 @@ static const struct v4l2_file_operations rvin_fops = { > > > > void rvin_v4l2_unregister(struct rvin_dev *vin) > > { > > + if (!video_is_registered(&vin->vdev)) > > + return; > > + > > v4l2_info(&vin->v4l2_dev, "Removing %s\n", > > video_device_node_name(&vin->vdev)); > > -- > Regards, > > Laurent Pinchart > -- Regards, Niklas Söderlund
WARNING: multiple messages have this Message-ID (diff)
From: "Niklas Söderlund" <niklas.soderlund@ragnatech.se> To: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Hans Verkuil <hverkuil@xs4all.nl>, linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, tomoharu.fukawa.eb@renesas.com, Kieran Bingham <kieran.bingham@ideasonboard.com> Subject: Re: [PATCH v9 03/28] rcar-vin: unregister video device on driver removal Date: Fri, 8 Dec 2017 14:09:21 +0100 [thread overview] Message-ID: <20171208130921.GN31989@bigcity.dyn.berto.se> (raw) In-Reply-To: <1762416.X4GW5MWmCZ@avalon> Hi Laurent, Thanks for your comments. On 2017-12-08 09:54:31 +0200, Laurent Pinchart wrote: > Hi Niklas, > > Thank you for the patch. > > On Friday, 8 December 2017 03:08:17 EET Niklas S�derlund wrote: > > If the video device was registered by the complete() callback it should > > be unregistered when the driver is removed. > > The .remove() operation indicates device removal, not driver removal (or, the > be more precise, it indicates that the device is unbound from the driver). I'd > update the commit message accordingly. I'm not sure I fully understand this comment. My take is that .remove() indicates that the device is removed and not the driver itself, as the driver might be used by multiple devices and the .remove() function is therefor not an indication that the driver is being unloaded. So if I understood you correctly the following would be a better to go in the commit message: "If the video device was registered by the complete() callback it should be unregistered when a device is unbound from the driver." > > > Protect from printing an uninitialized video device node name by adding a > > check in rvin_v4l2_unregister() to identify that the video device is > > registered. > > > > Signed-off-by: Niklas S�derlund <niklas.soderlund+renesas@ragnatech.se> > > Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> > > Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com> > > --- > > drivers/media/platform/rcar-vin/rcar-core.c | 2 ++ > > drivers/media/platform/rcar-vin/rcar-v4l2.c | 3 +++ > > 2 files changed, 5 insertions(+) > > > > diff --git a/drivers/media/platform/rcar-vin/rcar-core.c > > b/drivers/media/platform/rcar-vin/rcar-core.c index > > f7a4c21909da6923..6d99542ec74b49a7 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-core.c > > +++ b/drivers/media/platform/rcar-vin/rcar-core.c > > @@ -272,6 +272,8 @@ static int rcar_vin_remove(struct platform_device *pdev) > > > > pm_runtime_disable(&pdev->dev); > > > > + rvin_v4l2_unregister(vin); > > Unless I'm mistaken, you're unregistering the video device both here and in > the unbound() function. That's messy, but it's not really your fault, the V4L2 > core is very messy in the first place, and registering video devices in the > complete() handler is a bad idea. As that can't be fixed for now, > > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Big thanks for this :-) > > Hans, I still would like to hear your opinion on how this should be solved. > You've voiced a few weeks ago that register video devices at probe() time > isn't a good idea but you've never explained how we should fix the problem. I > still firmly believe that video devices should be registered at probe time, > and we need to reach an agreement on a technical solution to this problem. > > > v4l2_async_notifier_unregister(&vin->notifier); > > v4l2_async_notifier_cleanup(&vin->notifier); > > > > diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c > > b/drivers/media/platform/rcar-vin/rcar-v4l2.c index > > 178aecc94962abe2..32a658214f48fa49 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-v4l2.c > > +++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c > > @@ -841,6 +841,9 @@ static const struct v4l2_file_operations rvin_fops = { > > > > void rvin_v4l2_unregister(struct rvin_dev *vin) > > { > > + if (!video_is_registered(&vin->vdev)) > > + return; > > + > > v4l2_info(&vin->v4l2_dev, "Removing %s\n", > > video_device_node_name(&vin->vdev)); > > -- > Regards, > > Laurent Pinchart > -- Regards, Niklas S�derlund
next prev parent reply other threads:[~2017-12-08 13:09 UTC|newest] Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-12-08 1:08 [PATCH v9 00/28] rcar-vin: Add Gen3 with media controller Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 01/28] rcar-vin: add Gen3 devicetree bindings documentation Niklas Söderlund 2017-12-08 7:46 ` Laurent Pinchart 2017-12-08 12:55 ` Niklas Söderlund 2017-12-08 12:55 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 02/28] rcar-vin: rename poorly named initialize and cleanup functions Niklas Söderlund 2017-12-08 7:49 ` Laurent Pinchart 2017-12-08 12:58 ` Niklas Söderlund 2017-12-08 12:58 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 03/28] rcar-vin: unregister video device on driver removal Niklas Söderlund 2017-12-08 7:54 ` Laurent Pinchart 2017-12-08 8:46 ` Hans Verkuil 2017-12-08 8:49 ` Laurent Pinchart 2017-12-08 13:09 ` Niklas Söderlund [this message] 2017-12-08 13:09 ` Niklas Söderlund 2017-12-08 19:07 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 04/28] rcar-vin: move subdevice handling to async callbacks Niklas Söderlund 2017-12-08 8:03 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 05/28] rcar-vin: move chip information to own struct Niklas Söderlund 2017-12-08 8:08 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 06/28] rcar-vin: move max width and height information to chip information Niklas Söderlund 2017-12-08 8:10 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 07/28] rcar-vin: change name of video device Niklas Söderlund 2017-12-08 8:17 ` Laurent Pinchart 2017-12-14 14:25 ` Sakari Ailus 2017-12-14 14:25 ` Sakari Ailus 2017-12-14 15:50 ` Laurent Pinchart 2017-12-20 15:20 ` Niklas Söderlund 2017-12-20 15:20 ` Niklas Söderlund 2018-01-08 16:35 ` Laurent Pinchart 2018-01-08 16:42 ` Niklas Söderlund 2018-01-08 16:42 ` Niklas Söderlund 2018-01-08 17:48 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 08/28] rcar-vin: move functions regarding scaling Niklas Söderlund 2017-12-08 8:28 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 09/28] rcar-vin: all Gen2 boards can scale simplify logic Niklas Söderlund 2017-12-08 8:33 ` Laurent Pinchart 2017-12-20 16:17 ` Niklas Söderlund 2017-12-20 16:17 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 10/28] rcar-vin: do not reset crop and compose when setting format Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 11/28] rcar-vin: do not allow changing scaling and composing while streaming Niklas Söderlund 2017-12-08 9:04 ` Laurent Pinchart 2017-12-08 14:14 ` Niklas Söderlund 2017-12-08 14:14 ` Niklas Söderlund 2017-12-08 19:20 ` Laurent Pinchart 2017-12-20 16:26 ` Niklas Söderlund 2017-12-20 16:26 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 12/28] rcar-vin: read subdevice format for crop only when needed Niklas Söderlund 2017-12-08 9:11 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 13/28] rcar-vin: fix handling of single field frames (top, bottom and alternate fields) Niklas Söderlund 2017-12-08 9:35 ` Laurent Pinchart 2017-12-08 14:06 ` Niklas Söderlund 2017-12-08 14:06 ` Niklas Söderlund 2017-12-08 19:30 ` Laurent Pinchart 2017-12-20 17:17 ` Niklas Söderlund 2017-12-20 17:17 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 14/28] rcar-vin: move media bus configuration to struct rvin_info Niklas Söderlund 2017-12-08 9:40 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 15/28] rcar-vin: enable Gen3 hardware configuration Niklas Söderlund 2017-12-08 9:47 ` Laurent Pinchart 2017-12-20 21:09 ` Niklas Söderlund 2017-12-20 21:09 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 16/28] rcar-vin: add function to manipulate Gen3 chsel value Niklas Söderlund 2017-12-08 9:52 ` Laurent Pinchart 2017-12-20 21:20 ` Niklas Söderlund 2017-12-20 21:20 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 17/28] rcar-vin: add flag to switch to media controller mode Niklas Söderlund 2017-12-08 9:52 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 18/28] rcar-vin: break out format alignment and checking Niklas Söderlund 2017-12-08 10:01 ` Laurent Pinchart 2017-12-21 0:25 ` Niklas Söderlund 2017-12-21 0:25 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 19/28] rcar-vin: use different v4l2 operations in media controller mode Niklas Söderlund 2017-12-08 10:14 ` Laurent Pinchart 2017-12-08 10:24 ` Hans Verkuil 2017-12-08 19:31 ` Laurent Pinchart 2018-01-19 0:46 ` Niklas Söderlund 2018-01-19 0:46 ` Niklas Söderlund 2018-03-02 11:33 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 20/28] rcar-vin: prepare for media controller mode initialization Niklas Söderlund 2017-12-08 10:20 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 21/28] rcar-vin: add group allocator functions Niklas Söderlund 2017-12-08 20:12 ` Laurent Pinchart 2018-01-08 17:24 ` Niklas Söderlund 2018-01-08 17:24 ` Niklas Söderlund 2018-01-08 17:57 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 22/28] rcar-vin: add chsel information to rvin_info Niklas Söderlund 2017-12-08 20:37 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 23/28] rcar-vin: parse Gen3 OF and setup media graph Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 24/28] rcar-vin: add link notify for Gen3 Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 25/28] rcar-vin: extend {start,stop}_streaming to work with media controller Niklas Söderlund 2017-12-08 20:45 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 26/28] rcar-vin: enable support for r8a7795 Niklas Söderlund 2017-12-08 10:21 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 27/28] rcar-vin: enable support for r8a7796 Niklas Söderlund 2017-12-08 10:25 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 28/28] rcar-vin: enable support for r8a77970 Niklas Söderlund
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20171208130921.GN31989@bigcity.dyn.berto.se \ --to=niklas.soderlund@ragnatech.se \ --cc=hverkuil@xs4all.nl \ --cc=kieran.bingham@ideasonboard.com \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-media@vger.kernel.org \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=tomoharu.fukawa.eb@renesas.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.