All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Greg Thelen <gthelen@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
	linux-mm@kvack.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: mmotm boot panic bootmem-avoid-dma32-zone-by-default.patch
Date: Fri, 05 Mar 2010 10:41:56 -0800	[thread overview]
Message-ID: <4B915074.4020704@kernel.org> (raw)
In-Reply-To: <49b004811003042117n720f356h7e10997a1a783475@mail.gmail.com>

On 03/04/2010 09:17 PM, Greg Thelen wrote:
> On Thu, Mar 4, 2010 at 7:21 PM, Johannes Weiner <hannes@cmpxchg.org> wrote:
>> On Thu, Mar 04, 2010 at 01:21:41PM -0800, Greg Thelen wrote:
>>> On several systems I am seeing a boot panic if I use mmotm
>>> (stamp-2010-03-02-18-38).  If I remove
>>> bootmem-avoid-dma32-zone-by-default.patch then no panic is seen.  I
>>> find that:
>>> * 2.6.33 boots fine.
>>> * 2.6.33 + mmotm w/o bootmem-avoid-dma32-zone-by-default.patch: boots fine.
>>> * 2.6.33 + mmotm (including
>>> bootmem-avoid-dma32-zone-by-default.patch): panics.
...
> 
> Note: mmotm has been recently updated to stamp-2010-03-04-18-05.  I
> re-tested with 'make defconfig' to confirm the panic with this later
> mmotm.

please check

[PATCH] early_res: double check with updated goal in alloc_memory_core_early

Johannes Weiner pointed out that new early_res replacement for alloc_bootmem_node
change the behavoir about goal.
original bootmem one will try go further regardless of goal.

and it will break his patch about default goal from MAX_DMA to MAX_DMA32...
also broke uncommon machines with <=16M of memory.
(really? our x86 kernel still can run on 16M system?)

so try again with update goal.

Reported-by: Greg Thelen <gthelen@google.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 mm/bootmem.c |   28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

Index: linux-2.6/mm/bootmem.c
===================================================================
--- linux-2.6.orig/mm/bootmem.c
+++ linux-2.6/mm/bootmem.c
@@ -170,6 +170,28 @@ void __init free_bootmem_late(unsigned l
 }
 
 #ifdef CONFIG_NO_BOOTMEM
+static void * __init ___alloc_memory_core_early(pg_data_t *pgdat, u64 size,
+						 u64 align, u64 goal, u64 limit)
+{
+	void *ptr;
+	unsigned long end_pfn;
+
+	ptr = __alloc_memory_core_early(pgdat->node_id, size, align,
+					 goal, limit);
+	if (ptr)
+		return ptr;
+
+	/* check goal according  */
+	end_pfn = pgdat->node_start_pfn + pgdat->node_spanned_pages;
+	if ((end_pfn << PAGE_SHIFT) < (goal + size)) {
+		goal = pgdat->node_start_pfn << PAGE_SHIFT;
+		ptr = __alloc_memory_core_early(pgdat->node_id, size, align,
+						 goal, limit);
+	}
+
+	return ptr;
+}
+
 static void __init __free_pages_memory(unsigned long start, unsigned long end)
 {
 	int i;
@@ -836,7 +858,7 @@ void * __init __alloc_bootmem_node(pg_da
 		return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id);
 
 #ifdef CONFIG_NO_BOOTMEM
-	return __alloc_memory_core_early(pgdat->node_id, size, align,
+	return  ___alloc_memory_core_early(pgdat, size, align,
 					 goal, -1ULL);
 #else
 	return ___alloc_bootmem_node(pgdat->bdata, size, align, goal, 0);
@@ -920,7 +942,7 @@ void * __init __alloc_bootmem_node_nopan
 		return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id);
 
 #ifdef CONFIG_NO_BOOTMEM
-	ptr =  __alloc_memory_core_early(pgdat->node_id, size, align,
+	ptr =  ___alloc_memory_core_early(pgdat, size, align,
 						 goal, -1ULL);
 #else
 	ptr = alloc_arch_preferred_bootmem(pgdat->bdata, size, align, goal, 0);
@@ -980,7 +1002,7 @@ void * __init __alloc_bootmem_low_node(p
 		return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id);
 
 #ifdef CONFIG_NO_BOOTMEM
-	return __alloc_memory_core_early(pgdat->node_id, size, align,
+	return ___alloc_memory_core_early(pgdat, size, align,
 				goal, ARCH_LOW_ADDRESS_LIMIT);
 #else
 	return ___alloc_bootmem_node(pgdat->bdata, size, align,

WARNING: multiple messages have this Message-ID (diff)
From: Yinghai Lu <yinghai@kernel.org>
To: Greg Thelen <gthelen@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
	linux-mm@kvack.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: mmotm boot panic bootmem-avoid-dma32-zone-by-default.patch
Date: Fri, 05 Mar 2010 10:41:56 -0800	[thread overview]
Message-ID: <4B915074.4020704@kernel.org> (raw)
In-Reply-To: <49b004811003042117n720f356h7e10997a1a783475@mail.gmail.com>

On 03/04/2010 09:17 PM, Greg Thelen wrote:
> On Thu, Mar 4, 2010 at 7:21 PM, Johannes Weiner <hannes@cmpxchg.org> wrote:
>> On Thu, Mar 04, 2010 at 01:21:41PM -0800, Greg Thelen wrote:
>>> On several systems I am seeing a boot panic if I use mmotm
>>> (stamp-2010-03-02-18-38).  If I remove
>>> bootmem-avoid-dma32-zone-by-default.patch then no panic is seen.  I
>>> find that:
>>> * 2.6.33 boots fine.
>>> * 2.6.33 + mmotm w/o bootmem-avoid-dma32-zone-by-default.patch: boots fine.
>>> * 2.6.33 + mmotm (including
>>> bootmem-avoid-dma32-zone-by-default.patch): panics.
...
> 
> Note: mmotm has been recently updated to stamp-2010-03-04-18-05.  I
> re-tested with 'make defconfig' to confirm the panic with this later
> mmotm.

please check

[PATCH] early_res: double check with updated goal in alloc_memory_core_early

Johannes Weiner pointed out that new early_res replacement for alloc_bootmem_node
change the behavoir about goal.
original bootmem one will try go further regardless of goal.

and it will break his patch about default goal from MAX_DMA to MAX_DMA32...
also broke uncommon machines with <=16M of memory.
(really? our x86 kernel still can run on 16M system?)

so try again with update goal.

Reported-by: Greg Thelen <gthelen@google.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 mm/bootmem.c |   28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

Index: linux-2.6/mm/bootmem.c
===================================================================
--- linux-2.6.orig/mm/bootmem.c
+++ linux-2.6/mm/bootmem.c
@@ -170,6 +170,28 @@ void __init free_bootmem_late(unsigned l
 }
 
 #ifdef CONFIG_NO_BOOTMEM
+static void * __init ___alloc_memory_core_early(pg_data_t *pgdat, u64 size,
+						 u64 align, u64 goal, u64 limit)
+{
+	void *ptr;
+	unsigned long end_pfn;
+
+	ptr = __alloc_memory_core_early(pgdat->node_id, size, align,
+					 goal, limit);
+	if (ptr)
+		return ptr;
+
+	/* check goal according  */
+	end_pfn = pgdat->node_start_pfn + pgdat->node_spanned_pages;
+	if ((end_pfn << PAGE_SHIFT) < (goal + size)) {
+		goal = pgdat->node_start_pfn << PAGE_SHIFT;
+		ptr = __alloc_memory_core_early(pgdat->node_id, size, align,
+						 goal, limit);
+	}
+
+	return ptr;
+}
+
 static void __init __free_pages_memory(unsigned long start, unsigned long end)
 {
 	int i;
@@ -836,7 +858,7 @@ void * __init __alloc_bootmem_node(pg_da
 		return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id);
 
 #ifdef CONFIG_NO_BOOTMEM
-	return __alloc_memory_core_early(pgdat->node_id, size, align,
+	return  ___alloc_memory_core_early(pgdat, size, align,
 					 goal, -1ULL);
 #else
 	return ___alloc_bootmem_node(pgdat->bdata, size, align, goal, 0);
@@ -920,7 +942,7 @@ void * __init __alloc_bootmem_node_nopan
 		return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id);
 
 #ifdef CONFIG_NO_BOOTMEM
-	ptr =  __alloc_memory_core_early(pgdat->node_id, size, align,
+	ptr =  ___alloc_memory_core_early(pgdat, size, align,
 						 goal, -1ULL);
 #else
 	ptr = alloc_arch_preferred_bootmem(pgdat->bdata, size, align, goal, 0);
@@ -980,7 +1002,7 @@ void * __init __alloc_bootmem_low_node(p
 		return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id);
 
 #ifdef CONFIG_NO_BOOTMEM
-	return __alloc_memory_core_early(pgdat->node_id, size, align,
+	return ___alloc_memory_core_early(pgdat, size, align,
 				goal, ARCH_LOW_ADDRESS_LIMIT);
 #else
 	return ___alloc_bootmem_node(pgdat->bdata, size, align,

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2010-03-05 18:43 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-04 21:21 mmotm boot panic bootmem-avoid-dma32-zone-by-default.patch Greg Thelen
2010-03-05  3:21 ` Johannes Weiner
2010-03-05  5:00   ` Yinghai Lu
2010-03-05  5:14     ` Yinghai Lu
2010-03-05 12:51       ` Johannes Weiner
2010-03-05 16:38         ` Yinghai
2010-03-05  5:17   ` Greg Thelen
2010-03-05  5:34     ` Greg Thelen
2010-03-05 18:41     ` Yinghai Lu [this message]
2010-03-05 18:41       ` Yinghai Lu
2010-03-05 19:09       ` Greg Thelen
2010-03-05 19:09         ` Greg Thelen
2010-03-05 20:38       ` [PATCH] x86/bootmem: introduce bootmem_default_goal Yinghai Lu
2010-03-05 20:38         ` Yinghai Lu
2010-03-06  5:44         ` please don't apply : bootmem: avoid DMA32 zone by default Yinghai Lu
2010-03-06  5:44           ` Yinghai Lu
2010-03-07  0:22           ` Andrew Morton
2010-03-07  0:22             ` Andrew Morton
2010-03-07  0:42             ` Yinghai Lu
2010-03-07  0:42               ` Yinghai Lu
2010-03-07  0:53               ` Yinghai Lu
2010-03-07  0:53                 ` Yinghai Lu
2010-03-07  2:15                 ` [PATCH] sparsemem: on no vmemmap path put mem_map on node high too Yinghai Lu
2010-03-07  1:03             ` please don't apply : bootmem: avoid DMA32 zone by default Paul Mackerras
2010-03-07  1:03               ` Paul Mackerras
2010-03-07  1:48               ` Stephen Rothwell
2010-03-07  9:16               ` Russell King
2010-03-07  9:16                 ` Russell King
2010-03-05 23:58       ` mmotm boot panic bootmem-avoid-dma32-zone-by-default.patch Johannes Weiner
2010-03-05 23:58         ` Johannes Weiner
2010-03-06  1:50         ` Yinghai Lu
2010-03-06  1:50           ` Yinghai Lu
2010-03-06  2:24           ` Johannes Weiner
2010-03-06  2:24             ` Johannes Weiner
2010-03-06  2:31             ` Yinghai Lu
2010-03-06  2:31               ` Yinghai Lu
2010-03-05  9:04   ` Yinghai Lu
2010-03-05  9:04     ` Yinghai Lu
2010-03-05 10:26     ` Jiri Slaby
2010-03-05 10:26       ` Jiri Slaby
2010-03-05 20:27       ` Yinghai Lu
2010-03-07  1:17       ` Yinghai Lu
2010-03-11 10:54         ` Jiri Slaby
2010-03-11 20:12           ` Yinghai Lu
2010-03-11 21:40             ` Jiri Slaby
2010-03-11 21:42               ` Yinghai Lu
2010-03-05 13:08     ` Johannes Weiner
2010-03-05 13:08       ` Johannes Weiner

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=4B915074.4020704@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=gthelen@google.com \
    --cc=hannes@cmpxchg.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /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.