Received: by 2002:a5d:925a:0:0:0:0:0 with SMTP id e26csp1324837iol; Fri, 10 Jun 2022 05:20:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXMb6WjVcNj0H7RgYj5S/6a2SAL7L1YctglUQmv3lKNKKaRBD5OO8mu/Dwrj1CE9/ps2U0 X-Received: by 2002:a63:504:0:b0:3fc:607b:9750 with SMTP id 4-20020a630504000000b003fc607b9750mr39791820pgf.604.1654863619172; Fri, 10 Jun 2022 05:20:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654863619; cv=none; d=google.com; s=arc-20160816; b=Z+XqsJwWfWutS1KEzIhzWQMCEZn9U2kNRLgF8lQsPjWArKjLKXsEOYkNhlIuyvDWIm CbJNfcQ3bTh2ErFtxd8DmtivUZiqDBv7SUEr3dYc/N9GLxXEUH4uTqlp9+tdmK17L/uU gIyXWswee2asr/5OtDw/IofuSnzuYipT34wLt7Vf8yBxu9s9tLKDusGftwiU+MtJwf5Y ktZT3CWMgepYXnkTWtSuQPuFriBwlb/QsgRonT58H3R9iuOap4GOf5lJ1mua5Iy1piNr Rz7NZOovVEf23dPOd/NqUZzrbQlN1A2uyChCnrRibYZRE4FCOIQr6DHDs5VRGwsBX6Yk /pFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=TynXZrf0K1Jxvfz8HadN5vHcpW0/BLw1FohNRslM8WQ=; b=Ql7k55zqPPkmLU6KglRaqK1WJ8aGknxoC/nFMvxt47j/vkxa//myi9wsJKXnk9SiGA +JXrvZ44ku2dsY64Oby6pPe2dEucm0K2yCSGbHim1UO5HN/Br8340+MklXnh24/1mLN5 gQa7rjTHQZuH7cDmeo7IiJGjI94WaLQ+aVDJ43PM8QoaOpzgsGQAtgvQuE7xTpVYZSGj rlPKP9mqd6Prr+2bavGje74jXTNKoqca6wvTh/XvWNYU5JE3F6Q4jU5BI6JsY0Dk91Sw /+1sR08v/XK5a8ZClH2E0tApiG+hFe63nAny4dk8S4stHLlxr78ThgxPVwNH7MIO2LSH Y4VA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q80-20020a632a53000000b003fd157f7e9dsi30717270pgq.857.2022.06.10.05.20.05; Fri, 10 Jun 2022 05:20:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348217AbiFJMP1 (ORCPT + 99 others); Fri, 10 Jun 2022 08:15:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242459AbiFJMP0 (ORCPT ); Fri, 10 Jun 2022 08:15:26 -0400 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3948622DB65; Fri, 10 Jun 2022 05:15:21 -0700 (PDT) Received: from dggpemm500023.china.huawei.com (unknown [172.30.72.53]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4LKKcR3XT9zgYbl; Fri, 10 Jun 2022 20:13:27 +0800 (CST) Received: from dggpemm500001.china.huawei.com (7.185.36.107) by dggpemm500023.china.huawei.com (7.185.36.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Fri, 10 Jun 2022 20:15:19 +0800 Received: from [10.174.177.243] (10.174.177.243) by dggpemm500001.china.huawei.com (7.185.36.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Fri, 10 Jun 2022 20:15:17 +0800 Message-ID: <70bd99eb-a05d-adb0-5cb8-84dcc66b674e@huawei.com> Date: Fri, 10 Jun 2022 20:15:17 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [PATCH v3 6/6] efi: Disable mirror feature if kernelcore is not specified Content-Language: en-US To: Ard Biesheuvel , 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 , , Randy Dunlap , , Stephen Boyd , , , , , , , , Geert Uytterhoeven , , , , , , , , , References: <20220607093805.1354256-1-mawupeng1@huawei.com> <20220607093805.1354256-7-mawupeng1@huawei.com> From: Kefeng Wang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpemm500001.china.huawei.com (7.185.36.107) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022/6/10 19:20, Ard Biesheuvel wrote: > 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. Sound good,  let's add check into memblock_mark_mirror() and retain the efi memory mirror information printing. > > >> --- >> 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 >> > .