Messages in this thread |  | | Subject | Re: [PATCH 0/2] Use Media Dev Allocator to fix vimc dev lifetime bugs | From | Shuah Khan <> | Date | Fri, 14 Jun 2019 17:26:46 -0600 |
| |
On 6/13/19 7:24 AM, Helen Koike wrote: > > > On 6/13/19 2:44 AM, Hans Verkuil wrote: >> On 5/24/19 5:31 AM, Shuah Khan wrote: >>> media_device is embedded in struct vimc_device and when vimc is removed >>> vimc_device and the embedded media_device goes with it, while the active >>> stream and vimc_capture continue to access it. >>> >>> Fix the media_device lifetime problem by changing vimc to create shared >>> media_device using Media Device Allocator API and vimc_capture getting >>> a reference to vimc module. With this change, vimc module can be removed >>> only when the references are gone. vimc can be removed after vimc_capture >>> is removed. >>> >>> Media Device Allocator API supports just USB devices. Enhance it >>> adding a genetic device allocate interface to support other media >>> drivers. >>> >>> The new interface takes pointer to struct device instead and creates >>> media device. This interface allows a group of drivers that have a >>> common root device to share media device resource and ensure media >>> device doesn't get deleted as long as one of the drivers holds its >>> reference. >>> >>> The new interface has been tested with vimc component driver to fix >>> panics when vimc module is removed while streaming is in progress. >> >> Helen, can you review this series? I'm not sure this is the right approach >> for a driver like vimc, and even if it is, then it is odd that vimc-capture >> is the only vimc module that's handled here. > > Hi Hans, > > Yes, I can take a look. Sorry, I've been a bit busy these days but I'll > try to take a look at this patch series (and the others) asap. > > Helen > >> >> My gut feeling is that this should be handled inside vimc directly and not >> using the media-dev-allocator. >>
Hi Hans and Helen,
I explored fixing the problem within vimc before I went down the path to use Media Device Allocator API. I do think that it is cleaner to go this way and easier to maintain.
vimc is a group pf component drivers that rely on the media device vimc in vimc and falls into the use-case Media Device Allocator API is added to address. The release and life-time management happens without vimc component drivers being changed other than using the API to get and put media device reference.
thanks, -- Shuah
|  |