From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: [PATCH 3/4] x86 hibernate: Mark ACPI NVS memory region at startup Date: Tue, 28 Oct 2008 14:30:49 +0100 Message-ID: <200810281430.50441.rjw@sisk.pl> References: <200810262048.23468.rjw@sisk.pl> <200810262054.24929.rjw@sisk.pl> <86802c440810280217x59357432n52880f75d96bc801@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Return-path: Received: from ogre.sisk.pl ([217.79.144.158]:37002 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752327AbYJ1N0Z (ORCPT ); Tue, 28 Oct 2008 09:26:25 -0400 In-Reply-To: <86802c440810280217x59357432n52880f75d96bc801@mail.gmail.com> Content-Disposition: inline Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: Yinghai Lu Cc: Len Brown , ACPI Devel Maling List , pm list , Nigel Cunningham , Pavel Machek , Ingo Molnar , Zhang Rui On Tuesday, 28 of October 2008, Yinghai Lu wrote: > On Sun, Oct 26, 2008 at 12:54 PM, Rafael J. Wysocki wrote: > > From: Rafael J. Wysocki > > 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 > > Cc: Zhang Rui > > --- > > 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 > > #include > > #include > > +#include > > > > #include > > #include > > @@ -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); > > do you need to something to ACPI code too? No, ACPI NVS only, according to the spec. > BIOS-provided physical RAM map: > > BIOS-e820: 0000000000000100 - 0000000000095800 (usable) > > BIOS-e820: 0000000000095800 - 00000000000a0000 (reserved) > > BIOS-e820: 0000000000100000 - 00000000d7fa0000 (usable) > > BIOS-e820: 00000000d7fae000 - 00000000d7fb0000 (reserved) > > BIOS-e820: 00000000d7fb0000 - 00000000d7fbe000 (ACPI data) <================ acpi code > > BIOS-e820: 00000000d7fbe000 - 00000000d7ff0000 (ACPI NVS) > > BIOS-e820: 00000000d7ff0000 - 00000000d8000000 (reserved) > > BIOS-e820: 00000000dc000000 - 00000000f0000000 (reserved) > > BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) > > BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) > > BIOS-e820: 00000000ff700000 - 0000000100000000 (reserved) > > BIOS-e820: 0000000100000000 - 0000004028000000 (usable) Thanks, Rafael