Thierry Reding
2015-Jan-07 14:48 UTC
[Nouveau] [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
On Wed, Jan 07, 2015 at 10:28:29PM +0800, Vince Hsu wrote:> On 04:08:52PM Jan 07, Peter De Schrijver wrote: > > On Wed, Jan 07, 2015 at 02:27:10PM +0100, Thierry Reding wrote: > > > > > > Yeah. I plan to have the information of all the clock client of the > > > > partitions and > > > > the memory clients be defined statically in c source, e.g. pmc-tegra124.c. > > > > All modules can declare which domain they belong to in DT. One domain can > > > > be really power gated only when no module is awake. Note the clock clients > > > > of > > > > one domain might not equal to the clocks of the module. The reset is not > > > > either. > > > > So I don't get the clock and reset from module. How do you think? > > > > > > This whole situation is quite messy. The above sequence basically means > > > that drivers can't reset hardware modules because otherwise they might > > > race with the power domain code. It also means that we can't powergate > > > > The powerdomain framework won't call any powergating method as long as a > > module in the domain is still active. So as long as drivers don't try to > > reset the hw without having done a pm_runtime_get(), we shouldn't have such > > a race? > Agree. And as long as the driver has the correct reset procedure, that should > be fine to occur between power ungating and gating sequences. > > > > > > modules on demand because they might be in the same power domain as one > > > other module that's still busy. > > > > > > > The powerdomain framework keeps track of which modules are active (by hooking > > into runtime pm) and won't try to shutdown a domain unless all modules are > > inactive. > Yeah. By the way, that means we should start supporting runtime pm for all > the modules to use generic power domain.Indeed, that'll be a prerequisite before we can merge power domain support. I do have a couple of local patches that add very rudimentary runtime PM for various drivers. For starters we could probably just do the pm_runtime_enable(...); pm_runtime_get_sync(...) in the ->probe() and pm_runtime_put_sync(...); pm_runtime_disable(...); in the ->remove() callbacks for those drivers. That's by no means optimal but should get us pretty close to what we do now and still support the generic power domains. Thierry -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20150107/a23738c8/attachment.sig>
Vince Hsu
2015-Jan-08 04:25 UTC
[Nouveau] [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
On 01/07/2015 10:48 PM, Thierry Reding wrote:> * PGP Signed by an unknown key > > On Wed, Jan 07, 2015 at 10:28:29PM +0800, Vince Hsu wrote: >> On 04:08:52PM Jan 07, Peter De Schrijver wrote: >>> On Wed, Jan 07, 2015 at 02:27:10PM +0100, Thierry Reding wrote: >>> >>>>> Yeah. I plan to have the information of all the clock client of the >>>>> partitions and >>>>> the memory clients be defined statically in c source, e.g. pmc-tegra124.c. >>>>> All modules can declare which domain they belong to in DT. One domain can >>>>> be really power gated only when no module is awake. Note the clock clients >>>>> of >>>>> one domain might not equal to the clocks of the module. The reset is not >>>>> either. >>>>> So I don't get the clock and reset from module. How do you think? >>>> This whole situation is quite messy. The above sequence basically means >>>> that drivers can't reset hardware modules because otherwise they might >>>> race with the power domain code. It also means that we can't powergate >>> The powerdomain framework won't call any powergating method as long as a >>> module in the domain is still active. So as long as drivers don't try to >>> reset the hw without having done a pm_runtime_get(), we shouldn't have such >>> a race? >> Agree. And as long as the driver has the correct reset procedure, that should >> be fine to occur between power ungating and gating sequences. >> >>>> modules on demand because they might be in the same power domain as one >>>> other module that's still busy. >>>> >>> The powerdomain framework keeps track of which modules are active (by hooking >>> into runtime pm) and won't try to shutdown a domain unless all modules are >>> inactive. >> Yeah. By the way, that means we should start supporting runtime pm for all >> the modules to use generic power domain. > Indeed, that'll be a prerequisite before we can merge power domain > support. I do have a couple of local patches that add very rudimentary > runtime PM for various drivers. For starters we could probably just do > the > > pm_runtime_enable(...); > pm_runtime_get_sync(...) > > in the ->probe() and > > pm_runtime_put_sync(...); > pm_runtime_disable(...); > > in the ->remove() callbacks for those drivers. That's by no means > optimal but should get us pretty close to what we do now and still > support the generic power domains.Cool. Could you send me the patches? Thanks, Vince> > Thierry > > * Unknown Key > * 0x7F3EB3A1
Thierry Reding
2015-Jan-08 08:03 UTC
[Nouveau] [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
On Thu, Jan 08, 2015 at 12:25:18PM +0800, Vince Hsu wrote:> > On 01/07/2015 10:48 PM, Thierry Reding wrote: > >* PGP Signed by an unknown key > > > >On Wed, Jan 07, 2015 at 10:28:29PM +0800, Vince Hsu wrote: > >>On 04:08:52PM Jan 07, Peter De Schrijver wrote: > >>>On Wed, Jan 07, 2015 at 02:27:10PM +0100, Thierry Reding wrote: > >>> > >>>>>Yeah. I plan to have the information of all the clock client of the > >>>>>partitions and > >>>>>the memory clients be defined statically in c source, e.g. pmc-tegra124.c. > >>>>>All modules can declare which domain they belong to in DT. One domain can > >>>>>be really power gated only when no module is awake. Note the clock clients > >>>>>of > >>>>>one domain might not equal to the clocks of the module. The reset is not > >>>>>either. > >>>>>So I don't get the clock and reset from module. How do you think? > >>>>This whole situation is quite messy. The above sequence basically means > >>>>that drivers can't reset hardware modules because otherwise they might > >>>>race with the power domain code. It also means that we can't powergate > >>>The powerdomain framework won't call any powergating method as long as a > >>>module in the domain is still active. So as long as drivers don't try to > >>>reset the hw without having done a pm_runtime_get(), we shouldn't have such > >>>a race? > >>Agree. And as long as the driver has the correct reset procedure, that should > >>be fine to occur between power ungating and gating sequences. > >> > >>>>modules on demand because they might be in the same power domain as one > >>>>other module that's still busy. > >>>> > >>>The powerdomain framework keeps track of which modules are active (by hooking > >>>into runtime pm) and won't try to shutdown a domain unless all modules are > >>>inactive. > >>Yeah. By the way, that means we should start supporting runtime pm for all > >>the modules to use generic power domain. > >Indeed, that'll be a prerequisite before we can merge power domain > >support. I do have a couple of local patches that add very rudimentary > >runtime PM for various drivers. For starters we could probably just do > >the > > > > pm_runtime_enable(...); > > pm_runtime_get_sync(...) > > > >in the ->probe() and > > > > pm_runtime_put_sync(...); > > pm_runtime_disable(...); > > > >in the ->remove() callbacks for those drivers. That's by no means > >optimal but should get us pretty close to what we do now and still > >support the generic power domains. > Cool. Could you send me the patches?Here are two examples: https://github.com/thierryreding/linux/commit/36b5c34f68edb8135b9afb3e62c7ce9a527d6793 https://github.com/thierryreding/linux/commit/6a6145d9e0fcbd4f9599552181fc02f4606b6a0e Thierry -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20150108/d8abfc94/attachment-0001.sig>
Possibly Parallel Threads
- [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
- [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
- [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
- [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
- [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp