From: Stefan Hellermann <stefan@the2masters.de>
To: Yinghai Lu <yinghai@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: early crash on ancient tablet related to no-bootmem
Date: Fri, 06 May 2011 10:52:22 +0200 [thread overview]
Message-ID: <4DC3B6C6.7000704@the2masters.de> (raw)
In-Reply-To: <4DC3958F.1090800@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 2694 bytes --]
Am 06.05.2011 08:30, schrieb Yinghai Lu:
>
> please check
>
> [PATCH] mm: Use alloc_bootmem_node_nopanic on really needed path
>
> Stefan found nobootmem does not work on his system that only have 8M ram.
>
> It turns out we should ignore the low limit the 16M.
>
> Use alloc_bootmem_node_nopanic in those calling.
>
> Reported-by: Stefan Hellermann <stefan@the2masters.de>
> Signed-off-by: Yinghai LU <yinghai@kernel.org>
You found it! bootlog attached.
Tested-by: Stefan Hellermann <stefan@the2masters.de>
>
> ---
> include/linux/bootmem.h | 2 ++
> mm/page_alloc.c | 6 +++---
> 2 files changed, 5 insertions(+), 3 deletions(-)
>
> Index: linux-2.6/include/linux/bootmem.h
> ===================================================================
> --- linux-2.6.orig/include/linux/bootmem.h
> +++ linux-2.6/include/linux/bootmem.h
> @@ -111,6 +111,8 @@ extern void *__alloc_bootmem_low_node(pg
> __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) \
> Index: linux-2.6/mm/page_alloc.c
> ===================================================================
> --- linux-2.6.orig/mm/page_alloc.c
> +++ linux-2.6/mm/page_alloc.c
> @@ -3564,7 +3564,7 @@ int zone_wait_table_init(struct zone *zo
>
> 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
> @@ -4141,7 +4141,7 @@ static void __init setup_usemap(struct p
> 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 inline void setup_usemap(struct pglist_data *pgdat,
> @@ -4307,7 +4307,7 @@ static void __init_refok alloc_node_mem_
> 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
[-- Attachment #2: bootlog.txt --]
[-- Type: text/plain, Size: 4980 bytes --]
early console in setup code
early console in decompress_kernel
Decompressing Linux... Parsing ELF... done.
Booting the kernel.
Linux version 2.6.39-rc6+ (stefan@hel-stefan.lan) (gcc version 4.6.0 20110428 (Red Hat 4.6.0-6) (GCC) ) #9 Fri May 6 09:39:31 CEST 2011
BIOS-provided physical RAM map:
BIOS-88: 0000000000000000 - 000000000009f000 (usable)
BIOS-88: 0000000000100000 - 0000000000840000 (usable)
bootconsole [earlyser0] enabled
debug: ignoring loglevel setting.
Notice: NX (Execute Disable) protection missing in CPU!
DMI not present or invalid.
e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
last_pfn = 0x840 max_arch_pfn = 0x100000
memblock_x86_reserve_range: [0x006a9000-0x006abfff] BRK
MEMBLOCK configuration:
memory size = 0x7cf000
memory.cnt = 0x2
memory[0x0] [0x00000000010000-0x0000000009efff], 0x8f000 bytes
memory[0x1] [0x00000000100000-0x0000000083ffff], 0x740000 bytes
reserved.cnt = 0x2
reserved[0x0] [0x0000000009f000-0x000000000fffff], 0x61000 bytes
reserved[0x1] [0x00000000400000-0x000000006abfff], 0x2ac000 bytes
initial memory mapped : 0 - 00c00000
memblock_x86_reserve_range: [0x0009e000-0x0009efff] TRAMPOLINE
Base memory trampoline at [c009e000] 9e000 size 4096
init_memory_mapping: 0000000000000000-0000000000840000
0000000000 - 0000840000 page 4k
kernel direct mapping tables up to 840000 @ 83a000-840000
8MB LOWMEM available.
mapped low ram: 0 - 00840000
low ram: 0 - 00840000
Zone PFN ranges:
DMA 0x00000010 -> 0x00001000
Normal empty
Movable zone start PFN for each node
early_node_map[2] active PFN ranges
0: 0x00000010 -> 0x0000009f
0: 0x00000100 -> 0x00000840
On node 0 totalpages: 1999
memblock_x86_reserve_range: [0x00828000-0x0083ffff] BOOTMEM
free_area_init_node: node 0, pgdat c0659420, node_mem_map c0828200
DMA zone: 17 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 1982 pages, LIFO batch:0
memblock_x86_reserve_range: [0x00827ff0-0x00827ff3] BOOTMEM
memblock_x86_reserve_range: [0x00827fb0-0x00827fef] BOOTMEM
memblock_x86_reserve_range: [0x00827f50-0x00827fa3] BOOTMEM
memblock_x86_reserve_range: [0x00827f10-0x00827f4f] BOOTMEM
memblock_x86_reserve_range: [0x00827ed0-0x00827f0f] BOOTMEM
Allocating PCI resources starting at 840000 (gap: 840000:ff7c0000)
memblock_x86_reserve_range: [0x00827e50-0x00827ec5] BOOTMEM
memblock_x86_reserve_range: [0x00827dd0-0x00827e45] BOOTMEM
memblock_x86_reserve_range: [0x00826dd0-0x00827dcf] BOOTMEM
memblock_x86_reserve_range: [0x0081e000-0x00825fff] BOOTMEM
memblock_x86_reserve_range: [0x00826dc0-0x00826dc3] BOOTMEM
memblock_x86_reserve_range: [0x00826db0-0x00826db3] BOOTMEM
memblock_x86_reserve_range: [0x00826da0-0x00826da3] BOOTMEM
memblock_x86_reserve_range: [0x00826d90-0x00826d93] BOOTMEM
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0
memblock_x86_reserve_range: [0x00826d10-0x00826d87] BOOTMEM
memblock_x86_reserve_range: [0x00826ce0-0x00826d0b] BOOTMEM
Built 1 zonelists in Zone order, mobility grouping off. Total pages: 1982
Kernel command line: root=/dev/hda2 parport=0x378,7 init=/etc/preinit noinitrd earlyprintk=ttyS0,9600 ignore_loglevel debug memblock=debug
memblock_x86_reserve_range: [0x00826c60-0x00826cdf] BOOTMEM
PID hash table entries: 32 (order: -5, 128 bytes)
memblock_x86_reserve_range: [0x0081d000-0x0081dfff] BOOTMEM
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
memblock_x86_reserve_range: [0x0081c000-0x0081cfff] BOOTMEM
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Initializing CPU#0
Subtract (14 early reservations)
[000009e000-00000fffff]
[0000400000-00006abfff]
[000081c000-0000825fff]
[0000826c60-0000826d0b]
[0000826d10-0000826d87]
[0000826d90-0000826d93]
[0000826da0-0000826da3]
[0000826db0-0000826db3]
[0000826dc0-0000826dc3]
[0000826dd0-0000827e45]
[0000827e50-0000827ec5]
[0000827ed0-0000827fa3]
[0000827fb0-0000827ff3]
[0000828000-000083ffff]
Memory: 5112k/8448k available (2022k kernel code, 2884k reserved, 392k data, 212k init, 0k highmem)
virtual kernel memory layout:
fixmap : 0xfffe4000 - 0xfffff000 ( 108 kB)
vmalloc : 0xc1040000 - 0xfffe2000 (1007 MB)
lowmem : 0xc0000000 - 0xc0840000 ( 8 MB)
.init : 0xc065c000 - 0xc0691000 ( 212 kB)
.data : 0xc05f9a5b - 0xc065be50 ( 392 kB)
.text : 0xc0400000 - 0xc05f9a5b (2022 kB)
Checking if this processor honours the WP bit even in supervisor mode...Ok.
SLUB: Genslabs=15, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:16
CPU 0 irqstacks, hard=c0812000 soft=c0814000
Console: colour VGA+ 80x25
console [tty0] enabled, bootconsole disabled
ÿ
next prev parent reply other threads:[~2011-05-06 8:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-05 20:02 early crash on ancient tablet related to no-bootmem Stefan Hellermann
2011-05-05 21:57 ` Stefan Hellermann
2011-05-05 22:06 ` Yinghai Lu
2011-05-05 22:46 ` Stefan Hellermann
2011-05-06 6:30 ` Yinghai Lu
2011-05-06 8:52 ` Stefan Hellermann [this message]
2011-05-06 22:29 ` PATCH] mm: Use alloc_bootmem_node_nopanic on really needed path Yinghai Lu
2011-05-06 22:39 ` Andrew Morton
2011-05-06 22:48 ` Yinghai Lu
2011-05-07 8:22 ` Ingo Molnar
2011-05-08 18:10 ` [PATCH -v2] " Yinghai Lu
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=4DC3B6C6.7000704@the2masters.de \
--to=stefan@the2masters.de \
--cc=linux-kernel@vger.kernel.org \
--cc=yinghai@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.