All of lore.kernel.org
 help / color / mirror / Atom feed
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
ÿ

  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.