]> err.no Git - linux-2.6/blobdiff - kernel/power/main.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6] / kernel / power / main.c
index 854bf0811d40877eee5e3ed0d5161a3374f6c9a4..3cdf95b1dc92af97e13e8a6c68c4e0a6f8d42153 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/resume-trace.h>
 #include <linux/freezer.h>
 #include <linux/vmstat.h>
+#include <linux/syscalls.h>
 
 #include "power.h"
 
@@ -32,7 +33,7 @@ DEFINE_MUTEX(pm_mutex);
 /* This is just an arbitrary number */
 #define FREE_PAGE_NUMBER (100)
 
-struct platform_suspend_ops *suspend_ops;
+static struct platform_suspend_ops *suspend_ops;
 
 /**
  *     suspend_set_ops - Set the global suspend method table.
@@ -58,13 +59,6 @@ int suspend_valid_only_mem(suspend_state_t state)
        return state == PM_SUSPEND_MEM;
 }
 
-
-static inline void pm_finish(suspend_state_t state)
-{
-       if (suspend_ops->finish)
-               suspend_ops->finish(state);
-}
-
 /**
  *     suspend_prepare - Do prep work before entering low-power state.
  *
@@ -171,7 +165,7 @@ int suspend_devices_and_enter(suspend_state_t state)
                goto Resume_console;
        }
        if (suspend_ops->prepare) {
-               error = suspend_ops->prepare(state);
+               error = suspend_ops->prepare();
                if (error)
                        goto Resume_devices;
        }
@@ -180,7 +174,8 @@ int suspend_devices_and_enter(suspend_state_t state)
                suspend_enter(state);
 
        enable_nonboot_cpus();
-       pm_finish(state);
+       if (suspend_ops->finish)
+               suspend_ops->finish();
  Resume_devices:
        device_resume();
  Resume_console:
@@ -236,9 +231,14 @@ static int enter_state(suspend_state_t state)
 
        if (!valid_state(state))
                return -ENODEV;
+
        if (!mutex_trylock(&pm_mutex))
                return -EBUSY;
 
+       printk("Syncing filesystems ... ");
+       sys_sync();
+       printk("done.\n");
+
        pr_debug("PM: Preparing system for %s sleep\n", pm_states[state]);
        if ((error = suspend_prepare()))
                goto Unlock;