linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>
Cc: WANG Chao <chaowang@redhat.com>, Vivek Goyal <vgoyal@redhat.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	linux-kernel@vger.kernel.org, Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH v3] x86, kdump: Set crashkernel_low automatically
Date: Mon, 18 Mar 2013 14:25:57 -0700	[thread overview]
Message-ID: <1363641957-5247-1-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <514783B4.2030401@zytor.com>

Current code does not set low range for crashkernel if the user
does not specify that.

That cause regressions on system that does not support intel_iommu
properly.

Chao said that his system does work well on 3.8 without extra parameter.
even iommu does not work with kdump.

Set crashkernel_low automatically if the user does not specify that.

For system that does support IOMMU with kdump properly, user could
specify crashkernel_low=0 to save that 72M low ram.

-v3: add swiotlb_size() according to Konrad.

Reported-by: WANG Chao <chaowang@redhat.com>
Tested-by: WANG Chao <chaowang@redhat.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/kernel/setup.c |   15 ++++++++++++---
 include/linux/swiotlb.h |    1 +
 lib/swiotlb.c           |   19 +++++++++++++++----
 3 files changed, 28 insertions(+), 7 deletions(-)

Index: linux-2.6/arch/x86/kernel/setup.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup.c
+++ linux-2.6/arch/x86/kernel/setup.c
@@ -522,19 +522,28 @@ static void __init reserve_crashkernel_l
 	unsigned long long low_base = 0, low_size = 0;
 	unsigned long total_low_mem;
 	unsigned long long base;
+	bool auto_set = false;
 	int ret;
 
 	total_low_mem = memblock_mem_size(1UL<<(32-PAGE_SHIFT));
 	ret = parse_crashkernel_low(boot_command_line, total_low_mem,
 						&low_size, &base);
-	if (ret != 0 || low_size <= 0)
-		return;
+	if (ret != 0) {
+		/* swiotlb size and etc 8M */
+		low_size = swiotlb_size_or_default() + (8UL<<20);
+		auto_set = true;
+	} else {
+		/* passed with crashkernel_low=0 ? */
+		if (!low_size)
+			return;
+	}
 
 	low_base = memblock_find_in_range(low_size, (1ULL<<32),
 					low_size, alignment);
 
 	if (!low_base) {
-		pr_info("crashkernel low reservation failed - No suitable area found.\n");
+		if (!auto_set)
+			pr_info("crashkernel low reservation failed - No suitable area found.\n");
 
 		return;
 	}
Index: linux-2.6/include/linux/swiotlb.h
===================================================================
--- linux-2.6.orig/include/linux/swiotlb.h
+++ linux-2.6/include/linux/swiotlb.h
@@ -25,6 +25,7 @@ extern int swiotlb_force;
 extern void swiotlb_init(int verbose);
 int swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose);
 extern unsigned long swiotlb_nr_tbl(void);
+unsigned long swiotlb_size_or_default(void);
 extern int swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs);
 
 /*
Index: linux-2.6/lib/swiotlb.c
===================================================================
--- linux-2.6.orig/lib/swiotlb.c
+++ linux-2.6/lib/swiotlb.c
@@ -105,9 +105,9 @@ setup_io_tlb_npages(char *str)
 	if (!strcmp(str, "force"))
 		swiotlb_force = 1;
 
-	return 1;
+	return 0;
 }
-__setup("swiotlb=", setup_io_tlb_npages);
+early_param("swiotlb", setup_io_tlb_npages);
 /* make io_tlb_overflow tunable too? */
 
 unsigned long swiotlb_nr_tbl(void)
@@ -115,6 +115,18 @@ unsigned long swiotlb_nr_tbl(void)
 	return io_tlb_nslabs;
 }
 EXPORT_SYMBOL_GPL(swiotlb_nr_tbl);
+
+/* default to 64MB */
+#define IO_TLB_DEFAULT_SIZE (64UL<<20)
+unsigned long swiotlb_size_or_default(void)
+{
+	unsigned long size;
+
+	size = io_tlb_nslabs << IO_TLB_SHIFT;
+
+	return size ? size : (IO_TLB_DEFAULT_SIZE);
+}
+
 /* Note that this doesn't work with highmem page */
 static dma_addr_t swiotlb_virt_to_bus(struct device *hwdev,
 				      volatile void *address)
@@ -188,8 +200,7 @@ int __init swiotlb_init_with_tbl(char *t
 void  __init
 swiotlb_init(int verbose)
 {
-	/* default to 64MB */
-	size_t default_size = 64UL<<20;
+	size_t default_size = IO_TLB_DEFAULT_SIZE;
 	unsigned char *vstart;
 	unsigned long bytes;
 

  reply	other threads:[~2013-03-18 21:26 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-08  5:54 3.9-rc1: crash kernel panic - not syncing: Can not allocate SWIOTLB buffer earlier and can't now provide you with the DMA bounce buffer WANG Chao
2013-03-08  6:03 ` CAI Qian
2013-03-08  6:32   ` Yinghai Lu
2013-03-08  6:36     ` Yinghai Lu
2013-03-08  7:20       ` WANG Chao
2013-03-08  7:27         ` Yinghai Lu
2013-03-08  7:33           ` WANG Chao
2013-03-08  7:50             ` Yinghai Lu
2013-03-08 12:12               ` WANG Chao
2013-03-08 18:24                 ` Yinghai Lu
2013-03-08 19:39                   ` Yinghai Lu
2013-03-11  3:42                     ` WANG Chao
2013-03-11  4:56                       ` [PATCH] x86, kdump: Set crashkernel_low automatically Yinghai Lu
2013-03-11 14:48                         ` Vivek Goyal
2013-03-11 15:02                           ` Vivek Goyal
2013-03-11 17:58                             ` Yinghai Lu
2013-03-11 18:26                               ` Vivek Goyal
2013-03-11 18:44                                 ` Yinghai Lu
2013-03-11 18:46                                 ` H. Peter Anvin
2013-03-11 18:50                                   ` Yinghai Lu
2013-03-11 18:55                                     ` H. Peter Anvin
2013-03-11 19:06                                       ` Yinghai Lu
2013-03-11 19:06                                         ` H. Peter Anvin
2013-03-11 19:08                                           ` Yinghai Lu
2013-03-11 19:20                                         ` Vivek Goyal
2013-03-11 19:55                                           ` H. Peter Anvin
2013-03-11 20:12                                             ` Vivek Goyal
2013-03-11 20:19                                               ` H. Peter Anvin
2013-03-11 20:36                                                 ` H. Peter Anvin
2013-03-11 20:38                                                 ` Eric W. Biederman
2013-03-11 20:42                                                   ` H. Peter Anvin
2013-03-11 21:10                                                     ` Vivek Goyal
2013-03-11 21:13                                                       ` H. Peter Anvin
2013-03-11 20:45                                                   ` Vivek Goyal
2013-03-11 20:50                                                     ` H. Peter Anvin
2013-03-11 21:03                                                       ` Vivek Goyal
2013-03-11 21:06                                                         ` H. Peter Anvin
2013-03-12 13:46                                                           ` Vivek Goyal
2013-03-12  8:35                                                         ` Ingo Molnar
2013-03-11 20:57                                                     ` Yinghai Lu
2013-03-11 21:06                                                       ` Vivek Goyal
2013-03-11 21:15                                                         ` Yinghai Lu
2013-03-11 19:10                                       ` Vivek Goyal
2013-03-11 19:34                                         ` Yinghai Lu
2013-03-11 19:38                                           ` Vivek Goyal
2013-03-11 19:39                                             ` Yinghai Lu
2013-03-11 19:44                                               ` Vivek Goyal
2013-03-11 19:44                                               ` Yinghai Lu
2013-03-18 14:46                                                 ` Vivek Goyal
2013-03-18 15:33                                                   ` Vivek Goyal
2013-03-18 19:05                                                     ` Yinghai Lu
2013-03-18 19:10                                                     ` H. Peter Anvin
2013-03-18 20:00                                                       ` Vivek Goyal
2013-03-18 21:14                                                         ` H. Peter Anvin
2013-03-18 21:25                                                           ` Yinghai Lu [this message]
2013-03-18 22:52                                                             ` [PATCH v3] " H. Peter Anvin
2013-03-18 23:26                                                               ` Yinghai Lu
2013-03-19  0:27                                                                 ` H. Peter Anvin
2013-03-19  1:04                                                                   ` [PATCH v4] " Yinghai Lu
2013-03-19 13:33                                                                     ` Vivek Goyal
2013-03-19 15:05                                                                       ` [PATCH v5] " Yinghai Lu
2013-03-20 13:08                                                                         ` Vivek Goyal
2013-03-20 15:53                                                                           ` Yinghai Lu
2013-03-20 16:03                                                                             ` Vivek Goyal
2013-03-20 16:21                                                                               ` Yinghai Lu
2013-03-20 16:31                                                                                 ` Vivek Goyal
2013-03-20 19:22                                                                                   ` [PATCH] kexec: use Crash kernel for Crash kernel low Yinghai Lu
2013-03-25 19:42                                                                                     ` Vivek Goyal
2013-03-25 21:50                                                                                       ` Yinghai Lu
2013-03-26 18:14                                                                                         ` Vivek Goyal
2013-04-01 13:34                                                                                           ` Vivek Goyal
2013-04-01 18:33                                                                                             ` H. Peter Anvin
2013-04-01 19:26                                                                                               ` Vivek Goyal
2013-04-01 20:47                                                                                                 ` H. Peter Anvin
2013-04-01 21:10                                                                                                   ` Yinghai Lu
2013-04-01 22:02                                                                                                     ` H. Peter Anvin
2013-04-01 22:17                                                                                                       ` Yinghai Lu
2013-04-01 22:20                                                                                                         ` H. Peter Anvin
2013-04-01 22:40                                                                                                           ` Yinghai Lu
2013-04-02  1:11                                                                                                             ` Yinghai Lu
2013-04-02 13:50                                                                                                               ` Vivek Goyal
2013-04-02 14:17                                                                                                                 ` Vivek Goyal
2013-04-02 14:50                                                                                                                   ` Yinghai Lu
2013-04-02 14:45                                                                                                                 ` Yinghai Lu
2013-04-02 14:58                                                                                                                   ` Vivek Goyal
2013-04-02 15:44                                                                                                                     ` Yinghai Lu
2013-04-02 15:39                                                                                                                   ` Vivek Goyal
2013-04-02 15:46                                                                                                                     ` Yinghai Lu
2013-04-02 15:50                                                                                                                       ` Vivek Goyal
2013-04-02 17:21                                                                                                                         ` Yinghai Lu
2013-04-02 13:30                                                                                                   ` Vivek Goyal
2013-03-11 19:14                                       ` [PATCH] x86, kdump: Set crashkernel_low automatically Eric W. Biederman
2013-03-11 19:22                                         ` Vivek Goyal
2013-03-11 19:59                                           ` H. Peter Anvin
2013-03-11 20:17                                             ` Vivek Goyal
2013-03-11 19:56                                         ` H. Peter Anvin
2013-03-11 19:02                                   ` Vivek Goyal
2013-03-11 19:04                                     ` H. Peter Anvin
2013-03-11 19:17                                       ` Vivek Goyal
2013-03-11 13:14                     ` 3.9-rc1: crash kernel panic - not syncing: Can not allocate SWIOTLB buffer earlier and can't now provide you with the DMA bounce buffer Konrad Rzeszutek Wilk
2013-03-08  7:52             ` Takao Indoh

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=1363641957-5247-1-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=chaowang@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=vgoyal@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).