PM / ACPI: Move NVS saving and restoring code to drivers/acpi
The saving of the ACPI NVS area during hibernation and suspend and restoring it during the subsequent resume is entirely specific to ACPI, so move it to drivers/acpi and drop the CONFIG_SUSPEND_NVS configuration option which is redundant. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
26fcaf60fe
commit
976513dbfc
@ -14,6 +14,7 @@
|
|||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
#include <linux/pfn.h>
|
#include <linux/pfn.h>
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
|
#include <linux/acpi.h>
|
||||||
#include <linux/firmware-map.h>
|
#include <linux/firmware-map.h>
|
||||||
#include <linux/memblock.h>
|
#include <linux/memblock.h>
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ acpi-y += atomicio.o
|
|||||||
# sleep related files
|
# sleep related files
|
||||||
acpi-y += wakeup.o
|
acpi-y += wakeup.o
|
||||||
acpi-y += sleep.o
|
acpi-y += sleep.o
|
||||||
acpi-$(CONFIG_ACPI_SLEEP) += proc.o
|
acpi-$(CONFIG_ACPI_SLEEP) += proc.o nvs.o
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -82,8 +82,16 @@ extern int acpi_sleep_init(void);
|
|||||||
|
|
||||||
#ifdef CONFIG_ACPI_SLEEP
|
#ifdef CONFIG_ACPI_SLEEP
|
||||||
int acpi_sleep_proc_init(void);
|
int acpi_sleep_proc_init(void);
|
||||||
|
int suspend_nvs_alloc(void);
|
||||||
|
void suspend_nvs_free(void);
|
||||||
|
int suspend_nvs_save(void);
|
||||||
|
void suspend_nvs_restore(void);
|
||||||
#else
|
#else
|
||||||
static inline int acpi_sleep_proc_init(void) { return 0; }
|
static inline int acpi_sleep_proc_init(void) { return 0; }
|
||||||
|
static inline int suspend_nvs_alloc(void) { return 0; }
|
||||||
|
static inline void suspend_nvs_free(void) {}
|
||||||
|
static inline int suspend_nvs_save(void) {}
|
||||||
|
static inline void suspend_nvs_restore(void) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _ACPI_INTERNAL_H_ */
|
#endif /* _ACPI_INTERNAL_H_ */
|
||||||
|
@ -254,6 +254,15 @@ void __init acpi_old_suspend_ordering(void);
|
|||||||
void __init acpi_nvs_nosave(void);
|
void __init acpi_nvs_nosave(void);
|
||||||
#endif /* CONFIG_PM_SLEEP */
|
#endif /* CONFIG_PM_SLEEP */
|
||||||
|
|
||||||
|
#ifdef CONFIG_ACPI_SLEEP
|
||||||
|
int suspend_nvs_register(unsigned long start, unsigned long size);
|
||||||
|
#else
|
||||||
|
static inline int suspend_nvs_register(unsigned long a, unsigned long b)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
struct acpi_osc_context {
|
struct acpi_osc_context {
|
||||||
char *uuid_str; /* uuid string */
|
char *uuid_str; /* uuid string */
|
||||||
int rev;
|
int rev;
|
||||||
|
@ -258,23 +258,6 @@ static inline int hibernate(void) { return -ENOSYS; }
|
|||||||
static inline bool system_entering_hibernation(void) { return false; }
|
static inline bool system_entering_hibernation(void) { return false; }
|
||||||
#endif /* CONFIG_HIBERNATION */
|
#endif /* CONFIG_HIBERNATION */
|
||||||
|
|
||||||
#ifdef CONFIG_SUSPEND_NVS
|
|
||||||
extern int suspend_nvs_register(unsigned long start, unsigned long size);
|
|
||||||
extern int suspend_nvs_alloc(void);
|
|
||||||
extern void suspend_nvs_free(void);
|
|
||||||
extern int suspend_nvs_save(void);
|
|
||||||
extern void suspend_nvs_restore(void);
|
|
||||||
#else /* CONFIG_SUSPEND_NVS */
|
|
||||||
static inline int suspend_nvs_register(unsigned long a, unsigned long b)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
static inline int suspend_nvs_alloc(void) { return 0; }
|
|
||||||
static inline void suspend_nvs_free(void) {}
|
|
||||||
static inline int suspend_nvs_save(void) {}
|
|
||||||
static inline void suspend_nvs_restore(void) {}
|
|
||||||
#endif /* CONFIG_SUSPEND_NVS */
|
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
void save_processor_state(void);
|
void save_processor_state(void);
|
||||||
void restore_processor_state(void);
|
void restore_processor_state(void);
|
||||||
|
@ -100,13 +100,9 @@ config PM_SLEEP_ADVANCED_DEBUG
|
|||||||
depends on PM_ADVANCED_DEBUG
|
depends on PM_ADVANCED_DEBUG
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config SUSPEND_NVS
|
|
||||||
bool
|
|
||||||
|
|
||||||
config SUSPEND
|
config SUSPEND
|
||||||
bool "Suspend to RAM and standby"
|
bool "Suspend to RAM and standby"
|
||||||
depends on PM && ARCH_SUSPEND_POSSIBLE
|
depends on PM && ARCH_SUSPEND_POSSIBLE
|
||||||
select SUSPEND_NVS if HAS_IOMEM
|
|
||||||
default y
|
default y
|
||||||
---help---
|
---help---
|
||||||
Allow the system to enter sleep states in which main memory is
|
Allow the system to enter sleep states in which main memory is
|
||||||
@ -140,7 +136,6 @@ config HIBERNATION
|
|||||||
depends on PM && SWAP && ARCH_HIBERNATION_POSSIBLE
|
depends on PM && SWAP && ARCH_HIBERNATION_POSSIBLE
|
||||||
select LZO_COMPRESS
|
select LZO_COMPRESS
|
||||||
select LZO_DECOMPRESS
|
select LZO_DECOMPRESS
|
||||||
select SUSPEND_NVS if HAS_IOMEM
|
|
||||||
---help---
|
---help---
|
||||||
Enable the suspend to disk (STD) functionality, which is usually
|
Enable the suspend to disk (STD) functionality, which is usually
|
||||||
called "hibernation" in user interfaces. STD checkpoints the
|
called "hibernation" in user interfaces. STD checkpoints the
|
||||||
|
@ -10,6 +10,5 @@ obj-$(CONFIG_SUSPEND) += suspend.o
|
|||||||
obj-$(CONFIG_PM_TEST_SUSPEND) += suspend_test.o
|
obj-$(CONFIG_PM_TEST_SUSPEND) += suspend_test.o
|
||||||
obj-$(CONFIG_HIBERNATION) += hibernate.o snapshot.o swap.o user.o \
|
obj-$(CONFIG_HIBERNATION) += hibernate.o snapshot.o swap.o user.o \
|
||||||
block_io.o
|
block_io.o
|
||||||
obj-$(CONFIG_SUSPEND_NVS) += nvs.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o
|
obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o
|
||||||
|
Loading…
Reference in New Issue
Block a user