All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wupeng Ma <mawupeng1@huawei.com>
To: <corbet@lwn.net>, <will@kernel.org>, <ardb@kernel.org>,
	<catalin.marinas@arm.com>
Cc: <tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>,
	<dave.hansen@linux.intel.com>, <x86@kernel.org>, <hpa@zytor.com>,
	<dvhart@infradead.org>, <andy@infradead.org>, <rppt@kernel.org>,
	<akpm@linux-foundation.org>, <paul.walmsley@sifive.com>,
	<palmer@dabbelt.com>, <aou@eecs.berkeley.edu>,
	<paulmck@kernel.org>, <keescook@chromium.org>,
	<songmuchun@bytedance.com>, <rdunlap@infradead.org>,
	<damien.lemoal@opensource.wdc.com>, <swboyd@chromium.org>,
	<wei.liu@kernel.org>, <robin.murphy@arm.com>, <david@redhat.com>,
	<mawupeng1@huawei.com>, <anshuman.khandual@arm.com>,
	<thunder.leizhen@huawei.com>, <wangkefeng.wang@huawei.com>,
	<gpiccoli@igalia.com>, <chenhuacai@kernel.org>,
	<geert@linux-m68k.org>, <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>
Subject: [PATCH v3 6/6] efi: Disable mirror feature if kernelcore is not specified
Date: Tue, 7 Jun 2022 17:38:05 +0800	[thread overview]
Message-ID: <20220607093805.1354256-7-mawupeng1@huawei.com> (raw)
In-Reply-To: <20220607093805.1354256-1-mawupeng1@huawei.com>

From: Ma Wupeng <mawupeng1@huawei.com>

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 <mawupeng1@huawei.com>
---
 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


WARNING: multiple messages have this Message-ID (diff)
From: Wupeng Ma <mawupeng1@huawei.com>
To: <corbet@lwn.net>, <will@kernel.org>, <ardb@kernel.org>,
	<catalin.marinas@arm.com>
Cc: <tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>,
	<dave.hansen@linux.intel.com>, <x86@kernel.org>, <hpa@zytor.com>,
	<dvhart@infradead.org>, <andy@infradead.org>, <rppt@kernel.org>,
	<akpm@linux-foundation.org>, <paul.walmsley@sifive.com>,
	<palmer@dabbelt.com>, <aou@eecs.berkeley.edu>,
	<paulmck@kernel.org>, <keescook@chromium.org>,
	<songmuchun@bytedance.com>, <rdunlap@infradead.org>,
	<damien.lemoal@opensource.wdc.com>, <swboyd@chromium.org>,
	<wei.liu@kernel.org>, <robin.murphy@arm.com>, <david@redhat.com>,
	<mawupeng1@huawei.com>, <anshuman.khandual@arm.com>,
	<thunder.leizhen@huawei.com>, <wangkefeng.wang@huawei.com>,
	<gpiccoli@igalia.com>, <chenhuacai@kernel.org>,
	<geert@linux-m68k.org>, <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>
Subject: [PATCH v3 6/6] efi: Disable mirror feature if kernelcore is not specified
Date: Tue, 7 Jun 2022 17:38:05 +0800	[thread overview]
Message-ID: <20220607093805.1354256-7-mawupeng1@huawei.com> (raw)
In-Reply-To: <20220607093805.1354256-1-mawupeng1@huawei.com>

From: Ma Wupeng <mawupeng1@huawei.com>

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 <mawupeng1@huawei.com>
---
 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


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Wupeng Ma <mawupeng1@huawei.com>
To: <corbet@lwn.net>, <will@kernel.org>, <ardb@kernel.org>,
	<catalin.marinas@arm.com>
Cc: <tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>,
	<dave.hansen@linux.intel.com>, <x86@kernel.org>, <hpa@zytor.com>,
	<dvhart@infradead.org>, <andy@infradead.org>, <rppt@kernel.org>,
	<akpm@linux-foundation.org>, <paul.walmsley@sifive.com>,
	<palmer@dabbelt.com>, <aou@eecs.berkeley.edu>,
	<paulmck@kernel.org>, <keescook@chromium.org>,
	<songmuchun@bytedance.com>, <rdunlap@infradead.org>,
	<damien.lemoal@opensource.wdc.com>, <swboyd@chromium.org>,
	<wei.liu@kernel.org>, <robin.murphy@arm.com>, <david@redhat.com>,
	<mawupeng1@huawei.com>, <anshuman.khandual@arm.com>,
	<thunder.leizhen@huawei.com>, <wangkefeng.wang@huawei.com>,
	<gpiccoli@igalia.com>, <chenhuacai@kernel.org>,
	<geert@linux-m68k.org>, <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>
Subject: [PATCH v3 6/6] efi: Disable mirror feature if kernelcore is not specified
Date: Tue, 7 Jun 2022 17:38:05 +0800	[thread overview]
Message-ID: <20220607093805.1354256-7-mawupeng1@huawei.com> (raw)
In-Reply-To: <20220607093805.1354256-1-mawupeng1@huawei.com>

From: Ma Wupeng <mawupeng1@huawei.com>

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 <mawupeng1@huawei.com>
---
 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


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-06-07  9:17 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-07  9:37 [PATCH v3 0/6] introduce mirrored memory support for arm64 Wupeng Ma
2022-06-07  9:37 ` Wupeng Ma
2022-06-07  9:37 ` Wupeng Ma
2022-06-07  9:38 ` [PATCH v3 1/6] efi: Make efi_find_mirror() public Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-10  9:22   ` Kefeng Wang
2022-06-10  9:22     ` Kefeng Wang
2022-06-10  9:22     ` Kefeng Wang
2022-06-07  9:38 ` [PATCH v3 2/6] arm64/mirror: arm64 enabling - find mirrored memory ranges Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-10  9:27   ` Kefeng Wang
2022-06-10  9:27     ` Kefeng Wang
2022-06-10  9:27     ` Kefeng Wang
2022-06-10  9:34     ` Ard Biesheuvel
2022-06-10  9:34       ` Ard Biesheuvel
2022-06-10  9:34       ` Ard Biesheuvel
2022-06-10 10:24       ` Kefeng Wang
2022-06-10 10:24         ` Kefeng Wang
2022-06-10 10:24         ` Kefeng Wang
2022-06-10 11:17         ` Ard Biesheuvel
2022-06-10 11:17           ` Ard Biesheuvel
2022-06-10 11:17           ` Ard Biesheuvel
2022-06-07  9:38 ` [PATCH v3 3/6] mm: Ratelimited mirrored memory related warning messages Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07 12:24   ` David Hildenbrand
2022-06-07 12:24     ` David Hildenbrand
2022-06-07 12:24     ` David Hildenbrand
2022-06-08  9:44   ` Mike Rapoport
2022-06-08  9:44     ` Mike Rapoport
2022-06-08  9:44     ` Mike Rapoport
2022-06-08 10:02   ` Anshuman Khandual
2022-06-08 10:02     ` Anshuman Khandual
2022-06-08 10:02     ` Anshuman Khandual
2022-06-10  9:29   ` Kefeng Wang
2022-06-10  9:29     ` Kefeng Wang
2022-06-10  9:29     ` Kefeng Wang
2022-06-07  9:38 ` [PATCH v3 4/6] mm: Demote warning message in vmemmap_verify() to debug level Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07 12:25   ` David Hildenbrand
2022-06-07 12:25     ` David Hildenbrand
2022-06-07 12:25     ` David Hildenbrand
2022-06-08  1:26     ` mawupeng
2022-06-08  1:26       ` mawupeng
2022-06-08  1:26       ` mawupeng
2022-06-08 10:00       ` Anshuman Khandual
2022-06-08 10:00         ` Anshuman Khandual
2022-06-08 10:00         ` Anshuman Khandual
2022-06-09  8:13         ` mawupeng
2022-06-09  8:13           ` mawupeng
2022-06-09  8:13           ` mawupeng
2022-06-10  9:35           ` Kefeng Wang
2022-06-10  9:35             ` Kefeng Wang
2022-06-10  9:35             ` Kefeng Wang
2022-06-07  9:38 ` [PATCH v3 5/6] mm: Add mirror flag back on initrd memory Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07 12:21   ` David Hildenbrand
2022-06-07 12:21     ` David Hildenbrand
2022-06-07 12:21     ` David Hildenbrand
2022-06-07 14:49     ` Ard Biesheuvel
2022-06-07 14:49       ` Ard Biesheuvel
2022-06-07 14:49       ` Ard Biesheuvel
2022-06-08  7:27       ` mawupeng
2022-06-08  7:27         ` mawupeng
2022-06-08  7:27         ` mawupeng
2022-06-08 10:02         ` Mike Rapoport
2022-06-08 10:02           ` Mike Rapoport
2022-06-08 10:02           ` Mike Rapoport
2022-06-08 10:08           ` David Hildenbrand
2022-06-08 10:08             ` David Hildenbrand
2022-06-08 10:08             ` David Hildenbrand
2022-06-08 10:12             ` Ard Biesheuvel
2022-06-08 10:12               ` Ard Biesheuvel
2022-06-08 10:12               ` Ard Biesheuvel
2022-06-09  8:15               ` mawupeng
2022-06-09  8:15                 ` mawupeng
2022-06-09  8:15                 ` mawupeng
2022-06-10 11:06                 ` Ard Biesheuvel
2022-06-10 11:06                   ` Ard Biesheuvel
2022-06-10 11:06                   ` Ard Biesheuvel
2022-06-07  9:38 ` Wupeng Ma [this message]
2022-06-07  9:38   ` [PATCH v3 6/6] efi: Disable mirror feature if kernelcore is not specified Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-10 11:20   ` Ard Biesheuvel
2022-06-10 11:20     ` Ard Biesheuvel
2022-06-10 11:20     ` Ard Biesheuvel
2022-06-10 12:15     ` Kefeng Wang
2022-06-10 12:15       ` Kefeng Wang
2022-06-10 12:15       ` Kefeng Wang
2022-06-10 11:23 ` [PATCH v3 0/6] introduce mirrored memory support for arm64 Ard Biesheuvel
2022-06-10 11:23   ` Ard Biesheuvel
2022-06-10 11:23   ` Ard Biesheuvel
2022-06-10 11:24   ` Ard Biesheuvel
2022-06-10 11:24     ` Ard Biesheuvel
2022-06-10 11:24     ` Ard Biesheuvel
2022-06-11  9:56   ` Mike Rapoport
2022-06-11  9:56     ` Mike Rapoport
2022-06-11  9:56     ` Mike Rapoport

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220607093805.1354256-7-mawupeng1@huawei.com \
    --to=mawupeng1@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=andy@infradead.org \
    --cc=anshuman.khandual@arm.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=ardb@kernel.org \
    --cc=bp@alien8.de \
    --cc=catalin.marinas@arm.com \
    --cc=chenhuacai@kernel.org \
    --cc=chenzhou10@huawei.com \
    --cc=corbet@lwn.net \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=dvhart@infradead.org \
    --cc=geert@linux-m68k.org \
    --cc=gpiccoli@igalia.com \
    --cc=hpa@zytor.com \
    --cc=keescook@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=mingo@redhat.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=paulmck@kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=robin.murphy@arm.com \
    --cc=rppt@kernel.org \
    --cc=songmuchun@bytedance.com \
    --cc=swboyd@chromium.org \
    --cc=tglx@linutronix.de \
    --cc=thunder.leizhen@huawei.com \
    --cc=vijayb@linux.microsoft.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.