Re: [PATCH RFC] omap3isp: prevent releasing MC too early

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mauro,

On Thursday 15 Dec 2016 10:57:16 Mauro Carvalho Chehab wrote:
> Em Thu, 15 Dec 2016 09:42:35 -0300 Javier Martinez Canillas escreveu:
> > On 12/15/2016 09:37 AM, Mauro Carvalho Chehab wrote:
> > 
> > [snip]
> > 
> >> What happens is that omap3isp driver calls media_device_unregister()
> >> too early. Right now, it is called at omap3isp_video_device_release(),
> >> with happens when a driver unbind is ordered by userspace, and not after
> >> the last usage of all /dev/video?? devices.
> >> 
> >> There are two possible fixes:
> >> 
> >> 1) at omap3isp_video_device_release(), streamoff all streams and mark
> >> that the media device will be gone.
> 
> I actually meant to say: isp_unregister_entities() here.
> 
> >> 2) instead of using video_device_release_empty for the
> >> video->video.release, create a omap3isp_video_device_release() that
> >> will call media_device_unregister() when destroying the last /dev/video??
> >> devnode.
> > 
> > There's also option (3), to have a proper refcounting to make sure that
> > the media device node is not freed until all references to it are gone.
> 
> Yes, that's another alternative.

And I think that's the only one that will bring us sanity in the long term.

> > I understand that's what Sakari's RFC patches do. I'll try to make some
> > time tomorrow to test and review his patches.
> 
> The biggest problem with Sakari's patches is that it starts by
> reverting 3 patches, and this will cause regressions on existing
> devices.
> 
> Development should be incremental.

Yes, it should, but there's also a reason git has a revert command. When 
patches are broken they should be reverted. Broken means that they do more 
harm than good. This is usually understood as introducing a bug worse than the 
gain the patch is supposed to bring. Broken can also mean that the patch makes 
incremental development of a proper solution very difficult while still 
failing to fix the initial problem completely. I believe the three patches in 
question fall into that category. And let's not take this personally, I don't 
care who have authored them, and there's certainly no shame getting a patch 
reverted. It should be considered as a review that comes after merge, it might 
not be the most pleasant one, but we I'm sure we all appreciate how reviews 
help use avoiding the same mistakes in the future and improving ourselves.

> I didn't review carefully his series (as it started the wrong way),

Please review it, as we need to get an agreement on the direction we want to 
take. Then we can discuss whether the reverts are really such a problem. I 
don't think inflicting ourselves the pain that would come with pure 
incremental development would bring us anything good, especially if we 
consider that we'll merge the reverts with the patch series that fixes the 
problem, so we're talking about bisection of unbind code paths that remained 
broken for years before the attempted fix, and are still broken with it as 
current code is racy anyway.

> but I guess there's another problem on it: as OMAP3 remove entities
> at isp_unregister_entities(), while adding a kref to media_device
> will prevent an oops, the streamoff logic won't work anymore, as
> the entities that were supposed to be at the graph will have been
> removed by then.

We need to fix drivers, that's for sure, and we're working on the OMAP3 ISP 
driver first as a proof of concept.

> Ok, we can roll the snow ball and add kref's to entities and links,
> but IMHO, we're trying to kill a fly with a death star: instead,
> the better is to just fix the driver in a way that it would be
> streaming off everything at isp_unregister_entities(), before
> dropping the entities and the media controller.

That won't be enough. Even if you're not entirely convinced by the reasons 
explained in this mail thread, remember that we will need sooner or later to 
implement support for media graph update at runtime. Refcounting will be 
needed, let's design it in the cleanest possible way.

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux