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 3692BC001DF for ; Thu, 3 Aug 2023 17:54:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5B1FC28028A; Thu, 3 Aug 2023 13:54:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 561E128022C; Thu, 3 Aug 2023 13:54:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 429EA28028A; Thu, 3 Aug 2023 13:54:01 -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 2F8B328022C for ; Thu, 3 Aug 2023 13:54:01 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id F08EC40374 for ; Thu, 3 Aug 2023 17:54:00 +0000 (UTC) X-FDA: 81083541840.07.F0309F2 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf26.hostedemail.com (Postfix) with ESMTP id E67C6140007 for ; Thu, 3 Aug 2023 17:53:58 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=QWmQ8KMJ; spf=pass (imf26.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691085239; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=CaoLnTszP8UGfHzagtTd3LUvUZJW0g7jrnqY7BW7xhA=; b=ojafvoP4tHeFnSai/VMxZyUOwpQ0EhBp2O0f3/HSiPjWFBDXcdoPi5gNqFet4EHfEJChPL tQbflN5v6c05wRCSamIASVoV46krupD7w0y1uzx6aPDzP1gTtychje4PBpD8sjnynmul6d fMLJFZKZLJYEy2++v0TnfuaOxIKXwNs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691085239; a=rsa-sha256; cv=none; b=37yz+nwN3v8oxTNdbZqc4oRxeTjOzKsheN1P0JfCkeV26vZ1v8xqRK8NDI1Og+8nqJoJ7l kx18nBlt2frnNOQcOgtwbJ9OcF1PzOZKIYQ5JhZ0CmSxDH0/oKN2ODqUNyZxckiqsdcinW Hd0k75ll9JECodDCK0H2RTuPPdfDZX8= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=QWmQ8KMJ; spf=pass (imf26.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none 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 15AE961E59; Thu, 3 Aug 2023 17:53:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 383B4C433C8; Thu, 3 Aug 2023 17:53:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1691085237; bh=qjp/n6ArJ3K8RPW52tzehwrX0JUscAMN5jceVN43+6c=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=QWmQ8KMJ2rrpgazWbM0zE98Zx3Qdh3lMc5rRwsFVD3wclRhNX3ni6gq62h44gX0sN uwGZTx9QZnpXm37eNdWpF42KePsMXaglTe6cI//4LYfu89Su0ycHF4aCX+0QUxktjw 0XwQ2GI1DVeNDsLntspDvJommXIH+P1UyKmLBWhs= Date: Thu, 3 Aug 2023 10:53:56 -0700 From: Andrew Morton To: Wupeng Ma Cc: , , , Levi Yun Subject: Re: [PATCH v2] mm: disable kernelcore=mirror when no mirror memory Message-Id: <20230803105356.f85d6281ffcae68c2d23927a@linux-foundation.org> In-Reply-To: <20230802072328.2107981-1-mawupeng1@huawei.com> References: <20230802072328.2107981-1-mawupeng1@huawei.com> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Stat-Signature: oz19m8xg78su341oeasni96pt87kktra X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: E67C6140007 X-Rspam-User: X-HE-Tag: 1691085238-170085 X-HE-Meta: U2FsdGVkX1/tL8gBfMnib+tVfHBVOC4XgUbwDP74MfUEiJBpzehdf3PtsG4+0uXO4z993/LU10iyf6Lk8IUJF4oJsFeKMKOc93YFcWSwY/mRqFQ/lQ1ouEhaSLD0V+lbKPakdKy8sDWlzlxwBAtG3/bKHuaUcE3OCabbmteUh1IUFAyN2ret5d4SEB+ZLDoNVnngn9UmvSjobWFGNhymkOpoXjlEnzF0NNgTYXP7sg1ounP80xWDCAxW0Ak8A5VkU+RrOnshO5+zbCbtjFnK0c0/pMSVi40a9JxGGrfJmhi4BMkIAl9J/IjSpypl8/4PABChvKjx3RWqgf2GbSRC5DNNTAS8+YVlW/POCpjaEFHYlacuacCgHNiIzZbeiizvRThr9vS36LrHk+4SjnVWgrccQxK0/zfj7HPv0zYrMMLwBwHMrygy9pGo1aet05nK7IIF/TRiSGfuG1wtsM0+NxK/ivoCRk/G7lIXfPHfeUVmmMRoVHb25npBjbxI4BIJKkf/UMLDUHoY3UKRL59Bs9QD9fgUNNv3/O3wmM1dRIzsPLmsewYZMiOSLd2xC8GLSU9LSWCoEMzlIiOy8ligA88sMN6feXWPhbZKDCJzaprREBF1LyizRB5F+BpmcSZPGUUmFZfJrTYecGJQtZVZBGY9Q4KWAI1WVKcmQ9f3Lx9Hpm1iqTGdn/gfMFN9iXbaguGgpml4nwZkRzFRhdgC4S+lDw9R+TIRbPv+KQ7+ma/1tA3TqjPsOx/T1YahCrwi1viT3sY5JPJJN3zLtkXnC32vcaoPLo+4oohGEm5c/w450kdE5hnVNlY45eeArO0wszustLORpllRo02wrBum06tD9UhhduTgtzzMZSyHNkKwifVN5KTRe8L+LC0c8Ux5oMM5nD4UvZpMXTS/iNgdlhJfh5opva3vLhldr4RcYRI+W4gHbpl/mBFs1bd/YMjrpvFFYj7Qf5lYt/2CXJ+ evab7vZt UpeMnDHpVTgX4QwmMBGkRJiXpuoRaq3FAfA9LaHm4zi9jJsWjyqvlCnQeZyuE/teCjsIbpjYQbF7CdRTuY2HaaTQVQiIL3mfvV0e9tDdiD8Nhd/d/IkT2Q095y6BVBkBilwtPs9sigprbw33QWU8TMXtS6lY7G+cjWTD16ZpKx/R6tnQW6aF+5sAhiguxetTibfTSEKrDFIEyl8t38882zB5gpJXgdIAbHpEWIy7aHxuS+bsmWl0Hzsz4ErgQ1ES7A9FP4/AI+SvwDT6VabMz9CoKbGfbTlf2iUMf5ilufuwU7KzZJK7yEfdyF8imSqJrwjf6tzmQ3W/b6uAJM+cxtrqXhROLYDP6Qdb3Lobu7BRoxs3vT7BrbNOExBk5VMUVgizXzCd7Sm8nYtgvaadbtk8Qv2SIk2mg99S7HvLwwXc6/T6fkt9ZzrFVjg== 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, 2 Aug 2023 15:23:28 +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. > > ... > > 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; I've already queued Levi's "mm/mm_init: ignore kernelcore=mirror boot option when no mirror memory presents." (https://lkml.kernel.org/r/20230802183614.15520-1-ppbuk5246@gmail.com) The main difference appears to be that Levi's patch zeroes out zone_movable_pfn. Please let's check each other's work and decide how to proceed?