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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3A044C001E0 for ; Wed, 2 Aug 2023 18:44:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CA0962801D9; Wed, 2 Aug 2023 14:44:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C4F4A2801AA; Wed, 2 Aug 2023 14:44:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B162E2801D9; Wed, 2 Aug 2023 14:44:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9EEFD2801AA for ; Wed, 2 Aug 2023 14:44:51 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 50F6EC06A8 for ; Wed, 2 Aug 2023 18:44:51 +0000 (UTC) X-FDA: 81080041182.10.10243D6 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf09.hostedemail.com (Postfix) with ESMTP id 9B59A140014 for ; Wed, 2 Aug 2023 18:44:49 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=QnAoxheE; spf=pass (imf09.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691001889; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VlYBJkHIWvwazTYEB2jz03nBcar9VRo+0B2fqwEbp/0=; b=4tPPpE4fmUzqN2WjM/CxXJU/5NhQJoBNShpjavCx/0cay20Q39fAEVrs5oug4idxifOoDQ aBVFzW++pwThQo2kJBQcGqJeScxs1GSXmmuBoJsj6Vi2i31uw9yV7kdMXe+TU8JHB3399G NwmiLhFKKbjKqNFpWnT78Pp52ed9vHA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691001889; a=rsa-sha256; cv=none; b=le4qum1TzIBJTamY7eI3MJ/acsIYHrZwgpOTLtsyZ3p0tJzYXbK6kFMflPc6q6T0a0nYEW gC6C8jOzfc+d1ob3wrmMYhzBj7f7WT4Mc74VbYI0JCNnhWhydfFvzE2xq5+JvX++AguJFa Hliy5QzK1C+mV6S+VAGQ9ojBvzDllXc= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=QnAoxheE; spf=pass (imf09.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id AB8B161A73; Wed, 2 Aug 2023 18:44:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCE1DC433C8; Wed, 2 Aug 2023 18:44:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691001888; bh=+TMv0SFBM2xe5D8c+2/PTEHFIBCnWxJasffEN8HAYBY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QnAoxheEJO1Q/IMb1LCgBWKcE/m6XPYEud9kXZSo+AEYkIG3bUbKqqo4BLEnHwrXo M89UFpQftKqhDDIOZPRm07ofYZd9GKvG98OA6Huj2eXkUhTjBaJ43I0xq/CdB1buPP /FbOFrzB2WQu8advWd8C3KzwO7g8MuuDxMMCd27xx1kFxvq16c7DPCqbyJt7lcQlYd LeBWACoApxzsmouhRnv9TJEGrFIAJ7TFT8lIeTBrWthqr/23hKyvmynOz1Bz5zH80A CNLovOGlmE0xGk8Ng/sv36eKWjQBkKyMafO+F62WwzHGV3TxjX5daBovkWVqEfe8A3 SEfa7sQqvZOHg== Date: Wed, 2 Aug 2023 21:44:03 +0300 From: Mike Rapoport To: Wupeng Ma Cc: akpm@linux-foundation.org, wangkefeng.wang@huawei.com, linux-mm@kvack.org Subject: Re: [PATCH v2] mm: disable kernelcore=mirror when no mirror memory Message-ID: <20230802184403.GG2607694@kernel.org> References: <20230802072328.2107981-1-mawupeng1@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230802072328.2107981-1-mawupeng1@huawei.com> X-Rspamd-Queue-Id: 9B59A140014 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: haqbbaqbg8jpyeuaoqqii5ktrfyeun1o X-HE-Tag: 1691001889-979911 X-HE-Meta: U2FsdGVkX18l907xYVLEz8CZOCrSbKMABePJc74Jl21I+AaPiHekwajX5lpaqtIzc97NFPvQ1SNXPmngk+JPmqCEI+ZeTQua5BOq7F47dFssavGMHTT9ptRwrTpJ0Y5t7kNGlK1ZNxLuPG7Edz1BR1/9H5CoTTIGlThVgNYXWK53bFoPInf5iyiMfbkBV4U8kaqqRorrKaU8SXyu3QQD+y51huugZVYH4SMzFn18UeUw2HhjmkVR8sPT+YJoLeazTbaFZ4AO1w+rZZaQC6XSWQ/1hzsg0MYx4mXqDHqtrEVXvCAmer2nH3LsXZhsNaq6N+wSi/VPb6TwGecx5XRHZh85q+9lmksg74mBPG18QFe8G+6qFWWIX44hLhcOnByVCBnzumEqPcolNzY0p0LyD6ZNiMptID8g8dQQilH4u1MSrij9WJEjbtceXQXCRl1H9htaXWJDksmeK2oexEdelho1Fhg2tHdyNedLURInv3/LXZjDiU6U8nh7MOpfWrE8MfnKMhZ732tUZixgQmoMaiTBvGbyvtMTbXan9UX0SPm9kXBrViIajqwoCi5ESLZzgQOik1xlWrjwKUD71bxfvP34bBGOsT5eoMamUdAk42U0bI9LoelTtkD+5x1F/aLi/yWNKBJlLU8opm76mNKEtfqoQgCIMH4MekuagfL+0NwslkgobXXBCkArh+qXRNbp9oGYkdAE1sLUtYE+qP0y4w2ogGLhrFytRgvDlyvVcbEWbHdDIV6slgF3yK/p+tFKIoXOaWwJhYCLsiBzE8fDVspfvosnEZJZZgFJGi8zIyX515zeSQo3kfK8WELQk9OUqqURAoucgD/iiNTTEijlTolALTsKqav9UIaL6+f1RqpxTHf7X6PR8Yfx8HcbuMppOvmBGFVVI+UtlZFvX8Ch8m/AK7zOfZRO5VrPCv0bufpex9fvtV3TaGciZ/XIgaM352eZ272s4iYlpg3O/1Z dFRdzDhF pwoYriqsKHcevhPyv1lvUPyJV5KOQsd0Rz/CL8vZ9zzqFDwNGVU1LBbUaYzXF1EfY0pQf4cwWLkrYL30ymdXYil2PxG5W5Z6XcyinkVJDSxF3zG7373eWq4Fimm0OBFzZjDt0tUsM3cV3J3pWnzFKKDItPwATrim4VvSfoD09H8eJLHe7pPDHqrOL+ilJT0hK46gNX/0jHVb2hQ0LR/5/2RaZHnJa88AfXZKBnT8bcjOiJfMAsiQjeBW5yATHxEVrEPLB1iJpOgSzZdk59KhvWWUUM+77gsVeh349OFaVKyI1GJqXOuFJDyZN2Yx0nPyucWS/pwZ72vy2lxrYzB7LqbdRt8QcFEWu16xlNyRc0wBmqqEKXthavjr1pQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Aug 02, 2023 at 03:23:28PM +0800, Wupeng Ma wrote: > From: Ma Wupeng > > For system with kernelcore=mirror enabled while no mirrored memory is > reported by efi. This could lead to kernel OOM during startup since > all memory beside zone DMA are in the movable zone and this prevents > the kernel to use it. > > Zone DMA/DMA32 initialization is independent of mirrored memory and > their max pfn is set in zone_sizes_init(). Since kernel can fallback > to zone DMA/DMA32 if there is no memory in zone Normal, these zones > are seen as mirrored memory no mather their memory attributes are. > > To solve this problem, disable kernelcore=mirror when there is no real > mirrored memory exists. > > Suggested-by: Kefeng Wang > Suggested-by: Mike Rapoport > Signed-off-by: Ma Wupeng Reviewed-by: Mike Rapoport (IBM) > --- > mm/internal.h | 1 + > mm/memblock.c | 5 +++++ > mm/mm_init.c | 5 +++++ > 3 files changed, 11 insertions(+) > > diff --git a/mm/internal.h b/mm/internal.h > index a7d9e980429a..b8aaf9cac87e 100644 > --- a/mm/internal.h > +++ b/mm/internal.h > @@ -1005,6 +1005,7 @@ static inline bool gup_must_unshare(struct vm_area_struct *vma, > } > > extern bool mirrored_kernelcore; > +extern bool memblock_has_mirror(void); > > static inline bool vma_soft_dirty_enabled(struct vm_area_struct *vma) > { > diff --git a/mm/memblock.c b/mm/memblock.c > index f9e61e565a53..913b2520a9a0 100644 > --- a/mm/memblock.c > +++ b/mm/memblock.c > @@ -161,6 +161,11 @@ static int memblock_can_resize __initdata_memblock; > static int memblock_memory_in_slab __initdata_memblock; > static int memblock_reserved_in_slab __initdata_memblock; > > +bool __init_memblock memblock_has_mirror(void) > +{ > + return system_has_some_mirror; > +} > + > static enum memblock_flags __init_memblock choose_memblock_flags(void) > { > return system_has_some_mirror ? MEMBLOCK_MIRROR : MEMBLOCK_NONE; > diff --git a/mm/mm_init.c b/mm/mm_init.c > index a1963c3322af..e8af1b628430 100644 > --- a/mm/mm_init.c > +++ b/mm/mm_init.c > @@ -377,6 +377,11 @@ static void __init find_zone_movable_pfns_for_nodes(void) > if (mirrored_kernelcore) { > bool mem_below_4gb_not_mirrored = false; > > + if (!memblock_has_mirror()) { > + pr_warn("The system has no mirror memory, ignore kernelcore=mirror.\n"); > + goto out; > + } > + > for_each_mem_region(r) { > if (memblock_is_mirror(r)) > continue; > -- > 2.25.1 > -- Sincerely yours, Mike.