All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen Zhou <chenzhou10@huawei.com>
To: <catalin.marinas@arm.com>, <will@kernel.org>,
	<james.morse@arm.com>, <tglx@linutronix.de>, <mingo@redhat.com>,
	<dyoung@redhat.com>, <bhe@redhat.com>, <corbet@lwn.net>,
	<John.P.donnelly@oracle.com>, <prabhakar.pkin@gmail.com>,
	<bhsharma@redhat.com>
Cc: <horms@verge.net.au>, <robh+dt@kernel.org>, <arnd@arndb.de>,
	<nsaenzjulienne@suse.de>, <linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <kexec@lists.infradead.org>,
	<linux-doc@vger.kernel.org>, <guohanjun@huawei.com>,
	<xiexiuqi@huawei.com>, <huawei.libin@huawei.com>,
	<wangkefeng.wang@huawei.com>, <chenzhou10@huawei.com>
Subject: [PATCH v12 7/9] kdump: add threshold for the required memory
Date: Mon, 7 Sep 2020 21:47:43 +0800	[thread overview]
Message-ID: <20200907134745.25732-8-chenzhou10@huawei.com> (raw)
In-Reply-To: <20200907134745.25732-1-chenzhou10@huawei.com>

For crashkernel=X, if required size X is too large and leads to very
little free low memory after low allocation, the system may not work
normally.
So add a threshold and go for high allocation directly if the required
size is too large. The value of threshold is set as the half of the
low memory.

Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
---
 kernel/crash_core.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/kernel/crash_core.c b/kernel/crash_core.c
index 3f735cb37ace..d11d597a470d 100644
--- a/kernel/crash_core.c
+++ b/kernel/crash_core.c
@@ -378,6 +378,15 @@ int __init reserve_crashkernel_low(void)
 }
 
 #if defined(CONFIG_X86) || defined(CONFIG_ARM64)
+
+/*
+ * Add a threshold for required memory size of crashkernel. If required memory
+ * size is greater than threshold, just go for high allocation directly. The
+ * value of threshold is set as half of the total low memory.
+ */
+#define REQUIRED_MEMORY_THRESHOLD	(memblock_mem_size(CRASH_ADDR_LOW_MAX >> \
+			PAGE_SHIFT) >> 1)
+
 #ifdef CONFIG_KEXEC_CORE
 /*
  * reserve_crashkernel() - reserves memory for crash kernel
@@ -422,7 +431,7 @@ void __init reserve_crashkernel(void)
 		 * So try low memory first and fall back to high memory
 		 * unless "crashkernel=size[KMG],high" is specified.
 		 */
-		if (!high)
+		if (!high && crash_size <= REQUIRED_MEMORY_THRESHOLD)
 			crash_base = memblock_find_in_range(CRASH_ALIGN,
 						CRASH_ADDR_LOW_MAX,
 						crash_size, CRASH_ALIGN);
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: Chen Zhou <chenzhou10@huawei.com>
To: <catalin.marinas@arm.com>, <will@kernel.org>,
	<james.morse@arm.com>, <tglx@linutronix.de>, <mingo@redhat.com>,
	<dyoung@redhat.com>, <bhe@redhat.com>, <corbet@lwn.net>,
	<John.P.donnelly@oracle.com>, <prabhakar.pkin@gmail.com>,
	<bhsharma@redhat.com>
Cc: wangkefeng.wang@huawei.com, arnd@arndb.de,
	linux-doc@vger.kernel.org, chenzhou10@huawei.com,
	xiexiuqi@huawei.com, kexec@lists.infradead.org,
	linux-kernel@vger.kernel.org, robh+dt@kernel.org,
	horms@verge.net.au, nsaenzjulienne@suse.de,
	huawei.libin@huawei.com, guohanjun@huawei.com,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v12 7/9] kdump: add threshold for the required memory
Date: Mon, 7 Sep 2020 21:47:43 +0800	[thread overview]
Message-ID: <20200907134745.25732-8-chenzhou10@huawei.com> (raw)
In-Reply-To: <20200907134745.25732-1-chenzhou10@huawei.com>

For crashkernel=X, if required size X is too large and leads to very
little free low memory after low allocation, the system may not work
normally.
So add a threshold and go for high allocation directly if the required
size is too large. The value of threshold is set as the half of the
low memory.

Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
---
 kernel/crash_core.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/kernel/crash_core.c b/kernel/crash_core.c
index 3f735cb37ace..d11d597a470d 100644
--- a/kernel/crash_core.c
+++ b/kernel/crash_core.c
@@ -378,6 +378,15 @@ int __init reserve_crashkernel_low(void)
 }
 
 #if defined(CONFIG_X86) || defined(CONFIG_ARM64)
+
+/*
+ * Add a threshold for required memory size of crashkernel. If required memory
+ * size is greater than threshold, just go for high allocation directly. The
+ * value of threshold is set as half of the total low memory.
+ */
+#define REQUIRED_MEMORY_THRESHOLD	(memblock_mem_size(CRASH_ADDR_LOW_MAX >> \
+			PAGE_SHIFT) >> 1)
+
 #ifdef CONFIG_KEXEC_CORE
 /*
  * reserve_crashkernel() - reserves memory for crash kernel
@@ -422,7 +431,7 @@ void __init reserve_crashkernel(void)
 		 * So try low memory first and fall back to high memory
 		 * unless "crashkernel=size[KMG],high" is specified.
 		 */
-		if (!high)
+		if (!high && crash_size <= REQUIRED_MEMORY_THRESHOLD)
 			crash_base = memblock_find_in_range(CRASH_ALIGN,
 						CRASH_ADDR_LOW_MAX,
 						crash_size, CRASH_ALIGN);
-- 
2.20.1


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

WARNING: multiple messages have this Message-ID (diff)
From: Chen Zhou <chenzhou10@huawei.com>
To: catalin.marinas@arm.com, will@kernel.org, james.morse@arm.com,
	tglx@linutronix.de, mingo@redhat.com, dyoung@redhat.com,
	bhe@redhat.com, corbet@lwn.net, John.P.donnelly@oracle.com,
	prabhakar.pkin@gmail.com, bhsharma@redhat.com
Cc: wangkefeng.wang@huawei.com, arnd@arndb.de,
	linux-doc@vger.kernel.org, chenzhou10@huawei.com,
	xiexiuqi@huawei.com, kexec@lists.infradead.org,
	linux-kernel@vger.kernel.org, robh+dt@kernel.org,
	horms@verge.net.au, nsaenzjulienne@suse.de,
	huawei.libin@huawei.com, guohanjun@huawei.com,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v12 7/9] kdump: add threshold for the required memory
Date: Mon, 7 Sep 2020 21:47:43 +0800	[thread overview]
Message-ID: <20200907134745.25732-8-chenzhou10@huawei.com> (raw)
In-Reply-To: <20200907134745.25732-1-chenzhou10@huawei.com>

For crashkernel=X, if required size X is too large and leads to very
little free low memory after low allocation, the system may not work
normally.
So add a threshold and go for high allocation directly if the required
size is too large. The value of threshold is set as the half of the
low memory.

Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
---
 kernel/crash_core.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/kernel/crash_core.c b/kernel/crash_core.c
index 3f735cb37ace..d11d597a470d 100644
--- a/kernel/crash_core.c
+++ b/kernel/crash_core.c
@@ -378,6 +378,15 @@ int __init reserve_crashkernel_low(void)
 }
 
 #if defined(CONFIG_X86) || defined(CONFIG_ARM64)
+
+/*
+ * Add a threshold for required memory size of crashkernel. If required memory
+ * size is greater than threshold, just go for high allocation directly. The
+ * value of threshold is set as half of the total low memory.
+ */
+#define REQUIRED_MEMORY_THRESHOLD	(memblock_mem_size(CRASH_ADDR_LOW_MAX >> \
+			PAGE_SHIFT) >> 1)
+
 #ifdef CONFIG_KEXEC_CORE
 /*
  * reserve_crashkernel() - reserves memory for crash kernel
@@ -422,7 +431,7 @@ void __init reserve_crashkernel(void)
 		 * So try low memory first and fall back to high memory
 		 * unless "crashkernel=size[KMG],high" is specified.
 		 */
-		if (!high)
+		if (!high && crash_size <= REQUIRED_MEMORY_THRESHOLD)
 			crash_base = memblock_find_in_range(CRASH_ALIGN,
 						CRASH_ADDR_LOW_MAX,
 						crash_size, CRASH_ALIGN);
-- 
2.20.1


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  parent reply	other threads:[~2020-09-07 17:21 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-07 13:47 [PATCH v12 0/9] support reserving crashkernel above 4G on arm64 kdump Chen Zhou
2020-09-07 13:47 ` Chen Zhou
2020-09-07 13:47 ` Chen Zhou
2020-09-07 13:47 ` [PATCH v12 1/9] x86: kdump: move CRASH_ALIGN to 2M Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-08  1:21   ` Dave Young
2020-09-08  1:21     ` Dave Young
2020-09-08  1:21     ` Dave Young
2020-09-08  3:19     ` chenzhou
2020-09-08  3:19       ` chenzhou
2020-09-08  3:19       ` chenzhou
2020-09-07 13:47 ` [PATCH v12 2/9] x86: kdump: make the lower bound of crash kernel reservation consistent Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47 ` [PATCH v12 3/9] x86: kdump: use macro CRASH_ADDR_LOW_MAX in functions reserve_crashkernel[_low]() Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-18  3:01   ` Dave Young
2020-09-18  3:01     ` Dave Young
2020-09-18  3:01     ` Dave Young
2020-09-18  3:57     ` chenzhou
2020-09-18  3:57       ` chenzhou
2020-09-18  3:57       ` chenzhou
2020-09-18  5:26       ` Dave Young
2020-09-18  5:26         ` Dave Young
2020-09-18  5:26         ` Dave Young
2020-09-18  7:25   ` Baoquan He
2020-09-18  7:25     ` Baoquan He
2020-09-18  7:25     ` Baoquan He
2020-09-18  8:59     ` chenzhou
2020-09-18  8:59       ` chenzhou
2020-09-18  8:59       ` chenzhou
2020-09-18  9:06       ` chenzhou
2020-09-18  9:06         ` chenzhou
2020-09-18  9:06         ` chenzhou
2020-10-05 17:20         ` Catalin Marinas
2020-10-05 17:20           ` Catalin Marinas
2020-10-05 17:20           ` Catalin Marinas
2020-09-07 13:47 ` [PATCH v12 4/9] x86: kdump: move reserve_crashkernel[_low]() into crash_core.c Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47 ` [PATCH v12 5/9] arm64: kdump: introduce some macroes for crash kernel reservation Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47 ` [PATCH v12 6/9] arm64: kdump: reimplement crashkernel=X Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-10-05 17:16   ` Catalin Marinas
2020-10-05 17:16     ` Catalin Marinas
2020-10-05 17:16     ` Catalin Marinas
2020-10-06  1:30     ` chenzhou
2020-10-06  1:30       ` chenzhou
2020-10-06  1:30       ` chenzhou
2020-09-07 13:47 ` Chen Zhou [this message]
2020-09-07 13:47   ` [PATCH v12 7/9] kdump: add threshold for the required memory Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-10-05 17:12   ` Catalin Marinas
2020-10-05 17:12     ` Catalin Marinas
2020-10-05 17:12     ` Catalin Marinas
2020-10-06  1:34     ` chenzhou
2020-10-06  1:34       ` chenzhou
2020-10-06  1:34       ` chenzhou
2020-09-07 13:47 ` [PATCH v12 8/9] arm64: kdump: add memory for devices by DT property linux,usable-memory-range Chen Zhou
2020-09-07 13:47   ` [PATCH v12 8/9] arm64: kdump: add memory for devices by DT property linux, usable-memory-range Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47 ` [PATCH v12 9/9] kdump: update Documentation about crashkernel Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-09-07 13:47   ` Chen Zhou
2020-10-05 17:19   ` Catalin Marinas
2020-10-05 17:19     ` Catalin Marinas
2020-10-05 17:19     ` Catalin Marinas
2020-10-06  2:10     ` chenzhou
2020-10-06  2:10       ` chenzhou
2020-10-06  2:10       ` chenzhou
2020-10-07 16:24       ` Catalin Marinas
2020-10-07 16:24         ` Catalin Marinas
2020-10-07 16:24         ` Catalin Marinas
2020-09-12 11:44 ` [PATCH v12 0/9] support reserving crashkernel above 4G on arm64 kdump John Donnelly
2020-09-12 11:44   ` John Donnelly
2020-09-12 11:44   ` John Donnelly
2020-10-05 17:09   ` Catalin Marinas
2020-10-05 17:09     ` Catalin Marinas
2020-10-05 17:09     ` Catalin Marinas
2020-10-05 17:42     ` Bhupesh Sharma
2020-10-05 17:42       ` Bhupesh Sharma
2020-10-05 17:42       ` Bhupesh Sharma
2020-10-06  1:48       ` chenzhou
2020-10-06  1:48         ` chenzhou
2020-10-06  1:48         ` chenzhou
2020-10-06 18:00       ` Catalin Marinas
2020-10-06 18:00         ` Catalin Marinas
2020-10-06 18:00         ` Catalin Marinas
2020-10-07  7:07         ` Bhupesh Sharma
2020-10-07  7:07           ` Bhupesh Sharma
2020-10-07  7:07           ` Bhupesh Sharma
2020-10-07 16:33           ` Catalin Marinas
2020-10-07 16:33             ` Catalin Marinas
2020-10-07 16:33             ` Catalin Marinas
2020-10-19  2:43           ` chenzhou
2020-10-19  2:43             ` chenzhou
2020-10-19  2:43             ` chenzhou
2020-09-15  7:16 ` chenzhou
2020-09-15  7:16   ` chenzhou
2020-09-15  7:16   ` chenzhou
2020-09-23 17:47   ` John Donnelly
2020-09-23 17:47     ` John Donnelly
2020-09-23 17:47     ` John Donnelly

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=20200907134745.25732-8-chenzhou10@huawei.com \
    --to=chenzhou10@huawei.com \
    --cc=John.P.donnelly@oracle.com \
    --cc=arnd@arndb.de \
    --cc=bhe@redhat.com \
    --cc=bhsharma@redhat.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=dyoung@redhat.com \
    --cc=guohanjun@huawei.com \
    --cc=horms@verge.net.au \
    --cc=huawei.libin@huawei.com \
    --cc=james.morse@arm.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nsaenzjulienne@suse.de \
    --cc=prabhakar.pkin@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=wangkefeng.wang@huawei.com \
    --cc=will@kernel.org \
    --cc=xiexiuqi@huawei.com \
    /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.