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 68D05C433EF for ; Fri, 10 Jun 2022 11:21:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C638B6B0137; Fri, 10 Jun 2022 07:21:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BEC6A8D0090; Fri, 10 Jun 2022 07:21:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A8CC18D008F; Fri, 10 Jun 2022 07:21:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 957366B0137 for ; Fri, 10 Jun 2022 07:21:01 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay12.hostedemail.com (Postfix) with ESMTP id 67FD01202D5 for ; Fri, 10 Jun 2022 11:21:01 +0000 (UTC) X-FDA: 79562084322.11.8809FDF Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf28.hostedemail.com (Postfix) with ESMTP id DF3B5C0086 for ; Fri, 10 Jun 2022 11:21:00 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0DC8B620EA for ; Fri, 10 Jun 2022 11:21:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 754E7C3411E for ; Fri, 10 Jun 2022 11:20:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1654860059; bh=xP5iYMV7lF2tEmzcBQ+jmLwPazuiglMxmNPs6b0I0/8=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=WpGddpvWv1wRH7zaLOcFreox7kAsZxznDXf1IJ775RtaTYZd85HBrIgC6GCJU7ySu YN7fHFfU4id+21vDKbwcQbSHhKrvoS42v04G+2Zvn8i2c9QmdXKskN3Sq0s6Hs4vUY kr0CBZgiQU0megrVUCVewzV9GQI/XNCeBP7QsrCS3LfHjX48SulJL+syyFH6zBNIUF GLsC9CTF3VjfoK37lQgLWabmb2x5YoRdlVZbk2B9yyhtsdNuWcsjbFZm6KYaXqTTnw 46qMDgmHAXv0v7eYlxpw2b8yBWGEgrEOCInbmNSKBJsdmrBnqiwXOhKTgMLKR8/2l/ dqP2E2YzOyTFA== Received: by mail-ua1-f54.google.com with SMTP id z15so8958177uad.7 for ; Fri, 10 Jun 2022 04:20:59 -0700 (PDT) X-Gm-Message-State: AOAM531ceIreprQXeVQ9H49ceLhmt2PtJlGxZmXzjF2q8csF5m0ASEiT VEMNphu+F63Ts1Uc5pTQCnMhvWM6KxU+02hne48= X-Google-Smtp-Source: ABdhPJwW7AgFca3wNHZohnSbkTgJQBw/fxL1AiQUUZkoXlebPze1b83w86K0iW12ZT4jzD5smdkaHxw4868lc9szGl4= X-Received: by 2002:a05:6830:9c2:b0:606:1e0a:cc8d with SMTP id y2-20020a05683009c200b006061e0acc8dmr19092482ott.265.1654860048097; Fri, 10 Jun 2022 04:20:48 -0700 (PDT) MIME-Version: 1.0 References: <20220607093805.1354256-1-mawupeng1@huawei.com> <20220607093805.1354256-7-mawupeng1@huawei.com> In-Reply-To: <20220607093805.1354256-7-mawupeng1@huawei.com> From: Ard Biesheuvel Date: Fri, 10 Jun 2022 13:20:34 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 6/6] efi: Disable mirror feature if kernelcore is not specified To: Wupeng Ma Cc: Jonathan Corbet , Will Deacon , Catalin Marinas , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , X86 ML , "H. Peter Anvin" , Darren Hart , Andy Shevchenko , Mike Rapoport , Andrew Morton , Paul Walmsley , Palmer Dabbelt , Albert Ou , "Paul E. McKenney" , Kees Cook , songmuchun@bytedance.com, Randy Dunlap , damien.lemoal@opensource.wdc.com, Stephen Boyd , wei.liu@kernel.org, robin.murphy@arm.com, david@redhat.com, anshuman.khandual@arm.com, thunder.leizhen@huawei.com, wangkefeng.wang@huawei.com, gpiccoli@igalia.com, chenhuacai@kernel.org, Geert Uytterhoeven , chenzhou10@huawei.com, vijayb@linux.microsoft.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org Content-Type: text/plain; charset="UTF-8" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1654860061; a=rsa-sha256; cv=none; b=j62LPtBfOAkh6GKIeRMVkdSUtxrNF1gFC560vXtFQZmehXg3gnalk8G1iKm1p3q4jKKnrL O2be205dz8XAig3iVhJydZwHA15wRzdXMQzWjk8rxrZ1q7XQZ5AxXxnn1zRyVPNzG5Yz4c 9yKLxyyHs2smVYkXxEhuqnfdWdP0tT0= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=WpGddpvW; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of ardb@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=ardb@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1654860061; 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=kjqSdOe0tQYHq29Q+q/Nn1y5nPgVDgZWaNagVOE4AGo=; b=6VUt2Qx9WT4mi9btSEdc+7ysX9AXeEsGLmf8IZYaR516tVZAQHS+W4eXWjERGL+jM5g4XR 9LOcBcSa63J4xNAzZXcB8BHdCEYbpKKkr504Q5Q20RmZKzzf5EoR2SFZNbkGCt4t5Hm8xr f5y0E3SYBuxqXBIHW9vXx+7djIbH0qo= X-Stat-Signature: rnbawyeaioo97ibwh75kjfiz9cj4obtg X-Rspamd-Queue-Id: DF3B5C0086 X-Rspam-User: X-Rspamd-Server: rspam10 Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=WpGddpvW; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of ardb@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=ardb@kernel.org X-HE-Tag: 1654860060-915234 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 Tue, 7 Jun 2022 at 11:16, Wupeng Ma wrote: > > From: Ma Wupeng > > If system have some mirrored memory and mirrored feature is not specified > in boot parameter, the basic mirrored feature will be enabled and this will > lead to the following situations: > > - memblock memory allocation prefers mirrored region. This may have some > unexpected influence on numa affinity. > > - contiguous memory will be split into several parts if parts of them > is mirrored memory via memblock_mark_mirror(). > > To fix this, variable mirrored_kernelcore will be checked before calling > efi_find_mirror() which will enable basic mirrored feature and this > variable is true if kernelcore=mirror is added in the kernel parameters. > > Signed-off-by: Ma Wupeng This seems like the wrong place to do this. If mirrored memory is irrelevant to memblock, it should ignore the attribute. So I think this check belongs in mm/memblock.c instead. > --- > drivers/firmware/efi/efi.c | 3 +++ > include/linux/mm.h | 2 ++ > mm/page_alloc.c | 2 +- > 3 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c > index 79c232e07de7..8a5edcb0dd82 100644 > --- a/drivers/firmware/efi/efi.c > +++ b/drivers/firmware/efi/efi.c > @@ -454,6 +454,9 @@ void __init efi_find_mirror(void) > if (!efi_enabled(EFI_MEMMAP)) > return; > > + if (!mirrored_kernelcore) > + return; > + > for_each_efi_memory_desc(md) { > unsigned long long start = md->phys_addr; > unsigned long long size = md->num_pages << EFI_PAGE_SHIFT; > diff --git a/include/linux/mm.h b/include/linux/mm.h > index bc8f326be0ce..741ac7d022c3 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -2540,6 +2540,8 @@ extern void get_pfn_range_for_nid(unsigned int nid, > unsigned long *start_pfn, unsigned long *end_pfn); > extern unsigned long find_min_pfn_with_active_regions(void); > > +extern bool mirrored_kernelcore; > + > #ifndef CONFIG_NUMA > static inline int early_pfn_to_nid(unsigned long pfn) > { > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index e008a3df0485..cf6f70aba787 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -356,7 +356,7 @@ static unsigned long required_kernelcore_percent __initdata; > static unsigned long required_movablecore __initdata; > static unsigned long required_movablecore_percent __initdata; > static unsigned long zone_movable_pfn[MAX_NUMNODES] __initdata; > -static bool mirrored_kernelcore __meminitdata; > +bool mirrored_kernelcore __meminitdata; > > /* movable_zone is the "real" zone pages in ZONE_MOVABLE are taken from */ > int movable_zone; > -- > 2.25.1 >