public inbox for linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox