Loading arch/ia64/include/asm/io.h +5 −0 Original line number Diff line number Diff line Loading @@ -426,6 +426,11 @@ extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size) extern void iounmap (volatile void __iomem *addr); extern void __iomem * early_ioremap (unsigned long phys_addr, unsigned long size); extern void early_iounmap (volatile void __iomem *addr, unsigned long size); static inline void __iomem * ioremap_cache (unsigned long phys_addr, unsigned long size) { return ioremap(phys_addr, size); } /* * String version of IO memory access ops: Loading arch/x86/kernel/e820.c +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/bootmem.h> #include <linux/pfn.h> #include <linux/suspend.h> #include <linux/acpi.h> #include <linux/firmware-map.h> #include <linux/memblock.h> Loading drivers/acpi/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ acpi-y += atomicio.o # sleep related files acpi-y += wakeup.o acpi-y += sleep.o acpi-$(CONFIG_ACPI_SLEEP) += proc.o acpi-$(CONFIG_ACPI_SLEEP) += proc.o nvs.o # Loading drivers/acpi/internal.h +8 −0 Original line number Diff line number Diff line Loading @@ -83,8 +83,16 @@ extern int acpi_sleep_init(void); #ifdef CONFIG_ACPI_SLEEP 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 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 /* _ACPI_INTERNAL_H_ */ kernel/power/nvs.c→drivers/acpi/nvs.c +14 −6 Original line number Diff line number Diff line /* * linux/kernel/power/hibernate_nvs.c - Routines for handling NVS memory * nvs.c - Routines for saving and restoring ACPI NVS memory region * * Copyright (C) 2008,2009 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. * Copyright (C) 2008-2011 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. * * This file is released under the GPLv2. */ Loading @@ -11,7 +11,8 @@ #include <linux/list.h> #include <linux/mm.h> #include <linux/slab.h> #include <linux/suspend.h> #include <linux/acpi.h> #include <acpi/acpiosxf.h> /* * Platforms, like ACPI, may want us to save some memory used by them during Loading Loading @@ -79,7 +80,7 @@ void suspend_nvs_free(void) free_page((unsigned long)entry->data); entry->data = NULL; if (entry->kaddr) { iounmap(entry->kaddr); acpi_os_unmap_memory(entry->kaddr, entry->size); entry->kaddr = NULL; } } Loading @@ -105,7 +106,7 @@ int suspend_nvs_alloc(void) /** * suspend_nvs_save - save NVS memory regions */ void suspend_nvs_save(void) int suspend_nvs_save(void) { struct nvs_page *entry; Loading @@ -113,9 +114,16 @@ void suspend_nvs_save(void) list_for_each_entry(entry, &nvs_list, node) if (entry->data) { entry->kaddr = ioremap(entry->phys_start, entry->size); entry->kaddr = acpi_os_map_memory(entry->phys_start, entry->size); if (!entry->kaddr) { suspend_nvs_free(); return -ENOMEM; } memcpy(entry->data, entry->kaddr, entry->size); } return 0; } /** Loading Loading
arch/ia64/include/asm/io.h +5 −0 Original line number Diff line number Diff line Loading @@ -426,6 +426,11 @@ extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size) extern void iounmap (volatile void __iomem *addr); extern void __iomem * early_ioremap (unsigned long phys_addr, unsigned long size); extern void early_iounmap (volatile void __iomem *addr, unsigned long size); static inline void __iomem * ioremap_cache (unsigned long phys_addr, unsigned long size) { return ioremap(phys_addr, size); } /* * String version of IO memory access ops: Loading
arch/x86/kernel/e820.c +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/bootmem.h> #include <linux/pfn.h> #include <linux/suspend.h> #include <linux/acpi.h> #include <linux/firmware-map.h> #include <linux/memblock.h> Loading
drivers/acpi/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ acpi-y += atomicio.o # sleep related files acpi-y += wakeup.o acpi-y += sleep.o acpi-$(CONFIG_ACPI_SLEEP) += proc.o acpi-$(CONFIG_ACPI_SLEEP) += proc.o nvs.o # Loading
drivers/acpi/internal.h +8 −0 Original line number Diff line number Diff line Loading @@ -83,8 +83,16 @@ extern int acpi_sleep_init(void); #ifdef CONFIG_ACPI_SLEEP 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 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 /* _ACPI_INTERNAL_H_ */
kernel/power/nvs.c→drivers/acpi/nvs.c +14 −6 Original line number Diff line number Diff line /* * linux/kernel/power/hibernate_nvs.c - Routines for handling NVS memory * nvs.c - Routines for saving and restoring ACPI NVS memory region * * Copyright (C) 2008,2009 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. * Copyright (C) 2008-2011 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. * * This file is released under the GPLv2. */ Loading @@ -11,7 +11,8 @@ #include <linux/list.h> #include <linux/mm.h> #include <linux/slab.h> #include <linux/suspend.h> #include <linux/acpi.h> #include <acpi/acpiosxf.h> /* * Platforms, like ACPI, may want us to save some memory used by them during Loading Loading @@ -79,7 +80,7 @@ void suspend_nvs_free(void) free_page((unsigned long)entry->data); entry->data = NULL; if (entry->kaddr) { iounmap(entry->kaddr); acpi_os_unmap_memory(entry->kaddr, entry->size); entry->kaddr = NULL; } } Loading @@ -105,7 +106,7 @@ int suspend_nvs_alloc(void) /** * suspend_nvs_save - save NVS memory regions */ void suspend_nvs_save(void) int suspend_nvs_save(void) { struct nvs_page *entry; Loading @@ -113,9 +114,16 @@ void suspend_nvs_save(void) list_for_each_entry(entry, &nvs_list, node) if (entry->data) { entry->kaddr = ioremap(entry->phys_start, entry->size); entry->kaddr = acpi_os_map_memory(entry->phys_start, entry->size); if (!entry->kaddr) { suspend_nvs_free(); return -ENOMEM; } memcpy(entry->data, entry->kaddr, entry->size); } return 0; } /** Loading