Re: [RESEND PATCH v2] remoteproc: qcom: Add venus rproc support on msm8996 platform.

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

 



On Fri 16 Dec 16:56 PST 2016, Stephen Boyd wrote:

> On 12/12, Bjorn Andersson wrote:
> > On Wed 30 Nov 01:22 PST 2016, Stanimir Varbanov wrote:
> > [..]
> > 
> > > I think using power domain in remoteproc driver will break power
> > > management of the v4l2 venus driver. Presently I use runtime pm to
> > > switch ON/OFF GDSC and enable/disable Venus clocks.
> > > 
> > > When the .probe of venus remoteproc driver is called the power domain
> > > will become ON and never switched OFF (except when platform driver
> > > .remove method is called). One possible solution would be to add runtime
> > > pm in venus remoreproc driver.
> > > 
> > > IMO we should think more about that.
> > > 
> > > Bjorn, Stephen what are your opinions?
> > > 
> > 
> > Sorry for not getting back to you on this after our earlier discussion
> > on the topic.
> > 
> > Modelling the remoteproc and codec drivers as completely separate
> > entities (with only the rproc phandle) gives us issues with the timing
> > between the two. As I pulled down and started playing with [1] I noticed
> > that I was not able to get the codec driver to probe unless I compiled
> > it as a module which I insmoded after my /lib/firmware became available.
> > 
> > In addition to this, there's no way for the remoteproc driver to inform
> > the codec driver when it's actually shutting down and booting back up
> > during a crash recovery (an async operation).
> > 
> > And lastly when I talked to Rob about the DT binding the obvious
> > question of why one piece of hardware have two disjunct nodes in the DT.
> > 
> > 
> > So I believe we should represent the codec driver as a child of the
> > remoteproc driver, utilizing the newly introduced "remoteproc
> > subdevices" to probe and remove the codec driver based on the state of
> > the remoteproc driver. This relationship will also allow us to tie
> > certain resources (e.g. the clocks and power-domain) to the remoteproc
> > driver and use pm_runtime in either driver to make sure the resources
> > are enabled appropriately.
> > 
> > I did backport some patches from my v4.10 remoteproc pull request into
> > [2] and merged this into [1] and made a prototype of this. You can find
> > it here [3], I did test that I can boot the remoteproc and run
> > v4l2-compliance, shut it down, boot it back up and re-run
> > v4l2-compliance, and it seems to work fine.
> > 
> 
> From a DT perspective this seems backwards. We shouldn't be
> putting something with a reg property underneath a "virtual" node
> that doesn't have a reg property. It's already causing pain,
> evident by these sorts of patches, so something seems wrong.
> 

I agree.

> Are we gaining anything by having a remoteproc driver and device
> for the video hardware here?

After discussing the matter with Avaneesh I realized that the downstream
driver powers the venus core up and down based on the presence of
clients. I expect that this means we have to do the same to be able to
meet our power KPIs.

With this in mind the remoteproc driver becomes a wrapper for a mdt
loader and the scm pas interface - and brings with it a bunch of other
things, expectations and challenges.

> Why can't the video driver load/unload firmware with the mdt loader
> code by itself when it wants to boot the processor?

Providing a saner api around the mdt-loader and pas would allow venus
and Adreno to reuse the code, without the remoteproc bloat.

> That seems like a much simpler design and it nicely avoids this DT
> confusion.
> 

Agreed.

I was under the impression that the venus core was always on, but after
re-reading the downstream venus code a few more times I think this would
be much cleaner to do so, both implementation and binding wise.

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



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux