Re: RFC: additional event for pm_notifier

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

 



On Thursday 18 March 2010, Sebastian Ott wrote:
> 
> On Wed, 17 Mar 2010, Rafael J. Wysocki wrote:
> 
> > On Wednesday 17 March 2010, Sebastian Ott wrote:
> > > hi,
> > > 
> > > on s390 certain hw features which we normally enable in our init
> > > calls, get reset while restoring the hibernation image.
> > > so we need a trigger to reenable them before the device callbacks
> > > are called.
> > > 
> > > is it possible to add an additional event for the existing
> > > pm_notifier (something like the attached patch)?
> > > 
> > > regards
> > > sebastian
> > > 
> > > 
> > > Signed-off-by: Sebastian Ott <sebott@xxxxxxxxxxxxxxxxxx>
> > > ---
> > >  include/linux/notifier.h |    1 +
> > >  kernel/power/hibernate.c |    2 ++
> > >  2 files changed, 3 insertions(+)
> > > 
> > > Index: linux-2.6/include/linux/notifier.h
> > > ===================================================================
> > > --- linux-2.6.orig/include/linux/notifier.h
> > > +++ linux-2.6/include/linux/notifier.h
> > > @@ -250,6 +250,8 @@ static inline int notifier_to_errno(int 
> > >  #define PM_POST_SUSPEND		0x0004 /* Suspend finished */
> > >  #define PM_RESTORE_PREPARE	0x0005 /* Going to restore a saved image */
> > >  #define PM_POST_RESTORE		0x0006 /* Restore failed */
> > > +#define PM_RESTORE_FINISHED	0x0007 /* Image restored, called prior to
> > > +					  device callbacks */
> > >  
> > >  /* Console keyboard events.
> > >   * Note: KBD_KEYCODE is always sent before KBD_UNBOUND_KEYCODE, KBD_UNICODE and
> > > Index: linux-2.6/kernel/power/hibernate.c
> > > ===================================================================
> > > --- linux-2.6.orig/kernel/power/hibernate.c
> > > +++ linux-2.6/kernel/power/hibernate.c
> > > @@ -290,6 +290,8 @@ static int create_image(int platform_mod
> > >  	if (!in_suspend)
> > >  		platform_leave(platform_mode);
> > >  
> > > +	pm_notifier_call_chain(PM_RESTORE_FINISHED);
> > 
> > Hmm.  Why can't you put that in platform_leave()?
> 
> i'm confused, are you suggesting to put the actual statement in
> platform_leave? this would change that all these platform_* functions
> are nop's if platform_mode isn't set (i need the trigger independent
> of the hibernation_mode)
> 
> or are you suggesting to implement platform_hibernation_ops for s390?

This one.

> - this seems a bit too much since i only need one trigger,

So you don't need to implement the other ones. :-)

You'll need to remove the check in hibernation_set_ops(), but that's fine.

[Well, it's outdated anyway, but only ACPI has been using it so far.]

> and again this depends on the hibernation_mode

That's fine as well.  If you define the ops, "platform" will be the default and
if someone wants to shoot himself in the foot by changing that, it's his
problem.

Rafael
_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm

[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux