Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp461778imm; Wed, 19 Sep 2018 01:36:08 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbEfT2bQVtGjNpaTEEa2C+pv/3aCG+DQgVpq0TUXIrg6vL2bFJtIS+Lst0wDTQhkXDSV+wm X-Received: by 2002:a17:902:8697:: with SMTP id g23-v6mr33331061plo.292.1537346168738; Wed, 19 Sep 2018 01:36:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537346168; cv=none; d=google.com; s=arc-20160816; b=nrrfV9Y15bXYsiRH33icTmOyrO/bS4MOos4KJkWk+LGhUhfqncABrPglKxEs4lRq0l gLG6VP0ob/btp/vszgahaUE5X7G4BgicloTtbmanTh+hC/a4vkoyan01GacQqs/jwyG3 17IRqhulxK5ElTtbgfFRnPZwg5UcAZg6bKclfY9MEJgEzpzy47jRz8dofWu0lKk0+c5v mbwnO76JtDmq5fCqbtJqoMeVN6Tv4IRXadEUuWt+c7sINX5SNAAlE2kfF5NQVIOks2VU TZxnsLCCBvbq0RpSlkqt00fr01B5iXu8MTvuvbhCzWfmMjucNRwXe1y0D5Sc9FeDliMT B1Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version; bh=7swXxDpRPSbf8zimfKQiQP2ZT7ZmlvOnVlSgf2TgCL0=; b=uNRkOoaImMLfIe74tWrmHDaMIMh/ksL3Lq0neatMcaaaxtZFXup6JsWWHO5LprLFGg KcRwKMu0cqGDf9WW875wcJcgyIt5b4d4tpXIJWEsi/Y9FhKA4BQwr0PspB18ERPuJFEy mh/5kd1+/WC2vPjBHOkQ2cBOLpNjrSSgOuc+ZtoULeZ/mac9J1WfE0ph1IvdQI+TeCHw 02yYsyD4Omu0RWXbX+B3F4vVVL820zEsvPyVA9Z5TALstS8OpnMYvG+DZm+osx3tJOrl T1SpzpN3h64pPb7rcnVOOXXiC0yNuafK2LTgA+kf99f6qox28a9WEytowxn9pGnlAKOf mnHQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d92-v6si21851908pld.75.2018.09.19.01.35.22; Wed, 19 Sep 2018 01:36:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731012AbeISOLN (ORCPT + 99 others); Wed, 19 Sep 2018 10:11:13 -0400 Received: from mail-ot1-f65.google.com ([209.85.210.65]:43649 "EHLO mail-ot1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726163AbeISOLN (ORCPT ); Wed, 19 Sep 2018 10:11:13 -0400 Received: by mail-ot1-f65.google.com with SMTP id u20-v6so4901483otk.10; Wed, 19 Sep 2018 01:34:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7swXxDpRPSbf8zimfKQiQP2ZT7ZmlvOnVlSgf2TgCL0=; b=l9mdBvPkKeg4eDw62MhuBRAr8pj0K1gr7fkCPgOdcvv03q9POXQUPsaSXQxOyFkvQl oWziUVRi+fmL2pqYw4U94IBCnZManIFbn4DAA+MhfW9JSZJI/KyrogarTSLcxIkgUaAg vFcUPr1GdNIVL5mk8WHT7FPcfgSKYXyarbA2DFwoxE4TvXQ2fhdm+SpFJVMXQL52lHQ+ kajS6hnKPcAyqKftdj+uaiD4AAEblXTja3sMiFZzxKHsWY+EvDTLPQIwq8dUyFIN70h5 K7QrZXVNiaatwfCYGxRmi1/xxVKFuTw2L/mPJqrdtsPVuiKvCFyXizRVvqoaWrVos7Ug FX9A== X-Gm-Message-State: APzg51CVaMCuGUY3nc+XCzRxfZGB9zUDwLULQcidGDphT6kt/o0NRjFt x54htGs4cNY17yhJvxrd9G4CSRDtwJCcMxJVfas= X-Received: by 2002:a9d:648f:: with SMTP id g15-v6mr17347386otl.191.1537346062302; Wed, 19 Sep 2018 01:34:22 -0700 (PDT) MIME-Version: 1.0 References: <9df6959bc2f3776eb512b7964a94bd02639e65eb.1537275915.git.yu.c.chen@intel.com> In-Reply-To: <9df6959bc2f3776eb512b7964a94bd02639e65eb.1537275915.git.yu.c.chen@intel.com> From: "Rafael J. Wysocki" Date: Wed, 19 Sep 2018 10:34:11 +0200 Message-ID: Subject: Re: [PATCH 01/12][RFC v3] x86, hibernate: Fix nosave_regions setup for hibernation To: "Chen, Yu C" Cc: Thomas Gleixner , "Rafael J. Wysocki" , "the arch/x86 maintainers" , Linux Kernel Mailing List , Linux PM , Pavel Machek , Len Brown , kookoo.gu@intel.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 19, 2018 at 9:30 AM Chen Yu wrote: > > From: Zhimin Gu > > On 32bit systems, nosave_regions(non RAM areas) located between > max_low_pfn and max_pfn are not excluded from hibernation snapshot > currently, which may result in a machine check exception when > trying to access these unsafe regions during hibernation: > > [ 612.800453] Disabling lock debugging due to kernel taint > [ 612.805786] mce: [Hardware Error]: CPU 0: Machine Check Exception: 5 Bank 6: fe00000000801136 > [ 612.814344] mce: [Hardware Error]: RIP !INEXACT! 60:<00000000d90be566> {swsusp_save+0x436/0x560} > [ 612.823167] mce: [Hardware Error]: TSC 1f5939fe276 ADDR dd000000 MISC 30e0000086 > [ 612.830677] mce: [Hardware Error]: PROCESSOR 0:306c3 TIME 1529487426 SOCKET 0 APIC 0 microcode 24 > [ 612.839581] mce: [Hardware Error]: Run the above through 'mcelog --ascii' > [ 612.846394] mce: [Hardware Error]: Machine check: Processor context corrupt > [ 612.853380] Kernel panic - not syncing: Fatal machine check > [ 612.858978] Kernel Offset: 0x18000000 from 0xc1000000 (relocation range: 0xc0000000-0xf7ffdfff) > > This is because on 32bit systems, pages above max_low_pfn are regarded > as high memeory, and accessing unsafe pages might cause expected MCE. > On the problematic 32bit system, there are reserved memory above low > memory, which triggered the MCE: > > e820 memory mapping: > [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d7ff] usable > [ 0.000000] BIOS-e820: [mem 0x000000000009d800-0x000000000009ffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved > [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000d160cfff] usable > [ 0.000000] BIOS-e820: [mem 0x00000000d160d000-0x00000000d1613fff] ACPI NVS > [ 0.000000] BIOS-e820: [mem 0x00000000d1614000-0x00000000d1a44fff] usable > [ 0.000000] BIOS-e820: [mem 0x00000000d1a45000-0x00000000d1ecffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000d1ed0000-0x00000000d7eeafff] usable > [ 0.000000] BIOS-e820: [mem 0x00000000d7eeb000-0x00000000d7ffffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000d8000000-0x00000000d875ffff] usable > [ 0.000000] BIOS-e820: [mem 0x00000000d8760000-0x00000000d87fffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000d8800000-0x00000000d8fadfff] usable > [ 0.000000] BIOS-e820: [mem 0x00000000d8fae000-0x00000000d8ffffff] ACPI data > [ 0.000000] BIOS-e820: [mem 0x00000000d9000000-0x00000000da71bfff] usable > [ 0.000000] BIOS-e820: [mem 0x00000000da71c000-0x00000000da7fffff] ACPI NVS > [ 0.000000] BIOS-e820: [mem 0x00000000da800000-0x00000000dbb8bfff] usable > [ 0.000000] BIOS-e820: [mem 0x00000000dbb8c000-0x00000000dbffffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000dd000000-0x00000000df1fffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed03fff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved > [ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved > [ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000041edfffff] usable > > Fix this problem by changing pfn limit from max_low_pfn to max_pfn. > This fix does not impact 64bit system because on 64bit max_low_pfn > is the same as max_pfn. > > Acked-by: Pavel Machek > Cc: "Rafael J. Wysocki" > Cc: Thomas Gleixner > Signed-off-by: Zhimin Gu > Signed-off-by: Chen Yu > --- > arch/x86/kernel/setup.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c > index b4866badb235..90ecc108bc8a 100644 > --- a/arch/x86/kernel/setup.c > +++ b/arch/x86/kernel/setup.c > @@ -1251,7 +1251,7 @@ void __init setup_arch(char **cmdline_p) > x86_init.hyper.guest_late_init(); > > e820__reserve_resources(); > - e820__register_nosave_regions(max_low_pfn); > + e820__register_nosave_regions(max_pfn); > > x86_init.resources.reserve_resources(); > > -- Reviewed-by: Rafael J. Wysocki