On Fri, Feb 23, 2007 at 12:49:01AM +0100, Rafael J. Wysocki wrote:
> Hi,
>
> [Sorry for the delay.]
>
> On Thursday, 22 February 2007 14:16, Stefan Seyfried wrote:
> > On Wed, Feb 21, 2007 at 07:49:54PM +0100, Rafael J. Wysocki wrote:
> >
> > > Still, if you post it here again, I can have a look and make it nicer if
> > > need be. ;-)
> >
> > Indeed.
> > Maybe we should change the -ENODEV,
>
> Yes, I think we should.
Ok, i read up the old thread and changed it to -ENOSYS ;-)
> > --- a/kernel/power/main.c 2007-02-01 01:07:38.000000000 +0100
> > +++ b/kernel/power/main.c 2007-02-01 22:24:41.000000000 +0100
> > @@ -116,7 +116,10 @@ int suspend_enter(suspend_state_t state)
> > printk(KERN_ERR "Some devices failed to power down\n");
> > goto Done;
> > }
> > - error = pm_ops->enter(state);
> > + if (pm_ops && pm_ops->enter)
> > + error = pm_ops->enter(state);
> > + else
> > + error = -ENODEV;
> > device_power_up();
> > Done:
> > local_irq_restore(flags);
>
> Well, I think the above chunk is not needed, because there is a check against
> !pm_ops in suspend_prepare().
Probably true, i think i just grepped for pm_ops-> through kernel/power/
back then :-)
New patch:
user.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
--- a/kernel/power/user.c 2007-02-01 01:07:38.000000000 +0100
+++ b/kernel/power/user.c 2007-02-01 22:25:48.000000000 +0100
@@ -292,7 +292,7 @@ static int snapshot_ioctl(struct inode *
break;
}
- if (pm_ops->prepare) {
+ if (pm_ops && pm_ops->prepare) {
error = pm_ops->prepare(PM_SUSPEND_MEM);
if (error)
goto OutS3;
@@ -311,7 +311,7 @@ static int snapshot_ioctl(struct inode *
device_resume();
}
resume_console();
- if (pm_ops->finish)
+ if (pm_ops && pm_ops->finish)
pm_ops->finish(PM_SUSPEND_MEM);
OutS3:
@@ -322,20 +322,25 @@ static int snapshot_ioctl(struct inode *
switch (arg) {
case PMOPS_PREPARE:
- if (pm_ops->prepare) {
+ if (pm_ops && pm_ops->prepare)
error = pm_ops->prepare(PM_SUSPEND_DISK);
- }
+ else
+ error = -ENOSYS;
break;
case PMOPS_ENTER:
kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
- error = pm_ops->enter(PM_SUSPEND_DISK);
+ if (pm_ops && pm_ops->enter)
+ error = pm_ops->enter(PM_SUSPEND_DISK);
+ else
+ error = -ENOSYS;
break;
case PMOPS_FINISH:
- if (pm_ops && pm_ops->finish) {
+ if (pm_ops && pm_ops->finish)
pm_ops->finish(PM_SUSPEND_DISK);
- }
+ else
+ error = -ENOSYS;
break;
default:
--
Stefan Seyfried
"Any ideas, John?"
"Well, surrounding them's out."
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Suspend-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/suspend-devel