Hi Len, Please replace this patch with the appended one. I have verified that we are supposed to save/restore the NVS area in the EFI case too. Thanks, Rafael On Sunday, 26 of October 2008, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rjw@xxxxxxx> > Subject: x86 hibernate: Mark ACPI NVS memory region at startup > > Introduce new initcall for marking the ACPI NVS memory at startup, so > that it can be saved/restore during hibernation/resume. > > Based on a patch by Zhang Rui. > > Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> > Cc: Zhang Rui <rui.zhang@xxxxxxxxx> > --- > arch/x86/kernel/e820.c | 25 +++++++++++++++++++++++++ > 1 files changed, 25 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c > index ce97bf3..e1e63a8 100644 > --- a/arch/x86/kernel/e820.c > +++ b/arch/x86/kernel/e820.c > @@ -20,6 +20,7 @@ > #include <linux/pfn.h> > #include <linux/suspend.h> > #include <linux/firmware-map.h> > +#include <linux/efi.h> > > #include <asm/pgtable.h> > #include <asm/page.h> > @@ -665,6 +666,30 @@ 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; > + > + if (efi_enabled) > + return 0; > + > + 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. > */ --- From: Rafael J. Wysocki <rjw@xxxxxxx> Subject: x86 hibernate: Mark ACPI NVS memory region at startup Introduce new initcall for marking the ACPI NVS memory at startup, so that it can be saved/restored during hibernation/resume. Based on a patch by Zhang Rui. Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> Cc: Zhang Rui <rui.zhang@xxxxxxxxx> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index ce97bf3..261d19c 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c @@ -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. */ _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm