Hi, sorry for the delay, On Sun, 2008-10-26 at 20:29 +0800, Rafael J. Wysocki wrote: > On Sunday, 26 of October 2008, Pavel Machek wrote: > > On Wed 2008-10-22 22:53:15, Rafael J. Wysocki wrote: > > > From: Rafael J. Wysocki <rjw@xxxxxxx> > > > > > > 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 file changed, 25 insertions(+) > > > > > > Index: linux-2.6/arch/x86/kernel/e820.c > > > =================================================================== > > > --- linux-2.6.orig/arch/x86/kernel/e820.c > > > +++ linux-2.6/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> > > > > Unrelated chunk? > > > > > @@ -665,6 +666,30 @@ void __init e820_mark_nosave_regions(uns > > > } > > > #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; > > > > Aha, not unrelated... why is that? EFI does not use acpi? > > With EFI we are not supposed to do that. Rui knows the details. Rui? > well, about EFI nvs memory, I only get "EfiACPIMemoryNVS: The OS and loader must preserve this memory range in the working and ACPI S1–S3 states." in the ACPI spec 3.0b. whether we should save/restore this piece of memory is not clear. I'd prefer not to touch it currently. thanks, rui > > > + 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); > > > > can nvs_register fail? (OOM?) > > It can, in which case it will do the cleanup. > > Thanks, > Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html