Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[firefly-linux-kernel-4.4.55.git] / drivers / acpi / sleep.c
index c40fb2e81bbc5d4ce9266174c0c2d7614755c644..c11e3795431b2e686b098cd4f14f2cbcdcd0c2f4 100644 (file)
@@ -89,6 +89,7 @@ u32 acpi_target_system_state(void)
 {
        return acpi_target_sleep_state;
 }
+EXPORT_SYMBOL_GPL(acpi_target_system_state);
 
 static bool pwr_btn_event_pending;
 
@@ -611,6 +612,22 @@ static const struct platform_suspend_ops acpi_suspend_ops_old = {
        .recover = acpi_pm_finish,
 };
 
+static int acpi_freeze_begin(void)
+{
+       acpi_scan_lock_acquire();
+       return 0;
+}
+
+static void acpi_freeze_end(void)
+{
+       acpi_scan_lock_release();
+}
+
+static const struct platform_freeze_ops acpi_freeze_ops = {
+       .begin = acpi_freeze_begin,
+       .end = acpi_freeze_end,
+};
+
 static void acpi_sleep_suspend_setup(void)
 {
        int i;
@@ -621,7 +638,9 @@ static void acpi_sleep_suspend_setup(void)
 
        suspend_set_ops(old_suspend_ordering ?
                &acpi_suspend_ops_old : &acpi_suspend_ops);
+       freeze_set_ops(&acpi_freeze_ops);
 }
+
 #else /* !CONFIG_SUSPEND */
 static inline void acpi_sleep_suspend_setup(void) {}
 #endif /* !CONFIG_SUSPEND */