* [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM
@ 2011-07-14 22:27 Darren Hart
2011-07-14 22:27 ` [PATCH 1/1] mm: use alloc_bootmem_node_nopanic() on really needed path Darren Hart
2011-07-15 13:56 ` [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM Bruce Ashfield
0 siblings, 2 replies; 3+ messages in thread
From: Darren Hart @ 2011-07-14 22:27 UTC (permalink / raw)
To: yocto, bruce.ashfield
From: Darren Hart <dvhart@linux.intel.com>
The following patch from mainline addresses an issues that prevented my
qemu testing from booting in less than 17M of memory. With this page,
the kernel can boot to init in 8M of memory.
Apply to yocto/standard/base
The following changes since commit bb8e31f2c99f5e007660d4540df246fb7ecfa746:
USB: ehci: remove structure packing from ehci_def (2011-06-22 14:23:26 -0400)
are available in the git repository at:
git://git.yoctoproject.org/linux-yocto-2.6.37-contrib dvhart/mm
http://git.yoctoproject.org/cgit.cgi/linux-yocto-2.6.37-contrib/log/?h=dvhart/mm
Yinghai Lu (1):
mm: use alloc_bootmem_node_nopanic() on really needed path
include/linux/bootmem.h | 2 ++
mm/page_alloc.c | 7 ++++---
2 files changed, 6 insertions(+), 3 deletions(-)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/1] mm: use alloc_bootmem_node_nopanic() on really needed path
2011-07-14 22:27 [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM Darren Hart
@ 2011-07-14 22:27 ` Darren Hart
2011-07-15 13:56 ` [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM Bruce Ashfield
1 sibling, 0 replies; 3+ messages in thread
From: Darren Hart @ 2011-07-14 22:27 UTC (permalink / raw)
To: yocto, bruce.ashfield
From: Yinghai Lu <yinghai@kernel.org>
commit 8f389a99b652aab5b42297280bd94d95933ad12f upstream.
Stefan found nobootmem does not work on his system that has only 8M of
RAM. This causes an early panic:
BIOS-provided physical RAM map:
BIOS-88: 0000000000000000 - 000000000009f000 (usable)
BIOS-88: 0000000000100000 - 0000000000840000 (usable)
bootconsole [earlyser0] enabled
Notice: NX (Execute Disable) protection missing in CPU or disabled in BIOS!
DMI not present or invalid.
last_pfn = 0x840 max_arch_pfn = 0x100000
init_memory_mapping: 0000000000000000-0000000000840000
8MB LOWMEM available.
mapped low ram: 0 - 00840000
low ram: 0 - 00840000
Zone PFN ranges:
DMA 0x00000001 -> 0x00001000
Normal empty
Movable zone start PFN for each node
early_node_map[2] active PFN ranges
0: 0x00000001 -> 0x0000009f
0: 0x00000100 -> 0x00000840
BUG: Int 6: CR2 (null)
EDI c034663c ESI (null) EBP c0329f38 ESP c0329ef4
EBX c0346380 EDX 00000006 ECX ffffffff EAX fffffff4
err (null) EIP c0353191 CS c0320060 flg 00010082
Stack: (null) c030c533 000007cd (null) c030c533 00000001 (null) (null)
00000003 0000083f 00000018 00000002 00000002 c0329f6c c03534d6 (null)
(null) 00000100 00000840 (null) c0329f64 00000001 00001000 (null)
Pid: 0, comm: swapper Not tainted 2.6.36 #5
Call Trace:
[<c02e3707>] ? 0xc02e3707
[<c035e6e5>] 0xc035e6e5
[<c0353191>] ? 0xc0353191
[<c03534d6>] 0xc03534d6
[<c034f1cd>] 0xc034f1cd
[<c034a824>] 0xc034a824
[<c03513cb>] ? 0xc03513cb
[<c0349432>] 0xc0349432
[<c0349066>] 0xc0349066
It turns out that we should ignore the low limit of 16M.
Use alloc_bootmem_node_nopanic() in this case.
[akpm@linux-foundation.org: less mess]
Signed-off-by: Yinghai LU <yinghai@kernel.org>
Reported-by: Stefan Hellermann <stefan@the2masters.de>
Tested-by: Stefan Hellermann <stefan@the2masters.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: "H. Peter Anvin" <hpa@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@kernel.org> [2.6.34+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Applied to linux-yocto-2.6.37
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
include/linux/bootmem.h | 2 ++
mm/page_alloc.c | 7 ++++---
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index 499dfe9..552875f 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -115,6 +115,8 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
__alloc_bootmem_nopanic(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
#define alloc_bootmem_node(pgdat, x) \
__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
+#define alloc_bootmem_node_nopanic(pgdat, x) \
+ __alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
#define alloc_bootmem_pages_node(pgdat, x) \
__alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
#define alloc_bootmem_pages_node_nopanic(pgdat, x) \
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index b8b32aa..1c28e48 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3464,7 +3464,7 @@ int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages)
if (!slab_is_available()) {
zone->wait_table = (wait_queue_head_t *)
- alloc_bootmem_node(pgdat, alloc_size);
+ alloc_bootmem_node_nopanic(pgdat, alloc_size);
} else {
/*
* This case means that a zone whose size was 0 gets new memory
@@ -4037,7 +4037,8 @@ static void __init setup_usemap(struct pglist_data *pgdat,
unsigned long usemapsize = usemap_size(zonesize);
zone->pageblock_flags = NULL;
if (usemapsize)
- zone->pageblock_flags = alloc_bootmem_node(pgdat, usemapsize);
+ zone->pageblock_flags = alloc_bootmem_node_nopanic(pgdat,
+ usemapsize);
}
#else
static void inline setup_usemap(struct pglist_data *pgdat,
@@ -4203,7 +4204,7 @@ static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat)
size = (end - start) * sizeof(struct page);
map = alloc_remap(pgdat->node_id, size);
if (!map)
- map = alloc_bootmem_node(pgdat, size);
+ map = alloc_bootmem_node_nopanic(pgdat, size);
pgdat->node_mem_map = map + (pgdat->node_start_pfn - start);
}
#ifndef CONFIG_NEED_MULTIPLE_NODES
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM
2011-07-14 22:27 [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM Darren Hart
2011-07-14 22:27 ` [PATCH 1/1] mm: use alloc_bootmem_node_nopanic() on really needed path Darren Hart
@ 2011-07-15 13:56 ` Bruce Ashfield
1 sibling, 0 replies; 3+ messages in thread
From: Bruce Ashfield @ 2011-07-15 13:56 UTC (permalink / raw)
To: Darren Hart; +Cc: yocto
On 07/14/11 18:27, Darren Hart wrote:
> From: Darren Hart<dvhart@linux.intel.com>
>
> The following patch from mainline addresses an issues that prevented my
> qemu testing from booting in less than 17M of memory. With this page,
> the kernel can boot to init in 8M of memory.
>
> Apply to yocto/standard/base
>
> The following changes since commit bb8e31f2c99f5e007660d4540df246fb7ecfa746:
>
> USB: ehci: remove structure packing from ehci_def (2011-06-22 14:23:26 -0400)
>
> are available in the git repository at:
> git://git.yoctoproject.org/linux-yocto-2.6.37-contrib dvhart/mm
> http://git.yoctoproject.org/cgit.cgi/linux-yocto-2.6.37-contrib/log/?h=dvhart/mm
This has been merged and pushed to the kernel repos,
the SRCREV updates are pending.
Cheers,
Bruce
>
> Yinghai Lu (1):
> mm: use alloc_bootmem_node_nopanic() on really needed path
>
> include/linux/bootmem.h | 2 ++
> mm/page_alloc.c | 7 ++++---
> 2 files changed, 6 insertions(+), 3 deletions(-)
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-07-15 13:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-14 22:27 [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM Darren Hart
2011-07-14 22:27 ` [PATCH 1/1] mm: use alloc_bootmem_node_nopanic() on really needed path Darren Hart
2011-07-15 13:56 ` [PATCH 0/1][linux-yocto] Fix boot failure with less than 17 MB RAM Bruce Ashfield
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.