[PATCH 00/20] powerpc: Convert power off logic to pm_power_off

Michael Ellerman mpe at ellerman.id.au
Tue Oct 7 17:25:47 EST 2014

On Mon, 2014-10-06 at 12:00 +0200, Alexander Graf wrote:
> On 03.10.14 06:42, Michael Ellerman wrote:
> > On Wed, 2014-10-01 at 15:27 +0200, Alexander Graf wrote:
> >> The generic Linux framework to power off the machine is a function pointer
> >> called pm_power_off. The trick about this pointer is that device drivers can
> >> potentially implement it rather than board files.
> >>
> >> Today on PowerPC we set pm_power_off to invoke our generic full machine power
> >> off logic which then calls ppc_md.power_off to invoke machine specific power
> >> off.
> >>
> >> To fix this up, let's get rid of the ppc_md.power_off logic and just always use
> >> pm_power_off as was intended. Then individual drivers such as the GPIO power off
> >> driver can implement power off logic via that function pointer.
> > 
> > This looks OK to me with one caveat.
> > 
> > In several of the patches you're replacing a static initialisation with a
> > runtime one, and you're doing the runtime initialisation in xxx_setup_arch().
> > That's reasonably late, so I'd prefer you did it in xxx_probe().
> Heh, I had it in xxx_probe() originally and then realized that
>   a) the power off function is basically a driver. Driver initialization
> happens in xxx_setup_arch() and
>   b) the maple target already does overwrite its power_off callback in
> xxx_setup_arch and
>   c) on all targets xxx_probe() is very slim and doesn't do much
> but I'll happily change it back to put the bits in xxx_probe() instead.


That way you shouldn't be changing behaviour.

It may still be the case that some power off routines don't actually work until
later, but that's an existing problem. Some power off routines *do* work before
setup_arch(), so they will continue to work.

Also, how does your series interact with Guenter's that removes pm_power_off ?
It seems at the moment they are unaware of each other.


More information about the Linuxppc-dev mailing list