|
@@ -665,6 +665,27 @@ void __init e820_mark_nosave_regions(unsigned long limit_pfn)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_HIBERNATION
|
|
|
+/**
|
|
|
+ * Mark ACPI NVS memory region, so that we can save/restore it during
|
|
|
+ * hibernation and the subsequent resume.
|
|
|
+ */
|
|
|
+static int __init e820_mark_nvs_memory(void)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = 0; i < e820.nr_map; i++) {
|
|
|
+ struct e820entry *ei = &e820.map[i];
|
|
|
+
|
|
|
+ if (ei->type == E820_NVS)
|
|
|
+ hibernate_nvs_register(ei->addr, ei->size);
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+core_initcall(e820_mark_nvs_memory);
|
|
|
+#endif
|
|
|
+
|
|
|
/*
|
|
|
* Early reserved memory areas.
|
|
|
*/
|