From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNDsK-0001qC-CX for kexec@lists.infradead.org; Tue, 29 Sep 2020 11:32:54 +0000 From: Greg Kroah-Hartman Subject: [PATCH 5.4 044/388] x86/kdump: Always reserve the low 1M when the crashkernel option is specified Date: Tue, 29 Sep 2020 12:56:15 +0200 Message-Id: <20200929110012.622682029@linuxfoundation.org> In-Reply-To: <20200929110010.467764689@linuxfoundation.org> References: <20200929110010.467764689@linuxfoundation.org> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: linux-kernel@vger.kernel.org Cc: =?UTF-8?q?J=C3=BCrgen=20Gross?= , Tom Lendacky , Sasha Levin , Lianbo Jiang , bhe@redhat.com, Ingo Molnar , Peter Zijlstra , Greg Kroah-Hartman , x86-ml , kexec@lists.infradead.org, stable@vger.kernel.org, dhowells@redhat.com, horms@verge.net.au, ebiederm@xmission.com, "H. Peter Anvin" , Thomas Gleixner , Borislav Petkov , Dave Young , d.hatayama@fujitsu.com, vgoyal@redhat.com RnJvbTogTGlhbmJvIEppYW5nIDxsaWppYW5nQHJlZGhhdC5jb20+CgpbIFVwc3RyZWFtIGNvbW1p dCA2ZjU5OWQ4NDIzMWZkMjdlNDJmNGNhMmE3ODZhNjY0MWU4Y2RkZjAwIF0KCk9uIHg4NiwgcHVy Z2F0b3J5KCkgY29waWVzIHRoZSBmaXJzdCA2NDBLIG9mIG1lbW9yeSB0byBhIGJhY2t1cCByZWdp b24KYmVjYXVzZSB0aGUga2VybmVsIG5lZWRzIHRob3NlIGZpcnN0IDY0MEsgZm9yIHRoZSByZWFs IG1vZGUgdHJhbXBvbGluZQpkdXJpbmcgYm9vdCwgYW1vbmcgb3RoZXJzLgoKSG93ZXZlciwgd2hl biBTTUUgaXMgZW5hYmxlZCwgdGhlIGtlcm5lbCBjYW5ub3QgcHJvcGVybHkgY29weSB0aGUgb2xk Cm1lbW9yeSB0byB0aGUgYmFja3VwIGFyZWEgYnV0IHJlYWRzIG9ubHkgaXRzIGVuY3J5cHRlZCBj b250ZW50cy4gVGhlCnJlc3VsdCBpcyB0aGF0IHRoZSBjcmFzaCB0b29sIGdldHMgaW52YWxpZCBw b2ludGVycyB3aGVuIHBhcnNpbmcgdm1jb3JlOgoKICBjcmFzaD4ga21lbSAtc3xncmVwIC1pIGlu dmFsaWQKICBrbWVtOiBkbWEta21hbGxvYy01MTI6IHNsYWI6ZmZmZmQ3NzY4MDAwMWMwMCBpbnZh bGlkIGZyZWVwb2ludGVyOmE2MDg2YWMwOTlmMGM1YTQKICBrbWVtOiBkbWEta21hbGxvYy01MTI6 IHNsYWI6ZmZmZmQ3NzY4MDAwMWMwMCBpbnZhbGlkIGZyZWVwb2ludGVyOmE2MDg2YWMwOTlmMGM1 YTQKICBjcmFzaD4KClNvIHJlc2VydmUgdGhlIHJlbWFpbmluZyBsb3cgMU0gbWVtb3J5IHdoZW4g dGhlIGNyYXNoa2VybmVsIG9wdGlvbiBpcwpzcGVjaWZpZWQgKGFmdGVyIHJlc2VydmluZyByZWFs IG1vZGUgbWVtb3J5KSBzbyB0aGF0IGFsbG9jYXRlZCBtZW1vcnkKZG9lcyBub3QgZmFsbCBpbnRv IHRoZSBsb3cgMU0gYXJlYSBhbmQgdGh1cyB0aGUgY29weWluZyBvZiB0aGUgY29udGVudHMKb2Yg dGhlIGZpcnN0IDY0MGsgdG8gYSBiYWNrdXAgcmVnaW9uIGluIHB1cmdhdG9yeSgpIGNhbiBiZSBh dm9pZGVkCmFsdG9nZXRoZXIuCgpUaGlzIHdheSwgaXQgZG9lcyBub3QgbmVlZCB0byBiZSBpbmNs dWRlZCBpbiBjcmFzaCBkdW1wcyBvciB1c2VkIGZvcgphbnl0aGluZyBleGNlcHQgdGhlIHRyYW1w b2xpbmVzIHRoYXQgbXVzdCBsaXZlIGluIHRoZSBsb3cgMU0uCgogWyBicDogSGVhdmlseSByZXdy aXRlIGNvbW1pdCBtZXNzYWdlLCBmbGlwIGNoZWNrIGxvZ2ljIGluCiAgIGNyYXNoX3Jlc2VydmVf bG93XzFNKCkuXQoKU2lnbmVkLW9mZi1ieTogTGlhbmJvIEppYW5nIDxsaWppYW5nQHJlZGhhdC5j b20+ClNpZ25lZC1vZmYtYnk6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ2M6IGJoZUBy ZWRoYXQuY29tCkNjOiBEYXZlIFlvdW5nIDxkeW91bmdAcmVkaGF0LmNvbT4KQ2M6IGQuaGF0YXlh bWFAZnVqaXRzdS5jb20KQ2M6IGRob3dlbGxzQHJlZGhhdC5jb20KQ2M6IGViaWVkZXJtQHhtaXNz aW9uLmNvbQpDYzogaG9ybXNAdmVyZ2UubmV0LmF1CkNjOiAiSC4gUGV0ZXIgQW52aW4iIDxocGFA enl0b3IuY29tPgpDYzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+CkNjOiBKw7xyZ2Vu IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CkNjOiBrZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCkNj OiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CkNjOiBUaG9tYXMgR2xlaXhu ZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IFRvbSBMZW5kYWNreSA8dGhvbWFzLmxlbmRhY2t5 QGFtZC5jb20+CkNjOiB2Z295YWxAcmVkaGF0LmNvbQpDYzogeDg2LW1sIDx4ODZAa2VybmVsLm9y Zz4KTGluazogaHR0cHM6Ly9sa21sLmtlcm5lbC5vcmcvci8yMDE5MTEwODA5MDAyNy4xMTA4Mi0y LWxpamlhbmdAcmVkaGF0LmNvbQpMaW5rOiBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hv d19idWcuY2dpP2lkPTIwNDc5MwpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGFsQGtl cm5lbC5vcmc+Ci0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vY3Jhc2guaCB8ICA2ICsrKysrKwog YXJjaC94ODYva2VybmVsL2NyYXNoLmMgICAgICB8IDE1ICsrKysrKysrKysrKysrKwogYXJjaC94 ODYvcmVhbG1vZGUvaW5pdC5jICAgICB8ICAyICsrCiAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcmFzaC5oIGIvYXJj aC94ODYvaW5jbHVkZS9hc20vY3Jhc2guaAppbmRleCBlZjU2MzhmNjQxZjJiLi44OGVhZGQwOGFk NzA4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcmFzaC5oCisrKyBiL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2NyYXNoLmgKQEAgLTEwLDQgKzEwLDEwIEBAIGludCBjcmFzaF9zZXR1 cF9tZW1tYXBfZW50cmllcyhzdHJ1Y3Qga2ltYWdlICppbWFnZSwKIAkJc3RydWN0IGJvb3RfcGFy YW1zICpwYXJhbXMpOwogdm9pZCBjcmFzaF9zbXBfc2VuZF9zdG9wKHZvaWQpOwogCisjaWZkZWYg Q09ORklHX0tFWEVDX0NPUkUKK3ZvaWQgX19pbml0IGNyYXNoX3Jlc2VydmVfbG93XzFNKHZvaWQp OworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgY3Jhc2hfcmVzZXJ2ZV9sb3dfMU0o dm9pZCkgeyB9CisjZW5kaWYKKwogI2VuZGlmIC8qIF9BU01fWDg2X0NSQVNIX0ggKi8KZGlmZiAt LWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcmFzaC5jIGIvYXJjaC94ODYva2VybmVsL2NyYXNoLmMK aW5kZXggZWI2NTFmYmRlOTJhYy4uZmYyNWEyZWEyNzFjZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYv a2VybmVsL2NyYXNoLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NyYXNoLmMKQEAgLTI0LDYgKzI0 LDcgQEAKICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ CiAjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgorI2luY2x1ZGUgPGxpbnV4L21lbWJsb2NrLmg+ CiAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL2hhcmRpcnEuaD4K QEAgLTM5LDYgKzQwLDcgQEAKICNpbmNsdWRlIDxhc20vdmlydGV4dC5oPgogI2luY2x1ZGUgPGFz bS9pbnRlbF9wdC5oPgogI2luY2x1ZGUgPGFzbS9jcmFzaC5oPgorI2luY2x1ZGUgPGFzbS9jbWRs aW5lLmg+CiAKIC8qIFVzZWQgd2hpbGUgcHJlcGFyaW5nIG1lbW9yeSBtYXAgZW50cmllcyBmb3Ig c2Vjb25kIGtlcm5lbCAqLwogc3RydWN0IGNyYXNoX21lbW1hcF9kYXRhIHsKQEAgLTY4LDYgKzcw LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfY3Jhc2hfdm1jbGVhcl9sb2FkZWRfdm1jc3Mo dm9pZCkKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAorLyoKKyAqIFdoZW4gdGhlIGNyYXNoa2Vy bmVsIG9wdGlvbiBpcyBzcGVjaWZpZWQsIG9ubHkgdXNlIHRoZSBsb3cKKyAqIDFNIGZvciB0aGUg cmVhbCBtb2RlIHRyYW1wb2xpbmUuCisgKi8KK3ZvaWQgX19pbml0IGNyYXNoX3Jlc2VydmVfbG93 XzFNKHZvaWQpCit7CisJaWYgKGNtZGxpbmVfZmluZF9vcHRpb24oYm9vdF9jb21tYW5kX2xpbmUs ICJjcmFzaGtlcm5lbCIsIE5VTEwsIDApIDwgMCkKKwkJcmV0dXJuOworCisJbWVtYmxvY2tfcmVz ZXJ2ZSgwLCAxPDwyMCk7CisJcHJfaW5mbygiUmVzZXJ2aW5nIHRoZSBsb3cgMU0gb2YgbWVtb3J5 IGZvciBjcmFzaGtlcm5lbFxuIik7Cit9CisKICNpZiBkZWZpbmVkKENPTkZJR19TTVApICYmIGRl ZmluZWQoQ09ORklHX1g4Nl9MT0NBTF9BUElDKQogCiBzdGF0aWMgdm9pZCBrZHVtcF9ubWlfY2Fs bGJhY2soaW50IGNwdSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9yZWFsbW9kZS9pbml0LmMgYi9hcmNoL3g4Ni9yZWFsbW9kZS9pbml0LmMKaW5kZXggN2RjZTM5 YzhjMDM0YS4uMjYyZjgzY2FkMzU1MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvcmVhbG1vZGUvaW5p dC5jCisrKyBiL2FyY2gveDg2L3JlYWxtb2RlL2luaXQuYwpAQCAtOCw2ICs4LDcgQEAKICNpbmNs dWRlIDxhc20vcGd0YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9yZWFsbW9kZS5oPgogI2luY2x1ZGUg PGFzbS90bGJmbHVzaC5oPgorI2luY2x1ZGUgPGFzbS9jcmFzaC5oPgogCiBzdHJ1Y3QgcmVhbF9t b2RlX2hlYWRlciAqcmVhbF9tb2RlX2hlYWRlcjsKIHUzMiAqdHJhbXBvbGluZV9jcjRfZmVhdHVy ZXM7CkBAIC0zNCw2ICszNSw3IEBAIHZvaWQgX19pbml0IHJlc2VydmVfcmVhbF9tb2RlKHZvaWQp CiAKIAltZW1ibG9ja19yZXNlcnZlKG1lbSwgc2l6ZSk7CiAJc2V0X3JlYWxfbW9kZV9tZW0obWVt KTsKKwljcmFzaF9yZXNlcnZlX2xvd18xTSgpOwogfQogCiBzdGF0aWMgdm9pZCBfX2luaXQgc2V0 dXBfcmVhbF9tb2RlKHZvaWQpCi0tIAoyLjI1LjEKCgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v a2V4ZWMK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 61CBEC4727F for ; Tue, 29 Sep 2020 12:15:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0B56A2075A for ; Tue, 29 Sep 2020 12:15:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601381756; bh=jwTC5H8TW23aEKAnWNTc27pi/TPAGsWxcsEqs/NdVLg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=CXZM0SN5HXzPBV5ibyujfGgEyOJbIYgAnQ2xkXxHNw/han4s30jVsAUCQGaVqbwN2 LOP/CSI2NH9tMnfeaNGVKjW8EkiIu6OZ9kmC/oetK00blfhoVLGdWdgaUYH9o2/5OA QvOgNRsn1mMuI8yt8V4lNdoH3E//u7uM/dkTlMHI= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732081AbgI2MPy (ORCPT ); Tue, 29 Sep 2020 08:15:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:52840 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730050AbgI2LhB (ORCPT ); Tue, 29 Sep 2020 07:37:01 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0773F23ED0; Tue, 29 Sep 2020 11:32:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601379171; bh=jwTC5H8TW23aEKAnWNTc27pi/TPAGsWxcsEqs/NdVLg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WZi2lU3Xok/n8SNHGTSvqD6ogzkcBmJFOErHNFyCwZ126oNNHSfrnlGO/JHHhffXr jJauDmHsIHzuP4rykhl8aduYNxg42u0rYB4RXp8pAW0aEAeJuncsv+Svh3FwnMs5Dm FtMcV8FLpYZVQjo3J8YRrRa8BJFebWobfXOdhuds= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lianbo Jiang , Borislav Petkov , bhe@redhat.com, Dave Young , d.hatayama@fujitsu.com, dhowells@redhat.com, ebiederm@xmission.com, horms@verge.net.au, "H. Peter Anvin" , Ingo Molnar , =?UTF-8?q?J=C3=BCrgen=20Gross?= , kexec@lists.infradead.org, Peter Zijlstra , Thomas Gleixner , Tom Lendacky , vgoyal@redhat.com, x86-ml , Sasha Levin Subject: [PATCH 5.4 044/388] x86/kdump: Always reserve the low 1M when the crashkernel option is specified Date: Tue, 29 Sep 2020 12:56:15 +0200 Message-Id: <20200929110012.622682029@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200929110010.467764689@linuxfoundation.org> References: <20200929110010.467764689@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lianbo Jiang [ Upstream commit 6f599d84231fd27e42f4ca2a786a6641e8cddf00 ] On x86, purgatory() copies the first 640K of memory to a backup region because the kernel needs those first 640K for the real mode trampoline during boot, among others. However, when SME is enabled, the kernel cannot properly copy the old memory to the backup area but reads only its encrypted contents. The result is that the crash tool gets invalid pointers when parsing vmcore: crash> kmem -s|grep -i invalid kmem: dma-kmalloc-512: slab:ffffd77680001c00 invalid freepointer:a6086ac099f0c5a4 kmem: dma-kmalloc-512: slab:ffffd77680001c00 invalid freepointer:a6086ac099f0c5a4 crash> So reserve the remaining low 1M memory when the crashkernel option is specified (after reserving real mode memory) so that allocated memory does not fall into the low 1M area and thus the copying of the contents of the first 640k to a backup region in purgatory() can be avoided altogether. This way, it does not need to be included in crash dumps or used for anything except the trampolines that must live in the low 1M. [ bp: Heavily rewrite commit message, flip check logic in crash_reserve_low_1M().] Signed-off-by: Lianbo Jiang Signed-off-by: Borislav Petkov Cc: bhe@redhat.com Cc: Dave Young Cc: d.hatayama@fujitsu.com Cc: dhowells@redhat.com Cc: ebiederm@xmission.com Cc: horms@verge.net.au Cc: "H. Peter Anvin" Cc: Ingo Molnar Cc: Jürgen Gross Cc: kexec@lists.infradead.org Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Tom Lendacky Cc: vgoyal@redhat.com Cc: x86-ml Link: https://lkml.kernel.org/r/20191108090027.11082-2-lijiang@redhat.com Link: https://bugzilla.kernel.org/show_bug.cgi?id=204793 Signed-off-by: Sasha Levin --- arch/x86/include/asm/crash.h | 6 ++++++ arch/x86/kernel/crash.c | 15 +++++++++++++++ arch/x86/realmode/init.c | 2 ++ 3 files changed, 23 insertions(+) diff --git a/arch/x86/include/asm/crash.h b/arch/x86/include/asm/crash.h index ef5638f641f2b..88eadd08ad708 100644 --- a/arch/x86/include/asm/crash.h +++ b/arch/x86/include/asm/crash.h @@ -10,4 +10,10 @@ int crash_setup_memmap_entries(struct kimage *image, struct boot_params *params); void crash_smp_send_stop(void); +#ifdef CONFIG_KEXEC_CORE +void __init crash_reserve_low_1M(void); +#else +static inline void __init crash_reserve_low_1M(void) { } +#endif + #endif /* _ASM_X86_CRASH_H */ diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c index eb651fbde92ac..ff25a2ea271cf 100644 --- a/arch/x86/kernel/crash.c +++ b/arch/x86/kernel/crash.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -39,6 +40,7 @@ #include #include #include +#include /* Used while preparing memory map entries for second kernel */ struct crash_memmap_data { @@ -68,6 +70,19 @@ static inline void cpu_crash_vmclear_loaded_vmcss(void) rcu_read_unlock(); } +/* + * When the crashkernel option is specified, only use the low + * 1M for the real mode trampoline. + */ +void __init crash_reserve_low_1M(void) +{ + if (cmdline_find_option(boot_command_line, "crashkernel", NULL, 0) < 0) + return; + + memblock_reserve(0, 1<<20); + pr_info("Reserving the low 1M of memory for crashkernel\n"); +} + #if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC) static void kdump_nmi_callback(int cpu, struct pt_regs *regs) diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c index 7dce39c8c034a..262f83cad3551 100644 --- a/arch/x86/realmode/init.c +++ b/arch/x86/realmode/init.c @@ -8,6 +8,7 @@ #include #include #include +#include struct real_mode_header *real_mode_header; u32 *trampoline_cr4_features; @@ -34,6 +35,7 @@ void __init reserve_real_mode(void) memblock_reserve(mem, size); set_real_mode_mem(mem); + crash_reserve_low_1M(); } static void __init setup_real_mode(void) -- 2.25.1