devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-media@vger.kernel.org, niklas.soderlund@ragnatech.se,
	robh@kernel.org, hverkuil@xs4all.nl, linux-acpi@vger.kernel.org,
	mika.westerberg@intel.com, devicetree@vger.kernel.org,
	pavel@ucw.cz, sre@kernel.org
Subject: Re: [PATCH v9 02/24] v4l: async: Remove re-probing support
Date: Sat, 09 Sep 2017 18:36:41 +0300	[thread overview]
Message-ID: <2128463.znNVtuGJSF@avalon> (raw)
In-Reply-To: <20170908131235.30294-3-sakari.ailus@linux.intel.com>

Hi Sakari,

Thank you for the patch.

On Friday, 8 September 2017 16:11:53 EEST Sakari Ailus wrote:
> Remove V4L2 async re-probing support. The re-probing support has been
> there to support cases where the sub-devices require resources provided by
> the main driver's hardware to function, such as clocks.
> 
> Reprobing has allowed unbinding and again binding the main driver without
> explicilty unbinding the sub-device drivers. This is certainly not a
> common need, and the responsibility will be the user's going forward.
> 
> An alternative could have been to introduce notifier specific locks.
> Considering the complexity of the re-probing and that it isn't really a
> solution to a problem but a workaround, remove re-probing instead.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

I agree that this is a hack, and that the problem should be addressed 
differently. I'm fine with this patch as it helps later rework of the async 
notifier code, but we need a plan to fix the problem.

> ---
>  drivers/media/v4l2-core/v4l2-async.c | 54 ---------------------------------
>  1 file changed, 54 deletions(-)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-async.c
> b/drivers/media/v4l2-core/v4l2-async.c index d741a8e0fdac..e109d9da4653
> 100644
> --- a/drivers/media/v4l2-core/v4l2-async.c
> +++ b/drivers/media/v4l2-core/v4l2-async.c
> @@ -198,78 +198,24 @@ EXPORT_SYMBOL(v4l2_async_notifier_register);
>  void v4l2_async_notifier_unregister(struct v4l2_async_notifier *notifier)
>  {
>  	struct v4l2_subdev *sd, *tmp;
> -	unsigned int notif_n_subdev = notifier->num_subdevs;
> -	unsigned int n_subdev = min(notif_n_subdev, V4L2_MAX_SUBDEVS);
> -	struct device **dev;
> -	int i = 0;
> 
>  	if (!notifier->v4l2_dev)
>  		return;
> 
> -	dev = kvmalloc_array(n_subdev, sizeof(*dev), GFP_KERNEL);
> -	if (!dev) {
> -		dev_err(notifier->v4l2_dev->dev,
> -			"Failed to allocate device cache!\n");
> -	}
> -
>  	mutex_lock(&list_lock);
> 
>  	list_del(&notifier->list);
> 
>  	list_for_each_entry_safe(sd, tmp, &notifier->done, async_list) {
> -		struct device *d;
> -
> -		d = get_device(sd->dev);
> -
>  		v4l2_async_cleanup(sd);
> 
> -		/* If we handled USB devices, we'd have to lock the parent too */
> -		device_release_driver(d);
> -
>  		if (notifier->unbind)
>  			notifier->unbind(notifier, sd, sd->asd);
> -
> -		/*
> -		 * Store device at the device cache, in order to call
> -		 * put_device() on the final step
> -		 */
> -		if (dev)
> -			dev[i++] = d;
> -		else
> -			put_device(d);
>  	}
> 
>  	mutex_unlock(&list_lock);
> 
> -	/*
> -	 * Call device_attach() to reprobe devices
> -	 *
> -	 * NOTE: If dev allocation fails, i is 0, and the whole loop won't be
> -	 * executed.
> -	 */
> -	while (i--) {
> -		struct device *d = dev[i];
> -
> -		if (d && device_attach(d) < 0) {
> -			const char *name = "(none)";
> -			int lock = device_trylock(d);
> -
> -			if (lock && d->driver)
> -				name = d->driver->name;
> -			dev_err(d, "Failed to re-probe to %s\n", name);
> -			if (lock)
> -				device_unlock(d);
> -		}
> -		put_device(d);
> -	}
> -	kvfree(dev);
> -
>  	notifier->v4l2_dev = NULL;
> -
> -	/*
> -	 * Don't care about the waiting list, it is initialised and populated
> -	 * upon notifier registration.
> -	 */
>  }
>  EXPORT_SYMBOL(v4l2_async_notifier_unregister);

-- 
Regards,

Laurent Pinchart


  reply	other threads:[~2017-09-09 15:36 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-08 13:11 [PATCH v9 00/23] Unified fwnode endpoint parser, async sub-device notifier support, N9 flash DTS Sakari Ailus
2017-09-08 13:11 ` [PATCH v9 01/24] v4l: fwnode: Move KernelDoc documentation to the header Sakari Ailus
     [not found] ` <20170908131235.30294-1-sakari.ailus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-09-08 13:11   ` [PATCH v9 02/24] v4l: async: Remove re-probing support Sakari Ailus
2017-09-09 15:36     ` Laurent Pinchart [this message]
     [not found]     ` <20170908131235.30294-3-sakari.ailus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-09-11  7:47       ` Hans Verkuil
     [not found]         ` <787019fe-7402-7edb-3de6-9a683de78d71-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
2017-09-11  7:51           ` Sakari Ailus
2017-09-08 13:18   ` [PATCH v9 12/24] v4l: async: Register sub-devices before calling bound callback Sakari Ailus
2017-09-08 13:18   ` [PATCH v9 15/24] dt: bindings: Add a binding for flash LED devices associated to a sensor Sakari Ailus
2017-09-09  9:08     ` Pavel Machek
2017-09-08 13:18   ` [PATCH v9 16/24] dt: bindings: Add lens-focus binding for image sensors Sakari Ailus
2017-09-08 13:18   ` [PATCH v9 24/24] arm: dts: omap3: N9/N950: Add flash references to the camera Sakari Ailus
2017-09-09 18:32     ` Pavel Machek
2017-09-09 22:13       ` Sakari Ailus
2017-09-08 13:11 ` [PATCH v9 03/24] v4l: async: Use more intuitive names for internal functions Sakari Ailus
2017-09-09  9:15   ` Pavel Machek
2017-09-09 15:34   ` Laurent Pinchart
2017-09-11  7:51   ` Hans Verkuil
2017-09-08 13:11 ` [PATCH v9 04/24] v4l: async: Add V4L2 async documentation to the documentation build Sakari Ailus
     [not found]   ` <20170908131235.30294-5-sakari.ailus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-09-09 15:37     ` Laurent Pinchart
2017-09-08 13:18 ` [PATCH v9 05/24] v4l: fwnode: Support generic parsing of graph endpoints in a device Sakari Ailus
     [not found]   ` <20170908131822.31020-1-sakari.ailus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-09-11  7:59     ` Hans Verkuil
2017-09-08 13:18 ` [PATCH v9 06/24] omap3isp: Use generic parser for parsing fwnode endpoints Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 07/24] rcar-vin: " Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 08/24] omap3isp: Fix check for our own sub-devices Sakari Ailus
2017-09-09  9:16   ` Pavel Machek
2017-09-08 13:18 ` [PATCH v9 09/24] omap3isp: Print the name of the entity where no source pads could be found Sakari Ailus
2017-09-09  9:16   ` Pavel Machek
2017-09-08 13:18 ` [PATCH v9 10/24] v4l: async: Move async subdev notifier operations to a separate structure Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 11/24] v4l: async: Introduce helpers for calling async ops callbacks Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 13/24] v4l: async: Allow async notifier register call succeed with no subdevs Sakari Ailus
2017-09-11  8:05   ` Hans Verkuil
     [not found]     ` <beb494e4-44f7-2eec-8d24-8d92e23dafd2-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
2017-09-11  8:21       ` Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 14/24] v4l: async: Allow binding notifiers to sub-devices Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 17/24] ACPI: Document how to refer to LEDs from remote nodes Sakari Ailus
2017-09-08 13:43   ` Mika Westerberg
2017-09-08 13:54     ` Sakari Ailus
2017-09-08 13:58       ` Mika Westerberg
2017-09-09  9:08   ` Pavel Machek
2017-09-08 13:18 ` [PATCH v9 18/24] as3645a: Switch to fwnode property API Sakari Ailus
2017-09-09  9:19   ` Pavel Machek
     [not found]   ` <20170908131822.31020-14-sakari.ailus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-09-09 19:06     ` Jacek Anaszewski
2017-09-09 21:36       ` Sakari Ailus
2017-09-11 21:10         ` Jacek Anaszewski
2017-09-08 13:18 ` [PATCH v9 19/24] v4l: fwnode: Add a helper function for parsing generic references Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 20/24] v4l: fwnode: Add a helper function to obtain device / interger references Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 21/24] v4l: fwnode: Add convenience function for parsing common external refs Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 22/24] smiapp: Add support for flash and lens devices Sakari Ailus
2017-09-09 21:47   ` [RFC] et8ek8: " Pavel Machek
2017-09-09 22:06     ` Sakari Ailus
2017-09-11 13:18     ` [PATCH] " Pavel Machek
2017-09-12 11:06       ` Sakari Ailus
2017-09-08 13:18 ` [PATCH v9 23/24] dt: bindings: smiapp: Document lens-focus and flash properties Sakari Ailus
     [not found]   ` <20170908131822.31020-19-sakari.ailus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-09-08 13:36     ` Pavel Machek
2017-09-08 13:42       ` Sakari Ailus
2017-09-08 21:45         ` Pavel Machek
2017-09-11  7:45           ` Sakari Ailus
2017-09-08 13:25 ` [PATCH v9 00/23] Unified fwnode endpoint parser, async sub-device notifier support, N9 flash DTS Sakari Ailus
     [not found]   ` <20170908132507.nqofkw2g43m7ydux-S+BSfZ9RZZmRSg0ZkenSGLdO1Tsj/99ntUK59QYPAWc@public.gmane.org>
2017-09-09  9:34     ` Pavel Machek
2017-09-11  8:24       ` Sakari Ailus

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=2128463.znNVtuGJSF@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=devicetree@vger.kernel.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mika.westerberg@intel.com \
    --cc=niklas.soderlund@ragnatech.se \
    --cc=pavel@ucw.cz \
    --cc=robh@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=sre@kernel.org \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).