RE: [RFC PATCH] ia64: convert to dynamic percpu allocator

From: Yu, Fenghua
Date: Tue Aug 11 2009 - 14:12:15 EST


>Yu, Fenghua wrote:
>
>> After cloning from
>> git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git, kernel
>> built with CONFIG_DISCONTIGMEM=y boots ok.
>>
>> After pulling from review-ia64, kernel built with
>> CONFIG_DISCONTIGMEM=y can not boot on ia64. After loading kernel and
>> initrd, system hangs and doesn't show anything on serial port.
>
>Heh, I didn't really expect it to work that easily either. The code
>builds but is completely untested (I can't test them). Can you try to
>track it down? Serial console should be up and running at that point,
>no?
>
>Thanks.

IA64 kernel boots hit this in mm/percpu.c
BUG_ON(ai->unit_size < size_sum);
ai->unit_size is PERCPU_PAGE_SIZE which is 64K on IA64. size_sum is relatively smaller than 64K.

Will you define PERCPU_DYNAMIC_RESERVE and PERCPU_MODULE_RESERVE as PAGE_SIZE or the bigger one between the current definition and PAGE_SIZE?

Even with the above PAGE_SIZE changes, the kernel still reports warning from 952: WARN_ON(chunk->immutable) and then panic.

Calibrating delay loop... 1593.34 BogoMIPS (lpj=3186688)
------------[ cut here ]------------
WARNING: at mm/percpu.c:952 pcpu_alloc+0x610/0xfe0()
Modules linked in:

Call Trace:
[<a0000001000162e0>] show_stack+0x40/0xa0
sp=a000000100c7fc30 bsp=a000000100c711f0
[<a000000100016370>] dump_stack+0x30/0x60
sp=a000000100c7fe00 bsp=a000000100c711d8
[<a00000010009b340>] warn_slowpath_common+0xc0/0x100
sp=a000000100c7fe00 bsp=a000000100c711a0
[<a00000010009b3b0>] warn_slowpath_null+0x30/0x60
sp=a000000100c7fe00 bsp=a000000100c71178
[<a00000010018d3f0>] pcpu_alloc+0x610/0xfe0
sp=a000000100c7fe00 bsp=a000000100c710e0
[<a00000010018de50>] __alloc_percpu+0x30/0x60
sp=a000000100c7fe10 bsp=a000000100c710b8
[<a00000010044a180>] __percpu_counter_init+0x60/0x120
sp=a000000100c7fe10 bsp=a000000100c71090
[<a000000100ac1110>] mmap_init+0x30/0x60
sp=a000000100c7fe20 bsp=a000000100c71078
[<a000000100ab6420>] proc_caches_init+0x1a0/0x1c0
sp=a000000100c7fe20 bsp=a000000100c71060
[<a000000100aa1520>] start_kernel+0x7e0/0x8c0
sp=a000000100c7fe20 bsp=a000000100c70fe0
[<a00000010085be60>] _start+0x760/0x780
sp=a000000100c7fe30 bsp=a000000100c70f40
---[ end trace 4eaa2a86a8e2da22 ]---
------------[ cut here ]------------
WARNING: at mm/vmalloc.c:106 vmap_page_range_noflush+0x3d0/0x460()
Modules linked in:

Call Trace:
[<a0000001000162e0>] show_stack+0x40/0xa0
sp=a000000100c7fc40 bsp=a000000100c71300
[<a000000100016370>] dump_stack+0x30/0x60
sp=a000000100c7fe10 bsp=a000000100c712e8
[<a00000010009b340>] warn_slowpath_common+0xc0/0x100
sp=a000000100c7fe10 bsp=a000000100c712b0
[<a00000010009b3b0>] warn_slowpath_null+0x30/0x60
sp=a000000100c7fe10 bsp=a000000100c71288
[<a00000010015f470>] vmap_page_range_noflush+0x3d0/0x460
sp=a000000100c7fe10 bsp=a000000100c71210
[<a00000010015f590>] vmap_page_range+0x30/0x60
sp=a000000100c7fe10 bsp=a000000100c711d0
[<a00000010015f610>] map_vm_area+0x50/0xa0
sp=a000000100c7fe10 bsp=a000000100c711a0
[<a00000010015f950>] __vmalloc_area_node+0x2f0/0x3a0
sp=a000000100c7fe10 bsp=a000000100c71158
[<a00000010015fae0>] __vmalloc_node+0xe0/0x120
sp=a000000100c7fe20 bsp=a000000100c71118
[<a00000010015fe60>] __vmalloc+0x40/0x60
sp=a000000100c7fe20 bsp=a000000100c710e8
[<a000000100ac0350>] alloc_large_system_hash+0x2f0/0x4e0
sp=a000000100c7fe20 bsp=a000000100c71088
[<a000000100ac58b0>] vfs_caches_init+0x150/0x280
sp=a000000100c7fe20 bsp=a000000100c71060
[<a000000100aa1540>] start_kernel+0x800/0x8c0
sp=a000000100c7fe20 bsp=a000000100c70fe0
[<a00000010085be60>] _start+0x760/0x780
sp=a000000100c7fe30 bsp=a000000100c70f40
---[ end trace 4eaa2a86a8e2da23 ]---
Dentry cache hash table entries: 1048576 (order: 7, 8388608 bytes)
Inode-cache hash table entries: 1048576 (order: 7, 8388608 bytes)
Mount-cache hash table entries: 4096
Unable to handle kernel paging request at virtual address 00d0000000000000
swapper[0]: Oops 8813272891392 [1]
Modules linked in:

Pid: 0, CPU 0, comm: swapper
psr : 00001010084a2018 ifs : 800000000000038c ip : [<a0000001001840e0>] Tain
ted: G W (2.6.31-rc5)
ip is at kmem_cache_alloc+0xc0/0x1a0
unat: 0000000000000000 pfs : 000000000000040b rsc : 0000000000000003
rnat: a000000101362dc8 bsps: a000000101363f6c pr : 656960155aa6a659
ldrs: 0000000000000000 ccv : 0000000000000000 fpsr: 0009804c8a70433f
csd : 0930ffff00078000 ssd : 0930ffff00078000
b0 : a0000001001c6290 b6 : a0000001002fefe0 b7 : a000000100195b00
f6 : 0fff592492492483a4000 f7 : 0ffe7cd08000000000000
f8 : 1000f8000000000000000 f9 : 10008e000000000000000
f10 : 1000592492492483a4000 f11 : 1003e0000000000000049
r1 : a000000101547240 r2 : a000000101246438 r3 : a0000001011cacf0
r8 : 0000000000000000 r9 : 0000000000000000 r10 : a000000100c70ee4
r11 : 00000000003fffff r12 : a000000100c7fe20 r13 : a000000100c70000
r14 : 00d0000000000000 r15 : a00000010124644c r16 : a000000100db4f58
r17 : a000000101347b70 r18 : 656960155aa6a659 r19 : a000000100a004c0
r20 : 0000000000000000 r21 : e00000018012c098 r22 : 0000000000000006
r23 : 0000000000000008 r24 : 0000000000000370 r25 : e000000180130010
r26 : 0000000000000020 r27 : a000000100cb0200 r28 : a000000101347740
r29 : 0000000080000000 r30 : 00000000000000c1 r31 : a000000101246340

Call Trace:
[<a0000001000162e0>] show_stack+0x40/0xa0
sp=a000000100c7f9f0 bsp=a000000100c712a0
[<a000000100016bf0>] show_regs+0x850/0x8a0
sp=a000000100c7fbc0 bsp=a000000100c71248
[<a00000010003a170>] die+0x1b0/0x2c0
sp=a000000100c7fbc0 bsp=a000000100c71200
[<a000000100064570>] ia64_do_page_fault+0x8d0/0xa40
sp=a000000100c7fbc0 bsp=a000000100c711a8
[<a00000010000c780>] ia64_native_leave_kernel+0x0/0x270
sp=a000000100c7fc50 bsp=a000000100c711a8
[<a0000001001840e0>] kmem_cache_alloc+0xc0/0x1a0
sp=a000000100c7fe20 bsp=a000000100c71148
[<a0000001001c6290>] alloc_vfsmnt+0x30/0x2e0
sp=a000000100c7fe20 bsp=a000000100c71108
[<a000000100197450>] vfs_kern_mount+0x30/0x1a0
sp=a000000100c7fe20 bsp=a000000100c710c8
[<a000000100197600>] kern_mount_data+0x40/0x60
sp=a000000100c7fe20 bsp=a000000100c710a0
[<a000000100ac6970>] bdev_cache_init+0xb0/0x140
sp=a000000100c7fe20 bsp=a000000100c71088
[<a000000100ac59a0>] vfs_caches_init+0x240/0x280
sp=a000000100c7fe20 bsp=a000000100c71060
[<a000000100aa1540>] start_kernel+0x800/0x8c0
sp=a000000100c7fe20 bsp=a000000100c70fe0
[<a00000010085be60>] _start+0x760/0x780
sp=a000000100c7fe30 bsp=a000000100c70f40
Disabling lock debugging due to kernel taint
Kernel panic - not syncing: Attempted to kill the idle task!

Thanks.

-Fenghua
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/