Re: [linux-pm] [PATCH 3/4] x86 hibernate: Mark ACPI NVS memory region at startup

Rafael J. Wysocki
2008-10-26T12:24:28Z

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@sisk.pl>
> >
> > 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@sisk.pl>
> > Cc: Zhang Rui <rui.zhang@intel.com>
> > ---
> > 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?

> > + 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