All of lore.kernel.org
 help / color / mirror / Atom feed
* Early boot panic on machine with lots of memory
@ 2012-06-13 21:38 Sasha Levin
  2012-06-14  3:20   ` Tejun Heo
  0 siblings, 1 reply; 71+ messages in thread
From: Sasha Levin @ 2012-06-13 21:38 UTC (permalink / raw)
  To: Tejun Heo, Andrew Morton, David Miller, hpa; +Cc: linux-mm, linux-kernel

Hi all,

I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.

Note that it happens with numa=off.

[    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
[    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
[    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160
[    0.000000] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
[    0.000000] CPU 0 
[    0.000000] Pid: 0, comm: swapper Not tainted 3.5.0-rc2-next-20120612-sasha-00015-g996227e #395  
[    0.000000] RIP: 0010:[<ffffffff836a6f37>]  [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
[    0.000000] RSP: 0000:ffffffff84801db8  EFLAGS: 00010006
[    0.000000] RAX: 0000000000000109 RBX: 000000000000011a RCX: 0000000000000000
[    0.000000] RDX: 0000000000000109 RSI: 0000000000000400 RDI: ffffffff84801e60
[    0.000000] RBP: ffffffff84801e18 R08: ffff88102febd958 R09: 0000000100000000
[    0.000000] R10: 0000001030000000 R11: 0000000000000119 R12: ffff88102febc080
[    0.000000] R13: ffffffff84e1beb0 R14: 0000000000000000 R15: 0000000000000002
[    0.000000] FS:  0000000000000000(0000) GS:ffff880fcfa00000(0000) knlGS:0000000000000000
[    0.000000] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[    0.000000] CR2: ffff88102febd948 CR3: 0000000004825000 CR4: 00000000000006b0
[    0.000000] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[    0.000000] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[    0.000000] Process swapper (pid: 0, threadinfo ffffffff84800000, task ffffffff8482d400)
[    0.000000] Stack:
[    0.000000]  0000000000000000 ffffffff84801e68 ffffffff84801e70 ffffffff84801e60
[    0.000000]  ffffffff84e1be80 0000000000000003 0000010900000002 0000000000f9122f
[    0.000000]  ffffffff84801e60 ffffffff84801e70 ffffffff84801e68 ffffea0000000000
[    0.000000] Call Trace:
[    0.000000]  [<ffffffff850e8a98>] free_low_memory_core_early+0x1e4/0x206
[    0.000000]  [<ffffffff850dab50>] numa_free_all_bootmem+0x82/0x8e
[    0.000000]  [<ffffffff836b4352>] ? bad_to_user+0x149c/0x149c
[    0.000000]  [<ffffffff850d8ff9>] mem_init+0x1e/0xec
[    0.000000]  [<ffffffff850c0eb9>] start_kernel+0x209/0x3e9
[    0.000000]  [<ffffffff850c0ade>] ? kernel_init+0x28a/0x28a
[    0.000000]  [<ffffffff850c0324>] x86_64_start_reservations+0xff/0x104
[    0.000000]  [<ffffffff850c047e>] x86_64_start_kernel+0x155/0x164
[    0.000000] Code: 55 08 81 fe 00 04 00 00 0f 84 9a 00 00 00 41 3b 75 10 0f 85 9c 00 00 00 e9 8b 00 00 00 4c 6b c0 18 31 c9 4f 8d 04 04 85 d2 74 08 <49> 8b 48 f0 49 03 48 e8 48 83 cf ff 4c 39 d8 73 03 49 8b 38 4c 
[    0.000000] RIP  [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
[    0.000000]  RSP <ffffffff84801db8>
[    0.000000] CR2: ffff88102febd948
[    0.000000] ---[ end trace a7919e7f17c0a725 ]---


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-13 21:38 Early boot panic on machine with lots of memory Sasha Levin
@ 2012-06-14  3:20   ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-14  3:20 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> Hi all,
> 
> I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> 
> Note that it happens with numa=off.
> 
> [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155

Can you map it back to the source line please?

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-14  3:20   ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-14  3:20 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> Hi all,
> 
> I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> 
> Note that it happens with numa=off.
> 
> [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155

Can you map it back to the source line please?

Thanks.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-14  3:20   ` Tejun Heo
@ 2012-06-14  9:50     ` Sasha Levin
  -1 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-14  9:50 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> > Hi all,
> > 
> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> > 
> > Note that it happens with numa=off.
> > 
> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> 
> Can you map it back to the source line please?

mm/memblock.c:583

                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
  97:   85 d2                   test   %edx,%edx
  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
  9f:   49 03 48 e8             add    -0x18(%r8),%rcx

It's the deref on 9b (r8=ffff88102febd958).


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-14  9:50     ` Sasha Levin
  0 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-14  9:50 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> > Hi all,
> > 
> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> > 
> > Note that it happens with numa=off.
> > 
> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> 
> Can you map it back to the source line please?

mm/memblock.c:583

                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
  97:   85 d2                   test   %edx,%edx
  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
  9f:   49 03 48 e8             add    -0x18(%r8),%rcx

It's the deref on 9b (r8=ffff88102febd958).

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-14  9:50     ` Sasha Levin
@ 2012-06-14 20:56       ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-14 20:56 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
>> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
>> > Hi all,
>> >
>> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
>> >
>> > Note that it happens with numa=off.
>> >
>> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
>> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
>>
>> Can you map it back to the source line please?
>
> mm/memblock.c:583
>
>                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>  97:   85 d2                   test   %edx,%edx
>  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
>  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
>  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
>
> It's the deref on 9b (r8=ffff88102febd958).

that reserved.region is allocated by memblock.

can you boot with "memblock=debug debug ignore_loglevel" and post
whole boot log?

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-14 20:56       ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-14 20:56 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
>> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
>> > Hi all,
>> >
>> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
>> >
>> > Note that it happens with numa=off.
>> >
>> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
>> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
>>
>> Can you map it back to the source line please?
>
> mm/memblock.c:583
>
>                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>  97:   85 d2                   test   %edx,%edx
>  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
>  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
>  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
>
> It's the deref on 9b (r8=ffff88102febd958).

that reserved.region is allocated by memblock.

can you boot with "memblock=debug debug ignore_loglevel" and post
whole boot log?

Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-14 20:56       ` Yinghai Lu
@ 2012-06-14 21:34         ` Sasha Levin
  -1 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-14 21:34 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, 2012-06-14 at 13:56 -0700, Yinghai Lu wrote:
> On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> >> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> >> > Hi all,
> >> >
> >> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> >> >
> >> > Note that it happens with numa=off.
> >> >
> >> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> >> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> >>
> >> Can you map it back to the source line please?
> >
> > mm/memblock.c:583
> >
> >                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
> >  97:   85 d2                   test   %edx,%edx
> >  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
> >  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
> >  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
> >
> > It's the deref on 9b (r8=ffff88102febd958).
> 
> that reserved.region is allocated by memblock.
> 
> can you boot with "memblock=debug debug ignore_loglevel" and post
> whole boot log?

Attached below. I've also noticed it doesn't always happen, but
increasing the vcpu count (to something around 254) makes it happen
almost every time.

Decompressing Linux... Parsing ELF... done.
Booting the kernel.
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.5.0-rc2-next-20120614-sasha (sasha@lappy) (gcc version 4.4.5 (Debian 4.4.5-8) ) #447 SMP PREEMPT Thu Jun 14 17:17:56 EDT 2012
[    0.000000] Command line: noapic noacpi pci=conf1 reboot=k panic=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 console=ttyS0 earlyprintk=serial i8042.noaux=1 sched_debug slub_debug=FZPU init=/virt/init numa=off memblock=debug debug ignore_loglevel root=/dev/root rw rootflags=rw,trans=virtio,version=9p2000.L rootfstype=9p init=/virt/init
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000ffffe] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000cfffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000102fffffff] usable
[    0.000000] bootconsole [earlyser0] enabled
[    0.000000] debug: ignoring loglevel setting.
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] DMI not present or invalid.
[    0.000000] e820: update [mem 0x00000000-0x0000ffff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] No AGP bridge found
[    0.000000] e820: last_pfn = 0x1030000 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges disabled:
[    0.000000]   00000-FFFFF uncachable
[    0.000000] MTRR variable ranges disabled:
[    0.000000]   0 disabled
[    0.000000]   1 disabled
[    0.000000]   2 disabled
[    0.000000]   3 disabled
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x70106, new 0x7010600070106
[    0.000000] CPU MTRRs all blank - virtualized system.
[    0.000000] e820: last_pfn = 0xd0000 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000f1740-0x000f174f] mapped at [ffff8800000f1740]
[    0.000000] memblock_reserve: [0x000000000f1740-0x000000000f1750] smp_scan_config+0xd1/0x10e
[    0.000000] memblock_reserve: [0x000000000f02f0-0x000000000f173c] smp_scan_config+0xef/0x10e
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff8fc00 reserved size = 0x5282000
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]	[0x00000000010000-0x0000000009fbff], 0x8fc00 bytes
[    0.000000]  memory[0x1]	[0x00000000100000-0x000000cfffffff], 0xcff00000 bytes
[    0.000000]  memory[0x2]	[0x00000100000000-0x0000102fffffff], 0xf30000000 bytes
[    0.000000]  reserved.cnt  = 0x2
[    0.000000]  reserved[0x0]	[0x0000000009f000-0x000000000fffff], 0x61000 bytes
[    0.000000]  reserved[0x1]	[0x00000001000000-0x00000006220fff], 0x5221000 bytes
[    0.000000] initial memory mapped: [mem 0x00000000-0x1fffffff]
[    0.000000] memblock_reserve: [0x00000000099000-0x0000000009f000] setup_real_mode+0x69/0x1b7
[    0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[    0.000000] init_memory_mapping: [mem 0x00000000-0xcfffffff]
[    0.000000]  [mem 0x00000000-0xcfffffff] page 4k
[    0.000000] kernel direct mapping tables up to 0xcfffffff @ [mem 0x1f97b000-0x1fffffff]
[    0.000000] memblock_reserve: [0x0000001f97b000-0x0000001fffe000] native_pagetable_reserve+0xc/0xe
[    0.000000] init_memory_mapping: [mem 0x100000000-0x102fffffff]
[    0.000000]  [mem 0x100000000-0x102fffffff] page 4k
[    0.000000] kernel direct mapping tables up to 0x102fffffff @ [mem 0xc7e3e000-0xcfffffff]
[    0.000000] memblock_reserve: [0x000000c7e3e000-0x000000cf7fb000] native_pagetable_reserve+0xc/0xe
[    0.000000] ACPI Error: A valid RSDP was not found (20120518/tbxfroot-219)
[    0.000000] NUMA turned off
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000102fffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x102fffffff]
[    0.000000] memblock_reserve: [0x0000102ffcf000-0x00001030000000] memblock_alloc_base_nid+0x3d/0x50
[    0.000000]   NODE_DATA [mem 0x102ffcf000-0x102fffffff]
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff8fc00 reserved size = 0xd2f9000
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]	[0x00000000010000-0x0000000009fbff], 0x8fc00 bytes on node 0
[    0.000000]  memory[0x1]	[0x00000000100000-0x000000cfffffff], 0xcff00000 bytes on node 0
[    0.000000]  memory[0x2]	[0x00000100000000-0x0000102fffffff], 0xf30000000 bytes on node 0
[    0.000000]  reserved.cnt  = 0x5
[    0.000000]  reserved[0x0]	[0x00000000099000-0x000000000fffff], 0x67000 bytes
[    0.000000]  reserved[0x1]	[0x00000001000000-0x00000006220fff], 0x5221000 bytes
[    0.000000]  reserved[0x2]	[0x0000001f97b000-0x0000001fffdfff], 0x683000 bytes
[    0.000000]  reserved[0x3]	[0x000000c7e3e000-0x000000cf7fafff], 0x79bd000 bytes
[    0.000000]  reserved[0x4]	[0x0000102ffcf000-0x0000102fffffff], 0x31000 bytes
[    0.000000] memblock_reserve: [0x0000102ffce000-0x0000102ffcf000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102ffcd000-0x0000102ffce000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102ffcc000-0x0000102ffcd000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fbcc000-0x0000102ffcc000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fbc9000-0x0000102fbcc000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c9000-0x0000102fbc9000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x00000fef600000-0x0000102f600000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c8000-0x0000102f7c9000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c7000-0x0000102f7c8000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c6000-0x0000102f7c7000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]    memblock_free: [0x0000102f600000-0x0000102f600000] free_bootmem+0x2b/0x30
[    0.000000]  [ffffea0000000000-ffffea0040bfffff] PMD -> [ffff880fef600000-ffff88102f5fffff] on node 0
[    0.000000]    memblock_free: [0x0000102f7c9000-0x0000102fbc9000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x0000102fbcc000-0x0000102ffcc000] free_bootmem+0x2b/0x30
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00010000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x102fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00010000-0x0009efff]
[    0.000000]   node   0: [mem 0x00100000-0xcfffffff]
[    0.000000]   node   0: [mem 0x100000000-0x102fffffff]
[    0.000000] On node 0 totalpages: 16777103
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 6 pages reserved
[    0.000000]   DMA zone: 3913 pages, LIFO batch:0
[    0.000000] memblock_reserve: [0x0000102ff74000-0x0000102ffcc000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]   DMA32 zone: 16320 pages used for memmap
[    0.000000]   DMA32 zone: 831552 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x0000102ff1c000-0x0000102ff74000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]   Normal zone: 248832 pages used for memmap
[    0.000000]   Normal zone: 15676416 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x0000102fec4000-0x0000102ff1c000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec3000-0x0000102fec4000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] SFI: Simple Firmware Interface v0.81 http://simplefirmware.org
[    0.000000] Intel MultiProcessor Specification v1.4
[    0.000000] MPTABLE: OEM ID: KVMCPU00
[    0.000000] MPTABLE: Product ID: 0.1         
[    0.000000] MPTABLE: APIC at: 0xFEE00000
[    0.000000] Processor #0 (Bootup-CPU)
[    0.000000] Processor #1
[    0.000000] Processor #2
[    0.000000] Processor #3
[    0.000000] Processor #4
[    0.000000] Processor #5
[    0.000000] Processor #6
[    0.000000] Processor #7
[    0.000000] Processor #8
[    0.000000] Processor #9
[    0.000000] Processor #10
[    0.000000] Processor #11
[    0.000000] Processor #12
[    0.000000] Processor #13
[    0.000000] Processor #14
[    0.000000] Processor #15
[    0.000000] Processor #16
[    0.000000] Processor #17
[    0.000000] Processor #18
[    0.000000] Processor #19
[    0.000000] Processor #20
[    0.000000] Processor #21
[    0.000000] Processor #22
[    0.000000] Processor #23
[    0.000000] Processor #24
[    0.000000] Processor #25
[    0.000000] Processor #26
[    0.000000] Processor #27
[    0.000000] Processor #28
[    0.000000] Processor #29
[    0.000000] Processor #30
[    0.000000] Processor #31
[    0.000000] Processor #32
[    0.000000] Processor #33
[    0.000000] Processor #34
[    0.000000] Processor #35
[    0.000000] Processor #36
[    0.000000] Processor #37
[    0.000000] Processor #38
[    0.000000] Processor #39
[    0.000000] Processor #40
[    0.000000] Processor #41
[    0.000000] Processor #42
[    0.000000] Processor #43
[    0.000000] Processor #44
[    0.000000] Processor #45
[    0.000000] Processor #46
[    0.000000] Processor #47
[    0.000000] Processor #48
[    0.000000] Processor #49
[    0.000000] Processor #50
[    0.000000] Processor #51
[    0.000000] Processor #52
[    0.000000] Processor #53
[    0.000000] Processor #54
[    0.000000] Processor #55
[    0.000000] Processor #56
[    0.000000] Processor #57
[    0.000000] Processor #58
[    0.000000] Processor #59
[    0.000000] Processor #60
[    0.000000] Processor #61
[    0.000000] Processor #62
[    0.000000] Processor #63
[    0.000000] Processor #64
[    0.000000] Processor #65
[    0.000000] Processor #66
[    0.000000] Processor #67
[    0.000000] Processor #68
[    0.000000] Processor #69
[    0.000000] Processor #70
[    0.000000] Processor #71
[    0.000000] Processor #72
[    0.000000] Processor #73
[    0.000000] Processor #74
[    0.000000] Processor #75
[    0.000000] Processor #76
[    0.000000] Processor #77
[    0.000000] Processor #78
[    0.000000] Processor #79
[    0.000000] Processor #80
[    0.000000] Processor #81
[    0.000000] Processor #82
[    0.000000] Processor #83
[    0.000000] Processor #84
[    0.000000] Processor #85
[    0.000000] Processor #86
[    0.000000] Processor #87
[    0.000000] Processor #88
[    0.000000] Processor #89
[    0.000000] Processor #90
[    0.000000] Processor #91
[    0.000000] Processor #92
[    0.000000] Processor #93
[    0.000000] Processor #94
[    0.000000] Processor #95
[    0.000000] Processor #96
[    0.000000] Processor #97
[    0.000000] Processor #98
[    0.000000] Processor #99
[    0.000000] Processor #100
[    0.000000] Processor #101
[    0.000000] Processor #102
[    0.000000] Processor #103
[    0.000000] Processor #104
[    0.000000] Processor #105
[    0.000000] Processor #106
[    0.000000] Processor #107
[    0.000000] Processor #108
[    0.000000] Processor #109
[    0.000000] Processor #110
[    0.000000] Processor #111
[    0.000000] Processor #112
[    0.000000] Processor #113
[    0.000000] Processor #114
[    0.000000] Processor #115
[    0.000000] Processor #116
[    0.000000] Processor #117
[    0.000000] Processor #118
[    0.000000] Processor #119
[    0.000000] Processor #120
[    0.000000] Processor #121
[    0.000000] Processor #122
[    0.000000] Processor #123
[    0.000000] Processor #124
[    0.000000] Processor #125
[    0.000000] Processor #126
[    0.000000] Processor #127
[    0.000000] Processor #128
[    0.000000] Processor #129
[    0.000000] Processor #130
[    0.000000] Processor #131
[    0.000000] Processor #132
[    0.000000] Processor #133
[    0.000000] Processor #134
[    0.000000] Processor #135
[    0.000000] Processor #136
[    0.000000] Processor #137
[    0.000000] Processor #138
[    0.000000] Processor #139
[    0.000000] Processor #140
[    0.000000] Processor #141
[    0.000000] Processor #142
[    0.000000] Processor #143
[    0.000000] Processor #144
[    0.000000] Processor #145
[    0.000000] Processor #146
[    0.000000] Processor #147
[    0.000000] Processor #148
[    0.000000] Processor #149
[    0.000000] Processor #150
[    0.000000] Processor #151
[    0.000000] Processor #152
[    0.000000] Processor #153
[    0.000000] Processor #154
[    0.000000] Processor #155
[    0.000000] Processor #156
[    0.000000] Processor #157
[    0.000000] Processor #158
[    0.000000] Processor #159
[    0.000000] Processor #160
[    0.000000] Processor #161
[    0.000000] Processor #162
[    0.000000] Processor #163
[    0.000000] Processor #164
[    0.000000] Processor #165
[    0.000000] Processor #166
[    0.000000] Processor #167
[    0.000000] Processor #168
[    0.000000] Processor #169
[    0.000000] Processor #170
[    0.000000] Processor #171
[    0.000000] Processor #172
[    0.000000] Processor #173
[    0.000000] Processor #174
[    0.000000] Processor #175
[    0.000000] Processor #176
[    0.000000] Processor #177
[    0.000000] Processor #178
[    0.000000] Processor #179
[    0.000000] Processor #180
[    0.000000] Processor #181
[    0.000000] Processor #182
[    0.000000] Processor #183
[    0.000000] Processor #184
[    0.000000] Processor #185
[    0.000000] Processor #186
[    0.000000] Processor #187
[    0.000000] Processor #188
[    0.000000] Processor #189
[    0.000000] Processor #190
[    0.000000] Processor #191
[    0.000000] Processor #192
[    0.000000] Processor #193
[    0.000000] Processor #194
[    0.000000] Processor #195
[    0.000000] Processor #196
[    0.000000] Processor #197
[    0.000000] Processor #198
[    0.000000] Processor #199
[    0.000000] Processor #200
[    0.000000] Processor #201
[    0.000000] Processor #202
[    0.000000] Processor #203
[    0.000000] Processor #204
[    0.000000] Processor #205
[    0.000000] Processor #206
[    0.000000] Processor #207
[    0.000000] Processor #208
[    0.000000] Processor #209
[    0.000000] Processor #210
[    0.000000] Processor #211
[    0.000000] Processor #212
[    0.000000] Processor #213
[    0.000000] Processor #214
[    0.000000] Processor #215
[    0.000000] Processor #216
[    0.000000] Processor #217
[    0.000000] Processor #218
[    0.000000] Processor #219
[    0.000000] Processor #220
[    0.000000] Processor #221
[    0.000000] Processor #222
[    0.000000] Processor #223
[    0.000000] Processor #224
[    0.000000] Processor #225
[    0.000000] Processor #226
[    0.000000] Processor #227
[    0.000000] Processor #228
[    0.000000] Processor #229
[    0.000000] Processor #230
[    0.000000] Processor #231
[    0.000000] Processor #232
[    0.000000] Processor #233
[    0.000000] Processor #234
[    0.000000] Processor #235
[    0.000000] Processor #236
[    0.000000] Processor #237
[    0.000000] Processor #238
[    0.000000] Processor #239
[    0.000000] Processor #240
[    0.000000] Processor #241
[    0.000000] Processor #242
[    0.000000] Processor #243
[    0.000000] Processor #244
[    0.000000] Processor #245
[    0.000000] Processor #246
[    0.000000] Processor #247
[    0.000000] Processor #248
[    0.000000] Processor #249
[    0.000000] Processor #250
[    0.000000] Processor #251
[    0.000000] Processor #252
[    0.000000] Processor #253
[    0.000000] IOAPIC[0]: apic_id 255, version 17, address 0xfec00000, GSI 0-23
[    0.000000] Processors: 254
[    0.000000] smpboot: Allowing 254 CPUs, 0 hotplug CPUs
[    0.000000] memblock_reserve: [0x0000102fec2f80-0x0000102fec2fc3] __alloc_memory_core_early+0x5c/0x73
[    0.000000] nr_irqs_gsi: 40
[    0.000000] memblock_reserve: [0x0000102fec2e00-0x0000102fec2f50] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2d80-0x0000102fec2de8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2d00-0x0000102fec2d68] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2c80-0x0000102fec2ce8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2c00-0x0000102fec2c68] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2b80-0x0000102fec2be8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2b40-0x0000102fec2b60] __alloc_memory_core_early+0x5c/0x73
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
[    0.000000] PM: Registered nosave memory: 00000000000f0000 - 00000000000ff000
[    0.000000] PM: Registered nosave memory: 00000000000ff000 - 0000000000100000
[    0.000000] memblock_reserve: [0x0000102fec2b00-0x0000102fec2b20] __alloc_memory_core_early+0x5c/0x73
[    0.000000] PM: Registered nosave memory: 00000000d0000000 - 0000000100000000
[    0.000000] e820: [mem 0xd0000000-0xffffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] memblock_reserve: [0x0000102fec29c0-0x0000102fec2afa] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2880-0x0000102fec29ba] __alloc_memory_core_early+0x5c/0x73
[    0.000000] setup_percpu: NR_CPUS:4096 nr_cpumask_bits:254 nr_cpu_ids:254 nr_node_ids:1
[    0.000000] memblock_reserve: [0x0000102fec1880-0x0000102fec2880] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec0880-0x0000102fec1880] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x00000fcfa00000-0x00000fef600000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]    memblock_free: [0x00000fcfbdd000-0x00000fcfc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fcfddd000-0x00000fcfe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fcffdd000-0x00000fd0000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd01dd000-0x00000fd0200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd03dd000-0x00000fd0400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd05dd000-0x00000fd0600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd07dd000-0x00000fd0800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd09dd000-0x00000fd0a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd0bdd000-0x00000fd0c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd0ddd000-0x00000fd0e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd0fdd000-0x00000fd1000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd11dd000-0x00000fd1200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd13dd000-0x00000fd1400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd15dd000-0x00000fd1600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd17dd000-0x00000fd1800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd19dd000-0x00000fd1a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd1bdd000-0x00000fd1c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd1ddd000-0x00000fd1e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd1fdd000-0x00000fd2000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd21dd000-0x00000fd2200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd23dd000-0x00000fd2400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd25dd000-0x00000fd2600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd27dd000-0x00000fd2800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd29dd000-0x00000fd2a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd2bdd000-0x00000fd2c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd2ddd000-0x00000fd2e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd2fdd000-0x00000fd3000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd31dd000-0x00000fd3200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd33dd000-0x00000fd3400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd35dd000-0x00000fd3600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd37dd000-0x00000fd3800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd39dd000-0x00000fd3a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd3bdd000-0x00000fd3c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd3ddd000-0x00000fd3e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd3fdd000-0x00000fd4000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd41dd000-0x00000fd4200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd43dd000-0x00000fd4400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd45dd000-0x00000fd4600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd47dd000-0x00000fd4800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd49dd000-0x00000fd4a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd4bdd000-0x00000fd4c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd4ddd000-0x00000fd4e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd4fdd000-0x00000fd5000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd51dd000-0x00000fd5200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd53dd000-0x00000fd5400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd55dd000-0x00000fd5600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd57dd000-0x00000fd5800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd59dd000-0x00000fd5a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd5bdd000-0x00000fd5c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd5ddd000-0x00000fd5e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd5fdd000-0x00000fd6000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd61dd000-0x00000fd6200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd63dd000-0x00000fd6400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd65dd000-0x00000fd6600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd67dd000-0x00000fd6800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd69dd000-0x00000fd6a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd6bdd000-0x00000fd6c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd6ddd000-0x00000fd6e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd6fdd000-0x00000fd7000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd71dd000-0x00000fd7200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd73dd000-0x00000fd7400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd75dd000-0x00000fd7600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd77dd000-0x00000fd7800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd79dd000-0x00000fd7a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd7bdd000-0x00000fd7c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd7ddd000-0x00000fd7e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd7fdd000-0x00000fd8000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd81dd000-0x00000fd8200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd83dd000-0x00000fd8400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd85dd000-0x00000fd8600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd87dd000-0x00000fd8800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd89dd000-0x00000fd8a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd8bdd000-0x00000fd8c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd8ddd000-0x00000fd8e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd8fdd000-0x00000fd9000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd91dd000-0x00000fd9200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd93dd000-0x00000fd9400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd95dd000-0x00000fd9600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd97dd000-0x00000fd9800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd99dd000-0x00000fd9a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd9bdd000-0x00000fd9c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd9ddd000-0x00000fd9e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd9fdd000-0x00000fda000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda1dd000-0x00000fda200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda3dd000-0x00000fda400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda5dd000-0x00000fda600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda7dd000-0x00000fda800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda9dd000-0x00000fdaa00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdabdd000-0x00000fdac00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdaddd000-0x00000fdae00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdafdd000-0x00000fdb000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb1dd000-0x00000fdb200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb3dd000-0x00000fdb400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb5dd000-0x00000fdb600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb7dd000-0x00000fdb800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb9dd000-0x00000fdba00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdbbdd000-0x00000fdbc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdbddd000-0x00000fdbe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdbfdd000-0x00000fdc000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc1dd000-0x00000fdc200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc3dd000-0x00000fdc400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc5dd000-0x00000fdc600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc7dd000-0x00000fdc800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc9dd000-0x00000fdca00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdcbdd000-0x00000fdcc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdcddd000-0x00000fdce00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdcfdd000-0x00000fdd000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd1dd000-0x00000fdd200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd3dd000-0x00000fdd400000] free_bootmem+0x2b/0x30
[    0.000000] memblock: reserved array is doubled to 256 at [0x102febf080-0x102fec087f]
[    0.000000] memblock_reserve: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1c5/0x1e2
[    0.000000]    memblock_free: [0x00000fdd5dd000-0x00000fdd600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd7dd000-0x00000fdd800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd9dd000-0x00000fdda00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fddbdd000-0x00000fddc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fddddd000-0x00000fdde00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fddfdd000-0x00000fde000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde1dd000-0x00000fde200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde3dd000-0x00000fde400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde5dd000-0x00000fde600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde7dd000-0x00000fde800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde9dd000-0x00000fdea00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdebdd000-0x00000fdec00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdeddd000-0x00000fdee00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdefdd000-0x00000fdf000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf1dd000-0x00000fdf200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf3dd000-0x00000fdf400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf5dd000-0x00000fdf600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf7dd000-0x00000fdf800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf9dd000-0x00000fdfa00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdfbdd000-0x00000fdfc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdfddd000-0x00000fdfe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdffdd000-0x00000fe0000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe01dd000-0x00000fe0200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe03dd000-0x00000fe0400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe05dd000-0x00000fe0600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe07dd000-0x00000fe0800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe09dd000-0x00000fe0a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe0bdd000-0x00000fe0c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe0ddd000-0x00000fe0e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe0fdd000-0x00000fe1000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe11dd000-0x00000fe1200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe13dd000-0x00000fe1400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe15dd000-0x00000fe1600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe17dd000-0x00000fe1800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe19dd000-0x00000fe1a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe1bdd000-0x00000fe1c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe1ddd000-0x00000fe1e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe1fdd000-0x00000fe2000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe21dd000-0x00000fe2200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe23dd000-0x00000fe2400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe25dd000-0x00000fe2600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe27dd000-0x00000fe2800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe29dd000-0x00000fe2a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe2bdd000-0x00000fe2c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe2ddd000-0x00000fe2e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe2fdd000-0x00000fe3000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe31dd000-0x00000fe3200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe33dd000-0x00000fe3400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe35dd000-0x00000fe3600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe37dd000-0x00000fe3800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe39dd000-0x00000fe3a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe3bdd000-0x00000fe3c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe3ddd000-0x00000fe3e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe3fdd000-0x00000fe4000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe41dd000-0x00000fe4200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe43dd000-0x00000fe4400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe45dd000-0x00000fe4600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe47dd000-0x00000fe4800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe49dd000-0x00000fe4a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe4bdd000-0x00000fe4c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe4ddd000-0x00000fe4e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe4fdd000-0x00000fe5000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe51dd000-0x00000fe5200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe53dd000-0x00000fe5400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe55dd000-0x00000fe5600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe57dd000-0x00000fe5800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe59dd000-0x00000fe5a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe5bdd000-0x00000fe5c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe5ddd000-0x00000fe5e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe5fdd000-0x00000fe6000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe61dd000-0x00000fe6200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe63dd000-0x00000fe6400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe65dd000-0x00000fe6600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe67dd000-0x00000fe6800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe69dd000-0x00000fe6a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe6bdd000-0x00000fe6c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe6ddd000-0x00000fe6e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe6fdd000-0x00000fe7000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe71dd000-0x00000fe7200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe73dd000-0x00000fe7400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe75dd000-0x00000fe7600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe77dd000-0x00000fe7800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe79dd000-0x00000fe7a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe7bdd000-0x00000fe7c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe7ddd000-0x00000fe7e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe7fdd000-0x00000fe8000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe81dd000-0x00000fe8200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe83dd000-0x00000fe8400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe85dd000-0x00000fe8600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe87dd000-0x00000fe8800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe89dd000-0x00000fe8a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe8bdd000-0x00000fe8c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe8ddd000-0x00000fe8e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe8fdd000-0x00000fe9000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe91dd000-0x00000fe9200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe93dd000-0x00000fe9400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe95dd000-0x00000fe9600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe97dd000-0x00000fe9800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe99dd000-0x00000fe9a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe9bdd000-0x00000fe9c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe9ddd000-0x00000fe9e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe9fdd000-0x00000fea000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea1dd000-0x00000fea200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea3dd000-0x00000fea400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea5dd000-0x00000fea600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea7dd000-0x00000fea800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea9dd000-0x00000feaa00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feabdd000-0x00000feac00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feaddd000-0x00000feae00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feafdd000-0x00000feb000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb1dd000-0x00000feb200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb3dd000-0x00000feb400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb5dd000-0x00000feb600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb7dd000-0x00000feb800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb9dd000-0x00000feba00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000febbdd000-0x00000febc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000febddd000-0x00000febe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000febfdd000-0x00000fec000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec1dd000-0x00000fec200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec3dd000-0x00000fec400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec5dd000-0x00000fec600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec7dd000-0x00000fec800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec9dd000-0x00000feca00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fecbdd000-0x00000fecc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fecddd000-0x00000fece00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fecfdd000-0x00000fed000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed1dd000-0x00000fed200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed3dd000-0x00000fed400000] free_bootmem+0x2b/0x30
[    0.000000] memblock: reserved array is doubled to 512 at [0x102febc080-0x102febf07f]
[    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1b0/0x1e2
[    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080] memblock_double_array+0x1c5/0x1e2
[    0.000000]    memblock_free: [0x00000fed5dd000-0x00000fed600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed7dd000-0x00000fed800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed9dd000-0x00000feda00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fedbdd000-0x00000fedc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fedddd000-0x00000fede00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fedfdd000-0x00000fee000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee1dd000-0x00000fee200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee3dd000-0x00000fee400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee5dd000-0x00000fee600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee7dd000-0x00000fee800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee9dd000-0x00000feea00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feebdd000-0x00000feec00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feeddd000-0x00000feee00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feefdd000-0x00000fef000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fef1dd000-0x00000fef200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fef3dd000-0x00000fef400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fef5dd000-0x00000fef600000] free_bootmem+0x2b/0x30
[    0.000000] PERCPU: Embedded 477 pages/cpu @ffff880fcfa00000 s1930264 r0 d23528 u2097152
[    0.000000] memblock_reserve: [0x0000102fec0840-0x0000102fec0848] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec0800-0x0000102fec0808] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec0400-0x0000102fec07f8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102febfc00-0x0000102fec03f0] __alloc_memory_core_early+0x5c/0x73
[    0.000000] pcpu-alloc: s1930264 r0 d23528 u2097152 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 000 [0] 001 [0] 002 [0] 003 
[    0.000000] pcpu-alloc: [0] 004 [0] 005 [0] 006 [0] 007 
[    0.000000] pcpu-alloc: [0] 008 [0] 009 [0] 010 [0] 011 
[    0.000000] pcpu-alloc: [0] 012 [0] 013 [0] 014 [0] 015 
[    0.000000] pcpu-alloc: [0] 016 [0] 017 [0] 018 [0] 019 
[    0.000000] pcpu-alloc: [0] 020 [0] 021 [0] 022 [0] 023 
[    0.000000] pcpu-alloc: [0] 024 [0] 025 [0] 026 [0] 027 
[    0.000000] pcpu-alloc: [0] 028 [0] 029 [0] 030 [0] 031 
[    0.000000] pcpu-alloc: [0] 032 [0] 033 [0] 034 [0] 035 
[    0.000000] pcpu-alloc: [0] 036 [0] 037 [0] 038 [0] 039 
[    0.000000] pcpu-alloc: [0] 040 [0] 041 [0] 042 [0] 043 
[    0.000000] pcpu-alloc: [0] 044 [0] 045 [0] 046 [0] 047 
[    0.000000] pcpu-alloc: [0] 048 [0] 049 [0] 050 [0] 051 
[    0.000000] pcpu-alloc: [0] 052 [0] 053 [0] 054 [0] 055 
[    0.000000] pcpu-alloc: [0] 056 [0] 057 [0] 058 [0] 059 
[    0.000000] pcpu-alloc: [0] 060 [0] 061 [0] 062 [0] 063 
[    0.000000] pcpu-alloc: [0] 064 [0] 065 [0] 066 [0] 067 
[    0.000000] pcpu-alloc: [0] 068 [0] 069 [0] 070 [0] 071 
[    0.000000] pcpu-alloc: [0] 072 [0] 073 [0] 074 [0] 075 
[    0.000000] pcpu-alloc: [0] 076 [0] 077 [0] 078 [0] 079 
[    0.000000] pcpu-alloc: [0] 080 [0] 081 [0] 082 [0] 083 
[    0.000000] pcpu-alloc: [0] 084 [0] 085 [0] 086 [0] 087 
[    0.000000] pcpu-alloc: [0] 088 [0] 089 [0] 090 [0] 091 
[    0.000000] pcpu-alloc: [0] 092 [0] 093 [0] 094 [0] 095 
[    0.000000] pcpu-alloc: [0] 096 [0] 097 [0] 098 [0] 099 
[    0.000000] pcpu-alloc: [0] 100 [0] 101 [0] 102 [0] 103 
[    0.000000] pcpu-alloc: [0] 104 [0] 105 [0] 106 [0] 107 
[    0.000000] pcpu-alloc: [0] 108 [0] 109 [0] 110 [0] 111 
[    0.000000] pcpu-alloc: [0] 112 [0] 113 [0] 114 [0] 115 
[    0.000000] pcpu-alloc: [0] 116 [0] 117 [0] 118 [0] 119 
[    0.000000] pcpu-alloc: [0] 120 [0] 121 [0] 122 [0] 123 
[    0.000000] pcpu-alloc: [0] 124 [0] 125 [0] 126 [0] 127 
[    0.000000] pcpu-alloc: [0] 128 [0] 129 [0] 130 [0] 131 
[    0.000000] pcpu-alloc: [0] 132 [0] 133 [0] 134 [0] 135 
[    0.000000] pcpu-alloc: [0] 136 [0] 137 [0] 138 [0] 139 
[    0.000000] pcpu-alloc: [0] 140 [0] 141 [0] 142 [0] 143 
[    0.000000] pcpu-alloc: [0] 144 [0] 145 [0] 146 [0] 147 
[    0.000000] pcpu-alloc: [0] 148 [0] 149 [0] 150 [0] 151 
[    0.000000] pcpu-alloc: [0] 152 [0] 153 [0] 154 [0] 155 
[    0.000000] pcpu-alloc: [0] 156 [0] 157 [0] 158 [0] 159 
[    0.000000] pcpu-alloc: [0] 160 [0] 161 [0] 162 [0] 163 
[    0.000000] pcpu-alloc: [0] 164 [0] 165 [0] 166 [0] 167 
[    0.000000] pcpu-alloc: [0] 168 [0] 169 [0] 170 [0] 171 
[    0.000000] pcpu-alloc: [0] 172 [0] 173 [0] 174 [0] 175 
[    0.000000] pcpu-alloc: [0] 176 [0] 177 [0] 178 [0] 179 
[    0.000000] pcpu-alloc: [0] 180 [0] 181 [0] 182 [0] 183 
[    0.000000] pcpu-alloc: [0] 184 [0] 185 [0] 186 [0] 187 
[    0.000000] pcpu-alloc: [0] 188 [0] 189 [0] 190 [0] 191 
[    0.000000] pcpu-alloc: [0] 192 [0] 193 [0] 194 [0] 195 
[    0.000000] pcpu-alloc: [0] 196 [0] 197 [0] 198 [0] 199 
[    0.000000] pcpu-alloc: [0] 200 [0] 201 [0] 202 [0] 203 
[    0.000000] pcpu-alloc: [0] 204 [0] 205 [0] 206 [0] 207 
[    0.000000] pcpu-alloc: [0] 208 [0] 209 [0] 210 [0] 211 
[    0.000000] pcpu-alloc: [0] 212 [0] 213 [0] 214 [0] 215 
[    0.000000] pcpu-alloc: [0] 216 [0] 217 [0] 218 [0] 219 
[    0.000000] pcpu-alloc: [0] 220 [0] 221 [0] 222 [0] 223 
[    0.000000] pcpu-alloc: [0] 224 [0] 225 [0] 226 [0] 227 
[    0.000000] pcpu-alloc: [0] 228 [0] 229 [0] 230 [0] 231 
[    0.000000] pcpu-alloc: [0] 232 [0] 233 [0] 234 [0] 235 
[    0.000000] pcpu-alloc: [0] 236 [0] 237 [0] 238 [0] 239 
[    0.000000] pcpu-alloc: [0] 240 [0] 241 [0] 242 [0] 243 
[    0.000000] pcpu-alloc: [0] 244 [0] 245 [0] 246 [0] 247 
[    0.000000] pcpu-alloc: [0] 248 [0] 249 [0] 250 [0] 251 
[    0.000000] pcpu-alloc: [0] 252 [0] 253 
[    0.000000] memblock_reserve: [0x0000102febfa80-0x0000102febfbd0] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102febfa00-0x0000102febfa80] __alloc_memory_core_early+0x5c/0x73
[    0.000000]    memblock_free: [0x0000102fec1880-0x0000102fec2880] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x0000102fec0880-0x0000102fec1880] free_bootmem+0x2b/0x30
[    0.000000] memblock_reserve: [0x0000102fec2680-0x0000102fec2880] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2480-0x0000102fec2680] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2280-0x0000102fec2480] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2080-0x0000102fec2280] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec1e80-0x0000102fec2080] __alloc_memory_core_early+0x5c/0x73
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16511881
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: noapic noacpi pci=conf1 reboot=k panic=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 console=ttyS0 earlyprintk=serial i8042.noaux=1 sched_debug slub_debug=FZPU init=/virt/init numa=off memblock=debug debug ignore_loglevel root=/dev/root rw rootflags=rw,trans=virtio,version=9p2000.L rootfstype=9p init=/virt/init
[    0.000000] memblock_reserve: [0x0000102feb4080-0x0000102febc080] __alloc_memory_core_early+0x5c/0x73
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] memblock_reserve: [0x000000c3e3e000-0x000000c7e3e000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fe94000-0x0000102feb4000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fe54000-0x0000102fe94000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x000000cfff8000-0x000000d0000000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] Calgary: detecting Calgary via BIOS EBDA area
[    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
[    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
[    0.000000] IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
[    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160
[    0.000000] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
[    0.000000] CPU 0 
[    0.000000] Pid: 0, comm: swapper Not tainted 3.5.0-rc2-next-20120614-sasha #447  
[    0.000000] RIP: 0010:[<ffffffff836a5774>]  [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
[    0.000000] RSP: 0000:ffffffff84801db8  EFLAGS: 00010006
[    0.000000] RAX: 0000000000000109 RBX: 000000000000011a RCX: 0000000000000000
[    0.000000] RDX: 0000000000000109 RSI: 0000000000000400 RDI: ffffffff84801e60
[    0.000000] RBP: ffffffff84801e18 R08: ffff88102febd958 R09: 0000000100000000
[    0.000000] R10: 0000001030000000 R11: 0000000000000119 R12: ffff88102febc080
[    0.000000] R13: ffffffff84e215d0 R14: 0000000000000000 R15: 0000000000000002
[    0.000000] FS:  0000000000000000(0000) GS:ffff880fcfa00000(0000) knlGS:0000000000000000
[    0.000000] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[    0.000000] CR2: ffff88102febd948 CR3: 0000000004825000 CR4: 00000000000006b0
[    0.000000] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[    0.000000] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[    0.000000] Process swapper (pid: 0, threadinfo ffffffff84800000, task ffffffff8482d400)
[    0.000000] Stack:
[    0.000000]  0000000000000000 ffffffff84801e68 ffffffff84801e70 ffffffff84801e60
[    0.000000]  ffffffff84e215a0 0000000000000003 0000010900000002 0000000000f9122a
[    0.000000]  ffffffff84801e60 ffffffff84801e70 ffffffff84801e68 ffffea0000000000
[    0.000000] Call Trace:
[    0.000000]  [<ffffffff850eea74>] free_low_memory_core_early+0x1e4/0x206
[    0.000000]  [<ffffffff850e0adf>] numa_free_all_bootmem+0x82/0x8e
[    0.000000]  [<ffffffff836b2b92>] ? bad_to_user+0x149c/0x149c
[    0.000000]  [<ffffffff850def88>] mem_init+0x1e/0xec
[    0.000000]  [<ffffffff850c6eb9>] start_kernel+0x209/0x3e9
[    0.000000]  [<ffffffff850c6ade>] ? kernel_init+0x28a/0x28a
[    0.000000]  [<ffffffff850c6324>] x86_64_start_reservations+0xff/0x104
[    0.000000]  [<ffffffff850c647e>] x86_64_start_kernel+0x155/0x164
[    0.000000] Code: 55 08 81 fe 00 04 00 00 0f 84 9a 00 00 00 41 3b 75 10 0f 85 9c 00 00 00 e9 8b 00 00 00 4c 6b c0 18 31 c9 4f 8d 04 04 85 d2 74 08 <49> 8b 48 f0 49 03 48 e8 48 83 cf ff 4c 39 d8 73 03 49 8b 38 4c 
[    0.000000] RIP  [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
[    0.000000]  RSP <ffffffff84801db8>
[    0.000000] CR2: ffff88102febd948
[    0.000000] ---[ end trace a7919e7f17c0a725 ]---
[    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-14 21:34         ` Sasha Levin
  0 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-14 21:34 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, 2012-06-14 at 13:56 -0700, Yinghai Lu wrote:
> On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> >> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> >> > Hi all,
> >> >
> >> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> >> >
> >> > Note that it happens with numa=off.
> >> >
> >> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> >> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> >>
> >> Can you map it back to the source line please?
> >
> > mm/memblock.c:583
> >
> >                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
> >  97:   85 d2                   test   %edx,%edx
> >  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
> >  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
> >  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
> >
> > It's the deref on 9b (r8=ffff88102febd958).
> 
> that reserved.region is allocated by memblock.
> 
> can you boot with "memblock=debug debug ignore_loglevel" and post
> whole boot log?

Attached below. I've also noticed it doesn't always happen, but
increasing the vcpu count (to something around 254) makes it happen
almost every time.

Decompressing Linux... Parsing ELF... done.
Booting the kernel.
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.5.0-rc2-next-20120614-sasha (sasha@lappy) (gcc version 4.4.5 (Debian 4.4.5-8) ) #447 SMP PREEMPT Thu Jun 14 17:17:56 EDT 2012
[    0.000000] Command line: noapic noacpi pci=conf1 reboot=k panic=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 console=ttyS0 earlyprintk=serial i8042.noaux=1 sched_debug slub_debug=FZPU init=/virt/init numa=off memblock=debug debug ignore_loglevel root=/dev/root rw rootflags=rw,trans=virtio,version=9p2000.L rootfstype=9p init=/virt/init
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000ffffe] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000cfffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000102fffffff] usable
[    0.000000] bootconsole [earlyser0] enabled
[    0.000000] debug: ignoring loglevel setting.
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] DMI not present or invalid.
[    0.000000] e820: update [mem 0x00000000-0x0000ffff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] No AGP bridge found
[    0.000000] e820: last_pfn = 0x1030000 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges disabled:
[    0.000000]   00000-FFFFF uncachable
[    0.000000] MTRR variable ranges disabled:
[    0.000000]   0 disabled
[    0.000000]   1 disabled
[    0.000000]   2 disabled
[    0.000000]   3 disabled
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x70106, new 0x7010600070106
[    0.000000] CPU MTRRs all blank - virtualized system.
[    0.000000] e820: last_pfn = 0xd0000 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000f1740-0x000f174f] mapped at [ffff8800000f1740]
[    0.000000] memblock_reserve: [0x000000000f1740-0x000000000f1750] smp_scan_config+0xd1/0x10e
[    0.000000] memblock_reserve: [0x000000000f02f0-0x000000000f173c] smp_scan_config+0xef/0x10e
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff8fc00 reserved size = 0x5282000
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]	[0x00000000010000-0x0000000009fbff], 0x8fc00 bytes
[    0.000000]  memory[0x1]	[0x00000000100000-0x000000cfffffff], 0xcff00000 bytes
[    0.000000]  memory[0x2]	[0x00000100000000-0x0000102fffffff], 0xf30000000 bytes
[    0.000000]  reserved.cnt  = 0x2
[    0.000000]  reserved[0x0]	[0x0000000009f000-0x000000000fffff], 0x61000 bytes
[    0.000000]  reserved[0x1]	[0x00000001000000-0x00000006220fff], 0x5221000 bytes
[    0.000000] initial memory mapped: [mem 0x00000000-0x1fffffff]
[    0.000000] memblock_reserve: [0x00000000099000-0x0000000009f000] setup_real_mode+0x69/0x1b7
[    0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[    0.000000] init_memory_mapping: [mem 0x00000000-0xcfffffff]
[    0.000000]  [mem 0x00000000-0xcfffffff] page 4k
[    0.000000] kernel direct mapping tables up to 0xcfffffff @ [mem 0x1f97b000-0x1fffffff]
[    0.000000] memblock_reserve: [0x0000001f97b000-0x0000001fffe000] native_pagetable_reserve+0xc/0xe
[    0.000000] init_memory_mapping: [mem 0x100000000-0x102fffffff]
[    0.000000]  [mem 0x100000000-0x102fffffff] page 4k
[    0.000000] kernel direct mapping tables up to 0x102fffffff @ [mem 0xc7e3e000-0xcfffffff]
[    0.000000] memblock_reserve: [0x000000c7e3e000-0x000000cf7fb000] native_pagetable_reserve+0xc/0xe
[    0.000000] ACPI Error: A valid RSDP was not found (20120518/tbxfroot-219)
[    0.000000] NUMA turned off
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000102fffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x102fffffff]
[    0.000000] memblock_reserve: [0x0000102ffcf000-0x00001030000000] memblock_alloc_base_nid+0x3d/0x50
[    0.000000]   NODE_DATA [mem 0x102ffcf000-0x102fffffff]
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff8fc00 reserved size = 0xd2f9000
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]	[0x00000000010000-0x0000000009fbff], 0x8fc00 bytes on node 0
[    0.000000]  memory[0x1]	[0x00000000100000-0x000000cfffffff], 0xcff00000 bytes on node 0
[    0.000000]  memory[0x2]	[0x00000100000000-0x0000102fffffff], 0xf30000000 bytes on node 0
[    0.000000]  reserved.cnt  = 0x5
[    0.000000]  reserved[0x0]	[0x00000000099000-0x000000000fffff], 0x67000 bytes
[    0.000000]  reserved[0x1]	[0x00000001000000-0x00000006220fff], 0x5221000 bytes
[    0.000000]  reserved[0x2]	[0x0000001f97b000-0x0000001fffdfff], 0x683000 bytes
[    0.000000]  reserved[0x3]	[0x000000c7e3e000-0x000000cf7fafff], 0x79bd000 bytes
[    0.000000]  reserved[0x4]	[0x0000102ffcf000-0x0000102fffffff], 0x31000 bytes
[    0.000000] memblock_reserve: [0x0000102ffce000-0x0000102ffcf000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102ffcd000-0x0000102ffce000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102ffcc000-0x0000102ffcd000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fbcc000-0x0000102ffcc000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fbc9000-0x0000102fbcc000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c9000-0x0000102fbc9000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x00000fef600000-0x0000102f600000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c8000-0x0000102f7c9000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c7000-0x0000102f7c8000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102f7c6000-0x0000102f7c7000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]    memblock_free: [0x0000102f600000-0x0000102f600000] free_bootmem+0x2b/0x30
[    0.000000]  [ffffea0000000000-ffffea0040bfffff] PMD -> [ffff880fef600000-ffff88102f5fffff] on node 0
[    0.000000]    memblock_free: [0x0000102f7c9000-0x0000102fbc9000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x0000102fbcc000-0x0000102ffcc000] free_bootmem+0x2b/0x30
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00010000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x102fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00010000-0x0009efff]
[    0.000000]   node   0: [mem 0x00100000-0xcfffffff]
[    0.000000]   node   0: [mem 0x100000000-0x102fffffff]
[    0.000000] On node 0 totalpages: 16777103
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 6 pages reserved
[    0.000000]   DMA zone: 3913 pages, LIFO batch:0
[    0.000000] memblock_reserve: [0x0000102ff74000-0x0000102ffcc000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]   DMA32 zone: 16320 pages used for memmap
[    0.000000]   DMA32 zone: 831552 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x0000102ff1c000-0x0000102ff74000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]   Normal zone: 248832 pages used for memmap
[    0.000000]   Normal zone: 15676416 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x0000102fec4000-0x0000102ff1c000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec3000-0x0000102fec4000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] SFI: Simple Firmware Interface v0.81 http://simplefirmware.org
[    0.000000] Intel MultiProcessor Specification v1.4
[    0.000000] MPTABLE: OEM ID: KVMCPU00
[    0.000000] MPTABLE: Product ID: 0.1         
[    0.000000] MPTABLE: APIC at: 0xFEE00000
[    0.000000] Processor #0 (Bootup-CPU)
[    0.000000] Processor #1
[    0.000000] Processor #2
[    0.000000] Processor #3
[    0.000000] Processor #4
[    0.000000] Processor #5
[    0.000000] Processor #6
[    0.000000] Processor #7
[    0.000000] Processor #8
[    0.000000] Processor #9
[    0.000000] Processor #10
[    0.000000] Processor #11
[    0.000000] Processor #12
[    0.000000] Processor #13
[    0.000000] Processor #14
[    0.000000] Processor #15
[    0.000000] Processor #16
[    0.000000] Processor #17
[    0.000000] Processor #18
[    0.000000] Processor #19
[    0.000000] Processor #20
[    0.000000] Processor #21
[    0.000000] Processor #22
[    0.000000] Processor #23
[    0.000000] Processor #24
[    0.000000] Processor #25
[    0.000000] Processor #26
[    0.000000] Processor #27
[    0.000000] Processor #28
[    0.000000] Processor #29
[    0.000000] Processor #30
[    0.000000] Processor #31
[    0.000000] Processor #32
[    0.000000] Processor #33
[    0.000000] Processor #34
[    0.000000] Processor #35
[    0.000000] Processor #36
[    0.000000] Processor #37
[    0.000000] Processor #38
[    0.000000] Processor #39
[    0.000000] Processor #40
[    0.000000] Processor #41
[    0.000000] Processor #42
[    0.000000] Processor #43
[    0.000000] Processor #44
[    0.000000] Processor #45
[    0.000000] Processor #46
[    0.000000] Processor #47
[    0.000000] Processor #48
[    0.000000] Processor #49
[    0.000000] Processor #50
[    0.000000] Processor #51
[    0.000000] Processor #52
[    0.000000] Processor #53
[    0.000000] Processor #54
[    0.000000] Processor #55
[    0.000000] Processor #56
[    0.000000] Processor #57
[    0.000000] Processor #58
[    0.000000] Processor #59
[    0.000000] Processor #60
[    0.000000] Processor #61
[    0.000000] Processor #62
[    0.000000] Processor #63
[    0.000000] Processor #64
[    0.000000] Processor #65
[    0.000000] Processor #66
[    0.000000] Processor #67
[    0.000000] Processor #68
[    0.000000] Processor #69
[    0.000000] Processor #70
[    0.000000] Processor #71
[    0.000000] Processor #72
[    0.000000] Processor #73
[    0.000000] Processor #74
[    0.000000] Processor #75
[    0.000000] Processor #76
[    0.000000] Processor #77
[    0.000000] Processor #78
[    0.000000] Processor #79
[    0.000000] Processor #80
[    0.000000] Processor #81
[    0.000000] Processor #82
[    0.000000] Processor #83
[    0.000000] Processor #84
[    0.000000] Processor #85
[    0.000000] Processor #86
[    0.000000] Processor #87
[    0.000000] Processor #88
[    0.000000] Processor #89
[    0.000000] Processor #90
[    0.000000] Processor #91
[    0.000000] Processor #92
[    0.000000] Processor #93
[    0.000000] Processor #94
[    0.000000] Processor #95
[    0.000000] Processor #96
[    0.000000] Processor #97
[    0.000000] Processor #98
[    0.000000] Processor #99
[    0.000000] Processor #100
[    0.000000] Processor #101
[    0.000000] Processor #102
[    0.000000] Processor #103
[    0.000000] Processor #104
[    0.000000] Processor #105
[    0.000000] Processor #106
[    0.000000] Processor #107
[    0.000000] Processor #108
[    0.000000] Processor #109
[    0.000000] Processor #110
[    0.000000] Processor #111
[    0.000000] Processor #112
[    0.000000] Processor #113
[    0.000000] Processor #114
[    0.000000] Processor #115
[    0.000000] Processor #116
[    0.000000] Processor #117
[    0.000000] Processor #118
[    0.000000] Processor #119
[    0.000000] Processor #120
[    0.000000] Processor #121
[    0.000000] Processor #122
[    0.000000] Processor #123
[    0.000000] Processor #124
[    0.000000] Processor #125
[    0.000000] Processor #126
[    0.000000] Processor #127
[    0.000000] Processor #128
[    0.000000] Processor #129
[    0.000000] Processor #130
[    0.000000] Processor #131
[    0.000000] Processor #132
[    0.000000] Processor #133
[    0.000000] Processor #134
[    0.000000] Processor #135
[    0.000000] Processor #136
[    0.000000] Processor #137
[    0.000000] Processor #138
[    0.000000] Processor #139
[    0.000000] Processor #140
[    0.000000] Processor #141
[    0.000000] Processor #142
[    0.000000] Processor #143
[    0.000000] Processor #144
[    0.000000] Processor #145
[    0.000000] Processor #146
[    0.000000] Processor #147
[    0.000000] Processor #148
[    0.000000] Processor #149
[    0.000000] Processor #150
[    0.000000] Processor #151
[    0.000000] Processor #152
[    0.000000] Processor #153
[    0.000000] Processor #154
[    0.000000] Processor #155
[    0.000000] Processor #156
[    0.000000] Processor #157
[    0.000000] Processor #158
[    0.000000] Processor #159
[    0.000000] Processor #160
[    0.000000] Processor #161
[    0.000000] Processor #162
[    0.000000] Processor #163
[    0.000000] Processor #164
[    0.000000] Processor #165
[    0.000000] Processor #166
[    0.000000] Processor #167
[    0.000000] Processor #168
[    0.000000] Processor #169
[    0.000000] Processor #170
[    0.000000] Processor #171
[    0.000000] Processor #172
[    0.000000] Processor #173
[    0.000000] Processor #174
[    0.000000] Processor #175
[    0.000000] Processor #176
[    0.000000] Processor #177
[    0.000000] Processor #178
[    0.000000] Processor #179
[    0.000000] Processor #180
[    0.000000] Processor #181
[    0.000000] Processor #182
[    0.000000] Processor #183
[    0.000000] Processor #184
[    0.000000] Processor #185
[    0.000000] Processor #186
[    0.000000] Processor #187
[    0.000000] Processor #188
[    0.000000] Processor #189
[    0.000000] Processor #190
[    0.000000] Processor #191
[    0.000000] Processor #192
[    0.000000] Processor #193
[    0.000000] Processor #194
[    0.000000] Processor #195
[    0.000000] Processor #196
[    0.000000] Processor #197
[    0.000000] Processor #198
[    0.000000] Processor #199
[    0.000000] Processor #200
[    0.000000] Processor #201
[    0.000000] Processor #202
[    0.000000] Processor #203
[    0.000000] Processor #204
[    0.000000] Processor #205
[    0.000000] Processor #206
[    0.000000] Processor #207
[    0.000000] Processor #208
[    0.000000] Processor #209
[    0.000000] Processor #210
[    0.000000] Processor #211
[    0.000000] Processor #212
[    0.000000] Processor #213
[    0.000000] Processor #214
[    0.000000] Processor #215
[    0.000000] Processor #216
[    0.000000] Processor #217
[    0.000000] Processor #218
[    0.000000] Processor #219
[    0.000000] Processor #220
[    0.000000] Processor #221
[    0.000000] Processor #222
[    0.000000] Processor #223
[    0.000000] Processor #224
[    0.000000] Processor #225
[    0.000000] Processor #226
[    0.000000] Processor #227
[    0.000000] Processor #228
[    0.000000] Processor #229
[    0.000000] Processor #230
[    0.000000] Processor #231
[    0.000000] Processor #232
[    0.000000] Processor #233
[    0.000000] Processor #234
[    0.000000] Processor #235
[    0.000000] Processor #236
[    0.000000] Processor #237
[    0.000000] Processor #238
[    0.000000] Processor #239
[    0.000000] Processor #240
[    0.000000] Processor #241
[    0.000000] Processor #242
[    0.000000] Processor #243
[    0.000000] Processor #244
[    0.000000] Processor #245
[    0.000000] Processor #246
[    0.000000] Processor #247
[    0.000000] Processor #248
[    0.000000] Processor #249
[    0.000000] Processor #250
[    0.000000] Processor #251
[    0.000000] Processor #252
[    0.000000] Processor #253
[    0.000000] IOAPIC[0]: apic_id 255, version 17, address 0xfec00000, GSI 0-23
[    0.000000] Processors: 254
[    0.000000] smpboot: Allowing 254 CPUs, 0 hotplug CPUs
[    0.000000] memblock_reserve: [0x0000102fec2f80-0x0000102fec2fc3] __alloc_memory_core_early+0x5c/0x73
[    0.000000] nr_irqs_gsi: 40
[    0.000000] memblock_reserve: [0x0000102fec2e00-0x0000102fec2f50] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2d80-0x0000102fec2de8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2d00-0x0000102fec2d68] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2c80-0x0000102fec2ce8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2c00-0x0000102fec2c68] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2b80-0x0000102fec2be8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2b40-0x0000102fec2b60] __alloc_memory_core_early+0x5c/0x73
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
[    0.000000] PM: Registered nosave memory: 00000000000f0000 - 00000000000ff000
[    0.000000] PM: Registered nosave memory: 00000000000ff000 - 0000000000100000
[    0.000000] memblock_reserve: [0x0000102fec2b00-0x0000102fec2b20] __alloc_memory_core_early+0x5c/0x73
[    0.000000] PM: Registered nosave memory: 00000000d0000000 - 0000000100000000
[    0.000000] e820: [mem 0xd0000000-0xffffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] memblock_reserve: [0x0000102fec29c0-0x0000102fec2afa] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2880-0x0000102fec29ba] __alloc_memory_core_early+0x5c/0x73
[    0.000000] setup_percpu: NR_CPUS:4096 nr_cpumask_bits:254 nr_cpu_ids:254 nr_node_ids:1
[    0.000000] memblock_reserve: [0x0000102fec1880-0x0000102fec2880] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec0880-0x0000102fec1880] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x00000fcfa00000-0x00000fef600000] __alloc_memory_core_early+0x5c/0x73
[    0.000000]    memblock_free: [0x00000fcfbdd000-0x00000fcfc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fcfddd000-0x00000fcfe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fcffdd000-0x00000fd0000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd01dd000-0x00000fd0200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd03dd000-0x00000fd0400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd05dd000-0x00000fd0600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd07dd000-0x00000fd0800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd09dd000-0x00000fd0a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd0bdd000-0x00000fd0c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd0ddd000-0x00000fd0e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd0fdd000-0x00000fd1000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd11dd000-0x00000fd1200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd13dd000-0x00000fd1400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd15dd000-0x00000fd1600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd17dd000-0x00000fd1800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd19dd000-0x00000fd1a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd1bdd000-0x00000fd1c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd1ddd000-0x00000fd1e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd1fdd000-0x00000fd2000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd21dd000-0x00000fd2200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd23dd000-0x00000fd2400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd25dd000-0x00000fd2600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd27dd000-0x00000fd2800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd29dd000-0x00000fd2a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd2bdd000-0x00000fd2c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd2ddd000-0x00000fd2e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd2fdd000-0x00000fd3000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd31dd000-0x00000fd3200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd33dd000-0x00000fd3400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd35dd000-0x00000fd3600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd37dd000-0x00000fd3800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd39dd000-0x00000fd3a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd3bdd000-0x00000fd3c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd3ddd000-0x00000fd3e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd3fdd000-0x00000fd4000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd41dd000-0x00000fd4200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd43dd000-0x00000fd4400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd45dd000-0x00000fd4600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd47dd000-0x00000fd4800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd49dd000-0x00000fd4a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd4bdd000-0x00000fd4c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd4ddd000-0x00000fd4e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd4fdd000-0x00000fd5000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd51dd000-0x00000fd5200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd53dd000-0x00000fd5400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd55dd000-0x00000fd5600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd57dd000-0x00000fd5800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd59dd000-0x00000fd5a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd5bdd000-0x00000fd5c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd5ddd000-0x00000fd5e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd5fdd000-0x00000fd6000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd61dd000-0x00000fd6200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd63dd000-0x00000fd6400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd65dd000-0x00000fd6600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd67dd000-0x00000fd6800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd69dd000-0x00000fd6a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd6bdd000-0x00000fd6c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd6ddd000-0x00000fd6e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd6fdd000-0x00000fd7000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd71dd000-0x00000fd7200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd73dd000-0x00000fd7400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd75dd000-0x00000fd7600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd77dd000-0x00000fd7800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd79dd000-0x00000fd7a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd7bdd000-0x00000fd7c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd7ddd000-0x00000fd7e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd7fdd000-0x00000fd8000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd81dd000-0x00000fd8200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd83dd000-0x00000fd8400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd85dd000-0x00000fd8600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd87dd000-0x00000fd8800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd89dd000-0x00000fd8a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd8bdd000-0x00000fd8c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd8ddd000-0x00000fd8e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd8fdd000-0x00000fd9000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd91dd000-0x00000fd9200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd93dd000-0x00000fd9400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd95dd000-0x00000fd9600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd97dd000-0x00000fd9800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd99dd000-0x00000fd9a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd9bdd000-0x00000fd9c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd9ddd000-0x00000fd9e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fd9fdd000-0x00000fda000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda1dd000-0x00000fda200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda3dd000-0x00000fda400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda5dd000-0x00000fda600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda7dd000-0x00000fda800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fda9dd000-0x00000fdaa00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdabdd000-0x00000fdac00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdaddd000-0x00000fdae00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdafdd000-0x00000fdb000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb1dd000-0x00000fdb200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb3dd000-0x00000fdb400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb5dd000-0x00000fdb600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb7dd000-0x00000fdb800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdb9dd000-0x00000fdba00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdbbdd000-0x00000fdbc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdbddd000-0x00000fdbe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdbfdd000-0x00000fdc000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc1dd000-0x00000fdc200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc3dd000-0x00000fdc400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc5dd000-0x00000fdc600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc7dd000-0x00000fdc800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdc9dd000-0x00000fdca00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdcbdd000-0x00000fdcc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdcddd000-0x00000fdce00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdcfdd000-0x00000fdd000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd1dd000-0x00000fdd200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd3dd000-0x00000fdd400000] free_bootmem+0x2b/0x30
[    0.000000] memblock: reserved array is doubled to 256 at [0x102febf080-0x102fec087f]
[    0.000000] memblock_reserve: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1c5/0x1e2
[    0.000000]    memblock_free: [0x00000fdd5dd000-0x00000fdd600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd7dd000-0x00000fdd800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdd9dd000-0x00000fdda00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fddbdd000-0x00000fddc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fddddd000-0x00000fdde00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fddfdd000-0x00000fde000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde1dd000-0x00000fde200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde3dd000-0x00000fde400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde5dd000-0x00000fde600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde7dd000-0x00000fde800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fde9dd000-0x00000fdea00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdebdd000-0x00000fdec00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdeddd000-0x00000fdee00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdefdd000-0x00000fdf000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf1dd000-0x00000fdf200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf3dd000-0x00000fdf400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf5dd000-0x00000fdf600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf7dd000-0x00000fdf800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdf9dd000-0x00000fdfa00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdfbdd000-0x00000fdfc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdfddd000-0x00000fdfe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fdffdd000-0x00000fe0000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe01dd000-0x00000fe0200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe03dd000-0x00000fe0400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe05dd000-0x00000fe0600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe07dd000-0x00000fe0800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe09dd000-0x00000fe0a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe0bdd000-0x00000fe0c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe0ddd000-0x00000fe0e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe0fdd000-0x00000fe1000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe11dd000-0x00000fe1200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe13dd000-0x00000fe1400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe15dd000-0x00000fe1600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe17dd000-0x00000fe1800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe19dd000-0x00000fe1a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe1bdd000-0x00000fe1c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe1ddd000-0x00000fe1e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe1fdd000-0x00000fe2000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe21dd000-0x00000fe2200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe23dd000-0x00000fe2400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe25dd000-0x00000fe2600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe27dd000-0x00000fe2800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe29dd000-0x00000fe2a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe2bdd000-0x00000fe2c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe2ddd000-0x00000fe2e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe2fdd000-0x00000fe3000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe31dd000-0x00000fe3200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe33dd000-0x00000fe3400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe35dd000-0x00000fe3600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe37dd000-0x00000fe3800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe39dd000-0x00000fe3a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe3bdd000-0x00000fe3c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe3ddd000-0x00000fe3e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe3fdd000-0x00000fe4000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe41dd000-0x00000fe4200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe43dd000-0x00000fe4400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe45dd000-0x00000fe4600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe47dd000-0x00000fe4800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe49dd000-0x00000fe4a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe4bdd000-0x00000fe4c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe4ddd000-0x00000fe4e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe4fdd000-0x00000fe5000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe51dd000-0x00000fe5200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe53dd000-0x00000fe5400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe55dd000-0x00000fe5600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe57dd000-0x00000fe5800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe59dd000-0x00000fe5a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe5bdd000-0x00000fe5c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe5ddd000-0x00000fe5e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe5fdd000-0x00000fe6000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe61dd000-0x00000fe6200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe63dd000-0x00000fe6400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe65dd000-0x00000fe6600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe67dd000-0x00000fe6800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe69dd000-0x00000fe6a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe6bdd000-0x00000fe6c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe6ddd000-0x00000fe6e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe6fdd000-0x00000fe7000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe71dd000-0x00000fe7200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe73dd000-0x00000fe7400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe75dd000-0x00000fe7600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe77dd000-0x00000fe7800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe79dd000-0x00000fe7a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe7bdd000-0x00000fe7c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe7ddd000-0x00000fe7e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe7fdd000-0x00000fe8000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe81dd000-0x00000fe8200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe83dd000-0x00000fe8400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe85dd000-0x00000fe8600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe87dd000-0x00000fe8800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe89dd000-0x00000fe8a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe8bdd000-0x00000fe8c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe8ddd000-0x00000fe8e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe8fdd000-0x00000fe9000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe91dd000-0x00000fe9200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe93dd000-0x00000fe9400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe95dd000-0x00000fe9600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe97dd000-0x00000fe9800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe99dd000-0x00000fe9a00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe9bdd000-0x00000fe9c00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe9ddd000-0x00000fe9e00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fe9fdd000-0x00000fea000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea1dd000-0x00000fea200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea3dd000-0x00000fea400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea5dd000-0x00000fea600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea7dd000-0x00000fea800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fea9dd000-0x00000feaa00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feabdd000-0x00000feac00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feaddd000-0x00000feae00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feafdd000-0x00000feb000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb1dd000-0x00000feb200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb3dd000-0x00000feb400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb5dd000-0x00000feb600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb7dd000-0x00000feb800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feb9dd000-0x00000feba00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000febbdd000-0x00000febc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000febddd000-0x00000febe00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000febfdd000-0x00000fec000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec1dd000-0x00000fec200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec3dd000-0x00000fec400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec5dd000-0x00000fec600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec7dd000-0x00000fec800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fec9dd000-0x00000feca00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fecbdd000-0x00000fecc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fecddd000-0x00000fece00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fecfdd000-0x00000fed000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed1dd000-0x00000fed200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed3dd000-0x00000fed400000] free_bootmem+0x2b/0x30
[    0.000000] memblock: reserved array is doubled to 512 at [0x102febc080-0x102febf07f]
[    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1b0/0x1e2
[    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080] memblock_double_array+0x1c5/0x1e2
[    0.000000]    memblock_free: [0x00000fed5dd000-0x00000fed600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed7dd000-0x00000fed800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fed9dd000-0x00000feda00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fedbdd000-0x00000fedc00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fedddd000-0x00000fede00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fedfdd000-0x00000fee000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee1dd000-0x00000fee200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee3dd000-0x00000fee400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee5dd000-0x00000fee600000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee7dd000-0x00000fee800000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fee9dd000-0x00000feea00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feebdd000-0x00000feec00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feeddd000-0x00000feee00000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000feefdd000-0x00000fef000000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fef1dd000-0x00000fef200000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fef3dd000-0x00000fef400000] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x00000fef5dd000-0x00000fef600000] free_bootmem+0x2b/0x30
[    0.000000] PERCPU: Embedded 477 pages/cpu @ffff880fcfa00000 s1930264 r0 d23528 u2097152
[    0.000000] memblock_reserve: [0x0000102fec0840-0x0000102fec0848] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec0800-0x0000102fec0808] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec0400-0x0000102fec07f8] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102febfc00-0x0000102fec03f0] __alloc_memory_core_early+0x5c/0x73
[    0.000000] pcpu-alloc: s1930264 r0 d23528 u2097152 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 000 [0] 001 [0] 002 [0] 003 
[    0.000000] pcpu-alloc: [0] 004 [0] 005 [0] 006 [0] 007 
[    0.000000] pcpu-alloc: [0] 008 [0] 009 [0] 010 [0] 011 
[    0.000000] pcpu-alloc: [0] 012 [0] 013 [0] 014 [0] 015 
[    0.000000] pcpu-alloc: [0] 016 [0] 017 [0] 018 [0] 019 
[    0.000000] pcpu-alloc: [0] 020 [0] 021 [0] 022 [0] 023 
[    0.000000] pcpu-alloc: [0] 024 [0] 025 [0] 026 [0] 027 
[    0.000000] pcpu-alloc: [0] 028 [0] 029 [0] 030 [0] 031 
[    0.000000] pcpu-alloc: [0] 032 [0] 033 [0] 034 [0] 035 
[    0.000000] pcpu-alloc: [0] 036 [0] 037 [0] 038 [0] 039 
[    0.000000] pcpu-alloc: [0] 040 [0] 041 [0] 042 [0] 043 
[    0.000000] pcpu-alloc: [0] 044 [0] 045 [0] 046 [0] 047 
[    0.000000] pcpu-alloc: [0] 048 [0] 049 [0] 050 [0] 051 
[    0.000000] pcpu-alloc: [0] 052 [0] 053 [0] 054 [0] 055 
[    0.000000] pcpu-alloc: [0] 056 [0] 057 [0] 058 [0] 059 
[    0.000000] pcpu-alloc: [0] 060 [0] 061 [0] 062 [0] 063 
[    0.000000] pcpu-alloc: [0] 064 [0] 065 [0] 066 [0] 067 
[    0.000000] pcpu-alloc: [0] 068 [0] 069 [0] 070 [0] 071 
[    0.000000] pcpu-alloc: [0] 072 [0] 073 [0] 074 [0] 075 
[    0.000000] pcpu-alloc: [0] 076 [0] 077 [0] 078 [0] 079 
[    0.000000] pcpu-alloc: [0] 080 [0] 081 [0] 082 [0] 083 
[    0.000000] pcpu-alloc: [0] 084 [0] 085 [0] 086 [0] 087 
[    0.000000] pcpu-alloc: [0] 088 [0] 089 [0] 090 [0] 091 
[    0.000000] pcpu-alloc: [0] 092 [0] 093 [0] 094 [0] 095 
[    0.000000] pcpu-alloc: [0] 096 [0] 097 [0] 098 [0] 099 
[    0.000000] pcpu-alloc: [0] 100 [0] 101 [0] 102 [0] 103 
[    0.000000] pcpu-alloc: [0] 104 [0] 105 [0] 106 [0] 107 
[    0.000000] pcpu-alloc: [0] 108 [0] 109 [0] 110 [0] 111 
[    0.000000] pcpu-alloc: [0] 112 [0] 113 [0] 114 [0] 115 
[    0.000000] pcpu-alloc: [0] 116 [0] 117 [0] 118 [0] 119 
[    0.000000] pcpu-alloc: [0] 120 [0] 121 [0] 122 [0] 123 
[    0.000000] pcpu-alloc: [0] 124 [0] 125 [0] 126 [0] 127 
[    0.000000] pcpu-alloc: [0] 128 [0] 129 [0] 130 [0] 131 
[    0.000000] pcpu-alloc: [0] 132 [0] 133 [0] 134 [0] 135 
[    0.000000] pcpu-alloc: [0] 136 [0] 137 [0] 138 [0] 139 
[    0.000000] pcpu-alloc: [0] 140 [0] 141 [0] 142 [0] 143 
[    0.000000] pcpu-alloc: [0] 144 [0] 145 [0] 146 [0] 147 
[    0.000000] pcpu-alloc: [0] 148 [0] 149 [0] 150 [0] 151 
[    0.000000] pcpu-alloc: [0] 152 [0] 153 [0] 154 [0] 155 
[    0.000000] pcpu-alloc: [0] 156 [0] 157 [0] 158 [0] 159 
[    0.000000] pcpu-alloc: [0] 160 [0] 161 [0] 162 [0] 163 
[    0.000000] pcpu-alloc: [0] 164 [0] 165 [0] 166 [0] 167 
[    0.000000] pcpu-alloc: [0] 168 [0] 169 [0] 170 [0] 171 
[    0.000000] pcpu-alloc: [0] 172 [0] 173 [0] 174 [0] 175 
[    0.000000] pcpu-alloc: [0] 176 [0] 177 [0] 178 [0] 179 
[    0.000000] pcpu-alloc: [0] 180 [0] 181 [0] 182 [0] 183 
[    0.000000] pcpu-alloc: [0] 184 [0] 185 [0] 186 [0] 187 
[    0.000000] pcpu-alloc: [0] 188 [0] 189 [0] 190 [0] 191 
[    0.000000] pcpu-alloc: [0] 192 [0] 193 [0] 194 [0] 195 
[    0.000000] pcpu-alloc: [0] 196 [0] 197 [0] 198 [0] 199 
[    0.000000] pcpu-alloc: [0] 200 [0] 201 [0] 202 [0] 203 
[    0.000000] pcpu-alloc: [0] 204 [0] 205 [0] 206 [0] 207 
[    0.000000] pcpu-alloc: [0] 208 [0] 209 [0] 210 [0] 211 
[    0.000000] pcpu-alloc: [0] 212 [0] 213 [0] 214 [0] 215 
[    0.000000] pcpu-alloc: [0] 216 [0] 217 [0] 218 [0] 219 
[    0.000000] pcpu-alloc: [0] 220 [0] 221 [0] 222 [0] 223 
[    0.000000] pcpu-alloc: [0] 224 [0] 225 [0] 226 [0] 227 
[    0.000000] pcpu-alloc: [0] 228 [0] 229 [0] 230 [0] 231 
[    0.000000] pcpu-alloc: [0] 232 [0] 233 [0] 234 [0] 235 
[    0.000000] pcpu-alloc: [0] 236 [0] 237 [0] 238 [0] 239 
[    0.000000] pcpu-alloc: [0] 240 [0] 241 [0] 242 [0] 243 
[    0.000000] pcpu-alloc: [0] 244 [0] 245 [0] 246 [0] 247 
[    0.000000] pcpu-alloc: [0] 248 [0] 249 [0] 250 [0] 251 
[    0.000000] pcpu-alloc: [0] 252 [0] 253 
[    0.000000] memblock_reserve: [0x0000102febfa80-0x0000102febfbd0] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102febfa00-0x0000102febfa80] __alloc_memory_core_early+0x5c/0x73
[    0.000000]    memblock_free: [0x0000102fec1880-0x0000102fec2880] free_bootmem+0x2b/0x30
[    0.000000]    memblock_free: [0x0000102fec0880-0x0000102fec1880] free_bootmem+0x2b/0x30
[    0.000000] memblock_reserve: [0x0000102fec2680-0x0000102fec2880] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2480-0x0000102fec2680] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2280-0x0000102fec2480] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec2080-0x0000102fec2280] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fec1e80-0x0000102fec2080] __alloc_memory_core_early+0x5c/0x73
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16511881
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: noapic noacpi pci=conf1 reboot=k panic=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 console=ttyS0 earlyprintk=serial i8042.noaux=1 sched_debug slub_debug=FZPU init=/virt/init numa=off memblock=debug debug ignore_loglevel root=/dev/root rw rootflags=rw,trans=virtio,version=9p2000.L rootfstype=9p init=/virt/init
[    0.000000] memblock_reserve: [0x0000102feb4080-0x0000102febc080] __alloc_memory_core_early+0x5c/0x73
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] memblock_reserve: [0x000000c3e3e000-0x000000c7e3e000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fe94000-0x0000102feb4000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x0000102fe54000-0x0000102fe94000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] memblock_reserve: [0x000000cfff8000-0x000000d0000000] __alloc_memory_core_early+0x5c/0x73
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] Calgary: detecting Calgary via BIOS EBDA area
[    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
[    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
[    0.000000] IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
[    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160
[    0.000000] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
[    0.000000] CPU 0 
[    0.000000] Pid: 0, comm: swapper Not tainted 3.5.0-rc2-next-20120614-sasha #447  
[    0.000000] RIP: 0010:[<ffffffff836a5774>]  [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
[    0.000000] RSP: 0000:ffffffff84801db8  EFLAGS: 00010006
[    0.000000] RAX: 0000000000000109 RBX: 000000000000011a RCX: 0000000000000000
[    0.000000] RDX: 0000000000000109 RSI: 0000000000000400 RDI: ffffffff84801e60
[    0.000000] RBP: ffffffff84801e18 R08: ffff88102febd958 R09: 0000000100000000
[    0.000000] R10: 0000001030000000 R11: 0000000000000119 R12: ffff88102febc080
[    0.000000] R13: ffffffff84e215d0 R14: 0000000000000000 R15: 0000000000000002
[    0.000000] FS:  0000000000000000(0000) GS:ffff880fcfa00000(0000) knlGS:0000000000000000
[    0.000000] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[    0.000000] CR2: ffff88102febd948 CR3: 0000000004825000 CR4: 00000000000006b0
[    0.000000] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[    0.000000] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[    0.000000] Process swapper (pid: 0, threadinfo ffffffff84800000, task ffffffff8482d400)
[    0.000000] Stack:
[    0.000000]  0000000000000000 ffffffff84801e68 ffffffff84801e70 ffffffff84801e60
[    0.000000]  ffffffff84e215a0 0000000000000003 0000010900000002 0000000000f9122a
[    0.000000]  ffffffff84801e60 ffffffff84801e70 ffffffff84801e68 ffffea0000000000
[    0.000000] Call Trace:
[    0.000000]  [<ffffffff850eea74>] free_low_memory_core_early+0x1e4/0x206
[    0.000000]  [<ffffffff850e0adf>] numa_free_all_bootmem+0x82/0x8e
[    0.000000]  [<ffffffff836b2b92>] ? bad_to_user+0x149c/0x149c
[    0.000000]  [<ffffffff850def88>] mem_init+0x1e/0xec
[    0.000000]  [<ffffffff850c6eb9>] start_kernel+0x209/0x3e9
[    0.000000]  [<ffffffff850c6ade>] ? kernel_init+0x28a/0x28a
[    0.000000]  [<ffffffff850c6324>] x86_64_start_reservations+0xff/0x104
[    0.000000]  [<ffffffff850c647e>] x86_64_start_kernel+0x155/0x164
[    0.000000] Code: 55 08 81 fe 00 04 00 00 0f 84 9a 00 00 00 41 3b 75 10 0f 85 9c 00 00 00 e9 8b 00 00 00 4c 6b c0 18 31 c9 4f 8d 04 04 85 d2 74 08 <49> 8b 48 f0 49 03 48 e8 48 83 cf ff 4c 39 d8 73 03 49 8b 38 4c 
[    0.000000] RIP  [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
[    0.000000]  RSP <ffffffff84801db8>
[    0.000000] CR2: ffff88102febd948
[    0.000000] ---[ end trace a7919e7f17c0a725 ]---
[    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-14 21:34         ` Sasha Levin
@ 2012-06-14 23:57           ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-14 23:57 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, Jun 14, 2012 at 2:34 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-14 at 13:56 -0700, Yinghai Lu wrote:
>> On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
>> > On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
>> >> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
>> >> > Hi all,
>> >> >
>> >> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
>> >> >
>> >> > Note that it happens with numa=off.
>> >> >
>> >> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
>> >> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
>> >>
>> >> Can you map it back to the source line please?
>> >
>> > mm/memblock.c:583
>> >
>> >                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>> >  97:   85 d2                   test   %edx,%edx
>> >  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
>> >  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
>> >  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
>> >
>> > It's the deref on 9b (r8=ffff88102febd958).
>>
>> that reserved.region is allocated by memblock.
>>
>> can you boot with "memblock=debug debug ignore_loglevel" and post
>> whole boot log?
>
> Attached below. I've also noticed it doesn't always happen, but
> increasing the vcpu count (to something around 254) makes it happen
> almost every time.
>
...
[    0.000000] memblock: reserved array is doubled to 512 at
[0x102febc080-0x102febf07f]
[    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880]
memblock_double_array+0x1b0/0x1e2
[    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080]
memblock_double_array+0x1c5/0x1e2

the reserved regions get double two times to 512.
....
> [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
> [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> [    0.000000] IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
> [    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160

that page table for them is

[    0.000000] kernel direct mapping tables up to 0x102fffffff @ [mem
0xc7e3e000-0xcfffffff]
[    0.000000] memblock_reserve: [0x000000c7e3e000-0x000000cf7fb000]
native_pagetable_reserve+0xc/0xe

only near by allocation is swiotlb.

[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] memblock_reserve: [0x000000c3e3e000-0x000000c7e3e000]
__alloc_memory_core_early+0x5c/0x73
...
[    0.000000] memblock_reserve: [0x000000cfff8000-0x000000d0000000]
__alloc_memory_core_early+0x5c/0x73
[    0.000000] Checking aperture...

so the memblock allocation is ok...

can you please boot with "memtest" to see if there is any memory problem?

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-14 23:57           ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-14 23:57 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, Jun 14, 2012 at 2:34 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-14 at 13:56 -0700, Yinghai Lu wrote:
>> On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
>> > On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
>> >> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
>> >> > Hi all,
>> >> >
>> >> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
>> >> >
>> >> > Note that it happens with numa=off.
>> >> >
>> >> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
>> >> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
>> >>
>> >> Can you map it back to the source line please?
>> >
>> > mm/memblock.c:583
>> >
>> >                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>> >  97:   85 d2                   test   %edx,%edx
>> >  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
>> >  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
>> >  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
>> >
>> > It's the deref on 9b (r8=ffff88102febd958).
>>
>> that reserved.region is allocated by memblock.
>>
>> can you boot with "memblock=debug debug ignore_loglevel" and post
>> whole boot log?
>
> Attached below. I've also noticed it doesn't always happen, but
> increasing the vcpu count (to something around 254) makes it happen
> almost every time.
>
...
[    0.000000] memblock: reserved array is doubled to 512 at
[0x102febc080-0x102febf07f]
[    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880]
memblock_double_array+0x1b0/0x1e2
[    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080]
memblock_double_array+0x1c5/0x1e2

the reserved regions get double two times to 512.
....
> [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
> [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> [    0.000000] IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
> [    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160

that page table for them is

[    0.000000] kernel direct mapping tables up to 0x102fffffff @ [mem
0xc7e3e000-0xcfffffff]
[    0.000000] memblock_reserve: [0x000000c7e3e000-0x000000cf7fb000]
native_pagetable_reserve+0xc/0xe

only near by allocation is swiotlb.

[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] memblock_reserve: [0x000000c3e3e000-0x000000c7e3e000]
__alloc_memory_core_early+0x5c/0x73
...
[    0.000000] memblock_reserve: [0x000000cfff8000-0x000000d0000000]
__alloc_memory_core_early+0x5c/0x73
[    0.000000] Checking aperture...

so the memblock allocation is ok...

can you please boot with "memtest" to see if there is any memory problem?

Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-14 23:57           ` Yinghai Lu
  (?)
@ 2012-06-15  0:59             ` Sasha Levin
  -1 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-15  0:59 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm,
	linux-kernel, kvm, avi, Marcelo Tosatti

On Thu, 2012-06-14 at 16:57 -0700, Yinghai Lu wrote:
> On Thu, Jun 14, 2012 at 2:34 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > On Thu, 2012-06-14 at 13:56 -0700, Yinghai Lu wrote:
> >> On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> >> > On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> >> >> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> >> >> > Hi all,
> >> >> >
> >> >> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> >> >> >
> >> >> > Note that it happens with numa=off.
> >> >> >
> >> >> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> >> >> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> >> >>
> >> >> Can you map it back to the source line please?
> >> >
> >> > mm/memblock.c:583
> >> >
> >> >                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
> >> >  97:   85 d2                   test   %edx,%edx
> >> >  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
> >> >  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
> >> >  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
> >> >
> >> > It's the deref on 9b (r8=ffff88102febd958).
> >>
> >> that reserved.region is allocated by memblock.
> >>
> >> can you boot with "memblock=debug debug ignore_loglevel" and post
> >> whole boot log?
> >
> > Attached below. I've also noticed it doesn't always happen, but
> > increasing the vcpu count (to something around 254) makes it happen
> > almost every time.
> >
> ...
> [    0.000000] memblock: reserved array is doubled to 512 at
> [0x102febc080-0x102febf07f]
> [    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880]
> memblock_double_array+0x1b0/0x1e2
> [    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080]
> memblock_double_array+0x1c5/0x1e2
> 
> the reserved regions get double two times to 512.
> ....
> > [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> > [    0.000000] IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
> > [    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160
> 
> that page table for them is
> 
> [    0.000000] kernel direct mapping tables up to 0x102fffffff @ [mem
> 0xc7e3e000-0xcfffffff]
> [    0.000000] memblock_reserve: [0x000000c7e3e000-0x000000cf7fb000]
> native_pagetable_reserve+0xc/0xe
> 
> only near by allocation is swiotlb.
> 
> [    0.000000] __ex_table already sorted, skipping sort
> [    0.000000] memblock_reserve: [0x000000c3e3e000-0x000000c7e3e000]
> __alloc_memory_core_early+0x5c/0x73
> ...
> [    0.000000] memblock_reserve: [0x000000cfff8000-0x000000d0000000]
> __alloc_memory_core_early+0x5c/0x73
> [    0.000000] Checking aperture...
> 
> so the memblock allocation is ok...
> 
> can you please boot with "memtest" to see if there is any memory problem?

The host got a memtest treatment, nothing found.

(I'll cc the KVM folks as well.)


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-15  0:59             ` Sasha Levin
  0 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-15  0:59 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm,
	linux-kernel, kvm, avi, Marcelo Tosatti

On Thu, 2012-06-14 at 16:57 -0700, Yinghai Lu wrote:
> On Thu, Jun 14, 2012 at 2:34 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > On Thu, 2012-06-14 at 13:56 -0700, Yinghai Lu wrote:
> >> On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> >> > On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> >> >> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> >> >> > Hi all,
> >> >> >
> >> >> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> >> >> >
> >> >> > Note that it happens with numa=off.
> >> >> >
> >> >> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> >> >> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> >> >>
> >> >> Can you map it back to the source line please?
> >> >
> >> > mm/memblock.c:583
> >> >
> >> >                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
> >> >  97:   85 d2                   test   %edx,%edx
> >> >  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
> >> >  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
> >> >  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
> >> >
> >> > It's the deref on 9b (r8=ffff88102febd958).
> >>
> >> that reserved.region is allocated by memblock.
> >>
> >> can you boot with "memblock=debug debug ignore_loglevel" and post
> >> whole boot log?
> >
> > Attached below. I've also noticed it doesn't always happen, but
> > increasing the vcpu count (to something around 254) makes it happen
> > almost every time.
> >
> ...
> [    0.000000] memblock: reserved array is doubled to 512 at
> [0x102febc080-0x102febf07f]
> [    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880]
> memblock_double_array+0x1b0/0x1e2
> [    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080]
> memblock_double_array+0x1c5/0x1e2
> 
> the reserved regions get double two times to 512.
> ....
> > [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> > [    0.000000] IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
> > [    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160
> 
> that page table for them is
> 
> [    0.000000] kernel direct mapping tables up to 0x102fffffff @ [mem
> 0xc7e3e000-0xcfffffff]
> [    0.000000] memblock_reserve: [0x000000c7e3e000-0x000000cf7fb000]
> native_pagetable_reserve+0xc/0xe
> 
> only near by allocation is swiotlb.
> 
> [    0.000000] __ex_table already sorted, skipping sort
> [    0.000000] memblock_reserve: [0x000000c3e3e000-0x000000c7e3e000]
> __alloc_memory_core_early+0x5c/0x73
> ...
> [    0.000000] memblock_reserve: [0x000000cfff8000-0x000000d0000000]
> __alloc_memory_core_early+0x5c/0x73
> [    0.000000] Checking aperture...
> 
> so the memblock allocation is ok...
> 
> can you please boot with "memtest" to see if there is any memory problem?

The host got a memtest treatment, nothing found.

(I'll cc the KVM folks as well.)

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-15  0:59             ` Sasha Levin
  0 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-15  0:59 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm,
	linux-kernel, kvm, avi, Marcelo Tosatti

On Thu, 2012-06-14 at 16:57 -0700, Yinghai Lu wrote:
> On Thu, Jun 14, 2012 at 2:34 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > On Thu, 2012-06-14 at 13:56 -0700, Yinghai Lu wrote:
> >> On Thu, Jun 14, 2012 at 2:50 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> >> > On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> >> >> On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> >> >> > Hi all,
> >> >> >
> >> >> > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> >> >> >
> >> >> > Note that it happens with numa=off.
> >> >> >
> >> >> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> >> >> > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> >> >>
> >> >> Can you map it back to the source line please?
> >> >
> >> > mm/memblock.c:583
> >> >
> >> >                        phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
> >> >  97:   85 d2                   test   %edx,%edx
> >> >  99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
> >> >  9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
> >> >  9f:   49 03 48 e8             add    -0x18(%r8),%rcx
> >> >
> >> > It's the deref on 9b (r8=ffff88102febd958).
> >>
> >> that reserved.region is allocated by memblock.
> >>
> >> can you boot with "memblock=debug debug ignore_loglevel" and post
> >> whole boot log?
> >
> > Attached below. I've also noticed it doesn't always happen, but
> > increasing the vcpu count (to something around 254) makes it happen
> > almost every time.
> >
> ...
> [    0.000000] memblock: reserved array is doubled to 512 at
> [0x102febc080-0x102febf07f]
> [    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880]
> memblock_double_array+0x1b0/0x1e2
> [    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080]
> memblock_double_array+0x1c5/0x1e2
> 
> the reserved regions get double two times to 512.
> ....
> > [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
> > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> > [    0.000000] IP: [<ffffffff836a5774>] __next_free_mem_range+0x9b/0x155
> > [    0.000000] PGD 4826063 PUD cf67a067 PMD cf7fa067 PTE 800000102febd160
> 
> that page table for them is
> 
> [    0.000000] kernel direct mapping tables up to 0x102fffffff @ [mem
> 0xc7e3e000-0xcfffffff]
> [    0.000000] memblock_reserve: [0x000000c7e3e000-0x000000cf7fb000]
> native_pagetable_reserve+0xc/0xe
> 
> only near by allocation is swiotlb.
> 
> [    0.000000] __ex_table already sorted, skipping sort
> [    0.000000] memblock_reserve: [0x000000c3e3e000-0x000000c7e3e000]
> __alloc_memory_core_early+0x5c/0x73
> ...
> [    0.000000] memblock_reserve: [0x000000cfff8000-0x000000d0000000]
> __alloc_memory_core_early+0x5c/0x73
> [    0.000000] Checking aperture...
> 
> so the memblock allocation is ok...
> 
> can you please boot with "memtest" to see if there is any memory problem?

The host got a memtest treatment, nothing found.

(I'll cc the KVM folks as well.)

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-15  0:59             ` Sasha Levin
@ 2012-06-15  2:21               ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-15  2:21 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm,
	linux-kernel, kvm, avi, Marcelo Tosatti

On Thu, Jun 14, 2012 at 5:59 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-14 at 16:57 -0700, Yinghai Lu wrote:
>> can you please boot with "memtest" to see if there is any memory problem?
>
> The host got a memtest treatment, nothing found.

can you try to boot guest with memtest?

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-15  2:21               ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-15  2:21 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm,
	linux-kernel, kvm, avi, Marcelo Tosatti

On Thu, Jun 14, 2012 at 5:59 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-14 at 16:57 -0700, Yinghai Lu wrote:
>> can you please boot with "memtest" to see if there is any memory problem?
>
> The host got a memtest treatment, nothing found.

can you try to boot guest with memtest?

Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-15  2:21               ` Yinghai Lu
@ 2012-06-15  7:41                 ` Sasha Levin
  -1 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-15  7:41 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm,
	linux-kernel, kvm, avi, Marcelo Tosatti

On Thu, 2012-06-14 at 19:21 -0700, Yinghai Lu wrote:
> On Thu, Jun 14, 2012 at 5:59 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > On Thu, 2012-06-14 at 16:57 -0700, Yinghai Lu wrote:
> >> can you please boot with "memtest" to see if there is any memory problem?
> >
> > The host got a memtest treatment, nothing found.
> 
> can you try to boot guest with memtest?

Tried that, memtest on guest didn't reveal anything but the guest
proceeded to crashing anyway.


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-15  7:41                 ` Sasha Levin
  0 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-15  7:41 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm,
	linux-kernel, kvm, avi, Marcelo Tosatti

On Thu, 2012-06-14 at 19:21 -0700, Yinghai Lu wrote:
> On Thu, Jun 14, 2012 at 5:59 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > On Thu, 2012-06-14 at 16:57 -0700, Yinghai Lu wrote:
> >> can you please boot with "memtest" to see if there is any memory problem?
> >
> > The host got a memtest treatment, nothing found.
> 
> can you try to boot guest with memtest?

Tried that, memtest on guest didn't reveal anything but the guest
proceeded to crashing anyway.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-14  9:50     ` Sasha Levin
@ 2012-06-18 22:32       ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-18 22:32 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, Jun 14, 2012 at 11:50:40AM +0200, Sasha Levin wrote:
> On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> > On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> > > Hi all,
> > > 
> > > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> > > 
> > > Note that it happens with numa=off.
> > > 
> > > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> > > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> > 
> > Can you map it back to the source line please?
> 
> mm/memblock.c:583
> 
>                         phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>   97:   85 d2                   test   %edx,%edx
>   99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
>   9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
>   9f:   49 03 48 e8             add    -0x18(%r8),%rcx
> 
> It's the deref on 9b (r8=ffff88102febd958).

* Can you please post disassembly of the whole function?  It seems
  like rsv->regions[] was corrupt.  I want to verify other registers
  too.

* Can you please try the following patch?

  https://lkml.org/lkml/2012/6/15/510

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-18 22:32       ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-18 22:32 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, Jun 14, 2012 at 11:50:40AM +0200, Sasha Levin wrote:
> On Thu, 2012-06-14 at 12:20 +0900, Tejun Heo wrote:
> > On Wed, Jun 13, 2012 at 11:38:55PM +0200, Sasha Levin wrote:
> > > Hi all,
> > > 
> > > I'm seeing the following when booting a KVM guest with 65gb of RAM, on latest linux-next.
> > > 
> > > Note that it happens with numa=off.
> > > 
> > > [    0.000000] BUG: unable to handle kernel paging request at ffff88102febd948
> > > [    0.000000] IP: [<ffffffff836a6f37>] __next_free_mem_range+0x9b/0x155
> > 
> > Can you map it back to the source line please?
> 
> mm/memblock.c:583
> 
>                         phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>   97:   85 d2                   test   %edx,%edx
>   99:   74 08                   je     a3 <__next_free_mem_range+0xa3>
>   9b:   49 8b 48 f0             mov    -0x10(%r8),%rcx
>   9f:   49 03 48 e8             add    -0x18(%r8),%rcx
> 
> It's the deref on 9b (r8=ffff88102febd958).

* Can you please post disassembly of the whole function?  It seems
  like rsv->regions[] was corrupt.  I want to verify other registers
  too.

* Can you please try the following patch?

  https://lkml.org/lkml/2012/6/15/510

Thanks.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-18 22:32       ` Tejun Heo
@ 2012-06-18 22:50         ` Sasha Levin
  -1 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-18 22:50 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Mon, 2012-06-18 at 15:32 -0700, Tejun Heo wrote:
> * Can you please post disassembly of the whole function?  It seems
>   like rsv->regions[] was corrupt.  I want to verify other registers
>   too.

Here it is, with the patch you've asked to be tested applied if it matters any:

0000000000000000 <__next_free_mem_range>:
 * in lockstep and returns each intersection.
 */
void __init_memblock __next_free_mem_range(u64 *idx, int nid,
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
   0:	55                   	push   %rbp
   1:	48 89 e5             	mov    %rsp,%rbp
   4:	41 57                	push   %r15
   6:	41 56                	push   %r14
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
			struct memblock_region *r = &rsv->regions[ri];
   8:	45 31 f6             	xor    %r14d,%r14d
 * in lockstep and returns each intersection.
 */
void __init_memblock __next_free_mem_range(u64 *idx, int nid,
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
   b:	41 55                	push   %r13
   d:	41 54                	push   %r12
   f:	53                   	push   %rbx
  10:	48 83 ec 38          	sub    $0x38,%rsp
  14:	48 89 55 b0          	mov    %rdx,-0x50(%rbp)
  18:	48 89 4d a8          	mov    %rcx,-0x58(%rbp)
  1c:	48 89 7d b8          	mov    %rdi,-0x48(%rbp)
  20:	4c 89 45 a0          	mov    %r8,-0x60(%rbp)
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
  24:	48 8b 0d 00 00 00 00 	mov    0x0(%rip),%rcx        # 2b <__next_free_mem_range+0x2b>
			27: R_X86_64_PC32	memblock+0x4
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
  2b:	48 8b 07             	mov    (%rdi),%rax
		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
  2e:	4c 8b 1d 00 00 00 00 	mov    0x0(%rip),%r11        # 35 <__next_free_mem_range+0x35>
			31: R_X86_64_PC32	memblock+0x24
					   phys_addr_t *out_end, int *out_nid)
{
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;
  35:	48 89 c2             	mov    %rax,%rdx
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
  38:	48 89 45 d0          	mov    %rax,-0x30(%rbp)
	int ri = *idx >> 32;
  3c:	48 c1 ea 20          	shr    $0x20,%rdx

	for ( ; mi < mem->cnt; mi++) {
		struct memblock_region *m = &mem->regions[mi];
  40:	48 8b 05 00 00 00 00 	mov    0x0(%rip),%rax        # 47 <__next_free_mem_range+0x47>
			43: R_X86_64_PC32	memblock+0x1c
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
  47:	48 89 4d c8          	mov    %rcx,-0x38(%rbp)
		struct memblock_region *m = &mem->regions[mi];
  4b:	48 89 45 c0          	mov    %rax,-0x40(%rbp)
		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
  4f:	49 8d 5b 01          	lea    0x1(%r11),%rbx
			struct memblock_region *r = &rsv->regions[ri];
  53:	4c 8b 25 00 00 00 00 	mov    0x0(%rip),%r12        # 5a <__next_free_mem_range+0x5a>
			56: R_X86_64_PC32	memblock+0x3c
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
  5a:	e9 c8 00 00 00       	jmpq   127 <__next_free_mem_range+0x127>
		struct memblock_region *m = &mem->regions[mi];
  5f:	4d 6b ed 18          	imul   $0x18,%r13,%r13
  63:	4c 03 6d c0          	add    -0x40(%rbp),%r13
		phys_addr_t m_start = m->base;
  67:	4d 8b 4d 00          	mov    0x0(%r13),%r9
		phys_addr_t m_end = m->base + m->size;
  6b:	4d 89 ca             	mov    %r9,%r10
  6e:	4d 03 55 08          	add    0x8(%r13),%r10

		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
  72:	81 fe 00 04 00 00    	cmp    $0x400,%esi
  78:	0f 84 9a 00 00 00    	je     118 <__next_free_mem_range+0x118>
	r->nid = nid;
}

static inline int memblock_get_region_node(const struct memblock_region *r)
{
	return r->nid;
  7e:	41 3b 75 10          	cmp    0x10(%r13),%esi
  82:	0f 85 9c 00 00 00    	jne    124 <__next_free_mem_range+0x124>
  88:	e9 8b 00 00 00       	jmpq   118 <__next_free_mem_range+0x118>
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
			struct memblock_region *r = &rsv->regions[ri];
  8d:	4c 6b c0 18          	imul   $0x18,%rax,%r8
			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
  91:	31 c9                	xor    %ecx,%ecx
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
			struct memblock_region *r = &rsv->regions[ri];
  93:	4f 8d 04 04          	lea    (%r12,%r8,1),%r8
			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
  97:	85 d2                	test   %edx,%edx
  99:	74 08                	je     a3 <__next_free_mem_range+0xa3>
  9b:	49 8b 48 f0          	mov    -0x10(%r8),%rcx
  9f:	49 03 48 e8          	add    -0x18(%r8),%rcx
			phys_addr_t r_end = ri < rsv->cnt ? r->base : ULLONG_MAX;
  a3:	48 83 cf ff          	or     $0xffffffffffffffff,%rdi
  a7:	4c 39 d8             	cmp    %r11,%rax
  aa:	73 03                	jae    af <__next_free_mem_range+0xaf>
  ac:	49 8b 38             	mov    (%r8),%rdi

			/* if ri advanced past mi, break out to advance mi */
			if (r_start >= m_end)
  af:	4c 39 d1             	cmp    %r10,%rcx
  b2:	73 70                	jae    124 <__next_free_mem_range+0x124>
				break;
			/* if the two regions intersect, we're done */
			if (m_start < r_end) {
  b4:	4c 39 cf             	cmp    %r9,%rdi
  b7:	76 5d                	jbe    116 <__next_free_mem_range+0x116>
				if (out_start)
  b9:	48 83 7d b0 00       	cmpq   $0x0,-0x50(%rbp)
  be:	74 0e                	je     ce <__next_free_mem_range+0xce>
					*out_start = max(m_start, r_start);
  c0:	4c 39 c9             	cmp    %r9,%rcx
  c3:	48 8b 45 b0          	mov    -0x50(%rbp),%rax
  c7:	49 0f 42 c9          	cmovb  %r9,%rcx
  cb:	48 89 08             	mov    %rcx,(%rax)
				if (out_end)
  ce:	48 83 7d a8 00       	cmpq   $0x0,-0x58(%rbp)
  d3:	74 11                	je     e6 <__next_free_mem_range+0xe6>
					*out_end = min(m_end, r_end);
  d5:	4c 39 d7             	cmp    %r10,%rdi
  d8:	4c 89 d0             	mov    %r10,%rax
  db:	48 8b 4d a8          	mov    -0x58(%rbp),%rcx
  df:	48 0f 46 c7          	cmovbe %rdi,%rax
  e3:	48 89 01             	mov    %rax,(%rcx)
				if (out_nid)
  e6:	48 83 7d a0 00       	cmpq   $0x0,-0x60(%rbp)
  eb:	74 0a                	je     f7 <__next_free_mem_range+0xf7>
					*out_nid = memblock_get_region_node(m);
  ed:	41 8b 45 10          	mov    0x10(%r13),%eax
  f1:	48 8b 4d a0          	mov    -0x60(%rbp),%rcx
  f5:	89 01                	mov    %eax,(%rcx)
				/*
				 * The region which ends first is advanced
				 * for the next iteration.
				 */
				if (m_end <= r_end)
  f7:	4c 39 d7             	cmp    %r10,%rdi
  fa:	72 05                	jb     101 <__next_free_mem_range+0x101>
					mi++;
  fc:	41 ff c7             	inc    %r15d
  ff:	eb 02                	jmp    103 <__next_free_mem_range+0x103>
				else
					ri++;
 101:	ff c2                	inc    %edx
				*idx = (u32)mi | (u64)ri << 32;
 103:	48 c1 e2 20          	shl    $0x20,%rdx
 107:	45 89 ff             	mov    %r15d,%r15d
 10a:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
 10e:	4c 09 fa             	or     %r15,%rdx
 111:	48 89 10             	mov    %rdx,(%rax)
				return;
 114:	eb 30                	jmp    146 <__next_free_mem_range+0x146>
		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
 116:	ff c2                	inc    %edx
 118:	48 63 c2             	movslq %edx,%rax
 11b:	48 39 d8             	cmp    %rbx,%rax
 11e:	0f 82 69 ff ff ff    	jb     8d <__next_free_mem_range+0x8d>
 124:	41 ff c6             	inc    %r14d
 127:	8b 4d d0             	mov    -0x30(%rbp),%ecx
 12a:	45 8d 3c 0e          	lea    (%r14,%rcx,1),%r15d
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
 12e:	4d 63 ef             	movslq %r15d,%r13
 131:	4c 3b 6d c8          	cmp    -0x38(%rbp),%r13
 135:	0f 82 24 ff ff ff    	jb     5f <__next_free_mem_range+0x5f>
			}
		}
	}

	/* signal end of iteration */
	*idx = ULLONG_MAX;
 13b:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
 13f:	48 c7 00 ff ff ff ff 	movq   $0xffffffffffffffff,(%rax)
}
 146:	48 83 c4 38          	add    $0x38,%rsp
 14a:	5b                   	pop    %rbx
 14b:	41 5c                	pop    %r12
 14d:	41 5d                	pop    %r13
 14f:	41 5e                	pop    %r14
 151:	41 5f                	pop    %r15
 153:	c9                   	leaveq 
 154:	c3                   	retq

> * Can you please try the following patch?
> 
>   https://lkml.org/lkml/2012/6/15/510

The patch didn't seem to help.

Since this is pretty easy to reproduce, let me know if adding any debug code will prove to be helpful in further analysis.



^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-18 22:50         ` Sasha Levin
  0 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-18 22:50 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Mon, 2012-06-18 at 15:32 -0700, Tejun Heo wrote:
> * Can you please post disassembly of the whole function?  It seems
>   like rsv->regions[] was corrupt.  I want to verify other registers
>   too.

Here it is, with the patch you've asked to be tested applied if it matters any:

0000000000000000 <__next_free_mem_range>:
 * in lockstep and returns each intersection.
 */
void __init_memblock __next_free_mem_range(u64 *idx, int nid,
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
   0:	55                   	push   %rbp
   1:	48 89 e5             	mov    %rsp,%rbp
   4:	41 57                	push   %r15
   6:	41 56                	push   %r14
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
			struct memblock_region *r = &rsv->regions[ri];
   8:	45 31 f6             	xor    %r14d,%r14d
 * in lockstep and returns each intersection.
 */
void __init_memblock __next_free_mem_range(u64 *idx, int nid,
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
   b:	41 55                	push   %r13
   d:	41 54                	push   %r12
   f:	53                   	push   %rbx
  10:	48 83 ec 38          	sub    $0x38,%rsp
  14:	48 89 55 b0          	mov    %rdx,-0x50(%rbp)
  18:	48 89 4d a8          	mov    %rcx,-0x58(%rbp)
  1c:	48 89 7d b8          	mov    %rdi,-0x48(%rbp)
  20:	4c 89 45 a0          	mov    %r8,-0x60(%rbp)
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
  24:	48 8b 0d 00 00 00 00 	mov    0x0(%rip),%rcx        # 2b <__next_free_mem_range+0x2b>
			27: R_X86_64_PC32	memblock+0x4
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
  2b:	48 8b 07             	mov    (%rdi),%rax
		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
  2e:	4c 8b 1d 00 00 00 00 	mov    0x0(%rip),%r11        # 35 <__next_free_mem_range+0x35>
			31: R_X86_64_PC32	memblock+0x24
					   phys_addr_t *out_end, int *out_nid)
{
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;
  35:	48 89 c2             	mov    %rax,%rdx
					   phys_addr_t *out_start,
					   phys_addr_t *out_end, int *out_nid)
{
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
  38:	48 89 45 d0          	mov    %rax,-0x30(%rbp)
	int ri = *idx >> 32;
  3c:	48 c1 ea 20          	shr    $0x20,%rdx

	for ( ; mi < mem->cnt; mi++) {
		struct memblock_region *m = &mem->regions[mi];
  40:	48 8b 05 00 00 00 00 	mov    0x0(%rip),%rax        # 47 <__next_free_mem_range+0x47>
			43: R_X86_64_PC32	memblock+0x1c
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
  47:	48 89 4d c8          	mov    %rcx,-0x38(%rbp)
		struct memblock_region *m = &mem->regions[mi];
  4b:	48 89 45 c0          	mov    %rax,-0x40(%rbp)
		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
  4f:	49 8d 5b 01          	lea    0x1(%r11),%rbx
			struct memblock_region *r = &rsv->regions[ri];
  53:	4c 8b 25 00 00 00 00 	mov    0x0(%rip),%r12        # 5a <__next_free_mem_range+0x5a>
			56: R_X86_64_PC32	memblock+0x3c
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
  5a:	e9 c8 00 00 00       	jmpq   127 <__next_free_mem_range+0x127>
		struct memblock_region *m = &mem->regions[mi];
  5f:	4d 6b ed 18          	imul   $0x18,%r13,%r13
  63:	4c 03 6d c0          	add    -0x40(%rbp),%r13
		phys_addr_t m_start = m->base;
  67:	4d 8b 4d 00          	mov    0x0(%r13),%r9
		phys_addr_t m_end = m->base + m->size;
  6b:	4d 89 ca             	mov    %r9,%r10
  6e:	4d 03 55 08          	add    0x8(%r13),%r10

		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
  72:	81 fe 00 04 00 00    	cmp    $0x400,%esi
  78:	0f 84 9a 00 00 00    	je     118 <__next_free_mem_range+0x118>
	r->nid = nid;
}

static inline int memblock_get_region_node(const struct memblock_region *r)
{
	return r->nid;
  7e:	41 3b 75 10          	cmp    0x10(%r13),%esi
  82:	0f 85 9c 00 00 00    	jne    124 <__next_free_mem_range+0x124>
  88:	e9 8b 00 00 00       	jmpq   118 <__next_free_mem_range+0x118>
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
			struct memblock_region *r = &rsv->regions[ri];
  8d:	4c 6b c0 18          	imul   $0x18,%rax,%r8
			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
  91:	31 c9                	xor    %ecx,%ecx
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
			struct memblock_region *r = &rsv->regions[ri];
  93:	4f 8d 04 04          	lea    (%r12,%r8,1),%r8
			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
  97:	85 d2                	test   %edx,%edx
  99:	74 08                	je     a3 <__next_free_mem_range+0xa3>
  9b:	49 8b 48 f0          	mov    -0x10(%r8),%rcx
  9f:	49 03 48 e8          	add    -0x18(%r8),%rcx
			phys_addr_t r_end = ri < rsv->cnt ? r->base : ULLONG_MAX;
  a3:	48 83 cf ff          	or     $0xffffffffffffffff,%rdi
  a7:	4c 39 d8             	cmp    %r11,%rax
  aa:	73 03                	jae    af <__next_free_mem_range+0xaf>
  ac:	49 8b 38             	mov    (%r8),%rdi

			/* if ri advanced past mi, break out to advance mi */
			if (r_start >= m_end)
  af:	4c 39 d1             	cmp    %r10,%rcx
  b2:	73 70                	jae    124 <__next_free_mem_range+0x124>
				break;
			/* if the two regions intersect, we're done */
			if (m_start < r_end) {
  b4:	4c 39 cf             	cmp    %r9,%rdi
  b7:	76 5d                	jbe    116 <__next_free_mem_range+0x116>
				if (out_start)
  b9:	48 83 7d b0 00       	cmpq   $0x0,-0x50(%rbp)
  be:	74 0e                	je     ce <__next_free_mem_range+0xce>
					*out_start = max(m_start, r_start);
  c0:	4c 39 c9             	cmp    %r9,%rcx
  c3:	48 8b 45 b0          	mov    -0x50(%rbp),%rax
  c7:	49 0f 42 c9          	cmovb  %r9,%rcx
  cb:	48 89 08             	mov    %rcx,(%rax)
				if (out_end)
  ce:	48 83 7d a8 00       	cmpq   $0x0,-0x58(%rbp)
  d3:	74 11                	je     e6 <__next_free_mem_range+0xe6>
					*out_end = min(m_end, r_end);
  d5:	4c 39 d7             	cmp    %r10,%rdi
  d8:	4c 89 d0             	mov    %r10,%rax
  db:	48 8b 4d a8          	mov    -0x58(%rbp),%rcx
  df:	48 0f 46 c7          	cmovbe %rdi,%rax
  e3:	48 89 01             	mov    %rax,(%rcx)
				if (out_nid)
  e6:	48 83 7d a0 00       	cmpq   $0x0,-0x60(%rbp)
  eb:	74 0a                	je     f7 <__next_free_mem_range+0xf7>
					*out_nid = memblock_get_region_node(m);
  ed:	41 8b 45 10          	mov    0x10(%r13),%eax
  f1:	48 8b 4d a0          	mov    -0x60(%rbp),%rcx
  f5:	89 01                	mov    %eax,(%rcx)
				/*
				 * The region which ends first is advanced
				 * for the next iteration.
				 */
				if (m_end <= r_end)
  f7:	4c 39 d7             	cmp    %r10,%rdi
  fa:	72 05                	jb     101 <__next_free_mem_range+0x101>
					mi++;
  fc:	41 ff c7             	inc    %r15d
  ff:	eb 02                	jmp    103 <__next_free_mem_range+0x103>
				else
					ri++;
 101:	ff c2                	inc    %edx
				*idx = (u32)mi | (u64)ri << 32;
 103:	48 c1 e2 20          	shl    $0x20,%rdx
 107:	45 89 ff             	mov    %r15d,%r15d
 10a:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
 10e:	4c 09 fa             	or     %r15,%rdx
 111:	48 89 10             	mov    %rdx,(%rax)
				return;
 114:	eb 30                	jmp    146 <__next_free_mem_range+0x146>
		/* only memory regions are associated with nodes, check it */
		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
			continue;

		/* scan areas before each reservation for intersection */
		for ( ; ri < rsv->cnt + 1; ri++) {
 116:	ff c2                	inc    %edx
 118:	48 63 c2             	movslq %edx,%rax
 11b:	48 39 d8             	cmp    %rbx,%rax
 11e:	0f 82 69 ff ff ff    	jb     8d <__next_free_mem_range+0x8d>
 124:	41 ff c6             	inc    %r14d
 127:	8b 4d d0             	mov    -0x30(%rbp),%ecx
 12a:	45 8d 3c 0e          	lea    (%r14,%rcx,1),%r15d
	struct memblock_type *mem = &memblock.memory;
	struct memblock_type *rsv = &memblock.reserved;
	int mi = *idx & 0xffffffff;
	int ri = *idx >> 32;

	for ( ; mi < mem->cnt; mi++) {
 12e:	4d 63 ef             	movslq %r15d,%r13
 131:	4c 3b 6d c8          	cmp    -0x38(%rbp),%r13
 135:	0f 82 24 ff ff ff    	jb     5f <__next_free_mem_range+0x5f>
			}
		}
	}

	/* signal end of iteration */
	*idx = ULLONG_MAX;
 13b:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
 13f:	48 c7 00 ff ff ff ff 	movq   $0xffffffffffffffff,(%rax)
}
 146:	48 83 c4 38          	add    $0x38,%rsp
 14a:	5b                   	pop    %rbx
 14b:	41 5c                	pop    %r12
 14d:	41 5d                	pop    %r13
 14f:	41 5e                	pop    %r14
 151:	41 5f                	pop    %r15
 153:	c9                   	leaveq 
 154:	c3                   	retq

> * Can you please try the following patch?
> 
>   https://lkml.org/lkml/2012/6/15/510

The patch didn't seem to help.

Since this is pretty easy to reproduce, let me know if adding any debug code will prove to be helpful in further analysis.


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-18 22:50         ` Sasha Levin
@ 2012-06-19  4:11           ` Gavin Shan
  -1 siblings, 0 replies; 71+ messages in thread
From: Gavin Shan @ 2012-06-19  4:11 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

>> * Can you please post disassembly of the whole function?  It seems
>>   like rsv->regions[] was corrupt.  I want to verify other registers
>>   too.

I'm not sure that it was caused by some kind of conflicting here. It seems
that the memory used by reserved regions was deallocated before the crash
as following log indicates.

[    0.000000] memblock: reserved array is doubled to 256 at [0x102febf080-0x102fec087f]
[    0.000000] memblock_reserve: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1c5/0x1e2
:
:
[    0.000000] memblock: reserved array is doubled to 512 at [0x102febc080-0x102febf07f]
[    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1b0/0x1e2
[    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080] memblock_double_array+0x1c5/0x1e2
:
:
[    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39

Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
by function free_low_memory_core_early(). I'm not sure the release memblock might
be taken by bootmem, but I think it's worthy to have a try of removing following
2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()

unsigned long __init free_low_memory_core_early(int nodeid)
{
        unsigned long count = 0;
        phys_addr_t start, end;
        u64 i;

        /* free reserved array temporarily so that it's treated as free area */
        /* memblock_free_reserved_regions(); -REMOVED */

        for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
                unsigned long start_pfn = PFN_UP(start);
                unsigned long end_pfn = min_t(unsigned long,
                                              PFN_DOWN(end), max_low_pfn);
                if (start_pfn < end_pfn) {
                        __free_pages_memory(start_pfn, end_pfn);
                        count += end_pfn - start_pfn;
                }
        }

        /* put region array back? */
        /* memblock_reserve_reserved_regions(); -REMOVED */

        return count;
}

Thanks,
Gavin

>
>Here it is, with the patch you've asked to be tested applied if it matters any:
>
>0000000000000000 <__next_free_mem_range>:
> * in lockstep and returns each intersection.
> */
>void __init_memblock __next_free_mem_range(u64 *idx, int nid,
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>   0:	55                   	push   %rbp
>   1:	48 89 e5             	mov    %rsp,%rbp
>   4:	41 57                	push   %r15
>   6:	41 56                	push   %r14
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>			struct memblock_region *r = &rsv->regions[ri];
>   8:	45 31 f6             	xor    %r14d,%r14d
> * in lockstep and returns each intersection.
> */
>void __init_memblock __next_free_mem_range(u64 *idx, int nid,
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>   b:	41 55                	push   %r13
>   d:	41 54                	push   %r12
>   f:	53                   	push   %rbx
>  10:	48 83 ec 38          	sub    $0x38,%rsp
>  14:	48 89 55 b0          	mov    %rdx,-0x50(%rbp)
>  18:	48 89 4d a8          	mov    %rcx,-0x58(%rbp)
>  1c:	48 89 7d b8          	mov    %rdi,-0x48(%rbp)
>  20:	4c 89 45 a0          	mov    %r8,-0x60(%rbp)
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
>  24:	48 8b 0d 00 00 00 00 	mov    0x0(%rip),%rcx        # 2b <__next_free_mem_range+0x2b>
>			27: R_X86_64_PC32	memblock+0x4
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>  2b:	48 8b 07             	mov    (%rdi),%rax
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>  2e:	4c 8b 1d 00 00 00 00 	mov    0x0(%rip),%r11        # 35 <__next_free_mem_range+0x35>
>			31: R_X86_64_PC32	memblock+0x24
>					   phys_addr_t *out_end, int *out_nid)
>{
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>  35:	48 89 c2             	mov    %rax,%rdx
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>  38:	48 89 45 d0          	mov    %rax,-0x30(%rbp)
>	int ri = *idx >> 32;
>  3c:	48 c1 ea 20          	shr    $0x20,%rdx
>
>	for ( ; mi < mem->cnt; mi++) {
>		struct memblock_region *m = &mem->regions[mi];
>  40:	48 8b 05 00 00 00 00 	mov    0x0(%rip),%rax        # 47 <__next_free_mem_range+0x47>
>			43: R_X86_64_PC32	memblock+0x1c
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
>  47:	48 89 4d c8          	mov    %rcx,-0x38(%rbp)
>		struct memblock_region *m = &mem->regions[mi];
>  4b:	48 89 45 c0          	mov    %rax,-0x40(%rbp)
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>  4f:	49 8d 5b 01          	lea    0x1(%r11),%rbx
>			struct memblock_region *r = &rsv->regions[ri];
>  53:	4c 8b 25 00 00 00 00 	mov    0x0(%rip),%r12        # 5a <__next_free_mem_range+0x5a>
>			56: R_X86_64_PC32	memblock+0x3c
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
>  5a:	e9 c8 00 00 00       	jmpq   127 <__next_free_mem_range+0x127>
>		struct memblock_region *m = &mem->regions[mi];
>  5f:	4d 6b ed 18          	imul   $0x18,%r13,%r13
>  63:	4c 03 6d c0          	add    -0x40(%rbp),%r13
>		phys_addr_t m_start = m->base;
>  67:	4d 8b 4d 00          	mov    0x0(%r13),%r9
>		phys_addr_t m_end = m->base + m->size;
>  6b:	4d 89 ca             	mov    %r9,%r10
>  6e:	4d 03 55 08          	add    0x8(%r13),%r10
>
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>  72:	81 fe 00 04 00 00    	cmp    $0x400,%esi
>  78:	0f 84 9a 00 00 00    	je     118 <__next_free_mem_range+0x118>
>	r->nid = nid;
>}
>
>static inline int memblock_get_region_node(const struct memblock_region *r)
>{
>	return r->nid;
>  7e:	41 3b 75 10          	cmp    0x10(%r13),%esi
>  82:	0f 85 9c 00 00 00    	jne    124 <__next_free_mem_range+0x124>
>  88:	e9 8b 00 00 00       	jmpq   118 <__next_free_mem_range+0x118>
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>			struct memblock_region *r = &rsv->regions[ri];
>  8d:	4c 6b c0 18          	imul   $0x18,%rax,%r8
>			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>  91:	31 c9                	xor    %ecx,%ecx
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>			struct memblock_region *r = &rsv->regions[ri];
>  93:	4f 8d 04 04          	lea    (%r12,%r8,1),%r8
>			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>  97:	85 d2                	test   %edx,%edx
>  99:	74 08                	je     a3 <__next_free_mem_range+0xa3>
>  9b:	49 8b 48 f0          	mov    -0x10(%r8),%rcx
>  9f:	49 03 48 e8          	add    -0x18(%r8),%rcx
>			phys_addr_t r_end = ri < rsv->cnt ? r->base : ULLONG_MAX;
>  a3:	48 83 cf ff          	or     $0xffffffffffffffff,%rdi
>  a7:	4c 39 d8             	cmp    %r11,%rax
>  aa:	73 03                	jae    af <__next_free_mem_range+0xaf>
>  ac:	49 8b 38             	mov    (%r8),%rdi
>
>			/* if ri advanced past mi, break out to advance mi */
>			if (r_start >= m_end)
>  af:	4c 39 d1             	cmp    %r10,%rcx
>  b2:	73 70                	jae    124 <__next_free_mem_range+0x124>
>				break;
>			/* if the two regions intersect, we're done */
>			if (m_start < r_end) {
>  b4:	4c 39 cf             	cmp    %r9,%rdi
>  b7:	76 5d                	jbe    116 <__next_free_mem_range+0x116>
>				if (out_start)
>  b9:	48 83 7d b0 00       	cmpq   $0x0,-0x50(%rbp)
>  be:	74 0e                	je     ce <__next_free_mem_range+0xce>
>					*out_start = max(m_start, r_start);
>  c0:	4c 39 c9             	cmp    %r9,%rcx
>  c3:	48 8b 45 b0          	mov    -0x50(%rbp),%rax
>  c7:	49 0f 42 c9          	cmovb  %r9,%rcx
>  cb:	48 89 08             	mov    %rcx,(%rax)
>				if (out_end)
>  ce:	48 83 7d a8 00       	cmpq   $0x0,-0x58(%rbp)
>  d3:	74 11                	je     e6 <__next_free_mem_range+0xe6>
>					*out_end = min(m_end, r_end);
>  d5:	4c 39 d7             	cmp    %r10,%rdi
>  d8:	4c 89 d0             	mov    %r10,%rax
>  db:	48 8b 4d a8          	mov    -0x58(%rbp),%rcx
>  df:	48 0f 46 c7          	cmovbe %rdi,%rax
>  e3:	48 89 01             	mov    %rax,(%rcx)
>				if (out_nid)
>  e6:	48 83 7d a0 00       	cmpq   $0x0,-0x60(%rbp)
>  eb:	74 0a                	je     f7 <__next_free_mem_range+0xf7>
>					*out_nid = memblock_get_region_node(m);
>  ed:	41 8b 45 10          	mov    0x10(%r13),%eax
>  f1:	48 8b 4d a0          	mov    -0x60(%rbp),%rcx
>  f5:	89 01                	mov    %eax,(%rcx)
>				/*
>				 * The region which ends first is advanced
>				 * for the next iteration.
>				 */
>				if (m_end <= r_end)
>  f7:	4c 39 d7             	cmp    %r10,%rdi
>  fa:	72 05                	jb     101 <__next_free_mem_range+0x101>
>					mi++;
>  fc:	41 ff c7             	inc    %r15d
>  ff:	eb 02                	jmp    103 <__next_free_mem_range+0x103>
>				else
>					ri++;
> 101:	ff c2                	inc    %edx
>				*idx = (u32)mi | (u64)ri << 32;
> 103:	48 c1 e2 20          	shl    $0x20,%rdx
> 107:	45 89 ff             	mov    %r15d,%r15d
> 10a:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
> 10e:	4c 09 fa             	or     %r15,%rdx
> 111:	48 89 10             	mov    %rdx,(%rax)
>				return;
> 114:	eb 30                	jmp    146 <__next_free_mem_range+0x146>
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
> 116:	ff c2                	inc    %edx
> 118:	48 63 c2             	movslq %edx,%rax
> 11b:	48 39 d8             	cmp    %rbx,%rax
> 11e:	0f 82 69 ff ff ff    	jb     8d <__next_free_mem_range+0x8d>
> 124:	41 ff c6             	inc    %r14d
> 127:	8b 4d d0             	mov    -0x30(%rbp),%ecx
> 12a:	45 8d 3c 0e          	lea    (%r14,%rcx,1),%r15d
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
> 12e:	4d 63 ef             	movslq %r15d,%r13
> 131:	4c 3b 6d c8          	cmp    -0x38(%rbp),%r13
> 135:	0f 82 24 ff ff ff    	jb     5f <__next_free_mem_range+0x5f>
>			}
>		}
>	}
>
>	/* signal end of iteration */
>	*idx = ULLONG_MAX;
> 13b:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
> 13f:	48 c7 00 ff ff ff ff 	movq   $0xffffffffffffffff,(%rax)
>}
> 146:	48 83 c4 38          	add    $0x38,%rsp
> 14a:	5b                   	pop    %rbx
> 14b:	41 5c                	pop    %r12
> 14d:	41 5d                	pop    %r13
> 14f:	41 5e                	pop    %r14
> 151:	41 5f                	pop    %r15
> 153:	c9                   	leaveq 
> 154:	c3                   	retq
>
>> * Can you please try the following patch?
>> 
>>   https://lkml.org/lkml/2012/6/15/510
>
>The patch didn't seem to help.
>
>Since this is pretty easy to reproduce, let me know if adding any debug code will prove to be helpful in further analysis.
>
>
>--
>To unsubscribe, send a message with 'unsubscribe linux-mm' in
>the body to majordomo@kvack.org.  For more info on Linux MM,
>see: http://www.linux-mm.org/ .
>Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
>


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-19  4:11           ` Gavin Shan
  0 siblings, 0 replies; 71+ messages in thread
From: Gavin Shan @ 2012-06-19  4:11 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

>> * Can you please post disassembly of the whole function?  It seems
>>   like rsv->regions[] was corrupt.  I want to verify other registers
>>   too.

I'm not sure that it was caused by some kind of conflicting here. It seems
that the memory used by reserved regions was deallocated before the crash
as following log indicates.

[    0.000000] memblock: reserved array is doubled to 256 at [0x102febf080-0x102fec087f]
[    0.000000] memblock_reserve: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1c5/0x1e2
:
:
[    0.000000] memblock: reserved array is doubled to 512 at [0x102febc080-0x102febf07f]
[    0.000000]    memblock_free: [0x0000102febf080-0x0000102fec0880] memblock_double_array+0x1b0/0x1e2
[    0.000000] memblock_reserve: [0x0000102febc080-0x0000102febf080] memblock_double_array+0x1c5/0x1e2
:
:
[    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39

Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
by function free_low_memory_core_early(). I'm not sure the release memblock might
be taken by bootmem, but I think it's worthy to have a try of removing following
2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()

unsigned long __init free_low_memory_core_early(int nodeid)
{
        unsigned long count = 0;
        phys_addr_t start, end;
        u64 i;

        /* free reserved array temporarily so that it's treated as free area */
        /* memblock_free_reserved_regions(); -REMOVED */

        for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
                unsigned long start_pfn = PFN_UP(start);
                unsigned long end_pfn = min_t(unsigned long,
                                              PFN_DOWN(end), max_low_pfn);
                if (start_pfn < end_pfn) {
                        __free_pages_memory(start_pfn, end_pfn);
                        count += end_pfn - start_pfn;
                }
        }

        /* put region array back? */
        /* memblock_reserve_reserved_regions(); -REMOVED */

        return count;
}

Thanks,
Gavin

>
>Here it is, with the patch you've asked to be tested applied if it matters any:
>
>0000000000000000 <__next_free_mem_range>:
> * in lockstep and returns each intersection.
> */
>void __init_memblock __next_free_mem_range(u64 *idx, int nid,
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>   0:	55                   	push   %rbp
>   1:	48 89 e5             	mov    %rsp,%rbp
>   4:	41 57                	push   %r15
>   6:	41 56                	push   %r14
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>			struct memblock_region *r = &rsv->regions[ri];
>   8:	45 31 f6             	xor    %r14d,%r14d
> * in lockstep and returns each intersection.
> */
>void __init_memblock __next_free_mem_range(u64 *idx, int nid,
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>   b:	41 55                	push   %r13
>   d:	41 54                	push   %r12
>   f:	53                   	push   %rbx
>  10:	48 83 ec 38          	sub    $0x38,%rsp
>  14:	48 89 55 b0          	mov    %rdx,-0x50(%rbp)
>  18:	48 89 4d a8          	mov    %rcx,-0x58(%rbp)
>  1c:	48 89 7d b8          	mov    %rdi,-0x48(%rbp)
>  20:	4c 89 45 a0          	mov    %r8,-0x60(%rbp)
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
>  24:	48 8b 0d 00 00 00 00 	mov    0x0(%rip),%rcx        # 2b <__next_free_mem_range+0x2b>
>			27: R_X86_64_PC32	memblock+0x4
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>  2b:	48 8b 07             	mov    (%rdi),%rax
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>  2e:	4c 8b 1d 00 00 00 00 	mov    0x0(%rip),%r11        # 35 <__next_free_mem_range+0x35>
>			31: R_X86_64_PC32	memblock+0x24
>					   phys_addr_t *out_end, int *out_nid)
>{
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>  35:	48 89 c2             	mov    %rax,%rdx
>					   phys_addr_t *out_start,
>					   phys_addr_t *out_end, int *out_nid)
>{
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>  38:	48 89 45 d0          	mov    %rax,-0x30(%rbp)
>	int ri = *idx >> 32;
>  3c:	48 c1 ea 20          	shr    $0x20,%rdx
>
>	for ( ; mi < mem->cnt; mi++) {
>		struct memblock_region *m = &mem->regions[mi];
>  40:	48 8b 05 00 00 00 00 	mov    0x0(%rip),%rax        # 47 <__next_free_mem_range+0x47>
>			43: R_X86_64_PC32	memblock+0x1c
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
>  47:	48 89 4d c8          	mov    %rcx,-0x38(%rbp)
>		struct memblock_region *m = &mem->regions[mi];
>  4b:	48 89 45 c0          	mov    %rax,-0x40(%rbp)
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>  4f:	49 8d 5b 01          	lea    0x1(%r11),%rbx
>			struct memblock_region *r = &rsv->regions[ri];
>  53:	4c 8b 25 00 00 00 00 	mov    0x0(%rip),%r12        # 5a <__next_free_mem_range+0x5a>
>			56: R_X86_64_PC32	memblock+0x3c
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
>  5a:	e9 c8 00 00 00       	jmpq   127 <__next_free_mem_range+0x127>
>		struct memblock_region *m = &mem->regions[mi];
>  5f:	4d 6b ed 18          	imul   $0x18,%r13,%r13
>  63:	4c 03 6d c0          	add    -0x40(%rbp),%r13
>		phys_addr_t m_start = m->base;
>  67:	4d 8b 4d 00          	mov    0x0(%r13),%r9
>		phys_addr_t m_end = m->base + m->size;
>  6b:	4d 89 ca             	mov    %r9,%r10
>  6e:	4d 03 55 08          	add    0x8(%r13),%r10
>
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>  72:	81 fe 00 04 00 00    	cmp    $0x400,%esi
>  78:	0f 84 9a 00 00 00    	je     118 <__next_free_mem_range+0x118>
>	r->nid = nid;
>}
>
>static inline int memblock_get_region_node(const struct memblock_region *r)
>{
>	return r->nid;
>  7e:	41 3b 75 10          	cmp    0x10(%r13),%esi
>  82:	0f 85 9c 00 00 00    	jne    124 <__next_free_mem_range+0x124>
>  88:	e9 8b 00 00 00       	jmpq   118 <__next_free_mem_range+0x118>
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>			struct memblock_region *r = &rsv->regions[ri];
>  8d:	4c 6b c0 18          	imul   $0x18,%rax,%r8
>			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>  91:	31 c9                	xor    %ecx,%ecx
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
>			struct memblock_region *r = &rsv->regions[ri];
>  93:	4f 8d 04 04          	lea    (%r12,%r8,1),%r8
>			phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0;
>  97:	85 d2                	test   %edx,%edx
>  99:	74 08                	je     a3 <__next_free_mem_range+0xa3>
>  9b:	49 8b 48 f0          	mov    -0x10(%r8),%rcx
>  9f:	49 03 48 e8          	add    -0x18(%r8),%rcx
>			phys_addr_t r_end = ri < rsv->cnt ? r->base : ULLONG_MAX;
>  a3:	48 83 cf ff          	or     $0xffffffffffffffff,%rdi
>  a7:	4c 39 d8             	cmp    %r11,%rax
>  aa:	73 03                	jae    af <__next_free_mem_range+0xaf>
>  ac:	49 8b 38             	mov    (%r8),%rdi
>
>			/* if ri advanced past mi, break out to advance mi */
>			if (r_start >= m_end)
>  af:	4c 39 d1             	cmp    %r10,%rcx
>  b2:	73 70                	jae    124 <__next_free_mem_range+0x124>
>				break;
>			/* if the two regions intersect, we're done */
>			if (m_start < r_end) {
>  b4:	4c 39 cf             	cmp    %r9,%rdi
>  b7:	76 5d                	jbe    116 <__next_free_mem_range+0x116>
>				if (out_start)
>  b9:	48 83 7d b0 00       	cmpq   $0x0,-0x50(%rbp)
>  be:	74 0e                	je     ce <__next_free_mem_range+0xce>
>					*out_start = max(m_start, r_start);
>  c0:	4c 39 c9             	cmp    %r9,%rcx
>  c3:	48 8b 45 b0          	mov    -0x50(%rbp),%rax
>  c7:	49 0f 42 c9          	cmovb  %r9,%rcx
>  cb:	48 89 08             	mov    %rcx,(%rax)
>				if (out_end)
>  ce:	48 83 7d a8 00       	cmpq   $0x0,-0x58(%rbp)
>  d3:	74 11                	je     e6 <__next_free_mem_range+0xe6>
>					*out_end = min(m_end, r_end);
>  d5:	4c 39 d7             	cmp    %r10,%rdi
>  d8:	4c 89 d0             	mov    %r10,%rax
>  db:	48 8b 4d a8          	mov    -0x58(%rbp),%rcx
>  df:	48 0f 46 c7          	cmovbe %rdi,%rax
>  e3:	48 89 01             	mov    %rax,(%rcx)
>				if (out_nid)
>  e6:	48 83 7d a0 00       	cmpq   $0x0,-0x60(%rbp)
>  eb:	74 0a                	je     f7 <__next_free_mem_range+0xf7>
>					*out_nid = memblock_get_region_node(m);
>  ed:	41 8b 45 10          	mov    0x10(%r13),%eax
>  f1:	48 8b 4d a0          	mov    -0x60(%rbp),%rcx
>  f5:	89 01                	mov    %eax,(%rcx)
>				/*
>				 * The region which ends first is advanced
>				 * for the next iteration.
>				 */
>				if (m_end <= r_end)
>  f7:	4c 39 d7             	cmp    %r10,%rdi
>  fa:	72 05                	jb     101 <__next_free_mem_range+0x101>
>					mi++;
>  fc:	41 ff c7             	inc    %r15d
>  ff:	eb 02                	jmp    103 <__next_free_mem_range+0x103>
>				else
>					ri++;
> 101:	ff c2                	inc    %edx
>				*idx = (u32)mi | (u64)ri << 32;
> 103:	48 c1 e2 20          	shl    $0x20,%rdx
> 107:	45 89 ff             	mov    %r15d,%r15d
> 10a:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
> 10e:	4c 09 fa             	or     %r15,%rdx
> 111:	48 89 10             	mov    %rdx,(%rax)
>				return;
> 114:	eb 30                	jmp    146 <__next_free_mem_range+0x146>
>		/* only memory regions are associated with nodes, check it */
>		if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
>			continue;
>
>		/* scan areas before each reservation for intersection */
>		for ( ; ri < rsv->cnt + 1; ri++) {
> 116:	ff c2                	inc    %edx
> 118:	48 63 c2             	movslq %edx,%rax
> 11b:	48 39 d8             	cmp    %rbx,%rax
> 11e:	0f 82 69 ff ff ff    	jb     8d <__next_free_mem_range+0x8d>
> 124:	41 ff c6             	inc    %r14d
> 127:	8b 4d d0             	mov    -0x30(%rbp),%ecx
> 12a:	45 8d 3c 0e          	lea    (%r14,%rcx,1),%r15d
>	struct memblock_type *mem = &memblock.memory;
>	struct memblock_type *rsv = &memblock.reserved;
>	int mi = *idx & 0xffffffff;
>	int ri = *idx >> 32;
>
>	for ( ; mi < mem->cnt; mi++) {
> 12e:	4d 63 ef             	movslq %r15d,%r13
> 131:	4c 3b 6d c8          	cmp    -0x38(%rbp),%r13
> 135:	0f 82 24 ff ff ff    	jb     5f <__next_free_mem_range+0x5f>
>			}
>		}
>	}
>
>	/* signal end of iteration */
>	*idx = ULLONG_MAX;
> 13b:	48 8b 45 b8          	mov    -0x48(%rbp),%rax
> 13f:	48 c7 00 ff ff ff ff 	movq   $0xffffffffffffffff,(%rax)
>}
> 146:	48 83 c4 38          	add    $0x38,%rsp
> 14a:	5b                   	pop    %rbx
> 14b:	41 5c                	pop    %r12
> 14d:	41 5d                	pop    %r13
> 14f:	41 5e                	pop    %r14
> 151:	41 5f                	pop    %r15
> 153:	c9                   	leaveq 
> 154:	c3                   	retq
>
>> * Can you please try the following patch?
>> 
>>   https://lkml.org/lkml/2012/6/15/510
>
>The patch didn't seem to help.
>
>Since this is pretty easy to reproduce, let me know if adding any debug code will prove to be helpful in further analysis.
>
>
>--
>To unsubscribe, send a message with 'unsubscribe linux-mm' in
>the body to majordomo@kvack.org.  For more info on Linux MM,
>see: http://www.linux-mm.org/ .
>Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-19  4:11           ` Gavin Shan
@ 2012-06-19  5:43             ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-19  5:43 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Tejun Heo, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Mon, Jun 18, 2012 at 9:11 PM, Gavin Shan <shangw@linux.vnet.ibm.com> wrote:
> :
> [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
>
> Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
> by function free_low_memory_core_early(). I'm not sure the release memblock might
> be taken by bootmem, but I think it's worthy to have a try of removing following
> 2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()

if it was taken, should have print out about that.

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-19  5:43             ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-19  5:43 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Tejun Heo, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Mon, Jun 18, 2012 at 9:11 PM, Gavin Shan <shangw@linux.vnet.ibm.com> wrote:
> :
> [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
>
> Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
> by function free_low_memory_core_early(). I'm not sure the release memblock might
> be taken by bootmem, but I think it's worthy to have a try of removing following
> 2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()

if it was taken, should have print out about that.

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-19  5:43             ` Yinghai Lu
@ 2012-06-19  6:09               ` Gavin Shan
  -1 siblings, 0 replies; 71+ messages in thread
From: Gavin Shan @ 2012-06-19  6:09 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Tejun Heo, Andrew Morton, David Miller,
	hpa, linux-mm, linux-kernel

>> :
>> [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
>>
>> Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
>> by function free_low_memory_core_early(). I'm not sure the release memblock might
>> be taken by bootmem, but I think it's worthy to have a try of removing following
>> 2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()
>
>if it was taken, should have print out about that.
>

Yinghai, it's possible the memory block returned to bootmem and get used/corrupted
by other CPU cores?

Thanks,
Gavin


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-19  6:09               ` Gavin Shan
  0 siblings, 0 replies; 71+ messages in thread
From: Gavin Shan @ 2012-06-19  6:09 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Tejun Heo, Andrew Morton, David Miller,
	hpa, linux-mm, linux-kernel

>> :
>> [    0.000000]    memblock_free: [0x0000102febc080-0x0000102febf080] memblock_free_reserved_regions+0x37/0x39
>>
>> Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
>> by function free_low_memory_core_early(). I'm not sure the release memblock might
>> be taken by bootmem, but I think it's worthy to have a try of removing following
>> 2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()
>
>if it was taken, should have print out about that.
>

Yinghai, it's possible the memory block returned to bootmem and get used/corrupted
by other CPU cores?

Thanks,
Gavin

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-19  6:09               ` Gavin Shan
@ 2012-06-19 18:12                 ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-19 18:12 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Tejun Heo, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Mon, Jun 18, 2012 at 11:09 PM, Gavin Shan <shangw@linux.vnet.ibm.com> wrote:
> Yinghai, it's possible the memory block returned to bootmem and get used/corrupted
> by other CPU cores?

At that point only BSP is running.  and all APs are not started yet.

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-19 18:12                 ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-19 18:12 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Tejun Heo, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Mon, Jun 18, 2012 at 11:09 PM, Gavin Shan <shangw@linux.vnet.ibm.com> wrote:
> Yinghai, it's possible the memory block returned to bootmem and get used/corrupted
> by other CPU cores?

At that point only BSP is running.  and all APs are not started yet.

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-19  4:11           ` Gavin Shan
@ 2012-06-19 21:20             ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-19 21:20 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

Hello, guys.

On Tue, Jun 19, 2012 at 12:11:54PM +0800, Gavin Shan wrote:
> Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
> by function free_low_memory_core_early(). I'm not sure the release memblock might
> be taken by bootmem, but I think it's worthy to have a try of removing following
> 2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()
> 
> unsigned long __init free_low_memory_core_early(int nodeid)
> {
>         unsigned long count = 0;
>         phys_addr_t start, end;
>         u64 i;
> 
>         /* free reserved array temporarily so that it's treated as free area */
>         /* memblock_free_reserved_regions(); -REMOVED */
> 
>         for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
>                 unsigned long start_pfn = PFN_UP(start);
>                 unsigned long end_pfn = min_t(unsigned long,
>                                               PFN_DOWN(end), max_low_pfn);
>                 if (start_pfn < end_pfn) {
>                         __free_pages_memory(start_pfn, end_pfn);
>                         count += end_pfn - start_pfn;
>                 }
>         }
> 
>         /* put region array back? */
>         /* memblock_reserve_reserved_regions(); -REMOVED */
> 
>         return count;
> }

I think I figured out what's going on.  Sasha, your kernel has
CONFIG_DEBUG_PAGEALLOC enabled, right?  __free_pages_memory() hands
the memory area to the buddy page allocator which marks the pages
not-present in the page table if CONFIG_DEBUG_PAGEALLOC is set by
calling kernel_map_pages().  reserved array doesn't tend to be too big
and ends up surrounded by other reserved areas to avoid being returned
to page allocator but on your setup it ends up being doubled towards
the end of the boot process and gets unmapped triggering page fault on
the following attempt to access the table.

Something like the following should fix it.

diff --git a/mm/memblock.c b/mm/memblock.c
index 32a0a5e..2770970 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -148,11 +148,15 @@ phys_addr_t __init_memblock memblock_find_in_range(phys_addr_t start,
  */
 int __init_memblock memblock_free_reserved_regions(void)
 {
+#ifndef CONFIG_DEBUG_PAGEALLOC
 	if (memblock.reserved.regions == memblock_reserved_init_regions)
 		return 0;
 
 	return memblock_free(__pa(memblock.reserved.regions),
 		 sizeof(struct memblock_region) * memblock.reserved.max);
+#else
+	return 0;
+#endif
 }
 
 /*
@@ -160,11 +164,15 @@ int __init_memblock memblock_free_reserved_regions(void)
  */
 int __init_memblock memblock_reserve_reserved_regions(void)
 {
+#ifndef COFNIG_DEBUG_PAGEALLOC
 	if (memblock.reserved.regions == memblock_reserved_init_regions)
 		return 0;
 
 	return memblock_reserve(__pa(memblock.reserved.regions),
 		 sizeof(struct memblock_region) * memblock.reserved.max);
+#else
+	return 0;
+#endif
 }
 
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)


^ permalink raw reply related	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-19 21:20             ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-19 21:20 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

Hello, guys.

On Tue, Jun 19, 2012 at 12:11:54PM +0800, Gavin Shan wrote:
> Here, [0x0000102febc080-0x0000102febf080] was released to available memory block
> by function free_low_memory_core_early(). I'm not sure the release memblock might
> be taken by bootmem, but I think it's worthy to have a try of removing following
> 2 lines: memblock_free_reserved_regions() and memblock_reserve_reserved_regions()
> 
> unsigned long __init free_low_memory_core_early(int nodeid)
> {
>         unsigned long count = 0;
>         phys_addr_t start, end;
>         u64 i;
> 
>         /* free reserved array temporarily so that it's treated as free area */
>         /* memblock_free_reserved_regions(); -REMOVED */
> 
>         for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
>                 unsigned long start_pfn = PFN_UP(start);
>                 unsigned long end_pfn = min_t(unsigned long,
>                                               PFN_DOWN(end), max_low_pfn);
>                 if (start_pfn < end_pfn) {
>                         __free_pages_memory(start_pfn, end_pfn);
>                         count += end_pfn - start_pfn;
>                 }
>         }
> 
>         /* put region array back? */
>         /* memblock_reserve_reserved_regions(); -REMOVED */
> 
>         return count;
> }

I think I figured out what's going on.  Sasha, your kernel has
CONFIG_DEBUG_PAGEALLOC enabled, right?  __free_pages_memory() hands
the memory area to the buddy page allocator which marks the pages
not-present in the page table if CONFIG_DEBUG_PAGEALLOC is set by
calling kernel_map_pages().  reserved array doesn't tend to be too big
and ends up surrounded by other reserved areas to avoid being returned
to page allocator but on your setup it ends up being doubled towards
the end of the boot process and gets unmapped triggering page fault on
the following attempt to access the table.

Something like the following should fix it.

diff --git a/mm/memblock.c b/mm/memblock.c
index 32a0a5e..2770970 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -148,11 +148,15 @@ phys_addr_t __init_memblock memblock_find_in_range(phys_addr_t start,
  */
 int __init_memblock memblock_free_reserved_regions(void)
 {
+#ifndef CONFIG_DEBUG_PAGEALLOC
 	if (memblock.reserved.regions == memblock_reserved_init_regions)
 		return 0;
 
 	return memblock_free(__pa(memblock.reserved.regions),
 		 sizeof(struct memblock_region) * memblock.reserved.max);
+#else
+	return 0;
+#endif
 }
 
 /*
@@ -160,11 +164,15 @@ int __init_memblock memblock_free_reserved_regions(void)
  */
 int __init_memblock memblock_reserve_reserved_regions(void)
 {
+#ifndef COFNIG_DEBUG_PAGEALLOC
 	if (memblock.reserved.regions == memblock_reserved_init_regions)
 		return 0;
 
 	return memblock_reserve(__pa(memblock.reserved.regions),
 		 sizeof(struct memblock_region) * memblock.reserved.max);
+#else
+	return 0;
+#endif
 }
 
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-19 21:20             ` Tejun Heo
@ 2012-06-19 21:26               ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-19 21:26 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Tue, Jun 19, 2012 at 02:20:59PM -0700, Tejun Heo wrote:
> Something like the following should fix it.
> 
> diff --git a/mm/memblock.c b/mm/memblock.c
> index 32a0a5e..2770970 100644
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -148,11 +148,15 @@ phys_addr_t __init_memblock memblock_find_in_range(phys_addr_t start,
>   */
>  int __init_memblock memblock_free_reserved_regions(void)
>  {
> +#ifndef CONFIG_DEBUG_PAGEALLOC
>  	if (memblock.reserved.regions == memblock_reserved_init_regions)
>  		return 0;
>  
>  	return memblock_free(__pa(memblock.reserved.regions),
>  		 sizeof(struct memblock_region) * memblock.reserved.max);
> +#else
> +	return 0;
> +#endif

BTW, this is just ugly and I don't think we're saving any noticeable
amount by doing this "free - give it to page allocator - reserve
again" dancing.  We should just allocate regions aligned to page
boundaries and free them later when memblock is no longer in use.

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-19 21:26               ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-19 21:26 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Tue, Jun 19, 2012 at 02:20:59PM -0700, Tejun Heo wrote:
> Something like the following should fix it.
> 
> diff --git a/mm/memblock.c b/mm/memblock.c
> index 32a0a5e..2770970 100644
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -148,11 +148,15 @@ phys_addr_t __init_memblock memblock_find_in_range(phys_addr_t start,
>   */
>  int __init_memblock memblock_free_reserved_regions(void)
>  {
> +#ifndef CONFIG_DEBUG_PAGEALLOC
>  	if (memblock.reserved.regions == memblock_reserved_init_regions)
>  		return 0;
>  
>  	return memblock_free(__pa(memblock.reserved.regions),
>  		 sizeof(struct memblock_region) * memblock.reserved.max);
> +#else
> +	return 0;
> +#endif

BTW, this is just ugly and I don't think we're saving any noticeable
amount by doing this "free - give it to page allocator - reserve
again" dancing.  We should just allocate regions aligned to page
boundaries and free them later when memblock is no longer in use.

Thanks.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-19 21:26               ` Tejun Heo
  (?)
@ 2012-06-20  2:57               ` Yinghai Lu
  2012-06-21 20:17                   ` Tejun Heo
  -1 siblings, 1 reply; 71+ messages in thread
From: Yinghai Lu @ 2012-06-20  2:57 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1271 bytes --]

On Tue, Jun 19, 2012 at 2:26 PM, Tejun Heo <tj@kernel.org> wrote:
> On Tue, Jun 19, 2012 at 02:20:59PM -0700, Tejun Heo wrote:
>> Something like the following should fix it.
>>
>> diff --git a/mm/memblock.c b/mm/memblock.c
>> index 32a0a5e..2770970 100644
>> --- a/mm/memblock.c
>> +++ b/mm/memblock.c
>> @@ -148,11 +148,15 @@ phys_addr_t __init_memblock memblock_find_in_range(phys_addr_t start,
>>   */
>>  int __init_memblock memblock_free_reserved_regions(void)
>>  {
>> +#ifndef CONFIG_DEBUG_PAGEALLOC
>>       if (memblock.reserved.regions == memblock_reserved_init_regions)
>>               return 0;
>>
>>       return memblock_free(__pa(memblock.reserved.regions),
>>                sizeof(struct memblock_region) * memblock.reserved.max);
>> +#else
>> +     return 0;
>> +#endif
>
> BTW, this is just ugly and I don't think we're saving any noticeable
> amount by doing this "free - give it to page allocator - reserve
> again" dancing.  We should just allocate regions aligned to page
> boundaries and free them later when memblock is no longer in use.

if it is that case, that change could fix other problem problem too.
--- during the one free reserved.regions could double the array.

please check attached patch.

Yinghai

[-- Attachment #2: fix_free_memblock_reserve_v4.patch --]
[-- Type: application/octet-stream, Size: 7296 bytes --]

Subject: [PATCH] memblock: free allocated memblock_reserved_regions later

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

Cc: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   59 +++++++++++++++++++----------------------------
 mm/nobootmem.c           |   36 +++++++++++++++++-----------
 3 files changed, 48 insertions(+), 51 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -216,7 +204,7 @@ static int __init_memblock memblock_doub
 
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
-	new_size = old_size << 1;
+	new_size = PAGE_ALIGN(old_size << 1);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,32 +233,35 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
 	if (!addr) {
-		pr_err("memblock: Failed to double %s array from %ld to %ld entries !\n",
-		       memblock_type_name(type), type->max, type->max * 2);
+		pr_err("memblock: Failed to double %s array from %ld to %lld entries !\n",
+			memblock_type_name(type), type->max,
+			new_size/sizeof(struct memblock_region));
 		return -1;
 	}
 
-	memblock_dbg("memblock: %s array is doubled to %ld at [%#010llx-%#010llx]",
-		 memblock_type_name(type), type->max * 2, (u64)addr, (u64)addr + new_size - 1);
+	memblock_dbg("memblock: %s array is doubled to %lld at [%#010llx-%#010llx]",
+			 memblock_type_name(type),
+			 new_size/sizeof(struct memblock_region),
+			 (u64)addr, (u64)addr + new_size - 1);
 
 	/* Found space, we now need to move the array over before
 	 * we add the reserved region since it may be our reserved
 	 * array itself that is full.
 	 */
 	memcpy(new_array, type->regions, old_size);
-	memset(new_array + type->max, 0, old_size);
+	memset(new_array + type->max, 0, new_size - old_size);
 	old_array = type->regions;
 	type->regions = new_array;
-	type->max <<= 1;
+	type->max = new_size/sizeof(struct memblock_region);
 
 	/* Free old array. We needn't free it if the array is the
 	 * static one
@@ -279,7 +270,7 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), PAGE_ALIGN(old_size));
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-20  2:57               ` Yinghai Lu
@ 2012-06-21 20:17                   ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-21 20:17 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Tue, Jun 19, 2012 at 07:57:45PM -0700, Yinghai Lu wrote:
> if it is that case, that change could fix other problem problem too.
> --- during the one free reserved.regions could double the array.

Yeah, that sounds much more attractive to me too.  Some comments on
the patch tho.

>  /**
>   * memblock_double_array - double the size of the memblock regions array
>   * @type: memblock type of the regions array being doubled
> @@ -216,7 +204,7 @@ static int __init_memblock memblock_doub
>  
>  	/* Calculate new doubled size */
>  	old_size = type->max * sizeof(struct memblock_region);
> -	new_size = old_size << 1;
> +	new_size = PAGE_ALIGN(old_size << 1);

We definintely can use some comments explaining why we want page
alignment.  It's kinda subtle.

This is a bit confusing here because old_size is the proper size
without padding while new_size is page aligned size with possible
padding.  Maybe discerning {old|new}_alloc_size is clearer?  Also, I
think adding @new_cnt variable which is calculated together would make
the code easier to follow.  So, sth like,

	/* explain why page aligning is necessary */
	old_size = type->max * sizeof(struct memblock_region);
	old_alloc_size = PAGE_ALIGN(old_size);

	new_max = type->max << 1;
	new_size = new_max * sizeof(struct memblock_region);
	new_alloc_size = PAGE_ALIGN(new_size);

and use alloc_sizes for alloc/frees and sizes for everything else.

>  unsigned long __init free_low_memory_core_early(int nodeid)
>  {
>  	unsigned long count = 0;
> -	phys_addr_t start, end;
> +	phys_addr_t start, end, size;
>  	u64 i;
>  
> -	/* free reserved array temporarily so that it's treated as free area */
> -	memblock_free_reserved_regions();
> +	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
> +		count += __free_memory_core(start, end);
>  
> -	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
> -		unsigned long start_pfn = PFN_UP(start);
> -		unsigned long end_pfn = min_t(unsigned long,
> -					      PFN_DOWN(end), max_low_pfn);
> -		if (start_pfn < end_pfn) {
> -			__free_pages_memory(start_pfn, end_pfn);
> -			count += end_pfn - start_pfn;
> -		}
> -	}
> +	/* free range that is used for reserved array if we allocate it */
> +	size = get_allocated_memblock_reserved_regions_info(&start);
> +	if (size)
> +		count += __free_memory_core(start, start + size);

I'm afraid this is too early.  We don't want the region to be unmapped
yet.  This should only happen after all memblock usages are finished
which I don't think is the case yet.

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-21 20:17                   ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-21 20:17 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Tue, Jun 19, 2012 at 07:57:45PM -0700, Yinghai Lu wrote:
> if it is that case, that change could fix other problem problem too.
> --- during the one free reserved.regions could double the array.

Yeah, that sounds much more attractive to me too.  Some comments on
the patch tho.

>  /**
>   * memblock_double_array - double the size of the memblock regions array
>   * @type: memblock type of the regions array being doubled
> @@ -216,7 +204,7 @@ static int __init_memblock memblock_doub
>  
>  	/* Calculate new doubled size */
>  	old_size = type->max * sizeof(struct memblock_region);
> -	new_size = old_size << 1;
> +	new_size = PAGE_ALIGN(old_size << 1);

We definintely can use some comments explaining why we want page
alignment.  It's kinda subtle.

This is a bit confusing here because old_size is the proper size
without padding while new_size is page aligned size with possible
padding.  Maybe discerning {old|new}_alloc_size is clearer?  Also, I
think adding @new_cnt variable which is calculated together would make
the code easier to follow.  So, sth like,

	/* explain why page aligning is necessary */
	old_size = type->max * sizeof(struct memblock_region);
	old_alloc_size = PAGE_ALIGN(old_size);

	new_max = type->max << 1;
	new_size = new_max * sizeof(struct memblock_region);
	new_alloc_size = PAGE_ALIGN(new_size);

and use alloc_sizes for alloc/frees and sizes for everything else.

>  unsigned long __init free_low_memory_core_early(int nodeid)
>  {
>  	unsigned long count = 0;
> -	phys_addr_t start, end;
> +	phys_addr_t start, end, size;
>  	u64 i;
>  
> -	/* free reserved array temporarily so that it's treated as free area */
> -	memblock_free_reserved_regions();
> +	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
> +		count += __free_memory_core(start, end);
>  
> -	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
> -		unsigned long start_pfn = PFN_UP(start);
> -		unsigned long end_pfn = min_t(unsigned long,
> -					      PFN_DOWN(end), max_low_pfn);
> -		if (start_pfn < end_pfn) {
> -			__free_pages_memory(start_pfn, end_pfn);
> -			count += end_pfn - start_pfn;
> -		}
> -	}
> +	/* free range that is used for reserved array if we allocate it */
> +	size = get_allocated_memblock_reserved_regions_info(&start);
> +	if (size)
> +		count += __free_memory_core(start, start + size);

I'm afraid this is too early.  We don't want the region to be unmapped
yet.  This should only happen after all memblock usages are finished
which I don't think is the case yet.

Thanks.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-19 21:20             ` Tejun Heo
@ 2012-06-21 20:19               ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-21 20:19 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

Hello,

Sasha, can you please apply the following patch and verify that the
issue is gone?

Thanks.

diff --git a/mm/nobootmem.c b/mm/nobootmem.c
index d23415c..4aa5e5d 100644
--- a/mm/nobootmem.c
+++ b/mm/nobootmem.c
@@ -111,9 +111,6 @@ unsigned long __init free_low_memory_core_early(int nodeid)
 	phys_addr_t start, end;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
-
 	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
 		unsigned long start_pfn = PFN_UP(start);
 		unsigned long end_pfn = min_t(unsigned long,
@@ -124,8 +121,6 @@ unsigned long __init free_low_memory_core_early(int nodeid)
 		}
 	}
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

^ permalink raw reply related	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-21 20:19               ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-21 20:19 UTC (permalink / raw)
  To: Gavin Shan
  Cc: Sasha Levin, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

Hello,

Sasha, can you please apply the following patch and verify that the
issue is gone?

Thanks.

diff --git a/mm/nobootmem.c b/mm/nobootmem.c
index d23415c..4aa5e5d 100644
--- a/mm/nobootmem.c
+++ b/mm/nobootmem.c
@@ -111,9 +111,6 @@ unsigned long __init free_low_memory_core_early(int nodeid)
 	phys_addr_t start, end;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
-
 	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
 		unsigned long start_pfn = PFN_UP(start);
 		unsigned long end_pfn = min_t(unsigned long,
@@ -124,8 +121,6 @@ unsigned long __init free_low_memory_core_early(int nodeid)
 		}
 	}
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-21 20:17                   ` Tejun Heo
  (?)
@ 2012-06-22  1:47                   ` Yinghai Lu
  2012-06-22  1:58                     ` Yinghai Lu
  2012-06-22 18:51                       ` Tejun Heo
  -1 siblings, 2 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22  1:47 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 3421 bytes --]

On Thu, Jun 21, 2012 at 1:17 PM, Tejun Heo <tj@kernel.org> wrote:
> Hello, Yinghai.
>
> On Tue, Jun 19, 2012 at 07:57:45PM -0700, Yinghai Lu wrote:
>> if it is that case, that change could fix other problem problem too.
>> --- during the one free reserved.regions could double the array.
>
> Yeah, that sounds much more attractive to me too.  Some comments on
> the patch tho.
>
>>  /**
>>   * memblock_double_array - double the size of the memblock regions array
>>   * @type: memblock type of the regions array being doubled
>> @@ -216,7 +204,7 @@ static int __init_memblock memblock_doub
>>
>>       /* Calculate new doubled size */
>>       old_size = type->max * sizeof(struct memblock_region);
>> -     new_size = old_size << 1;
>> +     new_size = PAGE_ALIGN(old_size << 1);
>
> We definintely can use some comments explaining why we want page
> alignment.  It's kinda subtle.

yes.

>
> This is a bit confusing here because old_size is the proper size
> without padding while new_size is page aligned size with possible
> padding.  Maybe discerning {old|new}_alloc_size is clearer?  Also, I
> think adding @new_cnt variable which is calculated together would make
> the code easier to follow.  So, sth like,
>
>        /* explain why page aligning is necessary */
>        old_size = type->max * sizeof(struct memblock_region);
>        old_alloc_size = PAGE_ALIGN(old_size);
>
>        new_max = type->max << 1;
>        new_size = new_max * sizeof(struct memblock_region);
>        new_alloc_size = PAGE_ALIGN(new_size);
>
> and use alloc_sizes for alloc/frees and sizes for everything else.

ok, will add new_alloc_size, old_alloc_size.

>
>>  unsigned long __init free_low_memory_core_early(int nodeid)
>>  {
>>       unsigned long count = 0;
>> -     phys_addr_t start, end;
>> +     phys_addr_t start, end, size;
>>       u64 i;
>>
>> -     /* free reserved array temporarily so that it's treated as free area */
>> -     memblock_free_reserved_regions();
>> +     for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
>> +             count += __free_memory_core(start, end);
>>
>> -     for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
>> -             unsigned long start_pfn = PFN_UP(start);
>> -             unsigned long end_pfn = min_t(unsigned long,
>> -                                           PFN_DOWN(end), max_low_pfn);
>> -             if (start_pfn < end_pfn) {
>> -                     __free_pages_memory(start_pfn, end_pfn);
>> -                     count += end_pfn - start_pfn;
>> -             }
>> -     }
>> +     /* free range that is used for reserved array if we allocate it */
>> +     size = get_allocated_memblock_reserved_regions_info(&start);
>> +     if (size)
>> +             count += __free_memory_core(start, start + size);
>
> I'm afraid this is too early.  We don't want the region to be unmapped
> yet.  This should only happen after all memblock usages are finished
> which I don't think is the case yet.

No, it is not early. at that time memblock usage is done.

Also I tested one system with huge memory, duplicated the problem on
KVM that Sasha met.
my patch fixes the problem.

please check attached patch.

Also I add another patch to double check if there is any reference
with reserved.region.
so far there is no reference found.

Thanks

Yinghai

[-- Attachment #2: fix_free_memblock_reserve_v4_5.patch --]
[-- Type: application/octet-stream, Size: 6770 bytes --]

Subject: [PATCH] memblock: free allocated memblock_reserved_regions later

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

-v5: Use new_alloc_size, and old_alloc_size to simplify it according to tj.

Cc: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   51 +++++++++++++++++++++--------------------------
 mm/nobootmem.c           |   36 ++++++++++++++++++++-------------
 3 files changed, 46 insertions(+), 45 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
 						phys_addr_t new_area_size)
 {
 	struct memblock_region *new_array, *old_array;
+	phys_addr_t old_alloc_size, new_alloc_size;
 	phys_addr_t old_size, new_size, addr;
 	int use_slab = slab_is_available();
 	int *in_slab;
@@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
 	new_size = old_size << 1;
+	/*
+	 * We need to allocated new one align to PAGE_SIZE,
+	 *  so late could free them completely.
+	 */
+	old_alloc_size = PAGE_ALIGN(old_size);
+	new_alloc_size = PAGE_ALIGN(new_size);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,11 +240,11 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_alloc_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_alloc_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
@@ -279,13 +274,13 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), old_alloc_size);
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
 	 */
 	if (!use_slab)
-		BUG_ON(memblock_reserve(addr, new_size));
+		BUG_ON(memblock_reserve(addr, new_alloc_size));
 
 	/* Update slab flag */
 	*in_slab = use_slab;
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

[-- Attachment #3: memblock_reserved_clear_check.patch --]
[-- Type: application/octet-stream, Size: 3926 bytes --]

Subject: [PATCH] memblock: Add checking about illegal using memblock.reserved

After memblock is not used anymore, Clear the memblock reserved so we will not
use it wrongly.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/mm/init_32.c    |    3 +++
 arch/x86/mm/init_64.c    |    2 ++
 include/linux/memblock.h |    1 +
 mm/memblock.c            |   15 +++++++++++++++
 4 files changed, 21 insertions(+)

Index: linux-2.6/arch/x86/mm/init_32.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init_32.c
+++ linux-2.6/arch/x86/mm/init_32.c
@@ -759,6 +759,9 @@ void __init mem_init(void)
 		if (page_is_ram(tmp) && PageReserved(pfn_to_page(tmp)))
 			reservedpages++;
 
+	/* clear reserved to catch wrong usage */
+	memblock_clear_reserved();
+
 	codesize =  (unsigned long) &_etext - (unsigned long) &_text;
 	datasize =  (unsigned long) &_edata - (unsigned long) &_etext;
 	initsize =  (unsigned long) &__init_end - (unsigned long) &__init_begin;
Index: linux-2.6/arch/x86/mm/init_64.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init_64.c
+++ linux-2.6/arch/x86/mm/init_64.c
@@ -699,6 +699,8 @@ void __init mem_init(void)
 
 	absent_pages = absent_pages_in_range(0, max_pfn);
 	reservedpages = max_pfn - totalram_pages - absent_pages;
+	/* clear reserved to catch wrong usage */
+	memblock_clear_reserved();
 	after_bootmem = 1;
 
 	codesize =  (unsigned long) &_etext - (unsigned long) &_text;
Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -46,6 +46,7 @@ extern int memblock_debug;
 #define memblock_dbg(fmt, ...) \
 	if (memblock_debug) printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
 
+void memblock_clear_reserved(void);
 phys_addr_t memblock_find_in_range_node(phys_addr_t start, phys_addr_t end,
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -101,6 +101,8 @@ phys_addr_t __init_memblock memblock_fin
 	phys_addr_t this_start, this_end, cand;
 	u64 i;
 
+	WARN_ONCE(!memblock.reserved.max, "memblock.reserved was cleared already!");
+
 	/* pump up @end */
 	if (end == MEMBLOCK_ALLOC_ACCESSIBLE)
 		end = memblock.current_limit;
@@ -143,6 +145,14 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
+/*
+ * Clear memblock.reserved
+ */
+void __init_memblock memblock_clear_reserved(void)
+{
+	memset(&memblock.reserved, 0, sizeof(memblock.reserved));
+}
+
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -535,6 +545,8 @@ int __init_memblock memblock_remove(phys
 
 int __init_memblock memblock_free(phys_addr_t base, phys_addr_t size)
 {
+	WARN_ONCE(!memblock.reserved.max, "memblock.reserved was cleared already!");
+
 	memblock_dbg("   memblock_free: [%#016llx-%#016llx] %pF\n",
 		     (unsigned long long)base,
 		     (unsigned long long)base + size,
@@ -547,6 +559,7 @@ int __init_memblock memblock_reserve(phy
 {
 	struct memblock_type *_rgn = &memblock.reserved;
 
+	WARN_ONCE(!memblock.reserved.max, "memblock.reserved was cleared already!");
 	memblock_dbg("memblock_reserve: [%#016llx-%#016llx] %pF\n",
 		     (unsigned long long)base,
 		     (unsigned long long)base + size,
@@ -587,6 +600,8 @@ void __init_memblock __next_free_mem_ran
 	int mi = *idx & 0xffffffff;
 	int ri = *idx >> 32;
 
+	WARN_ONCE(!rsv->max, "memblock.reserved was cleared already!");
+
 	for ( ; mi < mem->cnt; mi++) {
 		struct memblock_region *m = &mem->regions[mi];
 		phys_addr_t m_start = m->base;

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22  1:47                   ` Yinghai Lu
@ 2012-06-22  1:58                     ` Yinghai Lu
  2012-06-22 18:51                       ` Tejun Heo
  1 sibling, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22  1:58 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1513 bytes --]

On Thu, Jun 21, 2012 at 6:47 PM, Yinghai Lu <yinghai@kernel.org> wrote:
>> I'm afraid this is too early.  We don't want the region to be unmapped
>> yet.  This should only happen after all memblock usages are finished
>> which I don't think is the case yet.
>
> No, it is not early. at that time memblock usage is done.
>
> Also I tested one system with huge memory, duplicated the problem on
> KVM that Sasha met.
> my patch fixes the problem.
>
> please check attached patch.
>
> Also I add another patch to double check if there is any reference
> with reserved.region.
> so far there is no reference found.

please check attached boot log.

free list before patch:
[    0.000000]        [0x1017a00000-0x1017ebdfff]
[    0.000000]        [0x101f7fb000-0x101fbcffff]
[    0.000000]        [0x101fbd6000-0x101fe5cfff]
[    0.000000]        [0x101fec6000-0x101fec8fff]
[    0.000000] BUG: unable to handle kernel paging request at ffff88101fec7748
[    0.000000] IP: [<ffffffff81d989c8>] __next_free_mem_range+0xdc/0x181

free list after patch:
[    0.000000]        [0x1017a00000-0x1017ebdfff]
[    0.000000]        [0x101f7fb000-0x101fbcffff]
[    0.000000]        [0x101fbd6000-0x101fe5cfff]
[    0.000000]        [0x101fec8000-0x101fec8fff]
[    0.000000]        [0x101fecb000-0x101fecafff]
[    0.000000]        [0x101fecd000-0x101feccfff]
[    0.000000]        [0x101fec5000-0x101fec7fff]

some kind of moving _pa(reserved.region) free to the last.

Thanks

Yinghai

[-- Attachment #2: boot_log_crash.txt --]
[-- Type: text/plain, Size: 82129 bytes --]

Probing EDD (edd=off to disable)... ok

Decompressing Linux... xz... Parsing ELF... done.
Booting the kernel.
[    0.000000] bootconsole [uart0] enabled
[    0.000000]    real_mode_data :      phys 0000000000014530
[    0.000000]    real_mode_data :      virt ffff880000014530
[    0.000000]       boot_params : init virt ffffffff82a8e750
[    0.000000]       boot_params :      phys 0000000002a8e750
[    0.000000]       boot_params :      virt ffff880002a8e750
[    0.000000] boot_command_line : init virt ffffffff8297d000
[    0.000000] boot_command_line :      phys 000000000297d000
[    0.000000] boot_command_line :      virt ffff88000297d000
[    0.000000] memblock_reserve: [0x01000000-0x0382ffff] TEXT DATA BSS
[    0.000000] memblock_reserve: [0x7d992000-0x7fffefff] RAMDISK
[    0.000000] memblock_reserve: [0x0009f400-0x000fffff] * BIOS reserved
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.5.0-rc3-yh-02558-g501d7f9-dirty (yhlu@linux-siqj.site) (gcc version 4.6.2 (SUSE Linux) ) #382 SMP Thu Jun 21 18:10:25 PDT 2012
[    0.000000] Command line: BOOT_IMAGE=linux ignore_loglevel initcall_debug acpi.debug_layer=0xffff0000 pci=routeirq apic=debug numa=off ramdisk_size=262144 root=/dev/ram0 rw ip=dhcp console=uart8250,io,0x3f8,115200 initrd=initrd.img
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] Physical RAM map:
[    0.000000] raw: [mem 0x0000000000000000-0x000000000009f3ff] usable
[    0.000000] raw: [mem 0x000000000009f400-0x000000000009ffff] reserved
[    0.000000] raw: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] raw: [mem 0x0000000000100000-0x00000000dfff3fff] usable
[    0.000000] raw: [mem 0x00000000dfff4000-0x00000000dfffffff] reserved
[    0.000000] raw: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[    0.000000] raw: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[    0.000000] raw: [mem 0x0000000100000000-0x000000101fffffff] usable
[    0.000000] e820: BIOS-provided physical RAM map (sanitized by setup):
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009f3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009f400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000dfff3fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000dfff4000-0x00000000dfffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000101fffffff] usable
[    0.000000] debug: ignoring loglevel setting.
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] e820: update [mem 0x0009f000-0x0009f3ff] usable ==> reserved
[    0.000000] aligned physical RAM map:
[    0.000000] aligned: [mem 0x0000000000000000-0x000000000009efff] usable
[    0.000000] aligned: [mem 0x000000000009f000-0x000000000009ffff] reserved
[    0.000000] aligned: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] aligned: [mem 0x0000000000100000-0x00000000dfff3fff] usable
[    0.000000] aligned: [mem 0x00000000dfff4000-0x00000000dfffffff] reserved
[    0.000000] aligned: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[    0.000000] aligned: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[    0.000000] aligned: [mem 0x0000000100000000-0x000000101fffffff] usable
[    0.000000] DMI 2.4 present.
[    0.000000] DMI: Bochs Bochs, BIOS Bochs 01/01/2007
[    0.000000] e820: update [mem 0x00000000-0x0000ffff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] No AGP bridge found
[    0.000000] e820: last_pfn = 0x1020000 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: write-back
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 00E0000000 mask FFE0000000 uncachable
[    0.000000]   1 disabled
[    0.000000]   2 disabled
[    0.000000]   3 disabled
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] PAT not supported by CPU.
[    0.000000] e820: last_pfn = 0xdfff4 max_arch_pfn = 0x400000000
[    0.000000] Scan for SMP in [mem 0x00000000-0x000003ff]
[    0.000000] Scan for SMP in [mem 0x0009fc00-0x0009ffff]
[    0.000000] Scan for SMP in [mem 0x000f0000-0x000fffff]
[    0.000000] found SMP MP-table at [mem 0x000fd700-0x000fd70f] mapped at [ffff8800000fd700]
[    0.000000] memblock_reserve: [0x000fd700-0x000fd70f] * MP-table mpf
[    0.000000]   mpc: f1300-f27a4
[    0.000000] memblock_reserve: [0x000f1300-0x000f27a3] * MP-table mpc
[    0.000000] memblock_reserve: [0x03830000-0x03830048] BRK
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff83000 reserved size = 0x4efdc49
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]     [0x00010000-0x0009efff], 0x8f000 bytes
[    0.000000]  memory[0x1]     [0x00100000-0xdfff3fff], 0xdfef4000 bytes
[    0.000000]  memory[0x2]     [0x100000000-0x101fffffff], 0xf20000000 bytes
[    0.000000]  reserved.cnt  = 0x3
[    0.000000]  reserved[0x0]   [0x0009f400-0x000fffff], 0x60c00 bytes
[    0.000000]  reserved[0x1]   [0x01000000-0x03830048], 0x2830049 bytes
[    0.000000]  reserved[0x2]   [0x7d992000-0x7fffefff], 0x266d000 bytes
[    0.000000] initial memory mapped: [mem 0x00000000-0x1fffffff]
[    0.000000] memblock_reserve: [0x00099000-0x0009efff] TRAMPOLINE
[    0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[    0.000000] init_memory_mapping: [mem 0x00000000-0xdfff3fff]
[    0.000000]  [mem 0x00000000-0xdfff3fff] page 4k
[    0.000000] kernel direct mapping tables up to 0xdfff3fff @ [mem 0xdf8ef000-0xdfff3fff]
[    0.000000] memblock_reserve: [0xdf8ef000-0xdfff1fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x100000000-0x101fffffff]
[    0.000000]  [mem 0x100000000-0x101fffffff] page 4k
[    0.000000] kernel direct mapping tables up to 0x101fffffff @ [mem 0x1017ebe000-0x101fffffff]
[    0.000000] memblock_reserve: [0x1017ebe000-0x101f7fafff] PGTABLE
[    0.000000] RAMDISK: [mem 0x7d992000-0x7fffefff]
[    0.000000] ACPI: RSDP 00000000000fd6b0 00014 (v00 BOCHS )
[    0.000000] ACPI: RSDT 00000000dfff41a0 00034 (v01 BOCHS  BXPCRSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: FACP 00000000dfffd140 00074 (v01 BOCHS  BXPCFACP 00000001 BXPC 00000001)
[    0.000000] ACPI: DSDT 00000000dfffab70 02589 (v01   BXPC   BXDSDT 00000001 INTL 20100528)
[    0.000000] ACPI: FACS 00000000dfffd100 00040
[    0.000000] ACPI: SSDT 00000000dfff4af0 0607B (v01 BOCHS  BXPCSSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: APIC 00000000dfff4220 0085A (v01 BOCHS  BXPCAPIC 00000001 BXPC 00000001)
[    0.000000] ACPI: HPET 00000000dfff41e0 00038 (v01 BOCHS  BXPCHPET 00000001 BXPC 00000001)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] mapped APIC to ffffffffff5fb000 (        fee00000)
[    0.000000] NUMA turned off
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000101fffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x101fffffff]
[    0.000000] memblock_reserve: [0x101ffd9000-0x101fffffff] 
[    0.000000]   NODE_DATA [mem 0x101ffd9000-0x101fffffff]
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff83000 reserved size = 0xcf6ac49
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]     [0x00010000-0x0009efff], 0x8f000 bytes on node 0
[    0.000000]  memory[0x1]     [0x00100000-0xdfff3fff], 0xdfef4000 bytes on node 0
[    0.000000]  memory[0x2]     [0x100000000-0x101fffffff], 0xf20000000 bytes on node 0
[    0.000000]  reserved.cnt  = 0x7
[    0.000000]  reserved[0x0]   [0x00099000-0x0009efff], 0x6000 bytes
[    0.000000]  reserved[0x1]   [0x0009f400-0x000fffff], 0x60c00 bytes
[    0.000000]  reserved[0x2]   [0x01000000-0x03830048], 0x2830049 bytes
[    0.000000]  reserved[0x3]   [0x7d992000-0x7fffefff], 0x266d000 bytes
[    0.000000]  reserved[0x4]   [0xdf8ef000-0xdfff1fff], 0x703000 bytes
[    0.000000]  reserved[0x5]   [0x1017ebe000-0x101f7fafff], 0x793d000 bytes
[    0.000000]  reserved[0x6]   [0x101ffd9000-0x101fffffff], 0x27000 bytes
[    0.000000] memblock_reserve: [0x101ffd8000-0x101ffd8fff] sparse section
[    0.000000] memblock_reserve: [0x101ffd7000-0x101ffd7fff] sparse section
[    0.000000] memblock_reserve: [0x101ffd6000-0x101ffd6fff] sparse section
[    0.000000] memblock_reserve: [0x101fbd6000-0x101ffd5fff] usemap_map
[    0.000000] memblock_reserve: [0x101fbd3000-0x101fbd5fff] usemap section
[    0.000000] memblock_reserve: [0x1017abe000-0x1017ebdfff] map_map
[    0.000000] memblock_reserve: [0xfd7a00000-0x10179fffff] vmemmap buf
[    0.000000] memblock_reserve: [0x101fbd2000-0x101fbd2fff] vmemmap block
[    0.000000]  [ffffea0000000000-ffffea7fffffffff] PGD -> ffff88101fbd2000 on node 0
[    0.000000] memblock_reserve: [0x101fbd1000-0x101fbd1fff] vmemmap block
[    0.000000]  [ffffea0000000000-ffffea003fffffff] PUD -> ffff88101fbd1000 on node 0
[    0.000000] memblock_reserve: [0x101fbd0000-0x101fbd0fff] vmemmap block
[    0.000000]  [ffffea0040000000-ffffea007fffffff] PUD -> ffff88101fbd0000 on node 0
[    0.000000]    memblock_free: [0x1017a00000-0x10179fffff]
[    0.000000]  [ffffea0000000000-ffffea00407fffff] PMD -> [ffff880fd7a00000-ffff8810179fffff] on node 0
[    0.000000]    memblock_free: [0x1017abe000-0x1017ebdfff]
[    0.000000]    memblock_free: [0x101fbd6000-0x101ffd5fff]Zone ranges:
[    0.000000]   DMA      [mem 0x00010000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x101fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00010000-0x0009efff]
[    0.000000]   node   0: [mem 0x00100000-0xdfff3fff]
[    0.000000]   node   0: [mem 0x100000000-0x101fffffff]
[    0.000000] start - node_states[2]: 
[    0.000000] On node 0 totalpages: 16777091
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 6 pages reserved
[    0.000000]   DMA zone: 3913 pages, LIFO batch:0
[    0.000000] memblock_reserve: [0x101ff7e000-0x101ffd5fff] pgdat
[    0.000000]   DMA32 zone: 16320 pages used for memmap
[    0.000000]   DMA32 zone: 897076 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x101ff26000-0x101ff7dfff] pgdat
[    0.000000]   Normal zone: 247808 pages used for memmap
[    0.000000]   Normal zone: 15611904 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x101fece000-0x101ff25fff] pgdat
[    0.000000] after - node_states[2]: 0
[    0.000000] memblock_reserve: [0x101fecd000-0x101fecdfff] pgtable
[    0.000000] ACPI: PM-Timer IO Port: 0xb008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] mapped APIC to ffffffffff5fb000 (        fee00000)
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x05] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x06] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x07] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x08] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x09] lapic_id[0x09] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x0a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x0b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x0c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x0d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x0e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x0f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x10] lapic_id[0x10] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x11] lapic_id[0x11] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x12] lapic_id[0x12] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x13] lapic_id[0x13] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x14] lapic_id[0x14] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x15] lapic_id[0x15] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x16] lapic_id[0x16] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x17] lapic_id[0x17] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x18] lapic_id[0x18] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x19] lapic_id[0x19] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x1a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x1b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x1c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x1d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x1e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x1f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x20] lapic_id[0x20] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x21] lapic_id[0x21] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x22] lapic_id[0x22] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x23] lapic_id[0x23] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x24] lapic_id[0x24] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x25] lapic_id[0x25] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x26] lapic_id[0x26] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x27] lapic_id[0x27] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x28] lapic_id[0x28] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x29] lapic_id[0x29] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2a] lapic_id[0x2a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2b] lapic_id[0x2b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2c] lapic_id[0x2c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2d] lapic_id[0x2d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2e] lapic_id[0x2e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2f] lapic_id[0x2f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x30] lapic_id[0x30] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x31] lapic_id[0x31] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x32] lapic_id[0x32] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x33] lapic_id[0x33] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x34] lapic_id[0x34] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x35] lapic_id[0x35] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x36] lapic_id[0x36] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x37] lapic_id[0x37] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x38] lapic_id[0x38] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x39] lapic_id[0x39] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3a] lapic_id[0x3a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3b] lapic_id[0x3b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3c] lapic_id[0x3c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3d] lapic_id[0x3d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3e] lapic_id[0x3e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3f] lapic_id[0x3f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x40] lapic_id[0x40] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x41] lapic_id[0x41] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x42] lapic_id[0x42] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x43] lapic_id[0x43] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x44] lapic_id[0x44] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x45] lapic_id[0x45] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x46] lapic_id[0x46] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x47] lapic_id[0x47] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x48] lapic_id[0x48] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x49] lapic_id[0x49] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4a] lapic_id[0x4a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4b] lapic_id[0x4b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4c] lapic_id[0x4c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4d] lapic_id[0x4d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4e] lapic_id[0x4e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4f] lapic_id[0x4f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x50] lapic_id[0x50] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x51] lapic_id[0x51] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x52] lapic_id[0x52] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x53] lapic_id[0x53] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x54] lapic_id[0x54] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x55] lapic_id[0x55] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x56] lapic_id[0x56] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x57] lapic_id[0x57] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x58] lapic_id[0x58] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x59] lapic_id[0x59] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5a] lapic_id[0x5a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5b] lapic_id[0x5b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5c] lapic_id[0x5c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5d] lapic_id[0x5d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5e] lapic_id[0x5e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5f] lapic_id[0x5f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x60] lapic_id[0x60] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x61] lapic_id[0x61] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x62] lapic_id[0x62] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x63] lapic_id[0x63] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x64] lapic_id[0x64] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x65] lapic_id[0x65] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x66] lapic_id[0x66] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x67] lapic_id[0x67] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x68] lapic_id[0x68] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x69] lapic_id[0x69] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6a] lapic_id[0x6a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6b] lapic_id[0x6b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6c] lapic_id[0x6c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6d] lapic_id[0x6d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6e] lapic_id[0x6e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6f] lapic_id[0x6f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x70] lapic_id[0x70] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x71] lapic_id[0x71] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x72] lapic_id[0x72] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x73] lapic_id[0x73] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x74] lapic_id[0x74] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x75] lapic_id[0x75] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x76] lapic_id[0x76] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x77] lapic_id[0x77] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x78] lapic_id[0x78] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x79] lapic_id[0x79] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7a] lapic_id[0x7a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7b] lapic_id[0x7b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7c] lapic_id[0x7c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7d] lapic_id[0x7d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7e] lapic_id[0x7e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7f] lapic_id[0x7f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x80] lapic_id[0x80] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x81] lapic_id[0x81] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x82] lapic_id[0x82] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x83] lapic_id[0x83] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x84] lapic_id[0x84] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x85] lapic_id[0x85] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x86] lapic_id[0x86] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x87] lapic_id[0x87] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x88] lapic_id[0x88] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x89] lapic_id[0x89] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8a] lapic_id[0x8a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8b] lapic_id[0x8b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8c] lapic_id[0x8c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8d] lapic_id[0x8d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8e] lapic_id[0x8e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8f] lapic_id[0x8f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x90] lapic_id[0x90] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x91] lapic_id[0x91] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x92] lapic_id[0x92] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x93] lapic_id[0x93] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x94] lapic_id[0x94] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x95] lapic_id[0x95] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x96] lapic_id[0x96] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x97] lapic_id[0x97] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x98] lapic_id[0x98] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x99] lapic_id[0x99] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9a] lapic_id[0x9a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9b] lapic_id[0x9b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9c] lapic_id[0x9c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9d] lapic_id[0x9d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9e] lapic_id[0x9e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9f] lapic_id[0x9f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa0] lapic_id[0xa0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa1] lapic_id[0xa1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa2] lapic_id[0xa2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa3] lapic_id[0xa3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa4] lapic_id[0xa4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa5] lapic_id[0xa5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa6] lapic_id[0xa6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa7] lapic_id[0xa7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa8] lapic_id[0xa8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa9] lapic_id[0xa9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xaa] lapic_id[0xaa] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xab] lapic_id[0xab] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xac] lapic_id[0xac] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xad] lapic_id[0xad] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xae] lapic_id[0xae] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xaf] lapic_id[0xaf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb0] lapic_id[0xb0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb1] lapic_id[0xb1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb2] lapic_id[0xb2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb3] lapic_id[0xb3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb4] lapic_id[0xb4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb5] lapic_id[0xb5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb6] lapic_id[0xb6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb7] lapic_id[0xb7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb8] lapic_id[0xb8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb9] lapic_id[0xb9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xba] lapic_id[0xba] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbb] lapic_id[0xbb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbc] lapic_id[0xbc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbd] lapic_id[0xbd] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbe] lapic_id[0xbe] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbf] lapic_id[0xbf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc0] lapic_id[0xc0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc1] lapic_id[0xc1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc2] lapic_id[0xc2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc3] lapic_id[0xc3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc4] lapic_id[0xc4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc5] lapic_id[0xc5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc6] lapic_id[0xc6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc7] lapic_id[0xc7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc8] lapic_id[0xc8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc9] lapic_id[0xc9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xca] lapic_id[0xca] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcb] lapic_id[0xcb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcc] lapic_id[0xcc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcd] lapic_id[0xcd] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xce] lapic_id[0xce] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcf] lapic_id[0xcf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd0] lapic_id[0xd0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd1] lapic_id[0xd1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd2] lapic_id[0xd2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd3] lapic_id[0xd3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd4] lapic_id[0xd4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd5] lapic_id[0xd5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd6] lapic_id[0xd6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd7] lapic_id[0xd7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd8] lapic_id[0xd8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd9] lapic_id[0xd9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xda] lapic_id[0xda] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdb] lapic_id[0xdb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdc] lapic_id[0xdc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdd] lapic_id[0xdd] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xde] lapic_id[0xde] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdf] lapic_id[0xdf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe0] lapic_id[0xe0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe1] lapic_id[0xe1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe2] lapic_id[0xe2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe3] lapic_id[0xe3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe4] lapic_id[0xe4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe5] lapic_id[0xe5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe6] lapic_id[0xe6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe7] lapic_id[0xe7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe8] lapic_id[0xe8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe9] lapic_id[0xe9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xea] lapic_id[0xea] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xeb] lapic_id[0xeb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xec] lapic_id[0xec] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xed] lapic_id[0xed] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xee] lapic_id[0xee] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xef] lapic_id[0xef] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf0] lapic_id[0xf0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf1] lapic_id[0xf1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf2] lapic_id[0xf2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf3] lapic_id[0xf3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf4] lapic_id[0xf4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf5] lapic_id[0xf5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf6] lapic_id[0xf6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf7] lapic_id[0xf7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf8] lapic_id[0xf8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf9] lapic_id[0xf9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfa] lapic_id[0xfa] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfb] lapic_id[0xfb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfc] lapic_id[0xfc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfd] lapic_id[0xfd] enabled)
[    0.000000] ACPI: IOAPIC (id[0xfe] address[0xfec00000] gsi_base[0])
[    0.000000] mapped IOAPIC to ffffffffff5fa000 (fec00000)
[    0.000000] IOAPIC[0]: apic_id 254, version 17, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 00, APIC ID fe, APIC INT 02
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 05, APIC ID fe, APIC INT 05
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 09, APIC ID fe, APIC INT 09
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 0a, APIC ID fe, APIC INT 0a
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 0b, APIC ID fe, APIC INT 0b
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 01, APIC ID fe, APIC INT 01
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 03, APIC ID fe, APIC INT 03
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 04, APIC ID fe, APIC INT 04
[    0.000000] ACPI: IRQ5 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 06, APIC ID fe, APIC INT 06
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 07, APIC ID fe, APIC INT 07
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 08, APIC ID fe, APIC INT 08
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] ACPI: IRQ10 used by override.
[    0.000000] ACPI: IRQ11 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0c, APIC ID fe, APIC INT 0c
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0d, APIC ID fe, APIC INT 0d
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0e, APIC ID fe, APIC INT 0e
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0f, APIC ID fe, APIC INT 0f
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] memblock_reserve: [0x101feccf80-0x101feccfc0] hpet res
[    0.000000] smpboot: Allowing 254 CPUs, 0 hotplug CPUs
[    0.000000] init_cpu_to_node:
[    0.000000] cpu 0 -> apicid 0x0 -> node 0
[    0.000000] cpu 1 -> apicid 0x1 -> node 0
[    0.000000] cpu 2 -> apicid 0x2 -> node 0
[    0.000000] cpu 3 -> apicid 0x3 -> node 0
[    0.000000] cpu 4 -> apicid 0x4 -> node 0
[    0.000000] cpu 5 -> apicid 0x5 -> node 0
[    0.000000] cpu 6 -> apicid 0x6 -> node 0
[    0.000000] cpu 7 -> apicid 0x7 -> node 0
[    0.000000] cpu 8 -> apicid 0x8 -> node 0
[    0.000000] cpu 9 -> apicid 0x9 -> node 0
[    0.000000] cpu 10 -> apicid 0xa -> node 0
[    0.000000] cpu 11 -> apicid 0xb -> node 0
[    0.000000] cpu 12 -> apicid 0xc -> node 0
[    0.000000] cpu 13 -> apicid 0xd -> node 0
[    0.000000] cpu 14 -> apicid 0xe -> node 0
[    0.000000] cpu 15 -> apicid 0xf -> node 0
[    0.000000] cpu 16 -> apicid 0x10 -> node 0
[    0.000000] cpu 17 -> apicid 0x11 -> node 0
[    0.000000] cpu 18 -> apicid 0x12 -> node 0
[    0.000000] cpu 19 -> apicid 0x13 -> node 0
[    0.000000] cpu 20 -> apicid 0x14 -> node 0
[    0.000000] cpu 21 -> apicid 0x15 -> node 0
[    0.000000] cpu 22 -> apicid 0x16 -> node 0
[    0.000000] cpu 23 -> apicid 0x17 -> node 0
[    0.000000] cpu 24 -> apicid 0x18 -> node 0
[    0.000000] cpu 25 -> apicid 0x19 -> node 0
[    0.000000] cpu 26 -> apicid 0x1a -> node 0
[    0.000000] cpu 27 -> apicid 0x1b -> node 0
[    0.000000] cpu 28 -> apicid 0x1c -> node 0
[    0.000000] cpu 29 -> apicid 0x1d -> node 0
[    0.000000] cpu 30 -> apicid 0x1e -> node 0
[    0.000000] cpu 31 -> apicid 0x1f -> node 0
[    0.000000] cpu 32 -> apicid 0x20 -> node 0
[    0.000000] cpu 33 -> apicid 0x21 -> node 0
[    0.000000] cpu 34 -> apicid 0x22 -> node 0
[    0.000000] cpu 35 -> apicid 0x23 -> node 0
[    0.000000] cpu 36 -> apicid 0x24 -> node 0
[    0.000000] cpu 37 -> apicid 0x25 -> node 0
[    0.000000] cpu 38 -> apicid 0x26 -> node 0
[    0.000000] cpu 39 -> apicid 0x27 -> node 0
[    0.000000] cpu 40 -> apicid 0x28 -> node 0
[    0.000000] cpu 41 -> apicid 0x29 -> node 0
[    0.000000] cpu 42 -> apicid 0x2a -> node 0
[    0.000000] cpu 43 -> apicid 0x2b -> node 0
[    0.000000] cpu 44 -> apicid 0x2c -> node 0
[    0.000000] cpu 45 -> apicid 0x2d -> node 0
[    0.000000] cpu 46 -> apicid 0x2e -> node 0
[    0.000000] cpu 47 -> apicid 0x2f -> node 0
[    0.000000] cpu 48 -> apicid 0x30 -> node 0
[    0.000000] cpu 49 -> apicid 0x31 -> node 0
[    0.000000] cpu 50 -> apicid 0x32 -> node 0
[    0.000000] cpu 51 -> apicid 0x33 -> node 0
[    0.000000] cpu 52 -> apicid 0x34 -> node 0
[    0.000000] cpu 53 -> apicid 0x35 -> node 0
[    0.000000] cpu 54 -> apicid 0x36 -> node 0
[    0.000000] cpu 55 -> apicid 0x37 -> node 0
[    0.000000] cpu 56 -> apicid 0x38 -> node 0
[    0.000000] cpu 57 -> apicid 0x39 -> node 0
[    0.000000] cpu 58 -> apicid 0x3a -> node 0
[    0.000000] cpu 59 -> apicid 0x3b -> node 0
[    0.000000] cpu 60 -> apicid 0x3c -> node 0
[    0.000000] cpu 61 -> apicid 0x3d -> node 0
[    0.000000] cpu 62 -> apicid 0x3e -> node 0
[    0.000000] cpu 63 -> apicid 0x3f -> node 0
[    0.000000] cpu 64 -> apicid 0x40 -> node 0
[    0.000000] cpu 65 -> apicid 0x41 -> node 0
[    0.000000] cpu 66 -> apicid 0x42 -> node 0
[    0.000000] cpu 67 -> apicid 0x43 -> node 0
[    0.000000] cpu 68 -> apicid 0x44 -> node 0
[    0.000000] cpu 69 -> apicid 0x45 -> node 0
[    0.000000] cpu 70 -> apicid 0x46 -> node 0
[    0.000000] cpu 71 -> apicid 0x47 -> node 0
[    0.000000] cpu 72 -> apicid 0x48 -> node 0
[    0.000000] cpu 73 -> apicid 0x49 -> node 0
[    0.000000] cpu 74 -> apicid 0x4a -> node 0
[    0.000000] cpu 75 -> apicid 0x4b -> node 0
[    0.000000] cpu 76 -> apicid 0x4c -> node 0
[    0.000000] cpu 77 -> apicid 0x4d -> node 0
[    0.000000] cpu 78 -> apicid 0x4e -> node 0
[    0.000000] cpu 79 -> apicid 0x4f -> node 0
[    0.000000] cpu 80 -> apicid 0x50 -> node 0
[    0.000000] cpu 81 -> apicid 0x51 -> node 0
[    0.000000] cpu 82 -> apicid 0x52 -> node 0
[    0.000000] cpu 83 -> apicid 0x53 -> node 0
[    0.000000] cpu 84 -> apicid 0x54 -> node 0
[    0.000000] cpu 85 -> apicid 0x55 -> node 0
[    0.000000] cpu 86 -> apicid 0x56 -> node 0
[    0.000000] cpu 87 -> apicid 0x57 -> node 0
[    0.000000] cpu 88 -> apicid 0x58 -> node 0
[    0.000000] cpu 89 -> apicid 0x59 -> node 0
[    0.000000] cpu 90 -> apicid 0x5a -> node 0
[    0.000000] cpu 91 -> apicid 0x5b -> node 0
[    0.000000] cpu 92 -> apicid 0x5c -> node 0
[    0.000000] cpu 93 -> apicid 0x5d -> node 0
[    0.000000] cpu 94 -> apicid 0x5e -> node 0
[    0.000000] cpu 95 -> apicid 0x5f -> node 0
[    0.000000] cpu 96 -> apicid 0x60 -> node 0
[    0.000000] cpu 97 -> apicid 0x61 -> node 0
[    0.000000] cpu 98 -> apicid 0x62 -> node 0
[    0.000000] cpu 99 -> apicid 0x63 -> node 0
[    0.000000] cpu 100 -> apicid 0x64 -> node 0
[    0.000000] cpu 101 -> apicid 0x65 -> node 0
[    0.000000] cpu 102 -> apicid 0x66 -> node 0
[    0.000000] cpu 103 -> apicid 0x67 -> node 0
[    0.000000] cpu 104 -> apicid 0x68 -> node 0
[    0.000000] cpu 105 -> apicid 0x69 -> node 0
[    0.000000] cpu 106 -> apicid 0x6a -> node 0
[    0.000000] cpu 107 -> apicid 0x6b -> node 0
[    0.000000] cpu 108 -> apicid 0x6c -> node 0
[    0.000000] cpu 109 -> apicid 0x6d -> node 0
[    0.000000] cpu 110 -> apicid 0x6e -> node 0
[    0.000000] cpu 111 -> apicid 0x6f -> node 0
[    0.000000] cpu 112 -> apicid 0x70 -> node 0
[    0.000000] cpu 113 -> apicid 0x71 -> node 0
[    0.000000] cpu 114 -> apicid 0x72 -> node 0
[    0.000000] cpu 115 -> apicid 0x73 -> node 0
[    0.000000] cpu 116 -> apicid 0x74 -> node 0
[    0.000000] cpu 117 -> apicid 0x75 -> node 0
[    0.000000] cpu 118 -> apicid 0x76 -> node 0
[    0.000000] cpu 119 -> apicid 0x77 -> node 0
[    0.000000] cpu 120 -> apicid 0x78 -> node 0
[    0.000000] cpu 121 -> apicid 0x79 -> node 0
[    0.000000] cpu 122 -> apicid 0x7a -> node 0
[    0.000000] cpu 123 -> apicid 0x7b -> node 0
[    0.000000] cpu 124 -> apicid 0x7c -> node 0
[    0.000000] cpu 125 -> apicid 0x7d -> node 0
[    0.000000] cpu 126 -> apicid 0x7e -> node 0
[    0.000000] cpu 127 -> apicid 0x7f -> node 0
[    0.000000] cpu 128 -> apicid 0x80 -> node 0
[    0.000000] cpu 129 -> apicid 0x81 -> node 0
[    0.000000] cpu 130 -> apicid 0x82 -> node 0
[    0.000000] cpu 131 -> apicid 0x83 -> node 0
[    0.000000] cpu 132 -> apicid 0x84 -> node 0
[    0.000000] cpu 133 -> apicid 0x85 -> node 0
[    0.000000] cpu 134 -> apicid 0x86 -> node 0
[    0.000000] cpu 135 -> apicid 0x87 -> node 0
[    0.000000] cpu 136 -> apicid 0x88 -> node 0
[    0.000000] cpu 137 -> apicid 0x89 -> node 0
[    0.000000] cpu 138 -> apicid 0x8a -> node 0
[    0.000000] cpu 139 -> apicid 0x8b -> node 0
[    0.000000] cpu 140 -> apicid 0x8c -> node 0
[    0.000000] cpu 141 -> apicid 0x8d -> node 0
[    0.000000] cpu 142 -> apicid 0x8e -> node 0
[    0.000000] cpu 143 -> apicid 0x8f -> node 0
[    0.000000] cpu 144 -> apicid 0x90 -> node 0
[    0.000000] cpu 145 -> apicid 0x91 -> node 0
[    0.000000] cpu 146 -> apicid 0x92 -> node 0
[    0.000000] cpu 147 -> apicid 0x93 -> node 0
[    0.000000] cpu 148 -> apicid 0x94 -> node 0
[    0.000000] cpu 149 -> apicid 0x95 -> node 0
[    0.000000] cpu 150 -> apicid 0x96 -> node 0
[    0.000000] cpu 151 -> apicid 0x97 -> node 0
[    0.000000] cpu 152 -> apicid 0x98 -> node 0
[    0.000000] cpu 153 -> apicid 0x99 -> node 0
[    0.000000] cpu 154 -> apicid 0x9a -> node 0
[    0.000000] cpu 155 -> apicid 0x9b -> node 0
[    0.000000] cpu 156 -> apicid 0x9c -> node 0
[    0.000000] cpu 157 -> apicid 0x9d -> node 0
[    0.000000] cpu 158 -> apicid 0x9e -> node 0
[    0.000000] cpu 159 -> apicid 0x9f -> node 0
[    0.000000] cpu 160 -> apicid 0xa0 -> node 0
[    0.000000] cpu 161 -> apicid 0xa1 -> node 0
[    0.000000] cpu 162 -> apicid 0xa2 -> node 0
[    0.000000] cpu 163 -> apicid 0xa3 -> node 0
[    0.000000] cpu 164 -> apicid 0xa4 -> node 0
[    0.000000] cpu 165 -> apicid 0xa5 -> node 0
[    0.000000] cpu 166 -> apicid 0xa6 -> node 0
[    0.000000] cpu 167 -> apicid 0xa7 -> node 0
[    0.000000] cpu 168 -> apicid 0xa8 -> node 0
[    0.000000] cpu 169 -> apicid 0xa9 -> node 0
[    0.000000] cpu 170 -> apicid 0xaa -> node 0
[    0.000000] cpu 171 -> apicid 0xab -> node 0
[    0.000000] cpu 172 -> apicid 0xac -> node 0
[    0.000000] cpu 173 -> apicid 0xad -> node 0
[    0.000000] cpu 174 -> apicid 0xae -> node 0
[    0.000000] cpu 175 -> apicid 0xaf -> node 0
[    0.000000] cpu 176 -> apicid 0xb0 -> node 0
[    0.000000] cpu 177 -> apicid 0xb1 -> node 0
[    0.000000] cpu 178 -> apicid 0xb2 -> node 0
[    0.000000] cpu 179 -> apicid 0xb3 -> node 0
[    0.000000] cpu 180 -> apicid 0xb4 -> node 0
[    0.000000] cpu 181 -> apicid 0xb5 -> node 0
[    0.000000] cpu 182 -> apicid 0xb6 -> node 0
[    0.000000] cpu 183 -> apicid 0xb7 -> node 0
[    0.000000] cpu 184 -> apicid 0xb8 -> node 0
[    0.000000] cpu 185 -> apicid 0xb9 -> node 0
[    0.000000] cpu 186 -> apicid 0xba -> node 0
[    0.000000] cpu 187 -> apicid 0xbb -> node 0
[    0.000000] cpu 188 -> apicid 0xbc -> node 0
[    0.000000] cpu 189 -> apicid 0xbd -> node 0
[    0.000000] cpu 190 -> apicid 0xbe -> node 0
[    0.000000] cpu 191 -> apicid 0xbf -> node 0
[    0.000000] cpu 192 -> apicid 0xc0 -> node 0
[    0.000000] cpu 193 -> apicid 0xc1 -> node 0
[    0.000000] cpu 194 -> apicid 0xc2 -> node 0
[    0.000000] cpu 195 -> apicid 0xc3 -> node 0
[    0.000000] cpu 196 -> apicid 0xc4 -> node 0
[    0.000000] cpu 197 -> apicid 0xc5 -> node 0
[    0.000000] cpu 198 -> apicid 0xc6 -> node 0
[    0.000000] cpu 199 -> apicid 0xc7 -> node 0
[    0.000000] cpu 200 -> apicid 0xc8 -> node 0
[    0.000000] cpu 201 -> apicid 0xc9 -> node 0
[    0.000000] cpu 202 -> apicid 0xca -> node 0
[    0.000000] cpu 203 -> apicid 0xcb -> node 0
[    0.000000] cpu 204 -> apicid 0xcc -> node 0
[    0.000000] cpu 205 -> apicid 0xcd -> node 0
[    0.000000] cpu 206 -> apicid 0xce -> node 0
[    0.000000] cpu 207 -> apicid 0xcf -> node 0
[    0.000000] cpu 208 -> apicid 0xd0 -> node 0
[    0.000000] cpu 209 -> apicid 0xd1 -> node 0
[    0.000000] cpu 210 -> apicid 0xd2 -> node 0
[    0.000000] cpu 211 -> apicid 0xd3 -> node 0
[    0.000000] cpu 212 -> apicid 0xd4 -> node 0
[    0.000000] cpu 213 -> apicid 0xd5 -> node 0
[    0.000000] cpu 214 -> apicid 0xd6 -> node 0
[    0.000000] cpu 215 -> apicid 0xd7 -> node 0
[    0.000000] cpu 216 -> apicid 0xd8 -> node 0
[    0.000000] cpu 217 -> apicid 0xd9 -> node 0
[    0.000000] cpu 218 -> apicid 0xda -> node 0
[    0.000000] cpu 219 -> apicid 0xdb -> node 0
[    0.000000] cpu 220 -> apicid 0xdc -> node 0
[    0.000000] cpu 221 -> apicid 0xdd -> node 0
[    0.000000] cpu 222 -> apicid 0xde -> node 0
[    0.000000] cpu 223 -> apicid 0xdf -> node 0
[    0.000000] cpu 224 -> apicid 0xe0 -> node 0
[    0.000000] cpu 225 -> apicid 0xe1 -> node 0
[    0.000000] cpu 226 -> apicid 0xe2 -> node 0
[    0.000000] cpu 227 -> apicid 0xe3 -> node 0
[    0.000000] cpu 228 -> apicid 0xe4 -> node 0
[    0.000000] cpu 229 -> apicid 0xe5 -> node 0
[    0.000000] cpu 230 -> apicid 0xe6 -> node 0
[    0.000000] cpu 231 -> apicid 0xe7 -> node 0
[    0.000000] cpu 232 -> apicid 0xe8 -> node 0
[    0.000000] cpu 233 -> apicid 0xe9 -> node 0
[    0.000000] cpu 234 -> apicid 0xea -> node 0
[    0.000000] cpu 235 -> apicid 0xeb -> node 0
[    0.000000] cpu 236 -> apicid 0xec -> node 0
[    0.000000] cpu 237 -> apicid 0xed -> node 0
[    0.000000] cpu 238 -> apicid 0xee -> node 0
[    0.000000] cpu 239 -> apicid 0xef -> node 0
[    0.000000] cpu 240 -> apicid 0xf0 -> node 0
[    0.000000] cpu 241 -> apicid 0xf1 -> node 0
[    0.000000] cpu 242 -> apicid 0xf2 -> node 0
[    0.000000] cpu 243 -> apicid 0xf3 -> node 0
[    0.000000] cpu 244 -> apicid 0xf4 -> node 0
[    0.000000] cpu 245 -> apicid 0xf5 -> node 0
[    0.000000] cpu 246 -> apicid 0xf6 -> node 0
[    0.000000] cpu 247 -> apicid 0xf7 -> node 0
[    0.000000] cpu 248 -> apicid 0xf8 -> node 0
[    0.000000] cpu 249 -> apicid 0xf9 -> node 0
[    0.000000] cpu 250 -> apicid 0xfa -> node 0
[    0.000000] cpu 251 -> apicid 0xfb -> node 0
[    0.000000] cpu 252 -> apicid 0xfc -> node 0
[    0.000000] cpu 253 -> apicid 0xfd -> node 0
[    0.000000] memblock_reserve: [0x101feccf00-0x101feccf42] ioapic res
[    0.000000] nr_irqs_gsi: 40
[    0.000000] memblock_reserve: [0x101feccd00-0x101feccef7] e820 resources
[    0.000000] memblock_reserve: [0x101feccc80-0x101feccce7] firmware map
[    0.000000] memblock_reserve: [0x101feccc00-0x101feccc67] firmware map
[    0.000000] memblock_reserve: [0x101feccb80-0x101feccbe7] firmware map
[    0.000000] memblock_reserve: [0x101feccb00-0x101feccb67] firmware map
[    0.000000] memblock_reserve: [0x101fecca80-0x101feccae7] firmware map
[    0.000000] memblock_reserve: [0x101fecca00-0x101fecca67] firmware map
[    0.000000] memblock_reserve: [0x101fecc980-0x101fecc9e7] firmware map
[    0.000000] memblock_reserve: [0x101fecc900-0x101fecc967] firmware map
[    0.000000] memblock_reserve: [0x101fecc8c0-0x101fecc8df] nosave region
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
[    0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
[    0.000000] memblock_reserve: [0x101fecc880-0x101fecc89f] nosave region
[    0.000000] PM: Registered nosave memory: 00000000dfff4000 - 00000000e0000000
[    0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000feffc000
[    0.000000] PM: Registered nosave memory: 00000000feffc000 - 00000000ff000000
[    0.000000] PM: Registered nosave memory: 00000000ff000000 - 00000000fffc0000
[    0.000000] PM: Registered nosave memory: 00000000fffc0000 - 0000000100000000
[    0.000000] e820: [mem 0xe0000000-0xfeffbfff] available for PCI devices
[    0.000000] memblock_reserve: [0x101fecc780-0x101fecc84d] saved_command_l
[    0.000000] memblock_reserve: [0x101fecc680-0x101fecc74d] static_command_
[    0.000000] setup_percpu: NR_CPUS:4096 nr_cpumask_bits:254 nr_cpu_ids:254 nr_node_ids:1
[    0.000000] memblock_reserve: [0x101fecb680-0x101fecc67f] pcpu_alloc_info
[    0.000000] memblock_reserve: [0x101feca680-0x101fecb67f] pcpu area
[    0.000000] memblock_reserve: [0xfb7e00000-0xfd79fffff] pcpu_alloc
[    0.000000]    memblock_free: [0xfb7fdb000-0xfb7ffffff]
[    0.000000]    memblock_free: [0xfb81db000-0xfb81fffff]
[    0.000000]    memblock_free: [0xfb83db000-0xfb83fffff]
[    0.000000]    memblock_free: [0xfb85db000-0xfb85fffff]
[    0.000000]    memblock_free: [0xfb87db000-0xfb87fffff]
[    0.000000]    memblock_free: [0xfb89db000-0xfb89fffff]
[    0.000000]    memblock_free: [0xfb8bdb000-0xfb8bfffff]
[    0.000000]    memblock_free: [0xfb8ddb000-0xfb8dfffff]
[    0.000000]    memblock_free: [0xfb8fdb000-0xfb8ffffff]
[    0.000000]    memblock_free: [0xfb91db000-0xfb91fffff]
[    0.000000]    memblock_free: [0xfb93db000-0xfb93fffff]
[    0.000000]    memblock_free: [0xfb95db000-0xfb95fffff]
[    0.000000]    memblock_free: [0xfb97db000-0xfb97fffff]
[    0.000000]    memblock_free: [0xfb99db000-0xfb99fffff]
[    0.000000]    memblock_free: [0xfb9bdb000-0xfb9bfffff]
[    0.000000]    memblock_free: [0xfb9ddb000-0xfb9dfffff]
[    0.000000]    memblock_free: [0xfb9fdb000-0xfb9ffffff]
[    0.000000]    memblock_free: [0xfba1db000-0xfba1fffff]
[    0.000000]    memblock_free: [0xfba3db000-0xfba3fffff]
[    0.000000]    memblock_free: [0xfba5db000-0xfba5fffff]
[    0.000000]    memblock_free: [0xfba7db000-0xfba7fffff]
[    0.000000]    memblock_free: [0xfba9db000-0xfba9fffff]
[    0.000000]    memblock_free: [0xfbabdb000-0xfbabfffff]
[    0.000000]    memblock_free: [0xfbaddb000-0xfbadfffff]
[    0.000000]    memblock_free: [0xfbafdb000-0xfbaffffff]
[    0.000000]    memblock_free: [0xfbb1db000-0xfbb1fffff]
[    0.000000]    memblock_free: [0xfbb3db000-0xfbb3fffff]
[    0.000000]    memblock_free: [0xfbb5db000-0xfbb5fffff]
[    0.000000]    memblock_free: [0xfbb7db000-0xfbb7fffff]
[    0.000000]    memblock_free: [0xfbb9db000-0xfbb9fffff]
[    0.000000]    memblock_free: [0xfbbbdb000-0xfbbbfffff]
[    0.000000]    memblock_free: [0xfbbddb000-0xfbbdfffff]
[    0.000000]    memblock_free: [0xfbbfdb000-0xfbbffffff]
[    0.000000]    memblock_free: [0xfbc1db000-0xfbc1fffff]
[    0.000000]    memblock_free: [0xfbc3db000-0xfbc3fffff]
[    0.000000]    memblock_free: [0xfbc5db000-0xfbc5fffff]
[    0.000000]    memblock_free: [0xfbc7db000-0xfbc7fffff]
[    0.000000]    memblock_free: [0xfbc9db000-0xfbc9fffff]
[    0.000000]    memblock_free: [0xfbcbdb000-0xfbcbfffff]
[    0.000000]    memblock_free: [0xfbcddb000-0xfbcdfffff]
[    0.000000]    memblock_free: [0xfbcfdb000-0xfbcffffff]
[    0.000000]    memblock_free: [0xfbd1db000-0xfbd1fffff]
[    0.000000]    memblock_free: [0xfbd3db000-0xfbd3fffff]
[    0.000000]    memblock_free: [0xfbd5db000-0xfbd5fffff]
[    0.000000]    memblock_free: [0xfbd7db000-0xfbd7fffff]
[    0.000000]    memblock_free: [0xfbd9db000-0xfbd9fffff]
[    0.000000]    memblock_free: [0xfbdbdb000-0xfbdbfffff]
[    0.000000]    memblock_free: [0xfbdddb000-0xfbddfffff]
[    0.000000]    memblock_free: [0xfbdfdb000-0xfbdffffff]
[    0.000000]    memblock_free: [0xfbe1db000-0xfbe1fffff]
[    0.000000]    memblock_free: [0xfbe3db000-0xfbe3fffff]
[    0.000000]    memblock_free: [0xfbe5db000-0xfbe5fffff]
[    0.000000]    memblock_free: [0xfbe7db000-0xfbe7fffff]
[    0.000000]    memblock_free: [0xfbe9db000-0xfbe9fffff]
[    0.000000]    memblock_free: [0xfbebdb000-0xfbebfffff]
[    0.000000]    memblock_free: [0xfbeddb000-0xfbedfffff]
[    0.000000]    memblock_free: [0xfbefdb000-0xfbeffffff]
[    0.000000]    memblock_free: [0xfbf1db000-0xfbf1fffff]
[    0.000000]    memblock_free: [0xfbf3db000-0xfbf3fffff]
[    0.000000]    memblock_free: [0xfbf5db000-0xfbf5fffff]
[    0.000000]    memblock_free: [0xfbf7db000-0xfbf7fffff]
[    0.000000]    memblock_free: [0xfbf9db000-0xfbf9fffff]
[    0.000000]    memblock_free: [0xfbfbdb000-0xfbfbfffff]
[    0.000000]    memblock_free: [0xfbfddb000-0xfbfdfffff]
[    0.000000]    memblock_free: [0xfbffdb000-0xfbfffffff]
[    0.000000]    memblock_free: [0xfc01db000-0xfc01fffff]
[    0.000000]    memblock_free: [0xfc03db000-0xfc03fffff]
[    0.000000]    memblock_free: [0xfc05db000-0xfc05fffff]
[    0.000000]    memblock_free: [0xfc07db000-0xfc07fffff]
[    0.000000]    memblock_free: [0xfc09db000-0xfc09fffff]
[    0.000000]    memblock_free: [0xfc0bdb000-0xfc0bfffff]
[    0.000000]    memblock_free: [0xfc0ddb000-0xfc0dfffff]
[    0.000000]    memblock_free: [0xfc0fdb000-0xfc0ffffff]
[    0.000000]    memblock_free: [0xfc11db000-0xfc11fffff]
[    0.000000]    memblock_free: [0xfc13db000-0xfc13fffff]
[    0.000000]    memblock_free: [0xfc15db000-0xfc15fffff]
[    0.000000]    memblock_free: [0xfc17db000-0xfc17fffff]
[    0.000000]    memblock_free: [0xfc19db000-0xfc19fffff]
[    0.000000]    memblock_free: [0xfc1bdb000-0xfc1bfffff]
[    0.000000]    memblock_free: [0xfc1ddb000-0xfc1dfffff]
[    0.000000]    memblock_free: [0xfc1fdb000-0xfc1ffffff]
[    0.000000]    memblock_free: [0xfc21db000-0xfc21fffff]
[    0.000000]    memblock_free: [0xfc23db000-0xfc23fffff]
[    0.000000]    memblock_free: [0xfc25db000-0xfc25fffff]
[    0.000000]    memblock_free: [0xfc27db000-0xfc27fffff]
[    0.000000]    memblock_free: [0xfc29db000-0xfc29fffff]
[    0.000000]    memblock_free: [0xfc2bdb000-0xfc2bfffff]
[    0.000000]    memblock_free: [0xfc2ddb000-0xfc2dfffff]
[    0.000000]    memblock_free: [0xfc2fdb000-0xfc2ffffff]
[    0.000000]    memblock_free: [0xfc31db000-0xfc31fffff]
[    0.000000]    memblock_free: [0xfc33db000-0xfc33fffff]
[    0.000000]    memblock_free: [0xfc35db000-0xfc35fffff]
[    0.000000]    memblock_free: [0xfc37db000-0xfc37fffff]
[    0.000000]    memblock_free: [0xfc39db000-0xfc39fffff]
[    0.000000]    memblock_free: [0xfc3bdb000-0xfc3bfffff]
[    0.000000]    memblock_free: [0xfc3ddb000-0xfc3dfffff]
[    0.000000]    memblock_free: [0xfc3fdb000-0xfc3ffffff]
[    0.000000]    memblock_free: [0xfc41db000-0xfc41fffff]
[    0.000000]    memblock_free: [0xfc43db000-0xfc43fffff]
[    0.000000]    memblock_free: [0xfc45db000-0xfc45fffff]
[    0.000000]    memblock_free: [0xfc47db000-0xfc47fffff]
[    0.000000]    memblock_free: [0xfc49db000-0xfc49fffff]
[    0.000000]    memblock_free: [0xfc4bdb000-0xfc4bfffff]
[    0.000000]    memblock_free: [0xfc4ddb000-0xfc4dfffff]
[    0.000000] memblock: reserved array is doubled to 256 at [0x101fec8e80-0x101feca67f]
[    0.000000] memblock_reserve: [0x101fec8e80-0x101feca67f] 
[    0.000000]    memblock_free: [0xfc4fdb000-0xfc4ffffff]
[    0.000000]    memblock_free: [0xfc51db000-0xfc51fffff]
[    0.000000]    memblock_free: [0xfc53db000-0xfc53fffff]
[    0.000000]    memblock_free: [0xfc55db000-0xfc55fffff]
[    0.000000]    memblock_free: [0xfc57db000-0xfc57fffff]
[    0.000000]    memblock_free: [0xfc59db000-0xfc59fffff]
[    0.000000]    memblock_free: [0xfc5bdb000-0xfc5bfffff]
[    0.000000]    memblock_free: [0xfc5ddb000-0xfc5dfffff]
[    0.000000]    memblock_free: [0xfc5fdb000-0xfc5ffffff]
[    0.000000]    memblock_free: [0xfc61db000-0xfc61fffff]
[    0.000000]    memblock_free: [0xfc63db000-0xfc63fffff]
[    0.000000]    memblock_free: [0xfc65db000-0xfc65fffff]
[    0.000000]    memblock_free: [0xfc67db000-0xfc67fffff]
[    0.000000]    memblock_free: [0xfc69db000-0xfc69fffff]
[    0.000000]    memblock_free: [0xfc6bdb000-0xfc6bfffff]
[    0.000000]    memblock_free: [0xfc6ddb000-0xfc6dfffff]
[    0.000000]    memblock_free: [0xfc6fdb000-0xfc6ffffff]
[    0.000000]    memblock_free: [0xfc71db000-0xfc71fffff]
[    0.000000]    memblock_free: [0xfc73db000-0xfc73fffff]
[    0.000000]    memblock_free: [0xfc75db000-0xfc75fffff]
[    0.000000]    memblock_free: [0xfc77db000-0xfc77fffff]
[    0.000000]    memblock_free: [0xfc79db000-0xfc79fffff]
[    0.000000]    memblock_free: [0xfc7bdb000-0xfc7bfffff]
[    0.000000]    memblock_free: [0xfc7ddb000-0xfc7dfffff]
[    0.000000]    memblock_free: [0xfc7fdb000-0xfc7ffffff]
[    0.000000]    memblock_free: [0xfc81db000-0xfc81fffff]
[    0.000000]    memblock_free: [0xfc83db000-0xfc83fffff]
[    0.000000]    memblock_free: [0xfc85db000-0xfc85fffff]
[    0.000000]    memblock_free: [0xfc87db000-0xfc87fffff]
[    0.000000]    memblock_free: [0xfc89db000-0xfc89fffff]
[    0.000000]    memblock_free: [0xfc8bdb000-0xfc8bfffff]
[    0.000000]    memblock_free: [0xfc8ddb000-0xfc8dfffff]
[    0.000000]    memblock_free: [0xfc8fdb000-0xfc8ffffff]
[    0.000000]    memblock_free: [0xfc91db000-0xfc91fffff]
[    0.000000]    memblock_free: [0xfc93db000-0xfc93fffff]
[    0.000000]    memblock_free: [0xfc95db000-0xfc95fffff]
[    0.000000]    memblock_free: [0xfc97db000-0xfc97fffff]
[    0.000000]    memblock_free: [0xfc99db000-0xfc99fffff]
[    0.000000]    memblock_free: [0xfc9bdb000-0xfc9bfffff]
[    0.000000]    memblock_free: [0xfc9ddb000-0xfc9dfffff]
[    0.000000]    memblock_free: [0xfc9fdb000-0xfc9ffffff]
[    0.000000]    memblock_free: [0xfca1db000-0xfca1fffff]
[    0.000000]    memblock_free: [0xfca3db000-0xfca3fffff]
[    0.000000]    memblock_free: [0xfca5db000-0xfca5fffff]
[    0.000000]    memblock_free: [0xfca7db000-0xfca7fffff]
[    0.000000]    memblock_free: [0xfca9db000-0xfca9fffff]
[    0.000000]    memblock_free: [0xfcabdb000-0xfcabfffff]
[    0.000000]    memblock_free: [0xfcaddb000-0xfcadfffff]
[    0.000000]    memblock_free: [0xfcafdb000-0xfcaffffff]
[    0.000000]    memblock_free: [0xfcb1db000-0xfcb1fffff]
[    0.000000]    memblock_free: [0xfcb3db000-0xfcb3fffff]
[    0.000000]    memblock_free: [0xfcb5db000-0xfcb5fffff]
[    0.000000]    memblock_free: [0xfcb7db000-0xfcb7fffff]
[    0.000000]    memblock_free: [0xfcb9db000-0xfcb9fffff]
[    0.000000]    memblock_free: [0xfcbbdb000-0xfcbbfffff]
[    0.000000]    memblock_free: [0xfcbddb000-0xfcbdfffff]
[    0.000000]    memblock_free: [0xfcbfdb000-0xfcbffffff]
[    0.000000]    memblock_free: [0xfcc1db000-0xfcc1fffff]
[    0.000000]    memblock_free: [0xfcc3db000-0xfcc3fffff]
[    0.000000]    memblock_free: [0xfcc5db000-0xfcc5fffff]
[    0.000000]    memblock_free: [0xfcc7db000-0xfcc7fffff]
[    0.000000]    memblock_free: [0xfcc9db000-0xfcc9fffff]
[    0.000000]    memblock_free: [0xfccbdb000-0xfccbfffff]
[    0.000000]    memblock_free: [0xfccddb000-0xfccdfffff]
[    0.000000]    memblock_free: [0xfccfdb000-0xfccffffff]
[    0.000000]    memblock_free: [0xfcd1db000-0xfcd1fffff]
[    0.000000]    memblock_free: [0xfcd3db000-0xfcd3fffff]
[    0.000000]    memblock_free: [0xfcd5db000-0xfcd5fffff]
[    0.000000]    memblock_free: [0xfcd7db000-0xfcd7fffff]
[    0.000000]    memblock_free: [0xfcd9db000-0xfcd9fffff]
[    0.000000]    memblock_free: [0xfcdbdb000-0xfcdbfffff]
[    0.000000]    memblock_free: [0xfcdddb000-0xfcddfffff]
[    0.000000]    memblock_free: [0xfcdfdb000-0xfcdffffff]
[    0.000000]    memblock_free: [0xfce1db000-0xfce1fffff]
[    0.000000]    memblock_free: [0xfce3db000-0xfce3fffff]
[    0.000000]    memblock_free: [0xfce5db000-0xfce5fffff]
[    0.000000]    memblock_free: [0xfce7db000-0xfce7fffff]
[    0.000000]    memblock_free: [0xfce9db000-0xfce9fffff]
[    0.000000]    memblock_free: [0xfcebdb000-0xfcebfffff]
[    0.000000]    memblock_free: [0xfceddb000-0xfcedfffff]
[    0.000000]    memblock_free: [0xfcefdb000-0xfceffffff]
[    0.000000]    memblock_free: [0xfcf1db000-0xfcf1fffff]
[    0.000000]    memblock_free: [0xfcf3db000-0xfcf3fffff]
[    0.000000]    memblock_free: [0xfcf5db000-0xfcf5fffff]
[    0.000000]    memblock_free: [0xfcf7db000-0xfcf7fffff]
[    0.000000]    memblock_free: [0xfcf9db000-0xfcf9fffff]
[    0.000000]    memblock_free: [0xfcfbdb000-0xfcfbfffff]
[    0.000000]    memblock_free: [0xfcfddb000-0xfcfdfffff]
[    0.000000]    memblock_free: [0xfcffdb000-0xfcfffffff]
[    0.000000]    memblock_free: [0xfd01db000-0xfd01fffff]
[    0.000000]    memblock_free: [0xfd03db000-0xfd03fffff]
[    0.000000]    memblock_free: [0xfd05db000-0xfd05fffff]
[    0.000000]    memblock_free: [0xfd07db000-0xfd07fffff]
[    0.000000]    memblock_free: [0xfd09db000-0xfd09fffff]
[    0.000000]    memblock_free: [0xfd0bdb000-0xfd0bfffff]
[    0.000000]    memblock_free: [0xfd0ddb000-0xfd0dfffff]
[    0.000000]    memblock_free: [0xfd0fdb000-0xfd0ffffff]
[    0.000000]    memblock_free: [0xfd11db000-0xfd11fffff]
[    0.000000]    memblock_free: [0xfd13db000-0xfd13fffff]
[    0.000000]    memblock_free: [0xfd15db000-0xfd15fffff]
[    0.000000]    memblock_free: [0xfd17db000-0xfd17fffff]
[    0.000000]    memblock_free: [0xfd19db000-0xfd19fffff]
[    0.000000]    memblock_free: [0xfd1bdb000-0xfd1bfffff]
[    0.000000]    memblock_free: [0xfd1ddb000-0xfd1dfffff]
[    0.000000]    memblock_free: [0xfd1fdb000-0xfd1ffffff]
[    0.000000]    memblock_free: [0xfd21db000-0xfd21fffff]
[    0.000000]    memblock_free: [0xfd23db000-0xfd23fffff]
[    0.000000]    memblock_free: [0xfd25db000-0xfd25fffff]
[    0.000000]    memblock_free: [0xfd27db000-0xfd27fffff]
[    0.000000]    memblock_free: [0xfd29db000-0xfd29fffff]
[    0.000000]    memblock_free: [0xfd2bdb000-0xfd2bfffff]
[    0.000000]    memblock_free: [0xfd2ddb000-0xfd2dfffff]
[    0.000000]    memblock_free: [0xfd2fdb000-0xfd2ffffff]
[    0.000000]    memblock_free: [0xfd31db000-0xfd31fffff]
[    0.000000]    memblock_free: [0xfd33db000-0xfd33fffff]
[    0.000000]    memblock_free: [0xfd35db000-0xfd35fffff]
[    0.000000]    memblock_free: [0xfd37db000-0xfd37fffff]
[    0.000000]    memblock_free: [0xfd39db000-0xfd39fffff]
[    0.000000]    memblock_free: [0xfd3bdb000-0xfd3bfffff]
[    0.000000]    memblock_free: [0xfd3ddb000-0xfd3dfffff]
[    0.000000]    memblock_free: [0xfd3fdb000-0xfd3ffffff]
[    0.000000]    memblock_free: [0xfd41db000-0xfd41fffff]
[    0.000000]    memblock_free: [0xfd43db000-0xfd43fffff]
[    0.000000]    memblock_free: [0xfd45db000-0xfd45fffff]
[    0.000000]    memblock_free: [0xfd47db000-0xfd47fffff]
[    0.000000]    memblock_free: [0xfd49db000-0xfd49fffff]
[    0.000000]    memblock_free: [0xfd4bdb000-0xfd4bfffff]
[    0.000000]    memblock_free: [0xfd4ddb000-0xfd4dfffff]
[    0.000000] memblock: reserved array is doubled to 512 at [0x101fec5e80-0x101fec8e7f]
[    0.000000]    memblock_free: [0x101fec8e80-0x101feca67f]
[    0.000000] memblock_reserve: [0x101fec5e80-0x101fec8e7f] 
[    0.000000]    memblock_free: [0xfd4fdb000-0xfd4ffffff]
[    0.000000]    memblock_free: [0xfd51db000-0xfd51fffff]
[    0.000000]    memblock_free: [0xfd53db000-0xfd53fffff]
[    0.000000]    memblock_free: [0xfd55db000-0xfd55fffff]
[    0.000000]    memblock_free: [0xfd57db000-0xfd57fffff]
[    0.000000]    memblock_free: [0xfd59db000-0xfd59fffff]
[    0.000000]    memblock_free: [0xfd5bdb000-0xfd5bfffff]
[    0.000000]    memblock_free: [0xfd5ddb000-0xfd5dfffff]
[    0.000000]    memblock_free: [0xfd5fdb000-0xfd5ffffff]
[    0.000000]    memblock_free: [0xfd61db000-0xfd61fffff]
[    0.000000]    memblock_free: [0xfd63db000-0xfd63fffff]
[    0.000000]    memblock_free: [0xfd65db000-0xfd65fffff]
[    0.000000]    memblock_free: [0xfd67db000-0xfd67fffff]
[    0.000000]    memblock_free: [0xfd69db000-0xfd69fffff]
[    0.000000]    memblock_free: [0xfd6bdb000-0xfd6bfffff]
[    0.000000]    memblock_free: [0xfd6ddb000-0xfd6dfffff]
[    0.000000]    memblock_free: [0xfd6fdb000-0xfd6ffffff]
[    0.000000]    memblock_free: [0xfd71db000-0xfd71fffff]
[    0.000000]    memblock_free: [0xfd73db000-0xfd73fffff]
[    0.000000]    memblock_free: [0xfd75db000-0xfd75fffff]
[    0.000000]    memblock_free: [0xfd77db000-0xfd77fffff]
[    0.000000]    memblock_free: [0xfd79db000-0xfd79fffff]
[    0.000000] PERCPU: Embedded 475 pages/cpu @ffff880fb7e00000 s1915152 r8192 d22256 u2097152
[    0.000000] memblock_reserve: [0x101feca640-0x101feca647] pcpu group_offs
[    0.000000] memblock_reserve: [0x101feca600-0x101feca607] pcpu group_size
[    0.000000] memblock_reserve: [0x101feca200-0x101feca5f7] pcpu unit_map
[    0.000000] memblock_reserve: [0x101fec9a00-0x101feca1ef] pcpu unit_off
[    0.000000] pcpu-alloc: s1915152 r8192 d22256 u2097152 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 000 [0] 001 [0] 002 [0] 003 
[    0.000000] pcpu-alloc: [0] 004 [0] 005 [0] 006 [0] 007 
[    0.000000] pcpu-alloc: [0] 008 [0] 009 [0] 010 [0] 011 
[    0.000000] pcpu-alloc: [0] 012 [0] 013 [0] 014 [0] 015 
[    0.000000] pcpu-alloc: [0] 016 [0] 017 [0] 018 [0] 019 
[    0.000000] pcpu-alloc: [0] 020 [0] 021 [0] 022 [0] 023 
[    0.000000] pcpu-alloc: [0] 024 [0] 025 [0] 026 [0] 027 
[    0.000000] pcpu-alloc: [0] 028 [0] 029 [0] 030 [0] 031 
[    0.000000] pcpu-alloc: [0] 032 [0] 033 [0] 034 [0] 035 
[    0.000000] pcpu-alloc: [0] 036 [0] 037 [0] 038 [0] 039 
[    0.000000] pcpu-alloc: [0] 040 [0] 041 [0] 042 [0] 043 
[    0.000000] pcpu-alloc: [0] 044 [0] 045 [0] 046 [0] 047 
[    0.000000] pcpu-alloc: [0] 048 [0] 049 [0] 050 [0] 051 
[    0.000000] pcpu-alloc: [0] 052 [0] 053 [0] 054 [0] 055 
[    0.000000] pcpu-alloc: [0] 056 [0] 057 [0] 058 [0] 059 
[    0.000000] pcpu-alloc: [0] 060 [0] 061 [0] 062 [0] 063 
[    0.000000] pcpu-alloc: [0] 064 [0] 065 [0] 066 [0] 067 
[    0.000000] pcpu-alloc: [0] 068 [0] 069 [0] 070 [0] 071 
[    0.000000] pcpu-alloc: [0] 072 [0] 073 [0] 074 [0] 075 
[    0.000000] pcpu-alloc: [0] 076 [0] 077 [0] 078 [0] 079 
[    0.000000] pcpu-alloc: [0] 080 [0] 081 [0] 082 [0] 083 
[    0.000000] pcpu-alloc: [0] 084 [0] 085 [0] 086 [0] 087 
[    0.000000] pcpu-alloc: [0] 088 [0] 089 [0] 090 [0] 091 
[    0.000000] pcpu-alloc: [0] 092 [0] 093 [0] 094 [0] 095 
[    0.000000] pcpu-alloc: [0] 096 [0] 097 [0] 098 [0] 099 
[    0.000000] pcpu-alloc: [0] 100 [0] 101 [0] 102 [0] 103 
[    0.000000] pcpu-alloc: [0] 104 [0] 105 [0] 106 [0] 107 
[    0.000000] pcpu-alloc: [0] 108 [0] 109 [0] 110 [0] 111 
[    0.000000] pcpu-alloc: [0] 112 [0] 113 [0] 114 [0] 115 
[    0.000000] pcpu-alloc: [0] 116 [0] 117 [0] 118 [0] 119 
[    0.000000] pcpu-alloc: [0] 120 [0] 121 [0] 122 [0] 123 
[    0.000000] pcpu-alloc: [0] 124 [0] 125 [0] 126 [0] 127 
[    0.000000] pcpu-alloc: [0] 128 [0] 129 [0] 130 [0] 131 
[    0.000000] pcpu-alloc: [0] 132 [0] 133 [0] 134 [0] 135 
[    0.000000] pcpu-alloc: [0] 136 [0] 137 [0] 138 [0] 139 
[    0.000000] pcpu-alloc: [0] 140 [0] 141 [0] 142 [0] 143 
[    0.000000] pcpu-alloc: [0] 144 [0] 145 [0] 146 [0] 147 
[    0.000000] pcpu-alloc: [0] 148 [0] 149 [0] 150 [0] 151 
[    0.000000] pcpu-alloc: [0] 152 [0] 153 [0] 154 [0] 155 
[    0.000000] pcpu-alloc: [0] 156 [0] 157 [0] 158 [0] 159 
[    0.000000] pcpu-alloc: [0] 160 [0] 161 [0] 162 [0] 163 
[    0.000000] pcpu-alloc: [0] 164 [0] 165 [0] 166 [0] 167 
[    0.000000] pcpu-alloc: [0] 168 [0] 169 [0] 170 [0] 171 
[    0.000000] pcpu-alloc: [0] 172 [0] 173 [0] 174 [0] 175 
[    0.000000] pcpu-alloc: [0] 176 [0] 177 [0] 178 [0] 179 
[    0.000000] pcpu-alloc: [0] 180 [0] 181 [0] 182 [0] 183 
[    0.000000] pcpu-alloc: [0] 184 [0] 185 [0] 186 [0] 187 
[    0.000000] pcpu-alloc: [0] 188 [0] 189 [0] 190 [0] 191 
[    0.000000] pcpu-alloc: [0] 192 [0] 193 [0] 194 [0] 195 
[    0.000000] pcpu-alloc: [0] 196 [0] 197 [0] 198 [0] 199 
[    0.000000] pcpu-alloc: [0] 200 [0] 201 [0] 202 [0] 203 
[    0.000000] pcpu-alloc: [0] 204 [0] 205 [0] 206 [0] 207 
[    0.000000] pcpu-alloc: [0] 208 [0] 209 [0] 210 [0] 211 
[    0.000000] pcpu-alloc: [0] 212 [0] 213 [0] 214 [0] 215 
[    0.000000] pcpu-alloc: [0] 216 [0] 217 [0] 218 [0] 219 
[    0.000000] pcpu-alloc: [0] 220 [0] 221 [0] 222 [0] 223 
[    0.000000] pcpu-alloc: [0] 224 [0] 225 [0] 226 [0] 227 
[    0.000000] pcpu-alloc: [0] 228 [0] 229 [0] 230 [0] 231 
[    0.000000] pcpu-alloc: [0] 232 [0] 233 [0] 234 [0] 235 
[    0.000000] pcpu-alloc: [0] 236 [0] 237 [0] 238 [0] 239 
[    0.000000] pcpu-alloc: [0] 240 [0] 241 [0] 242 [0] 243 
[    0.000000] pcpu-alloc: [0] 244 [0] 245 [0] 246 [0] 247 
[    0.000000] pcpu-alloc: [0] 248 [0] 249 [0] 250 [0] 251 
[    0.000000] pcpu-alloc: [0] 252 [0] 253 
[    0.000000] memblock_reserve: [0x101fec9880-0x101fec99cf] pcpu slot
[    0.000000] memblock_reserve: [0x101fec9800-0x101fec987f] pcpu chunk_stru
[    0.000000] memblock_reserve: [0x101fec9780-0x101fec97ff] pcpu chunk_stru
[    0.000000]    memblock_free: [0x101fecb680-0x101fecc67f]
[    0.000000]    memblock_free: [0x101feca680-0x101fecb67f]
[    0.000000] memblock_reserve: [0x101fecc480-0x101fecc67f] node_to_cpumask
[    0.000000] memblock_reserve: [0x101fecc280-0x101fecc47f] cpu_initialized
[    0.000000] memblock_reserve: [0x101fecc080-0x101fecc27f] cpu_callin_mask
[    0.000000] memblock_reserve: [0x101fecbe80-0x101fecc07f] cpu_callout_mas
[    0.000000] memblock_reserve: [0x101fecbc80-0x101fecbe7f] cpu_calibrated_
[    0.000000] memblock_reserve: [0x101fecba80-0x101fecbc7f] cpu_sibling_set
[    0.000000] build_zonelists: local_node: 0 next_best_node: 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16512893
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=linux ignore_loglevel initcall_debug acpi.debug_layer=0xffff0000 pci=routeirq apic=debug numa=off ramdisk_size=262144 root=/dev/ram0 rw ip=dhcp console=uart8250,io,0x3f8,115200 initrd=initrd.img
[    0.000000] memblock_reserve: [0x101febde80-0x101fec5e7f] large system ha
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] Initializing CPU#0
[    0.000000] pci_iommu_alloc: __iommu_entry_pci_swiotlb_detect_4gb+0x0/0x28 ffffffff82a75380
[    0.000000] pci_iommu_alloc: __iommu_entry_pci_swiotlb_detect_override+0x0/0x28 ffffffff82a753a8
[    0.000000] memblock_reserve: [0xdb8ef000-0xdf8eefff] swiotlb buffer
[    0.000000] memblock_reserve: [0x101fe9d000-0x101febcfff] swiotlb list
[    0.000000] memblock_reserve: [0x101fe5d000-0x101fe9cfff] swiotlb orig_ad
[    0.000000] memblock_reserve: [0xdb8e7000-0xdb8eefff] swiotlb overflo
[    0.000000] pci_iommu_alloc: __iommu_entry_gart_iommu_hole_init+0x0/0x28 ffffffff82a753d0
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] pci_iommu_alloc: __iommu_entry_amd_iommu_detect+0x0/0x28 ffffffff82a753f8
[    0.000000] pci_iommu_alloc: __iommu_entry_detect_intel_iommu+0x0/0x28 ffffffff82a75420
[    0.000000]    memblock_free: [0x101fec5e80-0x101fec8e7f]
[    0.000000]        [0x00010000-0x00098fff]
[    0.000000]        [0x00100000-0x00ffffff]
[    0.000000]        [0x03831000-0x7d991fff]
[    0.000000]        [0x7ffff000-0xdb8e6fff]
[    0.000000]        [0xdfff2000-0xdfff3fff]
[    0.000000]        [0x100000000-0xfb7dfffff]
[    0.000000]        [0xfb7fdb000-0xfb7ffffff]
[    0.000000]        [0xfb81db000-0xfb81fffff]
[    0.000000]        [0xfb83db000-0xfb83fffff]
[    0.000000]        [0xfb85db000-0xfb85fffff]
[    0.000000]        [0xfb87db000-0xfb87fffff]
[    0.000000]        [0xfb89db000-0xfb89fffff]
[    0.000000]        [0xfb8bdb000-0xfb8bfffff]
[    0.000000]        [0xfb8ddb000-0xfb8dfffff]
[    0.000000]        [0xfb8fdb000-0xfb8ffffff]
[    0.000000]        [0xfb91db000-0xfb91fffff]
[    0.000000]        [0xfb93db000-0xfb93fffff]
[    0.000000]        [0xfb95db000-0xfb95fffff]
[    0.000000]        [0xfb97db000-0xfb97fffff]
[    0.000000]        [0xfb99db000-0xfb99fffff]
[    0.000000]        [0xfb9bdb000-0xfb9bfffff]
[    0.000000]        [0xfb9ddb000-0xfb9dfffff]
[    0.000000]        [0xfb9fdb000-0xfb9ffffff]
[    0.000000]        [0xfba1db000-0xfba1fffff]
[    0.000000]        [0xfba3db000-0xfba3fffff]
[    0.000000]        [0xfba5db000-0xfba5fffff]
[    0.000000]        [0xfba7db000-0xfba7fffff]
[    0.000000]        [0xfba9db000-0xfba9fffff]
[    0.000000]        [0xfbabdb000-0xfbabfffff]
[    0.000000]        [0xfbaddb000-0xfbadfffff]
[    0.000000]        [0xfbafdb000-0xfbaffffff]
[    0.000000]        [0xfbb1db000-0xfbb1fffff]
[    0.000000]        [0xfbb3db000-0xfbb3fffff]
[    0.000000]        [0xfbb5db000-0xfbb5fffff]
[    0.000000]        [0xfbb7db000-0xfbb7fffff]
[    0.000000]        [0xfbb9db000-0xfbb9fffff]
[    0.000000]        [0xfbbbdb000-0xfbbbfffff]
[    0.000000]        [0xfbbddb000-0xfbbdfffff]
[    0.000000]        [0xfbbfdb000-0xfbbffffff]
[    0.000000]        [0xfbc1db000-0xfbc1fffff]
[    0.000000]        [0xfbc3db000-0xfbc3fffff]
[    0.000000]        [0xfbc5db000-0xfbc5fffff]
[    0.000000]        [0xfbc7db000-0xfbc7fffff]
[    0.000000]        [0xfbc9db000-0xfbc9fffff]
[    0.000000]        [0xfbcbdb000-0xfbcbfffff]
[    0.000000]        [0xfbcddb000-0xfbcdfffff]
[    0.000000]        [0xfbcfdb000-0xfbcffffff]
[    0.000000]        [0xfbd1db000-0xfbd1fffff]
[    0.000000]        [0xfbd3db000-0xfbd3fffff]
[    0.000000]        [0xfbd5db000-0xfbd5fffff]
[    0.000000]        [0xfbd7db000-0xfbd7fffff]
[    0.000000]        [0xfbd9db000-0xfbd9fffff]
[    0.000000]        [0xfbdbdb000-0xfbdbfffff]
[    0.000000]        [0xfbdddb000-0xfbddfffff]
[    0.000000]        [0xfbdfdb000-0xfbdffffff]
[    0.000000]        [0xfbe1db000-0xfbe1fffff]
[    0.000000]        [0xfbe3db000-0xfbe3fffff]
[    0.000000]        [0xfbe5db000-0xfbe5fffff]
[    0.000000]        [0xfbe7db000-0xfbe7fffff]
[    0.000000]        [0xfbe9db000-0xfbe9fffff]
[    0.000000]        [0xfbebdb000-0xfbebfffff]
[    0.000000]        [0xfbeddb000-0xfbedfffff]
[    0.000000]        [0xfbefdb000-0xfbeffffff]
[    0.000000]        [0xfbf1db000-0xfbf1fffff]
[    0.000000]        [0xfbf3db000-0xfbf3fffff]
[    0.000000]        [0xfbf5db000-0xfbf5fffff]
[    0.000000]        [0xfbf7db000-0xfbf7fffff]
[    0.000000]        [0xfbf9db000-0xfbf9fffff]
[    0.000000]        [0xfbfbdb000-0xfbfbfffff]
[    0.000000]        [0xfbfddb000-0xfbfdfffff]
[    0.000000]        [0xfbffdb000-0xfbfffffff]
[    0.000000]        [0xfc01db000-0xfc01fffff]
[    0.000000]        [0xfc03db000-0xfc03fffff]
[    0.000000]        [0xfc05db000-0xfc05fffff]
[    0.000000]        [0xfc07db000-0xfc07fffff]
[    0.000000]        [0xfc09db000-0xfc09fffff]
[    0.000000]        [0xfc0bdb000-0xfc0bfffff]
[    0.000000]        [0xfc0ddb000-0xfc0dfffff]
[    0.000000]        [0xfc0fdb000-0xfc0ffffff]
[    0.000000]        [0xfc11db000-0xfc11fffff]
[    0.000000]        [0xfc13db000-0xfc13fffff]
[    0.000000]        [0xfc15db000-0xfc15fffff]
[    0.000000]        [0xfc17db000-0xfc17fffff]
[    0.000000]        [0xfc19db000-0xfc19fffff]
[    0.000000]        [0xfc1bdb000-0xfc1bfffff]
[    0.000000]        [0xfc1ddb000-0xfc1dfffff]
[    0.000000]        [0xfc1fdb000-0xfc1ffffff]
[    0.000000]        [0xfc21db000-0xfc21fffff]
[    0.000000]        [0xfc23db000-0xfc23fffff]
[    0.000000]        [0xfc25db000-0xfc25fffff]
[    0.000000]        [0xfc27db000-0xfc27fffff]
[    0.000000]        [0xfc29db000-0xfc29fffff]
[    0.000000]        [0xfc2bdb000-0xfc2bfffff]
[    0.000000]        [0xfc2ddb000-0xfc2dfffff]
[    0.000000]        [0xfc2fdb000-0xfc2ffffff]
[    0.000000]        [0xfc31db000-0xfc31fffff]
[    0.000000]        [0xfc33db000-0xfc33fffff]
[    0.000000]        [0xfc35db000-0xfc35fffff]
[    0.000000]        [0xfc37db000-0xfc37fffff]
[    0.000000]        [0xfc39db000-0xfc39fffff]
[    0.000000]        [0xfc3bdb000-0xfc3bfffff]
[    0.000000]        [0xfc3ddb000-0xfc3dfffff]
[    0.000000]        [0xfc3fdb000-0xfc3ffffff]
[    0.000000]        [0xfc41db000-0xfc41fffff]
[    0.000000]        [0xfc43db000-0xfc43fffff]
[    0.000000]        [0xfc45db000-0xfc45fffff]
[    0.000000]        [0xfc47db000-0xfc47fffff]
[    0.000000]        [0xfc49db000-0xfc49fffff]
[    0.000000]        [0xfc4bdb000-0xfc4bfffff]
[    0.000000]        [0xfc4ddb000-0xfc4dfffff]
[    0.000000]        [0xfc4fdb000-0xfc4ffffff]
[    0.000000]        [0xfc51db000-0xfc51fffff]
[    0.000000]        [0xfc53db000-0xfc53fffff]
[    0.000000]        [0xfc55db000-0xfc55fffff]
[    0.000000]        [0xfc57db000-0xfc57fffff]
[    0.000000]        [0xfc59db000-0xfc59fffff]
[    0.000000]        [0xfc5bdb000-0xfc5bfffff]
[    0.000000]        [0xfc5ddb000-0xfc5dfffff]
[    0.000000]        [0xfc5fdb000-0xfc5ffffff]
[    0.000000]        [0xfc61db000-0xfc61fffff]
[    0.000000]        [0xfc63db000-0xfc63fffff]
[    0.000000]        [0xfc65db000-0xfc65fffff]
[    0.000000]        [0xfc67db000-0xfc67fffff]
[    0.000000]        [0xfc69db000-0xfc69fffff]
[    0.000000]        [0xfc6bdb000-0xfc6bfffff]
[    0.000000]        [0xfc6ddb000-0xfc6dfffff]
[    0.000000]        [0xfc6fdb000-0xfc6ffffff]
[    0.000000]        [0xfc71db000-0xfc71fffff]
[    0.000000]        [0xfc73db000-0xfc73fffff]
[    0.000000]        [0xfc75db000-0xfc75fffff]
[    0.000000]        [0xfc77db000-0xfc77fffff]
[    0.000000]        [0xfc79db000-0xfc79fffff]
[    0.000000]        [0xfc7bdb000-0xfc7bfffff]
[    0.000000]        [0xfc7ddb000-0xfc7dfffff]
[    0.000000]        [0xfc7fdb000-0xfc7ffffff]
[    0.000000]        [0xfc81db000-0xfc81fffff]
[    0.000000]        [0xfc83db000-0xfc83fffff]
[    0.000000]        [0xfc85db000-0xfc85fffff]
[    0.000000]        [0xfc87db000-0xfc87fffff]
[    0.000000]        [0xfc89db000-0xfc89fffff]
[    0.000000]        [0xfc8bdb000-0xfc8bfffff]
[    0.000000]        [0xfc8ddb000-0xfc8dfffff]
[    0.000000]        [0xfc8fdb000-0xfc8ffffff]
[    0.000000]        [0xfc91db000-0xfc91fffff]
[    0.000000]        [0xfc93db000-0xfc93fffff]
[    0.000000]        [0xfc95db000-0xfc95fffff]
[    0.000000]        [0xfc97db000-0xfc97fffff]
[    0.000000]        [0xfc99db000-0xfc99fffff]
[    0.000000]        [0xfc9bdb000-0xfc9bfffff]
[    0.000000]        [0xfc9ddb000-0xfc9dfffff]
[    0.000000]        [0xfc9fdb000-0xfc9ffffff]
[    0.000000]        [0xfca1db000-0xfca1fffff]
[    0.000000]        [0xfca3db000-0xfca3fffff]
[    0.000000]        [0xfca5db000-0xfca5fffff]
[    0.000000]        [0xfca7db000-0xfca7fffff]
[    0.000000]        [0xfca9db000-0xfca9fffff]
[    0.000000]        [0xfcabdb000-0xfcabfffff]
[    0.000000]        [0xfcaddb000-0xfcadfffff]
[    0.000000]        [0xfcafdb000-0xfcaffffff]
[    0.000000]        [0xfcb1db000-0xfcb1fffff]
[    0.000000]        [0xfcb3db000-0xfcb3fffff]
[    0.000000]        [0xfcb5db000-0xfcb5fffff]
[    0.000000]        [0xfcb7db000-0xfcb7fffff]
[    0.000000]        [0xfcb9db000-0xfcb9fffff]
[    0.000000]        [0xfcbbdb000-0xfcbbfffff]
[    0.000000]        [0xfcbddb000-0xfcbdfffff]
[    0.000000]        [0xfcbfdb000-0xfcbffffff]
[    0.000000]        [0xfcc1db000-0xfcc1fffff]
[    0.000000]        [0xfcc3db000-0xfcc3fffff]
[    0.000000]        [0xfcc5db000-0xfcc5fffff]
[    0.000000]        [0xfcc7db000-0xfcc7fffff]
[    0.000000]        [0xfcc9db000-0xfcc9fffff]
[    0.000000]        [0xfccbdb000-0xfccbfffff]
[    0.000000]        [0xfccddb000-0xfccdfffff]
[    0.000000]        [0xfccfdb000-0xfccffffff]
[    0.000000]        [0xfcd1db000-0xfcd1fffff]
[    0.000000]        [0xfcd3db000-0xfcd3fffff]
[    0.000000]        [0xfcd5db000-0xfcd5fffff]
[    0.000000]        [0xfcd7db000-0xfcd7fffff]
[    0.000000]        [0xfcd9db000-0xfcd9fffff]
[    0.000000]        [0xfcdbdb000-0xfcdbfffff]
[    0.000000]        [0xfcdddb000-0xfcddfffff]
[    0.000000]        [0xfcdfdb000-0xfcdffffff]
[    0.000000]        [0xfce1db000-0xfce1fffff]
[    0.000000]        [0xfce3db000-0xfce3fffff]
[    0.000000]        [0xfce5db000-0xfce5fffff]
[    0.000000]        [0xfce7db000-0xfce7fffff]
[    0.000000]        [0xfce9db000-0xfce9fffff]
[    0.000000]        [0xfcebdb000-0xfcebfffff]
[    0.000000]        [0xfceddb000-0xfcedfffff]
[    0.000000]        [0xfcefdb000-0xfceffffff]
[    0.000000]        [0xfcf1db000-0xfcf1fffff]
[    0.000000]        [0xfcf3db000-0xfcf3fffff]
[    0.000000]        [0xfcf5db000-0xfcf5fffff]
[    0.000000]        [0xfcf7db000-0xfcf7fffff]
[    0.000000]        [0xfcf9db000-0xfcf9fffff]
[    0.000000]        [0xfcfbdb000-0xfcfbfffff]
[    0.000000]        [0xfcfddb000-0xfcfdfffff]
[    0.000000]        [0xfcffdb000-0xfcfffffff]
[    0.000000]        [0xfd01db000-0xfd01fffff]
[    0.000000]        [0xfd03db000-0xfd03fffff]
[    0.000000]        [0xfd05db000-0xfd05fffff]
[    0.000000]        [0xfd07db000-0xfd07fffff]
[    0.000000]        [0xfd09db000-0xfd09fffff]
[    0.000000]        [0xfd0bdb000-0xfd0bfffff]
[    0.000000]        [0xfd0ddb000-0xfd0dfffff]
[    0.000000]        [0xfd0fdb000-0xfd0ffffff]
[    0.000000]        [0xfd11db000-0xfd11fffff]
[    0.000000]        [0xfd13db000-0xfd13fffff]
[    0.000000]        [0xfd15db000-0xfd15fffff]
[    0.000000]        [0xfd17db000-0xfd17fffff]
[    0.000000]        [0xfd19db000-0xfd19fffff]
[    0.000000]        [0xfd1bdb000-0xfd1bfffff]
[    0.000000]        [0xfd1ddb000-0xfd1dfffff]
[    0.000000]        [0xfd1fdb000-0xfd1ffffff]
[    0.000000]        [0xfd21db000-0xfd21fffff]
[    0.000000]        [0xfd23db000-0xfd23fffff]
[    0.000000]        [0xfd25db000-0xfd25fffff]
[    0.000000]        [0xfd27db000-0xfd27fffff]
[    0.000000]        [0xfd29db000-0xfd29fffff]
[    0.000000]        [0xfd2bdb000-0xfd2bfffff]
[    0.000000]        [0xfd2ddb000-0xfd2dfffff]
[    0.000000]        [0xfd2fdb000-0xfd2ffffff]
[    0.000000]        [0xfd31db000-0xfd31fffff]
[    0.000000]        [0xfd33db000-0xfd33fffff]
[    0.000000]        [0xfd35db000-0xfd35fffff]
[    0.000000]        [0xfd37db000-0xfd37fffff]
[    0.000000]        [0xfd39db000-0xfd39fffff]
[    0.000000]        [0xfd3bdb000-0xfd3bfffff]
[    0.000000]        [0xfd3ddb000-0xfd3dfffff]
[    0.000000]        [0xfd3fdb000-0xfd3ffffff]
[    0.000000]        [0xfd41db000-0xfd41fffff]
[    0.000000]        [0xfd43db000-0xfd43fffff]
[    0.000000]        [0xfd45db000-0xfd45fffff]
[    0.000000]        [0xfd47db000-0xfd47fffff]
[    0.000000]        [0xfd49db000-0xfd49fffff]
[    0.000000]        [0xfd4bdb000-0xfd4bfffff]
[    0.000000]        [0xfd4ddb000-0xfd4dfffff]
[    0.000000]        [0xfd4fdb000-0xfd4ffffff]
[    0.000000]        [0xfd51db000-0xfd51fffff]
[    0.000000]        [0xfd53db000-0xfd53fffff]
[    0.000000]        [0xfd55db000-0xfd55fffff]
[    0.000000]        [0xfd57db000-0xfd57fffff]
[    0.000000]        [0xfd59db000-0xfd59fffff]
[    0.000000]        [0xfd5bdb000-0xfd5bfffff]
[    0.000000]        [0xfd5ddb000-0xfd5dfffff]
[    0.000000]        [0xfd5fdb000-0xfd5ffffff]
[    0.000000]        [0xfd61db000-0xfd61fffff]
[    0.000000]        [0xfd63db000-0xfd63fffff]
[    0.000000]        [0xfd65db000-0xfd65fffff]
[    0.000000]        [0xfd67db000-0xfd67fffff]
[    0.000000]        [0xfd69db000-0xfd69fffff]
[    0.000000]        [0xfd6bdb000-0xfd6bfffff]
[    0.000000]        [0xfd6ddb000-0xfd6dfffff]
[    0.000000]        [0xfd6fdb000-0xfd6ffffff]
[    0.000000]        [0xfd71db000-0xfd71fffff]
[    0.000000]        [0xfd73db000-0xfd73fffff]
[    0.000000]        [0xfd75db000-0xfd75fffff]
[    0.000000]        [0xfd77db000-0xfd77fffff]
[    0.000000]        [0xfd79db000-0xfd79fffff]
[    0.000000]        [0x1017a00000-0x1017ebdfff]
[    0.000000]        [0x101f7fb000-0x101fbcffff]
[    0.000000]        [0x101fbd6000-0x101fe5cfff]
[    0.000000]        [0x101fec6000-0x101fec8fff]
[    0.000000] BUG: unable to handle kernel paging request at ffff88101fec7748
[    0.000000] IP: [<ffffffff81d989c8>] __next_free_mem_range+0xdc/0x181
[    0.000000] PGD 25dc063 PUD 101f6fa067 PMD 101f7fa067 PTE 800000101fec7160
[    0.000000] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
[    0.000000] Modules linked in:
[    0.000000] CPU 0 
[    0.000000] Pid: 0, comm: swapper Not tainted 3.5.0-rc3-yh-02558-g501d7f9-dirty #382 Bochs Bochs
[    0.000000] RIP: 0010:[<ffffffff81d989c8>]  [<ffffffff81d989c8>] __next_free_mem_range+0xdc/0x181
[    0.000000] RSP: 0000:ffffffff825cdde8  EFLAGS: 00010006
[    0.000000] RAX: 0000000000000000 RBX: ffffffff825cde90 RCX: 0000000000000002
[    0.000000] RDX: ffffffff825cde80 RSI: 0000001020000000 RDI: ffffffff82742010
[    0.000000] RBP: ffffffff825cde58 R08: 0000000000000000 R09: 0000000100000000
[    0.000000] R10: 0000000000000000 R11: 0000000000000109 R12: ffffffff825cde88
[    0.000000] R13: 0000000000000109 R14: ffff88101fec7758 R15: 000000000000011d
[    0.000000] FS:  0000000000000000(0000) GS:ffff880fb7e00000(0000) knlGS:0000000000000000
[    0.000000] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[    0.000000] CR2: ffff88101fec7748 CR3: 00000000025db000 CR4: 00000000000006b0
[    0.000000] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[    0.000000] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[    0.000000] Process swapper (pid: 0, threadinfo ffffffff825cc000, task ffffffff825e3410)
[    0.000000] Stack:
[    0.000000]  000000000101fec9 ffff88101fec5e80 000000000000011e ffffffff82741fe0
[    0.000000]  0000000000000003 ffffffff825cde80 00000400825cde58 0000010900000002
[    0.000000]  0000000001020000 0000000000f917a7 ffffffff825cde90 ffffffff825cde80
[    0.000000] Call Trace:
[    0.000000]  [<ffffffff829507be>] free_low_memory_core_early+0x9d/0xbb
[    0.000000]  [<ffffffff82946690>] numa_free_all_bootmem+0x7f/0x8a
[    0.000000]  [<ffffffff81dea5e5>] ? bad_to_user+0x40f/0x40f
[    0.000000]  [<ffffffff82945092>] mem_init+0x1e/0xf1
[    0.000000]  [<ffffffff82930cbd>] start_kernel+0x203/0x3c6
[    0.000000]  [<ffffffff829308c5>] ? obsolete_checksetup+0xab/0xab
[    0.000000]  [<ffffffff81d992e2>] ? __memblock_reserve+0x81/0x89
[    0.000000]  [<ffffffff829302de>] x86_64_start_reservations+0xa4/0xa8
[    0.000000]  [<ffffffff829304b8>] x86_64_start_kernel+0x1d6/0x1e1
[    0.000000] Code: 08 81 7d c4 00 04 00 00 0f 84 89 00 00 00 8b 45 c4 3b 47 10 0f 85 8a 00 00 00 eb 7b 4d 6b f3 18 31 c0 4c 03 75 98 45 85 ed 74 08 <49> 8b 46 f0 49 03 46 e8 48 83 ca ff 4d 39 fb 73 03 49 8b 16 48 
[    0.000000] RIP  [<ffffffff81d989c8>] __next_free_mem_range+0xdc/0x181
[    0.000000]  RSP <ffffffff825cdde8>
[    0.000000] CR2: ffff88101fec7748
[    0.000000] ---[ end trace a7919e7f17c0a725 ]---
[    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!

[-- Attachment #3: boot_log_after_patch.txt --]
[-- Type: text/plain, Size: 87201 bytes --]

Probing EDD (edd=off to disable)... ok

Decompressing Linux... xz... Parsing ELF... done.
Booting the kernel.
[    0.000000] bootconsole [uart0] enabled
[    0.000000]    real_mode_data :      phys 0000000000014530
[    0.000000]    real_mode_data :      virt ffff880000014530
[    0.000000]       boot_params : init virt ffffffff82a8e750
[    0.000000]       boot_params :      phys 0000000002a8e750
[    0.000000]       boot_params :      virt ffff880002a8e750
[    0.000000] boot_command_line : init virt ffffffff8297d000
[    0.000000] boot_command_line :      phys 000000000297d000
[    0.000000] boot_command_line :      virt ffff88000297d000
[    0.000000] memblock_reserve: [0x01000000-0x0382ffff] TEXT DATA BSS
[    0.000000] memblock_reserve: [0x7d992000-0x7fffefff] RAMDISK
[    0.000000] memblock_reserve: [0x0009f400-0x000fffff] * BIOS reserved
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.5.0-rc3-yh-02558-g501d7f9-dirty (yhlu@linux-siqj.site) (gcc version 4.6.2 (SUSE Linux) ) #383 SMP Thu Jun 21 18:30:28 PDT 2012
[    0.000000] Command line: BOOT_IMAGE=linux ignore_loglevel initcall_debug acpi.debug_layer=0xffff0000 pci=routeirq apic=debug numa=off ramdisk_size=262144 root=/dev/ram0 rw ip=dhcp console=uart8250,io,0x3f8,115200 initrd=initrd.img
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] Physical RAM map:
[    0.000000] raw: [mem 0x0000000000000000-0x000000000009f3ff] usable
[    0.000000] raw: [mem 0x000000000009f400-0x000000000009ffff] reserved
[    0.000000] raw: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] raw: [mem 0x0000000000100000-0x00000000dfff3fff] usable
[    0.000000] raw: [mem 0x00000000dfff4000-0x00000000dfffffff] reserved
[    0.000000] raw: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[    0.000000] raw: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[    0.000000] raw: [mem 0x0000000100000000-0x000000101fffffff] usable
[    0.000000] e820: BIOS-provided physical RAM map (sanitized by setup):
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009f3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009f400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000dfff3fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000dfff4000-0x00000000dfffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000101fffffff] usable
[    0.000000] debug: ignoring loglevel setting.
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] e820: update [mem 0x0009f000-0x0009f3ff] usable ==> reserved
[    0.000000] aligned physical RAM map:
[    0.000000] aligned: [mem 0x0000000000000000-0x000000000009efff] usable
[    0.000000] aligned: [mem 0x000000000009f000-0x000000000009ffff] reserved
[    0.000000] aligned: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] aligned: [mem 0x0000000000100000-0x00000000dfff3fff] usable
[    0.000000] aligned: [mem 0x00000000dfff4000-0x00000000dfffffff] reserved
[    0.000000] aligned: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[    0.000000] aligned: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[    0.000000] aligned: [mem 0x0000000100000000-0x000000101fffffff] usable
[    0.000000] DMI 2.4 present.
[    0.000000] DMI: Bochs Bochs, BIOS Bochs 01/01/2007
[    0.000000] e820: update [mem 0x00000000-0x0000ffff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] No AGP bridge found
[    0.000000] e820: last_pfn = 0x1020000 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: write-back
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 00E0000000 mask FFE0000000 uncachable
[    0.000000]   1 disabled
[    0.000000]   2 disabled
[    0.000000]   3 disabled
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] PAT not supported by CPU.
[    0.000000] e820: last_pfn = 0xdfff4 max_arch_pfn = 0x400000000
[    0.000000] Scan for SMP in [mem 0x00000000-0x000003ff]
[    0.000000] Scan for SMP in [mem 0x0009fc00-0x0009ffff]
[    0.000000] Scan for SMP in [mem 0x000f0000-0x000fffff]
[    0.000000] found SMP MP-table at [mem 0x000fd700-0x000fd70f] mapped at [ffff8800000fd700]
[    0.000000] memblock_reserve: [0x000fd700-0x000fd70f] * MP-table mpf
[    0.000000]   mpc: f1300-f27a4
[    0.000000] memblock_reserve: [0x000f1300-0x000f27a3] * MP-table mpc
[    0.000000] memblock_reserve: [0x03830000-0x03830048] BRK
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff83000 reserved size = 0x4efdc49
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]     [0x00010000-0x0009efff], 0x8f000 bytes
[    0.000000]  memory[0x1]     [0x00100000-0xdfff3fff], 0xdfef4000 bytes
[    0.000000]  memory[0x2]     [0x100000000-0x101fffffff], 0xf20000000 bytes
[    0.000000]  reserved.cnt  = 0x3
[    0.000000]  reserved[0x0]   [0x0009f400-0x000fffff], 0x60c00 bytes
[    0.000000]  reserved[0x1]   [0x01000000-0x03830048], 0x2830049 bytes
[    0.000000]  reserved[0x2]   [0x7d992000-0x7fffefff], 0x266d000 bytes
[    0.000000] initial memory mapped: [mem 0x00000000-0x1fffffff]
[    0.000000] memblock_reserve: [0x00099000-0x0009efff] TRAMPOLINE
[    0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[    0.000000] init_memory_mapping: [mem 0x00000000-0xdfff3fff]
[    0.000000]  [mem 0x00000000-0xdfff3fff] page 4k
[    0.000000] kernel direct mapping tables up to 0xdfff3fff @ [mem 0xdf8ef000-0xdfff3fff]
[    0.000000] memblock_reserve: [0xdf8ef000-0xdfff1fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x100000000-0x101fffffff]
[    0.000000]  [mem 0x100000000-0x101fffffff] page 4k
[    0.000000] kernel direct mapping tables up to 0x101fffffff @ [mem 0x1017ebe000-0x101fffffff]
[    0.000000] memblock_reserve: [0x1017ebe000-0x101f7fafff] PGTABLE
[    0.000000] RAMDISK: [mem 0x7d992000-0x7fffefff]
[    0.000000] ACPI: RSDP 00000000000fd6b0 00014 (v00 BOCHS )
[    0.000000] ACPI: RSDT 00000000dfff41a0 00034 (v01 BOCHS  BXPCRSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: FACP 00000000dfffd140 00074 (v01 BOCHS  BXPCFACP 00000001 BXPC 00000001)
[    0.000000] ACPI: DSDT 00000000dfffab70 02589 (v01   BXPC   BXDSDT 00000001 INTL 20100528)
[    0.000000] ACPI: FACS 00000000dfffd100 00040
[    0.000000] ACPI: SSDT 00000000dfff4af0 0607B (v01 BOCHS  BXPCSSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: APIC 00000000dfff4220 0085A (v01 BOCHS  BXPCAPIC 00000001 BXPC 00000001)
[    0.000000] ACPI: HPET 00000000dfff41e0 00038 (v01 BOCHS  BXPCHPET 00000001 BXPC 00000001)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] mapped APIC to ffffffffff5fb000 (        fee00000)
[    0.000000] NUMA turned off
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000101fffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x101fffffff]
[    0.000000] memblock_reserve: [0x101ffd9000-0x101fffffff] 
[    0.000000]   NODE_DATA [mem 0x101ffd9000-0x101fffffff]
[    0.000000] MEMBLOCK configuration:
[    0.000000]  memory size = 0xffff83000 reserved size = 0xcf6ac49
[    0.000000]  memory.cnt  = 0x3
[    0.000000]  memory[0x0]     [0x00010000-0x0009efff], 0x8f000 bytes on node 0
[    0.000000]  memory[0x1]     [0x00100000-0xdfff3fff], 0xdfef4000 bytes on node 0
[    0.000000]  memory[0x2]     [0x100000000-0x101fffffff], 0xf20000000 bytes on node 0
[    0.000000]  reserved.cnt  = 0x7
[    0.000000]  reserved[0x0]   [0x00099000-0x0009efff], 0x6000 bytes
[    0.000000]  reserved[0x1]   [0x0009f400-0x000fffff], 0x60c00 bytes
[    0.000000]  reserved[0x2]   [0x01000000-0x03830048], 0x2830049 bytes
[    0.000000]  reserved[0x3]   [0x7d992000-0x7fffefff], 0x266d000 bytes
[    0.000000]  reserved[0x4]   [0xdf8ef000-0xdfff1fff], 0x703000 bytes
[    0.000000]  reserved[0x5]   [0x1017ebe000-0x101f7fafff], 0x793d000 bytes
[    0.000000]  reserved[0x6]   [0x101ffd9000-0x101fffffff], 0x27000 bytes
[    0.000000] memblock_reserve: [0x101ffd8000-0x101ffd8fff] sparse section
[    0.000000] memblock_reserve: [0x101ffd7000-0x101ffd7fff] sparse section
[    0.000000] memblock_reserve: [0x101ffd6000-0x101ffd6fff] sparse section
[    0.000000] memblock_reserve: [0x101fbd6000-0x101ffd5fff] usemap_map
[    0.000000] memblock_reserve: [0x101fbd3000-0x101fbd5fff] usemap section
[    0.000000] memblock_reserve: [0x1017abe000-0x1017ebdfff] map_map
[    0.000000] memblock_reserve: [0xfd7a00000-0x10179fffff] vmemmap buf
[    0.000000] memblock_reserve: [0x101fbd2000-0x101fbd2fff] vmemmap block
[    0.000000]  [ffffea0000000000-ffffea7fffffffff] PGD -> ffff88101fbd2000 on node 0
[    0.000000] memblock_reserve: [0x101fbd1000-0x101fbd1fff] vmemmap block
[    0.000000]  [ffffea0000000000-ffffea003fffffff] PUD -> ffff88101fbd1000 on node 0
[    0.000000] memblock_reserve: [0x101fbd0000-0x101fbd0fff] vmemmap block
[    0.000000]  [ffffea0040000000-ffffea007fffffff] PUD -> ffff88101fbd0000 on node 0
[    0.000000]    memblock_free: [0x1017a00000-0x10179fffff]
[    0.000000]  [ffffea0000000000-ffffea00407fffff] PMD -> [ffff880fd7a00000-ffff8810179fffff] on node 0
[    0.000000]    memblock_free: [0x1017abe000-0x1017ebdfff]
[    0.000000]    memblock_free: [0x101fbd6000-0x101ffd5fff]Zone ranges:
[    0.000000]   DMA      [mem 0x00010000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x101fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00010000-0x0009efff]
[    0.000000]   node   0: [mem 0x00100000-0xdfff3fff]
[    0.000000]   node   0: [mem 0x100000000-0x101fffffff]
[    0.000000] start - node_states[2]: 
[    0.000000] On node 0 totalpages: 16777091
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 6 pages reserved
[    0.000000]   DMA zone: 3913 pages, LIFO batch:0
[    0.000000] memblock_reserve: [0x101ff7e000-0x101ffd5fff] pgdat
[    0.000000]   DMA32 zone: 16320 pages used for memmap
[    0.000000]   DMA32 zone: 897076 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x101ff26000-0x101ff7dfff] pgdat
[    0.000000]   Normal zone: 247808 pages used for memmap
[    0.000000]   Normal zone: 15611904 pages, LIFO batch:31
[    0.000000] memblock_reserve: [0x101fece000-0x101ff25fff] pgdat
[    0.000000] after - node_states[2]: 0
[    0.000000] memblock_reserve: [0x101fecd000-0x101fecdfff] pgtable
[    0.000000] ACPI: PM-Timer IO Port: 0xb008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] mapped APIC to ffffffffff5fb000 (        fee00000)
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x05] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x06] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x07] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x08] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x09] lapic_id[0x09] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x0a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x0b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x0c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x0d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x0e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x0f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x10] lapic_id[0x10] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x11] lapic_id[0x11] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x12] lapic_id[0x12] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x13] lapic_id[0x13] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x14] lapic_id[0x14] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x15] lapic_id[0x15] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x16] lapic_id[0x16] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x17] lapic_id[0x17] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x18] lapic_id[0x18] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x19] lapic_id[0x19] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x1a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x1b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x1c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x1d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x1e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x1f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x20] lapic_id[0x20] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x21] lapic_id[0x21] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x22] lapic_id[0x22] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x23] lapic_id[0x23] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x24] lapic_id[0x24] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x25] lapic_id[0x25] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x26] lapic_id[0x26] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x27] lapic_id[0x27] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x28] lapic_id[0x28] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x29] lapic_id[0x29] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2a] lapic_id[0x2a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2b] lapic_id[0x2b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2c] lapic_id[0x2c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2d] lapic_id[0x2d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2e] lapic_id[0x2e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x2f] lapic_id[0x2f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x30] lapic_id[0x30] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x31] lapic_id[0x31] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x32] lapic_id[0x32] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x33] lapic_id[0x33] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x34] lapic_id[0x34] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x35] lapic_id[0x35] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x36] lapic_id[0x36] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x37] lapic_id[0x37] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x38] lapic_id[0x38] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x39] lapic_id[0x39] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3a] lapic_id[0x3a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3b] lapic_id[0x3b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3c] lapic_id[0x3c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3d] lapic_id[0x3d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3e] lapic_id[0x3e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x3f] lapic_id[0x3f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x40] lapic_id[0x40] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x41] lapic_id[0x41] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x42] lapic_id[0x42] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x43] lapic_id[0x43] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x44] lapic_id[0x44] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x45] lapic_id[0x45] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x46] lapic_id[0x46] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x47] lapic_id[0x47] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x48] lapic_id[0x48] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x49] lapic_id[0x49] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4a] lapic_id[0x4a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4b] lapic_id[0x4b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4c] lapic_id[0x4c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4d] lapic_id[0x4d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4e] lapic_id[0x4e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x4f] lapic_id[0x4f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x50] lapic_id[0x50] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x51] lapic_id[0x51] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x52] lapic_id[0x52] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x53] lapic_id[0x53] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x54] lapic_id[0x54] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x55] lapic_id[0x55] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x56] lapic_id[0x56] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x57] lapic_id[0x57] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x58] lapic_id[0x58] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x59] lapic_id[0x59] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5a] lapic_id[0x5a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5b] lapic_id[0x5b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5c] lapic_id[0x5c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5d] lapic_id[0x5d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5e] lapic_id[0x5e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x5f] lapic_id[0x5f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x60] lapic_id[0x60] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x61] lapic_id[0x61] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x62] lapic_id[0x62] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x63] lapic_id[0x63] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x64] lapic_id[0x64] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x65] lapic_id[0x65] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x66] lapic_id[0x66] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x67] lapic_id[0x67] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x68] lapic_id[0x68] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x69] lapic_id[0x69] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6a] lapic_id[0x6a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6b] lapic_id[0x6b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6c] lapic_id[0x6c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6d] lapic_id[0x6d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6e] lapic_id[0x6e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x6f] lapic_id[0x6f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x70] lapic_id[0x70] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x71] lapic_id[0x71] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x72] lapic_id[0x72] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x73] lapic_id[0x73] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x74] lapic_id[0x74] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x75] lapic_id[0x75] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x76] lapic_id[0x76] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x77] lapic_id[0x77] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x78] lapic_id[0x78] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x79] lapic_id[0x79] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7a] lapic_id[0x7a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7b] lapic_id[0x7b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7c] lapic_id[0x7c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7d] lapic_id[0x7d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7e] lapic_id[0x7e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x7f] lapic_id[0x7f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x80] lapic_id[0x80] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x81] lapic_id[0x81] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x82] lapic_id[0x82] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x83] lapic_id[0x83] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x84] lapic_id[0x84] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x85] lapic_id[0x85] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x86] lapic_id[0x86] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x87] lapic_id[0x87] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x88] lapic_id[0x88] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x89] lapic_id[0x89] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8a] lapic_id[0x8a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8b] lapic_id[0x8b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8c] lapic_id[0x8c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8d] lapic_id[0x8d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8e] lapic_id[0x8e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x8f] lapic_id[0x8f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x90] lapic_id[0x90] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x91] lapic_id[0x91] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x92] lapic_id[0x92] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x93] lapic_id[0x93] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x94] lapic_id[0x94] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x95] lapic_id[0x95] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x96] lapic_id[0x96] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x97] lapic_id[0x97] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x98] lapic_id[0x98] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x99] lapic_id[0x99] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9a] lapic_id[0x9a] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9b] lapic_id[0x9b] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9c] lapic_id[0x9c] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9d] lapic_id[0x9d] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9e] lapic_id[0x9e] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x9f] lapic_id[0x9f] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa0] lapic_id[0xa0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa1] lapic_id[0xa1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa2] lapic_id[0xa2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa3] lapic_id[0xa3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa4] lapic_id[0xa4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa5] lapic_id[0xa5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa6] lapic_id[0xa6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa7] lapic_id[0xa7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa8] lapic_id[0xa8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xa9] lapic_id[0xa9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xaa] lapic_id[0xaa] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xab] lapic_id[0xab] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xac] lapic_id[0xac] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xad] lapic_id[0xad] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xae] lapic_id[0xae] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xaf] lapic_id[0xaf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb0] lapic_id[0xb0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb1] lapic_id[0xb1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb2] lapic_id[0xb2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb3] lapic_id[0xb3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb4] lapic_id[0xb4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb5] lapic_id[0xb5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb6] lapic_id[0xb6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb7] lapic_id[0xb7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb8] lapic_id[0xb8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xb9] lapic_id[0xb9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xba] lapic_id[0xba] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbb] lapic_id[0xbb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbc] lapic_id[0xbc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbd] lapic_id[0xbd] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbe] lapic_id[0xbe] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xbf] lapic_id[0xbf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc0] lapic_id[0xc0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc1] lapic_id[0xc1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc2] lapic_id[0xc2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc3] lapic_id[0xc3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc4] lapic_id[0xc4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc5] lapic_id[0xc5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc6] lapic_id[0xc6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc7] lapic_id[0xc7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc8] lapic_id[0xc8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xc9] lapic_id[0xc9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xca] lapic_id[0xca] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcb] lapic_id[0xcb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcc] lapic_id[0xcc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcd] lapic_id[0xcd] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xce] lapic_id[0xce] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xcf] lapic_id[0xcf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd0] lapic_id[0xd0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd1] lapic_id[0xd1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd2] lapic_id[0xd2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd3] lapic_id[0xd3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd4] lapic_id[0xd4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd5] lapic_id[0xd5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd6] lapic_id[0xd6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd7] lapic_id[0xd7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd8] lapic_id[0xd8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xd9] lapic_id[0xd9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xda] lapic_id[0xda] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdb] lapic_id[0xdb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdc] lapic_id[0xdc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdd] lapic_id[0xdd] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xde] lapic_id[0xde] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xdf] lapic_id[0xdf] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe0] lapic_id[0xe0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe1] lapic_id[0xe1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe2] lapic_id[0xe2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe3] lapic_id[0xe3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe4] lapic_id[0xe4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe5] lapic_id[0xe5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe6] lapic_id[0xe6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe7] lapic_id[0xe7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe8] lapic_id[0xe8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xe9] lapic_id[0xe9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xea] lapic_id[0xea] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xeb] lapic_id[0xeb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xec] lapic_id[0xec] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xed] lapic_id[0xed] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xee] lapic_id[0xee] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xef] lapic_id[0xef] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf0] lapic_id[0xf0] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf1] lapic_id[0xf1] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf2] lapic_id[0xf2] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf3] lapic_id[0xf3] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf4] lapic_id[0xf4] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf5] lapic_id[0xf5] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf6] lapic_id[0xf6] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf7] lapic_id[0xf7] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf8] lapic_id[0xf8] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xf9] lapic_id[0xf9] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfa] lapic_id[0xfa] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfb] lapic_id[0xfb] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfc] lapic_id[0xfc] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0xfd] lapic_id[0xfd] enabled)
[    0.000000] ACPI: IOAPIC (id[0xfe] address[0xfec00000] gsi_base[0])
[    0.000000] mapped IOAPIC to ffffffffff5fa000 (fec00000)
[    0.000000] IOAPIC[0]: apic_id 254, version 17, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 00, APIC ID fe, APIC INT 02
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 05, APIC ID fe, APIC INT 05
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 09, APIC ID fe, APIC INT 09
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 0a, APIC ID fe, APIC INT 0a
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[    0.000000] Int: type 0, pol 1, trig 3, bus 00, IRQ 0b, APIC ID fe, APIC INT 0b
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 01, APIC ID fe, APIC INT 01
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 03, APIC ID fe, APIC INT 03
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 04, APIC ID fe, APIC INT 04
[    0.000000] ACPI: IRQ5 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 06, APIC ID fe, APIC INT 06
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 07, APIC ID fe, APIC INT 07
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 08, APIC ID fe, APIC INT 08
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] ACPI: IRQ10 used by override.
[    0.000000] ACPI: IRQ11 used by override.
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0c, APIC ID fe, APIC INT 0c
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0d, APIC ID fe, APIC INT 0d
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0e, APIC ID fe, APIC INT 0e
[    0.000000] Int: type 0, pol 0, trig 0, bus 00, IRQ 0f, APIC ID fe, APIC INT 0f
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] memblock_reserve: [0x101feccf80-0x101feccfc0] hpet res
[    0.000000] smpboot: Allowing 254 CPUs, 0 hotplug CPUs
[    0.000000] init_cpu_to_node:
[    0.000000] cpu 0 -> apicid 0x0 -> node 0
[    0.000000] cpu 1 -> apicid 0x1 -> node 0
[    0.000000] cpu 2 -> apicid 0x2 -> node 0
[    0.000000] cpu 3 -> apicid 0x3 -> node 0
[    0.000000] cpu 4 -> apicid 0x4 -> node 0
[    0.000000] cpu 5 -> apicid 0x5 -> node 0
[    0.000000] cpu 6 -> apicid 0x6 -> node 0
[    0.000000] cpu 7 -> apicid 0x7 -> node 0
[    0.000000] cpu 8 -> apicid 0x8 -> node 0
[    0.000000] cpu 9 -> apicid 0x9 -> node 0
[    0.000000] cpu 10 -> apicid 0xa -> node 0
[    0.000000] cpu 11 -> apicid 0xb -> node 0
[    0.000000] cpu 12 -> apicid 0xc -> node 0
[    0.000000] cpu 13 -> apicid 0xd -> node 0
[    0.000000] cpu 14 -> apicid 0xe -> node 0
[    0.000000] cpu 15 -> apicid 0xf -> node 0
[    0.000000] cpu 16 -> apicid 0x10 -> node 0
[    0.000000] cpu 17 -> apicid 0x11 -> node 0
[    0.000000] cpu 18 -> apicid 0x12 -> node 0
[    0.000000] cpu 19 -> apicid 0x13 -> node 0
[    0.000000] cpu 20 -> apicid 0x14 -> node 0
[    0.000000] cpu 21 -> apicid 0x15 -> node 0
[    0.000000] cpu 22 -> apicid 0x16 -> node 0
[    0.000000] cpu 23 -> apicid 0x17 -> node 0
[    0.000000] cpu 24 -> apicid 0x18 -> node 0
[    0.000000] cpu 25 -> apicid 0x19 -> node 0
[    0.000000] cpu 26 -> apicid 0x1a -> node 0
[    0.000000] cpu 27 -> apicid 0x1b -> node 0
[    0.000000] cpu 28 -> apicid 0x1c -> node 0
[    0.000000] cpu 29 -> apicid 0x1d -> node 0
[    0.000000] cpu 30 -> apicid 0x1e -> node 0
[    0.000000] cpu 31 -> apicid 0x1f -> node 0
[    0.000000] cpu 32 -> apicid 0x20 -> node 0
[    0.000000] cpu 33 -> apicid 0x21 -> node 0
[    0.000000] cpu 34 -> apicid 0x22 -> node 0
[    0.000000] cpu 35 -> apicid 0x23 -> node 0
[    0.000000] cpu 36 -> apicid 0x24 -> node 0
[    0.000000] cpu 37 -> apicid 0x25 -> node 0
[    0.000000] cpu 38 -> apicid 0x26 -> node 0
[    0.000000] cpu 39 -> apicid 0x27 -> node 0
[    0.000000] cpu 40 -> apicid 0x28 -> node 0
[    0.000000] cpu 41 -> apicid 0x29 -> node 0
[    0.000000] cpu 42 -> apicid 0x2a -> node 0
[    0.000000] cpu 43 -> apicid 0x2b -> node 0
[    0.000000] cpu 44 -> apicid 0x2c -> node 0
[    0.000000] cpu 45 -> apicid 0x2d -> node 0
[    0.000000] cpu 46 -> apicid 0x2e -> node 0
[    0.000000] cpu 47 -> apicid 0x2f -> node 0
[    0.000000] cpu 48 -> apicid 0x30 -> node 0
[    0.000000] cpu 49 -> apicid 0x31 -> node 0
[    0.000000] cpu 50 -> apicid 0x32 -> node 0
[    0.000000] cpu 51 -> apicid 0x33 -> node 0
[    0.000000] cpu 52 -> apicid 0x34 -> node 0
[    0.000000] cpu 53 -> apicid 0x35 -> node 0
[    0.000000] cpu 54 -> apicid 0x36 -> node 0
[    0.000000] cpu 55 -> apicid 0x37 -> node 0
[    0.000000] cpu 56 -> apicid 0x38 -> node 0
[    0.000000] cpu 57 -> apicid 0x39 -> node 0
[    0.000000] cpu 58 -> apicid 0x3a -> node 0
[    0.000000] cpu 59 -> apicid 0x3b -> node 0
[    0.000000] cpu 60 -> apicid 0x3c -> node 0
[    0.000000] cpu 61 -> apicid 0x3d -> node 0
[    0.000000] cpu 62 -> apicid 0x3e -> node 0
[    0.000000] cpu 63 -> apicid 0x3f -> node 0
[    0.000000] cpu 64 -> apicid 0x40 -> node 0
[    0.000000] cpu 65 -> apicid 0x41 -> node 0
[    0.000000] cpu 66 -> apicid 0x42 -> node 0
[    0.000000] cpu 67 -> apicid 0x43 -> node 0
[    0.000000] cpu 68 -> apicid 0x44 -> node 0
[    0.000000] cpu 69 -> apicid 0x45 -> node 0
[    0.000000] cpu 70 -> apicid 0x46 -> node 0
[    0.000000] cpu 71 -> apicid 0x47 -> node 0
[    0.000000] cpu 72 -> apicid 0x48 -> node 0
[    0.000000] cpu 73 -> apicid 0x49 -> node 0
[    0.000000] cpu 74 -> apicid 0x4a -> node 0
[    0.000000] cpu 75 -> apicid 0x4b -> node 0
[    0.000000] cpu 76 -> apicid 0x4c -> node 0
[    0.000000] cpu 77 -> apicid 0x4d -> node 0
[    0.000000] cpu 78 -> apicid 0x4e -> node 0
[    0.000000] cpu 79 -> apicid 0x4f -> node 0
[    0.000000] cpu 80 -> apicid 0x50 -> node 0
[    0.000000] cpu 81 -> apicid 0x51 -> node 0
[    0.000000] cpu 82 -> apicid 0x52 -> node 0
[    0.000000] cpu 83 -> apicid 0x53 -> node 0
[    0.000000] cpu 84 -> apicid 0x54 -> node 0
[    0.000000] cpu 85 -> apicid 0x55 -> node 0
[    0.000000] cpu 86 -> apicid 0x56 -> node 0
[    0.000000] cpu 87 -> apicid 0x57 -> node 0
[    0.000000] cpu 88 -> apicid 0x58 -> node 0
[    0.000000] cpu 89 -> apicid 0x59 -> node 0
[    0.000000] cpu 90 -> apicid 0x5a -> node 0
[    0.000000] cpu 91 -> apicid 0x5b -> node 0
[    0.000000] cpu 92 -> apicid 0x5c -> node 0
[    0.000000] cpu 93 -> apicid 0x5d -> node 0
[    0.000000] cpu 94 -> apicid 0x5e -> node 0
[    0.000000] cpu 95 -> apicid 0x5f -> node 0
[    0.000000] cpu 96 -> apicid 0x60 -> node 0
[    0.000000] cpu 97 -> apicid 0x61 -> node 0
[    0.000000] cpu 98 -> apicid 0x62 -> node 0
[    0.000000] cpu 99 -> apicid 0x63 -> node 0
[    0.000000] cpu 100 -> apicid 0x64 -> node 0
[    0.000000] cpu 101 -> apicid 0x65 -> node 0
[    0.000000] cpu 102 -> apicid 0x66 -> node 0
[    0.000000] cpu 103 -> apicid 0x67 -> node 0
[    0.000000] cpu 104 -> apicid 0x68 -> node 0
[    0.000000] cpu 105 -> apicid 0x69 -> node 0
[    0.000000] cpu 106 -> apicid 0x6a -> node 0
[    0.000000] cpu 107 -> apicid 0x6b -> node 0
[    0.000000] cpu 108 -> apicid 0x6c -> node 0
[    0.000000] cpu 109 -> apicid 0x6d -> node 0
[    0.000000] cpu 110 -> apicid 0x6e -> node 0
[    0.000000] cpu 111 -> apicid 0x6f -> node 0
[    0.000000] cpu 112 -> apicid 0x70 -> node 0
[    0.000000] cpu 113 -> apicid 0x71 -> node 0
[    0.000000] cpu 114 -> apicid 0x72 -> node 0
[    0.000000] cpu 115 -> apicid 0x73 -> node 0
[    0.000000] cpu 116 -> apicid 0x74 -> node 0
[    0.000000] cpu 117 -> apicid 0x75 -> node 0
[    0.000000] cpu 118 -> apicid 0x76 -> node 0
[    0.000000] cpu 119 -> apicid 0x77 -> node 0
[    0.000000] cpu 120 -> apicid 0x78 -> node 0
[    0.000000] cpu 121 -> apicid 0x79 -> node 0
[    0.000000] cpu 122 -> apicid 0x7a -> node 0
[    0.000000] cpu 123 -> apicid 0x7b -> node 0
[    0.000000] cpu 124 -> apicid 0x7c -> node 0
[    0.000000] cpu 125 -> apicid 0x7d -> node 0
[    0.000000] cpu 126 -> apicid 0x7e -> node 0
[    0.000000] cpu 127 -> apicid 0x7f -> node 0
[    0.000000] cpu 128 -> apicid 0x80 -> node 0
[    0.000000] cpu 129 -> apicid 0x81 -> node 0
[    0.000000] cpu 130 -> apicid 0x82 -> node 0
[    0.000000] cpu 131 -> apicid 0x83 -> node 0
[    0.000000] cpu 132 -> apicid 0x84 -> node 0
[    0.000000] cpu 133 -> apicid 0x85 -> node 0
[    0.000000] cpu 134 -> apicid 0x86 -> node 0
[    0.000000] cpu 135 -> apicid 0x87 -> node 0
[    0.000000] cpu 136 -> apicid 0x88 -> node 0
[    0.000000] cpu 137 -> apicid 0x89 -> node 0
[    0.000000] cpu 138 -> apicid 0x8a -> node 0
[    0.000000] cpu 139 -> apicid 0x8b -> node 0
[    0.000000] cpu 140 -> apicid 0x8c -> node 0
[    0.000000] cpu 141 -> apicid 0x8d -> node 0
[    0.000000] cpu 142 -> apicid 0x8e -> node 0
[    0.000000] cpu 143 -> apicid 0x8f -> node 0
[    0.000000] cpu 144 -> apicid 0x90 -> node 0
[    0.000000] cpu 145 -> apicid 0x91 -> node 0
[    0.000000] cpu 146 -> apicid 0x92 -> node 0
[    0.000000] cpu 147 -> apicid 0x93 -> node 0
[    0.000000] cpu 148 -> apicid 0x94 -> node 0
[    0.000000] cpu 149 -> apicid 0x95 -> node 0
[    0.000000] cpu 150 -> apicid 0x96 -> node 0
[    0.000000] cpu 151 -> apicid 0x97 -> node 0
[    0.000000] cpu 152 -> apicid 0x98 -> node 0
[    0.000000] cpu 153 -> apicid 0x99 -> node 0
[    0.000000] cpu 154 -> apicid 0x9a -> node 0
[    0.000000] cpu 155 -> apicid 0x9b -> node 0
[    0.000000] cpu 156 -> apicid 0x9c -> node 0
[    0.000000] cpu 157 -> apicid 0x9d -> node 0
[    0.000000] cpu 158 -> apicid 0x9e -> node 0
[    0.000000] cpu 159 -> apicid 0x9f -> node 0
[    0.000000] cpu 160 -> apicid 0xa0 -> node 0
[    0.000000] cpu 161 -> apicid 0xa1 -> node 0
[    0.000000] cpu 162 -> apicid 0xa2 -> node 0
[    0.000000] cpu 163 -> apicid 0xa3 -> node 0
[    0.000000] cpu 164 -> apicid 0xa4 -> node 0
[    0.000000] cpu 165 -> apicid 0xa5 -> node 0
[    0.000000] cpu 166 -> apicid 0xa6 -> node 0
[    0.000000] cpu 167 -> apicid 0xa7 -> node 0
[    0.000000] cpu 168 -> apicid 0xa8 -> node 0
[    0.000000] cpu 169 -> apicid 0xa9 -> node 0
[    0.000000] cpu 170 -> apicid 0xaa -> node 0
[    0.000000] cpu 171 -> apicid 0xab -> node 0
[    0.000000] cpu 172 -> apicid 0xac -> node 0
[    0.000000] cpu 173 -> apicid 0xad -> node 0
[    0.000000] cpu 174 -> apicid 0xae -> node 0
[    0.000000] cpu 175 -> apicid 0xaf -> node 0
[    0.000000] cpu 176 -> apicid 0xb0 -> node 0
[    0.000000] cpu 177 -> apicid 0xb1 -> node 0
[    0.000000] cpu 178 -> apicid 0xb2 -> node 0
[    0.000000] cpu 179 -> apicid 0xb3 -> node 0
[    0.000000] cpu 180 -> apicid 0xb4 -> node 0
[    0.000000] cpu 181 -> apicid 0xb5 -> node 0
[    0.000000] cpu 182 -> apicid 0xb6 -> node 0
[    0.000000] cpu 183 -> apicid 0xb7 -> node 0
[    0.000000] cpu 184 -> apicid 0xb8 -> node 0
[    0.000000] cpu 185 -> apicid 0xb9 -> node 0
[    0.000000] cpu 186 -> apicid 0xba -> node 0
[    0.000000] cpu 187 -> apicid 0xbb -> node 0
[    0.000000] cpu 188 -> apicid 0xbc -> node 0
[    0.000000] cpu 189 -> apicid 0xbd -> node 0
[    0.000000] cpu 190 -> apicid 0xbe -> node 0
[    0.000000] cpu 191 -> apicid 0xbf -> node 0
[    0.000000] cpu 192 -> apicid 0xc0 -> node 0
[    0.000000] cpu 193 -> apicid 0xc1 -> node 0
[    0.000000] cpu 194 -> apicid 0xc2 -> node 0
[    0.000000] cpu 195 -> apicid 0xc3 -> node 0
[    0.000000] cpu 196 -> apicid 0xc4 -> node 0
[    0.000000] cpu 197 -> apicid 0xc5 -> node 0
[    0.000000] cpu 198 -> apicid 0xc6 -> node 0
[    0.000000] cpu 199 -> apicid 0xc7 -> node 0
[    0.000000] cpu 200 -> apicid 0xc8 -> node 0
[    0.000000] cpu 201 -> apicid 0xc9 -> node 0
[    0.000000] cpu 202 -> apicid 0xca -> node 0
[    0.000000] cpu 203 -> apicid 0xcb -> node 0
[    0.000000] cpu 204 -> apicid 0xcc -> node 0
[    0.000000] cpu 205 -> apicid 0xcd -> node 0
[    0.000000] cpu 206 -> apicid 0xce -> node 0
[    0.000000] cpu 207 -> apicid 0xcf -> node 0
[    0.000000] cpu 208 -> apicid 0xd0 -> node 0
[    0.000000] cpu 209 -> apicid 0xd1 -> node 0
[    0.000000] cpu 210 -> apicid 0xd2 -> node 0
[    0.000000] cpu 211 -> apicid 0xd3 -> node 0
[    0.000000] cpu 212 -> apicid 0xd4 -> node 0
[    0.000000] cpu 213 -> apicid 0xd5 -> node 0
[    0.000000] cpu 214 -> apicid 0xd6 -> node 0
[    0.000000] cpu 215 -> apicid 0xd7 -> node 0
[    0.000000] cpu 216 -> apicid 0xd8 -> node 0
[    0.000000] cpu 217 -> apicid 0xd9 -> node 0
[    0.000000] cpu 218 -> apicid 0xda -> node 0
[    0.000000] cpu 219 -> apicid 0xdb -> node 0
[    0.000000] cpu 220 -> apicid 0xdc -> node 0
[    0.000000] cpu 221 -> apicid 0xdd -> node 0
[    0.000000] cpu 222 -> apicid 0xde -> node 0
[    0.000000] cpu 223 -> apicid 0xdf -> node 0
[    0.000000] cpu 224 -> apicid 0xe0 -> node 0
[    0.000000] cpu 225 -> apicid 0xe1 -> node 0
[    0.000000] cpu 226 -> apicid 0xe2 -> node 0
[    0.000000] cpu 227 -> apicid 0xe3 -> node 0
[    0.000000] cpu 228 -> apicid 0xe4 -> node 0
[    0.000000] cpu 229 -> apicid 0xe5 -> node 0
[    0.000000] cpu 230 -> apicid 0xe6 -> node 0
[    0.000000] cpu 231 -> apicid 0xe7 -> node 0
[    0.000000] cpu 232 -> apicid 0xe8 -> node 0
[    0.000000] cpu 233 -> apicid 0xe9 -> node 0
[    0.000000] cpu 234 -> apicid 0xea -> node 0
[    0.000000] cpu 235 -> apicid 0xeb -> node 0
[    0.000000] cpu 236 -> apicid 0xec -> node 0
[    0.000000] cpu 237 -> apicid 0xed -> node 0
[    0.000000] cpu 238 -> apicid 0xee -> node 0
[    0.000000] cpu 239 -> apicid 0xef -> node 0
[    0.000000] cpu 240 -> apicid 0xf0 -> node 0
[    0.000000] cpu 241 -> apicid 0xf1 -> node 0
[    0.000000] cpu 242 -> apicid 0xf2 -> node 0
[    0.000000] cpu 243 -> apicid 0xf3 -> node 0
[    0.000000] cpu 244 -> apicid 0xf4 -> node 0
[    0.000000] cpu 245 -> apicid 0xf5 -> node 0
[    0.000000] cpu 246 -> apicid 0xf6 -> node 0
[    0.000000] cpu 247 -> apicid 0xf7 -> node 0
[    0.000000] cpu 248 -> apicid 0xf8 -> node 0
[    0.000000] cpu 249 -> apicid 0xf9 -> node 0
[    0.000000] cpu 250 -> apicid 0xfa -> node 0
[    0.000000] cpu 251 -> apicid 0xfb -> node 0
[    0.000000] cpu 252 -> apicid 0xfc -> node 0
[    0.000000] cpu 253 -> apicid 0xfd -> node 0
[    0.000000] memblock_reserve: [0x101feccf00-0x101feccf42] ioapic res
[    0.000000] nr_irqs_gsi: 40
[    0.000000] memblock_reserve: [0x101feccd00-0x101feccef7] e820 resources
[    0.000000] memblock_reserve: [0x101feccc80-0x101feccce7] firmware map
[    0.000000] memblock_reserve: [0x101feccc00-0x101feccc67] firmware map
[    0.000000] memblock_reserve: [0x101feccb80-0x101feccbe7] firmware map
[    0.000000] memblock_reserve: [0x101feccb00-0x101feccb67] firmware map
[    0.000000] memblock_reserve: [0x101fecca80-0x101feccae7] firmware map
[    0.000000] memblock_reserve: [0x101fecca00-0x101fecca67] firmware map
[    0.000000] memblock_reserve: [0x101fecc980-0x101fecc9e7] firmware map
[    0.000000] memblock_reserve: [0x101fecc900-0x101fecc967] firmware map
[    0.000000] memblock_reserve: [0x101fecc8c0-0x101fecc8df] nosave region
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
[    0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
[    0.000000] memblock_reserve: [0x101fecc880-0x101fecc89f] nosave region
[    0.000000] PM: Registered nosave memory: 00000000dfff4000 - 00000000e0000000
[    0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000feffc000
[    0.000000] PM: Registered nosave memory: 00000000feffc000 - 00000000ff000000
[    0.000000] PM: Registered nosave memory: 00000000ff000000 - 00000000fffc0000
[    0.000000] PM: Registered nosave memory: 00000000fffc0000 - 0000000100000000
[    0.000000] e820: [mem 0xe0000000-0xfeffbfff] available for PCI devices
[    0.000000] memblock_reserve: [0x101fecc780-0x101fecc84d] saved_command_l
[    0.000000] memblock_reserve: [0x101fecc680-0x101fecc74d] static_command_
[    0.000000] setup_percpu: NR_CPUS:4096 nr_cpumask_bits:254 nr_cpu_ids:254 nr_node_ids:1
[    0.000000] memblock_reserve: [0x101fecb680-0x101fecc67f] pcpu_alloc_info
[    0.000000] memblock_reserve: [0x101feca680-0x101fecb67f] pcpu area
[    0.000000] memblock_reserve: [0xfb7e00000-0xfd79fffff] pcpu_alloc
[    0.000000]    memblock_free: [0xfb7fdb000-0xfb7ffffff]
[    0.000000]    memblock_free: [0xfb81db000-0xfb81fffff]
[    0.000000]    memblock_free: [0xfb83db000-0xfb83fffff]
[    0.000000]    memblock_free: [0xfb85db000-0xfb85fffff]
[    0.000000]    memblock_free: [0xfb87db000-0xfb87fffff]
[    0.000000]    memblock_free: [0xfb89db000-0xfb89fffff]
[    0.000000]    memblock_free: [0xfb8bdb000-0xfb8bfffff]
[    0.000000]    memblock_free: [0xfb8ddb000-0xfb8dfffff]
[    0.000000]    memblock_free: [0xfb8fdb000-0xfb8ffffff]
[    0.000000]    memblock_free: [0xfb91db000-0xfb91fffff]
[    0.000000]    memblock_free: [0xfb93db000-0xfb93fffff]
[    0.000000]    memblock_free: [0xfb95db000-0xfb95fffff]
[    0.000000]    memblock_free: [0xfb97db000-0xfb97fffff]
[    0.000000]    memblock_free: [0xfb99db000-0xfb99fffff]
[    0.000000]    memblock_free: [0xfb9bdb000-0xfb9bfffff]
[    0.000000]    memblock_free: [0xfb9ddb000-0xfb9dfffff]
[    0.000000]    memblock_free: [0xfb9fdb000-0xfb9ffffff]
[    0.000000]    memblock_free: [0xfba1db000-0xfba1fffff]
[    0.000000]    memblock_free: [0xfba3db000-0xfba3fffff]
[    0.000000]    memblock_free: [0xfba5db000-0xfba5fffff]
[    0.000000]    memblock_free: [0xfba7db000-0xfba7fffff]
[    0.000000]    memblock_free: [0xfba9db000-0xfba9fffff]
[    0.000000]    memblock_free: [0xfbabdb000-0xfbabfffff]
[    0.000000]    memblock_free: [0xfbaddb000-0xfbadfffff]
[    0.000000]    memblock_free: [0xfbafdb000-0xfbaffffff]
[    0.000000]    memblock_free: [0xfbb1db000-0xfbb1fffff]
[    0.000000]    memblock_free: [0xfbb3db000-0xfbb3fffff]
[    0.000000]    memblock_free: [0xfbb5db000-0xfbb5fffff]
[    0.000000]    memblock_free: [0xfbb7db000-0xfbb7fffff]
[    0.000000]    memblock_free: [0xfbb9db000-0xfbb9fffff]
[    0.000000]    memblock_free: [0xfbbbdb000-0xfbbbfffff]
[    0.000000]    memblock_free: [0xfbbddb000-0xfbbdfffff]
[    0.000000]    memblock_free: [0xfbbfdb000-0xfbbffffff]
[    0.000000]    memblock_free: [0xfbc1db000-0xfbc1fffff]
[    0.000000]    memblock_free: [0xfbc3db000-0xfbc3fffff]
[    0.000000]    memblock_free: [0xfbc5db000-0xfbc5fffff]
[    0.000000]    memblock_free: [0xfbc7db000-0xfbc7fffff]
[    0.000000]    memblock_free: [0xfbc9db000-0xfbc9fffff]
[    0.000000]    memblock_free: [0xfbcbdb000-0xfbcbfffff]
[    0.000000]    memblock_free: [0xfbcddb000-0xfbcdfffff]
[    0.000000]    memblock_free: [0xfbcfdb000-0xfbcffffff]
[    0.000000]    memblock_free: [0xfbd1db000-0xfbd1fffff]
[    0.000000]    memblock_free: [0xfbd3db000-0xfbd3fffff]
[    0.000000]    memblock_free: [0xfbd5db000-0xfbd5fffff]
[    0.000000]    memblock_free: [0xfbd7db000-0xfbd7fffff]
[    0.000000]    memblock_free: [0xfbd9db000-0xfbd9fffff]
[    0.000000]    memblock_free: [0xfbdbdb000-0xfbdbfffff]
[    0.000000]    memblock_free: [0xfbdddb000-0xfbddfffff]
[    0.000000]    memblock_free: [0xfbdfdb000-0xfbdffffff]
[    0.000000]    memblock_free: [0xfbe1db000-0xfbe1fffff]
[    0.000000]    memblock_free: [0xfbe3db000-0xfbe3fffff]
[    0.000000]    memblock_free: [0xfbe5db000-0xfbe5fffff]
[    0.000000]    memblock_free: [0xfbe7db000-0xfbe7fffff]
[    0.000000]    memblock_free: [0xfbe9db000-0xfbe9fffff]
[    0.000000]    memblock_free: [0xfbebdb000-0xfbebfffff]
[    0.000000]    memblock_free: [0xfbeddb000-0xfbedfffff]
[    0.000000]    memblock_free: [0xfbefdb000-0xfbeffffff]
[    0.000000]    memblock_free: [0xfbf1db000-0xfbf1fffff]
[    0.000000]    memblock_free: [0xfbf3db000-0xfbf3fffff]
[    0.000000]    memblock_free: [0xfbf5db000-0xfbf5fffff]
[    0.000000]    memblock_free: [0xfbf7db000-0xfbf7fffff]
[    0.000000]    memblock_free: [0xfbf9db000-0xfbf9fffff]
[    0.000000]    memblock_free: [0xfbfbdb000-0xfbfbfffff]
[    0.000000]    memblock_free: [0xfbfddb000-0xfbfdfffff]
[    0.000000]    memblock_free: [0xfbffdb000-0xfbfffffff]
[    0.000000]    memblock_free: [0xfc01db000-0xfc01fffff]
[    0.000000]    memblock_free: [0xfc03db000-0xfc03fffff]
[    0.000000]    memblock_free: [0xfc05db000-0xfc05fffff]
[    0.000000]    memblock_free: [0xfc07db000-0xfc07fffff]
[    0.000000]    memblock_free: [0xfc09db000-0xfc09fffff]
[    0.000000]    memblock_free: [0xfc0bdb000-0xfc0bfffff]
[    0.000000]    memblock_free: [0xfc0ddb000-0xfc0dfffff]
[    0.000000]    memblock_free: [0xfc0fdb000-0xfc0ffffff]
[    0.000000]    memblock_free: [0xfc11db000-0xfc11fffff]
[    0.000000]    memblock_free: [0xfc13db000-0xfc13fffff]
[    0.000000]    memblock_free: [0xfc15db000-0xfc15fffff]
[    0.000000]    memblock_free: [0xfc17db000-0xfc17fffff]
[    0.000000]    memblock_free: [0xfc19db000-0xfc19fffff]
[    0.000000]    memblock_free: [0xfc1bdb000-0xfc1bfffff]
[    0.000000]    memblock_free: [0xfc1ddb000-0xfc1dfffff]
[    0.000000]    memblock_free: [0xfc1fdb000-0xfc1ffffff]
[    0.000000]    memblock_free: [0xfc21db000-0xfc21fffff]
[    0.000000]    memblock_free: [0xfc23db000-0xfc23fffff]
[    0.000000]    memblock_free: [0xfc25db000-0xfc25fffff]
[    0.000000]    memblock_free: [0xfc27db000-0xfc27fffff]
[    0.000000]    memblock_free: [0xfc29db000-0xfc29fffff]
[    0.000000]    memblock_free: [0xfc2bdb000-0xfc2bfffff]
[    0.000000]    memblock_free: [0xfc2ddb000-0xfc2dfffff]
[    0.000000]    memblock_free: [0xfc2fdb000-0xfc2ffffff]
[    0.000000]    memblock_free: [0xfc31db000-0xfc31fffff]
[    0.000000]    memblock_free: [0xfc33db000-0xfc33fffff]
[    0.000000]    memblock_free: [0xfc35db000-0xfc35fffff]
[    0.000000]    memblock_free: [0xfc37db000-0xfc37fffff]
[    0.000000]    memblock_free: [0xfc39db000-0xfc39fffff]
[    0.000000]    memblock_free: [0xfc3bdb000-0xfc3bfffff]
[    0.000000]    memblock_free: [0xfc3ddb000-0xfc3dfffff]
[    0.000000]    memblock_free: [0xfc3fdb000-0xfc3ffffff]
[    0.000000]    memblock_free: [0xfc41db000-0xfc41fffff]
[    0.000000]    memblock_free: [0xfc43db000-0xfc43fffff]
[    0.000000]    memblock_free: [0xfc45db000-0xfc45fffff]
[    0.000000]    memblock_free: [0xfc47db000-0xfc47fffff]
[    0.000000]    memblock_free: [0xfc49db000-0xfc49fffff]
[    0.000000]    memblock_free: [0xfc4bdb000-0xfc4bfffff]
[    0.000000]    memblock_free: [0xfc4ddb000-0xfc4dfffff]
[    0.000000] memblock: reserved array is doubled to 256 at [0x101fec8000-0x101fec97ff]
[    0.000000] memblock_reserve: [0x101fec8000-0x101fec9fff] 
[    0.000000]    memblock_free: [0xfc4fdb000-0xfc4ffffff]
[    0.000000]    memblock_free: [0xfc51db000-0xfc51fffff]
[    0.000000]    memblock_free: [0xfc53db000-0xfc53fffff]
[    0.000000]    memblock_free: [0xfc55db000-0xfc55fffff]
[    0.000000]    memblock_free: [0xfc57db000-0xfc57fffff]
[    0.000000]    memblock_free: [0xfc59db000-0xfc59fffff]
[    0.000000]    memblock_free: [0xfc5bdb000-0xfc5bfffff]
[    0.000000]    memblock_free: [0xfc5ddb000-0xfc5dfffff]
[    0.000000]    memblock_free: [0xfc5fdb000-0xfc5ffffff]
[    0.000000]    memblock_free: [0xfc61db000-0xfc61fffff]
[    0.000000]    memblock_free: [0xfc63db000-0xfc63fffff]
[    0.000000]    memblock_free: [0xfc65db000-0xfc65fffff]
[    0.000000]    memblock_free: [0xfc67db000-0xfc67fffff]
[    0.000000]    memblock_free: [0xfc69db000-0xfc69fffff]
[    0.000000]    memblock_free: [0xfc6bdb000-0xfc6bfffff]
[    0.000000]    memblock_free: [0xfc6ddb000-0xfc6dfffff]
[    0.000000]    memblock_free: [0xfc6fdb000-0xfc6ffffff]
[    0.000000]    memblock_free: [0xfc71db000-0xfc71fffff]
[    0.000000]    memblock_free: [0xfc73db000-0xfc73fffff]
[    0.000000]    memblock_free: [0xfc75db000-0xfc75fffff]
[    0.000000]    memblock_free: [0xfc77db000-0xfc77fffff]
[    0.000000]    memblock_free: [0xfc79db000-0xfc79fffff]
[    0.000000]    memblock_free: [0xfc7bdb000-0xfc7bfffff]
[    0.000000]    memblock_free: [0xfc7ddb000-0xfc7dfffff]
[    0.000000]    memblock_free: [0xfc7fdb000-0xfc7ffffff]
[    0.000000]    memblock_free: [0xfc81db000-0xfc81fffff]
[    0.000000]    memblock_free: [0xfc83db000-0xfc83fffff]
[    0.000000]    memblock_free: [0xfc85db000-0xfc85fffff]
[    0.000000]    memblock_free: [0xfc87db000-0xfc87fffff]
[    0.000000]    memblock_free: [0xfc89db000-0xfc89fffff]
[    0.000000]    memblock_free: [0xfc8bdb000-0xfc8bfffff]
[    0.000000]    memblock_free: [0xfc8ddb000-0xfc8dfffff]
[    0.000000]    memblock_free: [0xfc8fdb000-0xfc8ffffff]
[    0.000000]    memblock_free: [0xfc91db000-0xfc91fffff]
[    0.000000]    memblock_free: [0xfc93db000-0xfc93fffff]
[    0.000000]    memblock_free: [0xfc95db000-0xfc95fffff]
[    0.000000]    memblock_free: [0xfc97db000-0xfc97fffff]
[    0.000000]    memblock_free: [0xfc99db000-0xfc99fffff]
[    0.000000]    memblock_free: [0xfc9bdb000-0xfc9bfffff]
[    0.000000]    memblock_free: [0xfc9ddb000-0xfc9dfffff]
[    0.000000]    memblock_free: [0xfc9fdb000-0xfc9ffffff]
[    0.000000]    memblock_free: [0xfca1db000-0xfca1fffff]
[    0.000000]    memblock_free: [0xfca3db000-0xfca3fffff]
[    0.000000]    memblock_free: [0xfca5db000-0xfca5fffff]
[    0.000000]    memblock_free: [0xfca7db000-0xfca7fffff]
[    0.000000]    memblock_free: [0xfca9db000-0xfca9fffff]
[    0.000000]    memblock_free: [0xfcabdb000-0xfcabfffff]
[    0.000000]    memblock_free: [0xfcaddb000-0xfcadfffff]
[    0.000000]    memblock_free: [0xfcafdb000-0xfcaffffff]
[    0.000000]    memblock_free: [0xfcb1db000-0xfcb1fffff]
[    0.000000]    memblock_free: [0xfcb3db000-0xfcb3fffff]
[    0.000000]    memblock_free: [0xfcb5db000-0xfcb5fffff]
[    0.000000]    memblock_free: [0xfcb7db000-0xfcb7fffff]
[    0.000000]    memblock_free: [0xfcb9db000-0xfcb9fffff]
[    0.000000]    memblock_free: [0xfcbbdb000-0xfcbbfffff]
[    0.000000]    memblock_free: [0xfcbddb000-0xfcbdfffff]
[    0.000000]    memblock_free: [0xfcbfdb000-0xfcbffffff]
[    0.000000]    memblock_free: [0xfcc1db000-0xfcc1fffff]
[    0.000000]    memblock_free: [0xfcc3db000-0xfcc3fffff]
[    0.000000]    memblock_free: [0xfcc5db000-0xfcc5fffff]
[    0.000000]    memblock_free: [0xfcc7db000-0xfcc7fffff]
[    0.000000]    memblock_free: [0xfcc9db000-0xfcc9fffff]
[    0.000000]    memblock_free: [0xfccbdb000-0xfccbfffff]
[    0.000000]    memblock_free: [0xfccddb000-0xfccdfffff]
[    0.000000]    memblock_free: [0xfccfdb000-0xfccffffff]
[    0.000000]    memblock_free: [0xfcd1db000-0xfcd1fffff]
[    0.000000]    memblock_free: [0xfcd3db000-0xfcd3fffff]
[    0.000000]    memblock_free: [0xfcd5db000-0xfcd5fffff]
[    0.000000]    memblock_free: [0xfcd7db000-0xfcd7fffff]
[    0.000000]    memblock_free: [0xfcd9db000-0xfcd9fffff]
[    0.000000]    memblock_free: [0xfcdbdb000-0xfcdbfffff]
[    0.000000]    memblock_free: [0xfcdddb000-0xfcddfffff]
[    0.000000]    memblock_free: [0xfcdfdb000-0xfcdffffff]
[    0.000000]    memblock_free: [0xfce1db000-0xfce1fffff]
[    0.000000]    memblock_free: [0xfce3db000-0xfce3fffff]
[    0.000000]    memblock_free: [0xfce5db000-0xfce5fffff]
[    0.000000]    memblock_free: [0xfce7db000-0xfce7fffff]
[    0.000000]    memblock_free: [0xfce9db000-0xfce9fffff]
[    0.000000]    memblock_free: [0xfcebdb000-0xfcebfffff]
[    0.000000]    memblock_free: [0xfceddb000-0xfcedfffff]
[    0.000000]    memblock_free: [0xfcefdb000-0xfceffffff]
[    0.000000]    memblock_free: [0xfcf1db000-0xfcf1fffff]
[    0.000000]    memblock_free: [0xfcf3db000-0xfcf3fffff]
[    0.000000]    memblock_free: [0xfcf5db000-0xfcf5fffff]
[    0.000000]    memblock_free: [0xfcf7db000-0xfcf7fffff]
[    0.000000]    memblock_free: [0xfcf9db000-0xfcf9fffff]
[    0.000000]    memblock_free: [0xfcfbdb000-0xfcfbfffff]
[    0.000000]    memblock_free: [0xfcfddb000-0xfcfdfffff]
[    0.000000]    memblock_free: [0xfcffdb000-0xfcfffffff]
[    0.000000]    memblock_free: [0xfd01db000-0xfd01fffff]
[    0.000000]    memblock_free: [0xfd03db000-0xfd03fffff]
[    0.000000]    memblock_free: [0xfd05db000-0xfd05fffff]
[    0.000000]    memblock_free: [0xfd07db000-0xfd07fffff]
[    0.000000]    memblock_free: [0xfd09db000-0xfd09fffff]
[    0.000000]    memblock_free: [0xfd0bdb000-0xfd0bfffff]
[    0.000000]    memblock_free: [0xfd0ddb000-0xfd0dfffff]
[    0.000000]    memblock_free: [0xfd0fdb000-0xfd0ffffff]
[    0.000000]    memblock_free: [0xfd11db000-0xfd11fffff]
[    0.000000]    memblock_free: [0xfd13db000-0xfd13fffff]
[    0.000000]    memblock_free: [0xfd15db000-0xfd15fffff]
[    0.000000]    memblock_free: [0xfd17db000-0xfd17fffff]
[    0.000000]    memblock_free: [0xfd19db000-0xfd19fffff]
[    0.000000]    memblock_free: [0xfd1bdb000-0xfd1bfffff]
[    0.000000]    memblock_free: [0xfd1ddb000-0xfd1dfffff]
[    0.000000]    memblock_free: [0xfd1fdb000-0xfd1ffffff]
[    0.000000]    memblock_free: [0xfd21db000-0xfd21fffff]
[    0.000000]    memblock_free: [0xfd23db000-0xfd23fffff]
[    0.000000]    memblock_free: [0xfd25db000-0xfd25fffff]
[    0.000000]    memblock_free: [0xfd27db000-0xfd27fffff]
[    0.000000]    memblock_free: [0xfd29db000-0xfd29fffff]
[    0.000000]    memblock_free: [0xfd2bdb000-0xfd2bfffff]
[    0.000000]    memblock_free: [0xfd2ddb000-0xfd2dfffff]
[    0.000000]    memblock_free: [0xfd2fdb000-0xfd2ffffff]
[    0.000000]    memblock_free: [0xfd31db000-0xfd31fffff]
[    0.000000]    memblock_free: [0xfd33db000-0xfd33fffff]
[    0.000000]    memblock_free: [0xfd35db000-0xfd35fffff]
[    0.000000]    memblock_free: [0xfd37db000-0xfd37fffff]
[    0.000000]    memblock_free: [0xfd39db000-0xfd39fffff]
[    0.000000]    memblock_free: [0xfd3bdb000-0xfd3bfffff]
[    0.000000]    memblock_free: [0xfd3ddb000-0xfd3dfffff]
[    0.000000]    memblock_free: [0xfd3fdb000-0xfd3ffffff]
[    0.000000]    memblock_free: [0xfd41db000-0xfd41fffff]
[    0.000000]    memblock_free: [0xfd43db000-0xfd43fffff]
[    0.000000]    memblock_free: [0xfd45db000-0xfd45fffff]
[    0.000000]    memblock_free: [0xfd47db000-0xfd47fffff]
[    0.000000]    memblock_free: [0xfd49db000-0xfd49fffff]
[    0.000000]    memblock_free: [0xfd4bdb000-0xfd4bfffff]
[    0.000000] memblock: reserved array is doubled to 512 at [0x101fec5000-0x101fec7fff]
[    0.000000]    memblock_free: [0x101fec8000-0x101fec9fff]
[    0.000000] memblock_reserve: [0x101fec5000-0x101fec7fff] 
[    0.000000]    memblock_free: [0xfd4ddb000-0xfd4dfffff]
[    0.000000]    memblock_free: [0xfd4fdb000-0xfd4ffffff]
[    0.000000]    memblock_free: [0xfd51db000-0xfd51fffff]
[    0.000000]    memblock_free: [0xfd53db000-0xfd53fffff]
[    0.000000]    memblock_free: [0xfd55db000-0xfd55fffff]
[    0.000000]    memblock_free: [0xfd57db000-0xfd57fffff]
[    0.000000]    memblock_free: [0xfd59db000-0xfd59fffff]
[    0.000000]    memblock_free: [0xfd5bdb000-0xfd5bfffff]
[    0.000000]    memblock_free: [0xfd5ddb000-0xfd5dfffff]
[    0.000000]    memblock_free: [0xfd5fdb000-0xfd5ffffff]
[    0.000000]    memblock_free: [0xfd61db000-0xfd61fffff]
[    0.000000]    memblock_free: [0xfd63db000-0xfd63fffff]
[    0.000000]    memblock_free: [0xfd65db000-0xfd65fffff]
[    0.000000]    memblock_free: [0xfd67db000-0xfd67fffff]
[    0.000000]    memblock_free: [0xfd69db000-0xfd69fffff]
[    0.000000]    memblock_free: [0xfd6bdb000-0xfd6bfffff]
[    0.000000]    memblock_free: [0xfd6ddb000-0xfd6dfffff]
[    0.000000]    memblock_free: [0xfd6fdb000-0xfd6ffffff]
[    0.000000]    memblock_free: [0xfd71db000-0xfd71fffff]
[    0.000000]    memblock_free: [0xfd73db000-0xfd73fffff]
[    0.000000]    memblock_free: [0xfd75db000-0xfd75fffff]
[    0.000000]    memblock_free: [0xfd77db000-0xfd77fffff]
[    0.000000]    memblock_free: [0xfd79db000-0xfd79fffff]
[    0.000000] PERCPU: Embedded 475 pages/cpu @ffff880fb7e00000 s1915152 r8192 d22256 u2097152
[    0.000000] memblock_reserve: [0x101feca640-0x101feca647] pcpu group_offs
[    0.000000] memblock_reserve: [0x101feca600-0x101feca607] pcpu group_size
[    0.000000] memblock_reserve: [0x101feca200-0x101feca5f7] pcpu unit_map
[    0.000000] memblock_reserve: [0x101fec9a00-0x101feca1ef] pcpu unit_off
[    0.000000] pcpu-alloc: s1915152 r8192 d22256 u2097152 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 000 [0] 001 [0] 002 [0] 003 
[    0.000000] pcpu-alloc: [0] 004 [0] 005 [0] 006 [0] 007 
[    0.000000] pcpu-alloc: [0] 008 [0] 009 [0] 010 [0] 011 
[    0.000000] pcpu-alloc: [0] 012 [0] 013 [0] 014 [0] 015 
[    0.000000] pcpu-alloc: [0] 016 [0] 017 [0] 018 [0] 019 
[    0.000000] pcpu-alloc: [0] 020 [0] 021 [0] 022 [0] 023 
[    0.000000] pcpu-alloc: [0] 024 [0] 025 [0] 026 [0] 027 
[    0.000000] pcpu-alloc: [0] 028 [0] 029 [0] 030 [0] 031 
[    0.000000] pcpu-alloc: [0] 032 [0] 033 [0] 034 [0] 035 
[    0.000000] pcpu-alloc: [0] 036 [0] 037 [0] 038 [0] 039 
[    0.000000] pcpu-alloc: [0] 040 [0] 041 [0] 042 [0] 043 
[    0.000000] pcpu-alloc: [0] 044 [0] 045 [0] 046 [0] 047 
[    0.000000] pcpu-alloc: [0] 048 [0] 049 [0] 050 [0] 051 
[    0.000000] pcpu-alloc: [0] 052 [0] 053 [0] 054 [0] 055 
[    0.000000] pcpu-alloc: [0] 056 [0] 057 [0] 058 [0] 059 
[    0.000000] pcpu-alloc: [0] 060 [0] 061 [0] 062 [0] 063 
[    0.000000] pcpu-alloc: [0] 064 [0] 065 [0] 066 [0] 067 
[    0.000000] pcpu-alloc: [0] 068 [0] 069 [0] 070 [0] 071 
[    0.000000] pcpu-alloc: [0] 072 [0] 073 [0] 074 [0] 075 
[    0.000000] pcpu-alloc: [0] 076 [0] 077 [0] 078 [0] 079 
[    0.000000] pcpu-alloc: [0] 080 [0] 081 [0] 082 [0] 083 
[    0.000000] pcpu-alloc: [0] 084 [0] 085 [0] 086 [0] 087 
[    0.000000] pcpu-alloc: [0] 088 [0] 089 [0] 090 [0] 091 
[    0.000000] pcpu-alloc: [0] 092 [0] 093 [0] 094 [0] 095 
[    0.000000] pcpu-alloc: [0] 096 [0] 097 [0] 098 [0] 099 
[    0.000000] pcpu-alloc: [0] 100 [0] 101 [0] 102 [0] 103 
[    0.000000] pcpu-alloc: [0] 104 [0] 105 [0] 106 [0] 107 
[    0.000000] pcpu-alloc: [0] 108 [0] 109 [0] 110 [0] 111 
[    0.000000] pcpu-alloc: [0] 112 [0] 113 [0] 114 [0] 115 
[    0.000000] pcpu-alloc: [0] 116 [0] 117 [0] 118 [0] 119 
[    0.000000] pcpu-alloc: [0] 120 [0] 121 [0] 122 [0] 123 
[    0.000000] pcpu-alloc: [0] 124 [0] 125 [0] 126 [0] 127 
[    0.000000] pcpu-alloc: [0] 128 [0] 129 [0] 130 [0] 131 
[    0.000000] pcpu-alloc: [0] 132 [0] 133 [0] 134 [0] 135 
[    0.000000] pcpu-alloc: [0] 136 [0] 137 [0] 138 [0] 139 
[    0.000000] pcpu-alloc: [0] 140 [0] 141 [0] 142 [0] 143 
[    0.000000] pcpu-alloc: [0] 144 [0] 145 [0] 146 [0] 147 
[    0.000000] pcpu-alloc: [0] 148 [0] 149 [0] 150 [0] 151 
[    0.000000] pcpu-alloc: [0] 152 [0] 153 [0] 154 [0] 155 
[    0.000000] pcpu-alloc: [0] 156 [0] 157 [0] 158 [0] 159 
[    0.000000] pcpu-alloc: [0] 160 [0] 161 [0] 162 [0] 163 
[    0.000000] pcpu-alloc: [0] 164 [0] 165 [0] 166 [0] 167 
[    0.000000] pcpu-alloc: [0] 168 [0] 169 [0] 170 [0] 171 
[    0.000000] pcpu-alloc: [0] 172 [0] 173 [0] 174 [0] 175 
[    0.000000] pcpu-alloc: [0] 176 [0] 177 [0] 178 [0] 179 
[    0.000000] pcpu-alloc: [0] 180 [0] 181 [0] 182 [0] 183 
[    0.000000] pcpu-alloc: [0] 184 [0] 185 [0] 186 [0] 187 
[    0.000000] pcpu-alloc: [0] 188 [0] 189 [0] 190 [0] 191 
[    0.000000] pcpu-alloc: [0] 192 [0] 193 [0] 194 [0] 195 
[    0.000000] pcpu-alloc: [0] 196 [0] 197 [0] 198 [0] 199 
[    0.000000] pcpu-alloc: [0] 200 [0] 201 [0] 202 [0] 203 
[    0.000000] pcpu-alloc: [0] 204 [0] 205 [0] 206 [0] 207 
[    0.000000] pcpu-alloc: [0] 208 [0] 209 [0] 210 [0] 211 
[    0.000000] pcpu-alloc: [0] 212 [0] 213 [0] 214 [0] 215 
[    0.000000] pcpu-alloc: [0] 216 [0] 217 [0] 218 [0] 219 
[    0.000000] pcpu-alloc: [0] 220 [0] 221 [0] 222 [0] 223 
[    0.000000] pcpu-alloc: [0] 224 [0] 225 [0] 226 [0] 227 
[    0.000000] pcpu-alloc: [0] 228 [0] 229 [0] 230 [0] 231 
[    0.000000] pcpu-alloc: [0] 232 [0] 233 [0] 234 [0] 235 
[    0.000000] pcpu-alloc: [0] 236 [0] 237 [0] 238 [0] 239 
[    0.000000] pcpu-alloc: [0] 240 [0] 241 [0] 242 [0] 243 
[    0.000000] pcpu-alloc: [0] 244 [0] 245 [0] 246 [0] 247 
[    0.000000] pcpu-alloc: [0] 248 [0] 249 [0] 250 [0] 251 
[    0.000000] pcpu-alloc: [0] 252 [0] 253 
[    0.000000] memblock_reserve: [0x101fec9880-0x101fec99cf] pcpu slot
[    0.000000] memblock_reserve: [0x101fec9800-0x101fec987f] pcpu chunk_stru
[    0.000000] memblock_reserve: [0x101fec9780-0x101fec97ff] pcpu chunk_stru
[    0.000000]    memblock_free: [0x101fecb680-0x101fecc67f]
[    0.000000]    memblock_free: [0x101feca680-0x101fecb67f]
[    0.000000] memblock_reserve: [0x101fecc480-0x101fecc67f] node_to_cpumask
[    0.000000] memblock_reserve: [0x101fecc280-0x101fecc47f] cpu_initialized
[    0.000000] memblock_reserve: [0x101fecc080-0x101fecc27f] cpu_callin_mask
[    0.000000] memblock_reserve: [0x101fecbe80-0x101fecc07f] cpu_callout_mas
[    0.000000] memblock_reserve: [0x101fecbc80-0x101fecbe7f] cpu_calibrated_
[    0.000000] memblock_reserve: [0x101fecba80-0x101fecbc7f] cpu_sibling_set
[    0.000000] build_zonelists: local_node: 0 next_best_node: 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16512893
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=linux ignore_loglevel initcall_debug acpi.debug_layer=0xffff0000 pci=routeirq apic=debug numa=off ramdisk_size=262144 root=/dev/ram0 rw ip=dhcp console=uart8250,io,0x3f8,115200 initrd=initrd.img
[    0.000000] memblock_reserve: [0x101febd000-0x101fec4fff] large system ha
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] Initializing CPU#0
[    0.000000] pci_iommu_alloc: __iommu_entry_pci_swiotlb_detect_4gb+0x0/0x28 ffffffff82a75380
[    0.000000] pci_iommu_alloc: __iommu_entry_pci_swiotlb_detect_override+0x0/0x28 ffffffff82a753a8
[    0.000000] memblock_reserve: [0xdb8ef000-0xdf8eefff] swiotlb buffer
[    0.000000] memblock_reserve: [0x101fe9d000-0x101febcfff] swiotlb list
[    0.000000] memblock_reserve: [0x101fe5d000-0x101fe9cfff] swiotlb orig_ad
[    0.000000] memblock_reserve: [0xdb8e7000-0xdb8eefff] swiotlb overflo
[    0.000000] pci_iommu_alloc: __iommu_entry_gart_iommu_hole_init+0x0/0x28 ffffffff82a753d0
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] pci_iommu_alloc: __iommu_entry_amd_iommu_detect+0x0/0x28 ffffffff82a753f8
[    0.000000] pci_iommu_alloc: __iommu_entry_detect_intel_iommu+0x0/0x28 ffffffff82a75420
[    0.000000]        [0x00010000-0x00098fff]
[    0.000000]        [0x00100000-0x00ffffff]
[    0.000000]        [0x03831000-0x7d991fff]
[    0.000000]        [0x7ffff000-0xdb8e6fff]
[    0.000000]        [0xdfff2000-0xdfff3fff]
[    0.000000]        [0x100000000-0xfb7dfffff]
[    0.000000]        [0xfb7fdb000-0xfb7ffffff]
[    0.000000]        [0xfb81db000-0xfb81fffff]
[    0.000000]        [0xfb83db000-0xfb83fffff]
[    0.000000]        [0xfb85db000-0xfb85fffff]
[    0.000000]        [0xfb87db000-0xfb87fffff]
[    0.000000]        [0xfb89db000-0xfb89fffff]
[    0.000000]        [0xfb8bdb000-0xfb8bfffff]
[    0.000000]        [0xfb8ddb000-0xfb8dfffff]
[    0.000000]        [0xfb8fdb000-0xfb8ffffff]
[    0.000000]        [0xfb91db000-0xfb91fffff]
[    0.000000]        [0xfb93db000-0xfb93fffff]
[    0.000000]        [0xfb95db000-0xfb95fffff]
[    0.000000]        [0xfb97db000-0xfb97fffff]
[    0.000000]        [0xfb99db000-0xfb99fffff]
[    0.000000]        [0xfb9bdb000-0xfb9bfffff]
[    0.000000]        [0xfb9ddb000-0xfb9dfffff]
[    0.000000]        [0xfb9fdb000-0xfb9ffffff]
[    0.000000]        [0xfba1db000-0xfba1fffff]
[    0.000000]        [0xfba3db000-0xfba3fffff]
[    0.000000]        [0xfba5db000-0xfba5fffff]
[    0.000000]        [0xfba7db000-0xfba7fffff]
[    0.000000]        [0xfba9db000-0xfba9fffff]
[    0.000000]        [0xfbabdb000-0xfbabfffff]
[    0.000000]        [0xfbaddb000-0xfbadfffff]
[    0.000000]        [0xfbafdb000-0xfbaffffff]
[    0.000000]        [0xfbb1db000-0xfbb1fffff]
[    0.000000]        [0xfbb3db000-0xfbb3fffff]
[    0.000000]        [0xfbb5db000-0xfbb5fffff]
[    0.000000]        [0xfbb7db000-0xfbb7fffff]
[    0.000000]        [0xfbb9db000-0xfbb9fffff]
[    0.000000]        [0xfbbbdb000-0xfbbbfffff]
[    0.000000]        [0xfbbddb000-0xfbbdfffff]
[    0.000000]        [0xfbbfdb000-0xfbbffffff]
[    0.000000]        [0xfbc1db000-0xfbc1fffff]
[    0.000000]        [0xfbc3db000-0xfbc3fffff]
[    0.000000]        [0xfbc5db000-0xfbc5fffff]
[    0.000000]        [0xfbc7db000-0xfbc7fffff]
[    0.000000]        [0xfbc9db000-0xfbc9fffff]
[    0.000000]        [0xfbcbdb000-0xfbcbfffff]
[    0.000000]        [0xfbcddb000-0xfbcdfffff]
[    0.000000]        [0xfbcfdb000-0xfbcffffff]
[    0.000000]        [0xfbd1db000-0xfbd1fffff]
[    0.000000]        [0xfbd3db000-0xfbd3fffff]
[    0.000000]        [0xfbd5db000-0xfbd5fffff]
[    0.000000]        [0xfbd7db000-0xfbd7fffff]
[    0.000000]        [0xfbd9db000-0xfbd9fffff]
[    0.000000]        [0xfbdbdb000-0xfbdbfffff]
[    0.000000]        [0xfbdddb000-0xfbddfffff]
[    0.000000]        [0xfbdfdb000-0xfbdffffff]
[    0.000000]        [0xfbe1db000-0xfbe1fffff]
[    0.000000]        [0xfbe3db000-0xfbe3fffff]
[    0.000000]        [0xfbe5db000-0xfbe5fffff]
[    0.000000]        [0xfbe7db000-0xfbe7fffff]
[    0.000000]        [0xfbe9db000-0xfbe9fffff]
[    0.000000]        [0xfbebdb000-0xfbebfffff]
[    0.000000]        [0xfbeddb000-0xfbedfffff]
[    0.000000]        [0xfbefdb000-0xfbeffffff]
[    0.000000]        [0xfbf1db000-0xfbf1fffff]
[    0.000000]        [0xfbf3db000-0xfbf3fffff]
[    0.000000]        [0xfbf5db000-0xfbf5fffff]
[    0.000000]        [0xfbf7db000-0xfbf7fffff]
[    0.000000]        [0xfbf9db000-0xfbf9fffff]
[    0.000000]        [0xfbfbdb000-0xfbfbfffff]
[    0.000000]        [0xfbfddb000-0xfbfdfffff]
[    0.000000]        [0xfbffdb000-0xfbfffffff]
[    0.000000]        [0xfc01db000-0xfc01fffff]
[    0.000000]        [0xfc03db000-0xfc03fffff]
[    0.000000]        [0xfc05db000-0xfc05fffff]
[    0.000000]        [0xfc07db000-0xfc07fffff]
[    0.000000]        [0xfc09db000-0xfc09fffff]
[    0.000000]        [0xfc0bdb000-0xfc0bfffff]
[    0.000000]        [0xfc0ddb000-0xfc0dfffff]
[    0.000000]        [0xfc0fdb000-0xfc0ffffff]
[    0.000000]        [0xfc11db000-0xfc11fffff]
[    0.000000]        [0xfc13db000-0xfc13fffff]
[    0.000000]        [0xfc15db000-0xfc15fffff]
[    0.000000]        [0xfc17db000-0xfc17fffff]
[    0.000000]        [0xfc19db000-0xfc19fffff]
[    0.000000]        [0xfc1bdb000-0xfc1bfffff]
[    0.000000]        [0xfc1ddb000-0xfc1dfffff]
[    0.000000]        [0xfc1fdb000-0xfc1ffffff]
[    0.000000]        [0xfc21db000-0xfc21fffff]
[    0.000000]        [0xfc23db000-0xfc23fffff]
[    0.000000]        [0xfc25db000-0xfc25fffff]
[    0.000000]        [0xfc27db000-0xfc27fffff]
[    0.000000]        [0xfc29db000-0xfc29fffff]
[    0.000000]        [0xfc2bdb000-0xfc2bfffff]
[    0.000000]        [0xfc2ddb000-0xfc2dfffff]
[    0.000000]        [0xfc2fdb000-0xfc2ffffff]
[    0.000000]        [0xfc31db000-0xfc31fffff]
[    0.000000]        [0xfc33db000-0xfc33fffff]
[    0.000000]        [0xfc35db000-0xfc35fffff]
[    0.000000]        [0xfc37db000-0xfc37fffff]
[    0.000000]        [0xfc39db000-0xfc39fffff]
[    0.000000]        [0xfc3bdb000-0xfc3bfffff]
[    0.000000]        [0xfc3ddb000-0xfc3dfffff]
[    0.000000]        [0xfc3fdb000-0xfc3ffffff]
[    0.000000]        [0xfc41db000-0xfc41fffff]
[    0.000000]        [0xfc43db000-0xfc43fffff]
[    0.000000]        [0xfc45db000-0xfc45fffff]
[    0.000000]        [0xfc47db000-0xfc47fffff]
[    0.000000]        [0xfc49db000-0xfc49fffff]
[    0.000000]        [0xfc4bdb000-0xfc4bfffff]
[    0.000000]        [0xfc4ddb000-0xfc4dfffff]
[    0.000000]        [0xfc4fdb000-0xfc4ffffff]
[    0.000000]        [0xfc51db000-0xfc51fffff]
[    0.000000]        [0xfc53db000-0xfc53fffff]
[    0.000000]        [0xfc55db000-0xfc55fffff]
[    0.000000]        [0xfc57db000-0xfc57fffff]
[    0.000000]        [0xfc59db000-0xfc59fffff]
[    0.000000]        [0xfc5bdb000-0xfc5bfffff]
[    0.000000]        [0xfc5ddb000-0xfc5dfffff]
[    0.000000]        [0xfc5fdb000-0xfc5ffffff]
[    0.000000]        [0xfc61db000-0xfc61fffff]
[    0.000000]        [0xfc63db000-0xfc63fffff]
[    0.000000]        [0xfc65db000-0xfc65fffff]
[    0.000000]        [0xfc67db000-0xfc67fffff]
[    0.000000]        [0xfc69db000-0xfc69fffff]
[    0.000000]        [0xfc6bdb000-0xfc6bfffff]
[    0.000000]        [0xfc6ddb000-0xfc6dfffff]
[    0.000000]        [0xfc6fdb000-0xfc6ffffff]
[    0.000000]        [0xfc71db000-0xfc71fffff]
[    0.000000]        [0xfc73db000-0xfc73fffff]
[    0.000000]        [0xfc75db000-0xfc75fffff]
[    0.000000]        [0xfc77db000-0xfc77fffff]
[    0.000000]        [0xfc79db000-0xfc79fffff]
[    0.000000]        [0xfc7bdb000-0xfc7bfffff]
[    0.000000]        [0xfc7ddb000-0xfc7dfffff]
[    0.000000]        [0xfc7fdb000-0xfc7ffffff]
[    0.000000]        [0xfc81db000-0xfc81fffff]
[    0.000000]        [0xfc83db000-0xfc83fffff]
[    0.000000]        [0xfc85db000-0xfc85fffff]
[    0.000000]        [0xfc87db000-0xfc87fffff]
[    0.000000]        [0xfc89db000-0xfc89fffff]
[    0.000000]        [0xfc8bdb000-0xfc8bfffff]
[    0.000000]        [0xfc8ddb000-0xfc8dfffff]
[    0.000000]        [0xfc8fdb000-0xfc8ffffff]
[    0.000000]        [0xfc91db000-0xfc91fffff]
[    0.000000]        [0xfc93db000-0xfc93fffff]
[    0.000000]        [0xfc95db000-0xfc95fffff]
[    0.000000]        [0xfc97db000-0xfc97fffff]
[    0.000000]        [0xfc99db000-0xfc99fffff]
[    0.000000]        [0xfc9bdb000-0xfc9bfffff]
[    0.000000]        [0xfc9ddb000-0xfc9dfffff]
[    0.000000]        [0xfc9fdb000-0xfc9ffffff]
[    0.000000]        [0xfca1db000-0xfca1fffff]
[    0.000000]        [0xfca3db000-0xfca3fffff]
[    0.000000]        [0xfca5db000-0xfca5fffff]
[    0.000000]        [0xfca7db000-0xfca7fffff]
[    0.000000]        [0xfca9db000-0xfca9fffff]
[    0.000000]        [0xfcabdb000-0xfcabfffff]
[    0.000000]        [0xfcaddb000-0xfcadfffff]
[    0.000000]        [0xfcafdb000-0xfcaffffff]
[    0.000000]        [0xfcb1db000-0xfcb1fffff]
[    0.000000]        [0xfcb3db000-0xfcb3fffff]
[    0.000000]        [0xfcb5db000-0xfcb5fffff]
[    0.000000]        [0xfcb7db000-0xfcb7fffff]
[    0.000000]        [0xfcb9db000-0xfcb9fffff]
[    0.000000]        [0xfcbbdb000-0xfcbbfffff]
[    0.000000]        [0xfcbddb000-0xfcbdfffff]
[    0.000000]        [0xfcbfdb000-0xfcbffffff]
[    0.000000]        [0xfcc1db000-0xfcc1fffff]
[    0.000000]        [0xfcc3db000-0xfcc3fffff]
[    0.000000]        [0xfcc5db000-0xfcc5fffff]
[    0.000000]        [0xfcc7db000-0xfcc7fffff]
[    0.000000]        [0xfcc9db000-0xfcc9fffff]
[    0.000000]        [0xfccbdb000-0xfccbfffff]
[    0.000000]        [0xfccddb000-0xfccdfffff]
[    0.000000]        [0xfccfdb000-0xfccffffff]
[    0.000000]        [0xfcd1db000-0xfcd1fffff]
[    0.000000]        [0xfcd3db000-0xfcd3fffff]
[    0.000000]        [0xfcd5db000-0xfcd5fffff]
[    0.000000]        [0xfcd7db000-0xfcd7fffff]
[    0.000000]        [0xfcd9db000-0xfcd9fffff]
[    0.000000]        [0xfcdbdb000-0xfcdbfffff]
[    0.000000]        [0xfcdddb000-0xfcddfffff]
[    0.000000]        [0xfcdfdb000-0xfcdffffff]
[    0.000000]        [0xfce1db000-0xfce1fffff]
[    0.000000]        [0xfce3db000-0xfce3fffff]
[    0.000000]        [0xfce5db000-0xfce5fffff]
[    0.000000]        [0xfce7db000-0xfce7fffff]
[    0.000000]        [0xfce9db000-0xfce9fffff]
[    0.000000]        [0xfcebdb000-0xfcebfffff]
[    0.000000]        [0xfceddb000-0xfcedfffff]
[    0.000000]        [0xfcefdb000-0xfceffffff]
[    0.000000]        [0xfcf1db000-0xfcf1fffff]
[    0.000000]        [0xfcf3db000-0xfcf3fffff]
[    0.000000]        [0xfcf5db000-0xfcf5fffff]
[    0.000000]        [0xfcf7db000-0xfcf7fffff]
[    0.000000]        [0xfcf9db000-0xfcf9fffff]
[    0.000000]        [0xfcfbdb000-0xfcfbfffff]
[    0.000000]        [0xfcfddb000-0xfcfdfffff]
[    0.000000]        [0xfcffdb000-0xfcfffffff]
[    0.000000]        [0xfd01db000-0xfd01fffff]
[    0.000000]        [0xfd03db000-0xfd03fffff]
[    0.000000]        [0xfd05db000-0xfd05fffff]
[    0.000000]        [0xfd07db000-0xfd07fffff]
[    0.000000]        [0xfd09db000-0xfd09fffff]
[    0.000000]        [0xfd0bdb000-0xfd0bfffff]
[    0.000000]        [0xfd0ddb000-0xfd0dfffff]
[    0.000000]        [0xfd0fdb000-0xfd0ffffff]
[    0.000000]        [0xfd11db000-0xfd11fffff]
[    0.000000]        [0xfd13db000-0xfd13fffff]
[    0.000000]        [0xfd15db000-0xfd15fffff]
[    0.000000]        [0xfd17db000-0xfd17fffff]
[    0.000000]        [0xfd19db000-0xfd19fffff]
[    0.000000]        [0xfd1bdb000-0xfd1bfffff]
[    0.000000]        [0xfd1ddb000-0xfd1dfffff]
[    0.000000]        [0xfd1fdb000-0xfd1ffffff]
[    0.000000]        [0xfd21db000-0xfd21fffff]
[    0.000000]        [0xfd23db000-0xfd23fffff]
[    0.000000]        [0xfd25db000-0xfd25fffff]
[    0.000000]        [0xfd27db000-0xfd27fffff]
[    0.000000]        [0xfd29db000-0xfd29fffff]
[    0.000000]        [0xfd2bdb000-0xfd2bfffff]
[    0.000000]        [0xfd2ddb000-0xfd2dfffff]
[    0.000000]        [0xfd2fdb000-0xfd2ffffff]
[    0.000000]        [0xfd31db000-0xfd31fffff]
[    0.000000]        [0xfd33db000-0xfd33fffff]
[    0.000000]        [0xfd35db000-0xfd35fffff]
[    0.000000]        [0xfd37db000-0xfd37fffff]
[    0.000000]        [0xfd39db000-0xfd39fffff]
[    0.000000]        [0xfd3bdb000-0xfd3bfffff]
[    0.000000]        [0xfd3ddb000-0xfd3dfffff]
[    0.000000]        [0xfd3fdb000-0xfd3ffffff]
[    0.000000]        [0xfd41db000-0xfd41fffff]
[    0.000000]        [0xfd43db000-0xfd43fffff]
[    0.000000]        [0xfd45db000-0xfd45fffff]
[    0.000000]        [0xfd47db000-0xfd47fffff]
[    0.000000]        [0xfd49db000-0xfd49fffff]
[    0.000000]        [0xfd4bdb000-0xfd4bfffff]
[    0.000000]        [0xfd4ddb000-0xfd4dfffff]
[    0.000000]        [0xfd4fdb000-0xfd4ffffff]
[    0.000000]        [0xfd51db000-0xfd51fffff]
[    0.000000]        [0xfd53db000-0xfd53fffff]
[    0.000000]        [0xfd55db000-0xfd55fffff]
[    0.000000]        [0xfd57db000-0xfd57fffff]
[    0.000000]        [0xfd59db000-0xfd59fffff]
[    0.000000]        [0xfd5bdb000-0xfd5bfffff]
[    0.000000]        [0xfd5ddb000-0xfd5dfffff]
[    0.000000]        [0xfd5fdb000-0xfd5ffffff]
[    0.000000]        [0xfd61db000-0xfd61fffff]
[    0.000000]        [0xfd63db000-0xfd63fffff]
[    0.000000]        [0xfd65db000-0xfd65fffff]
[    0.000000]        [0xfd67db000-0xfd67fffff]
[    0.000000]        [0xfd69db000-0xfd69fffff]
[    0.000000]        [0xfd6bdb000-0xfd6bfffff]
[    0.000000]        [0xfd6ddb000-0xfd6dfffff]
[    0.000000]        [0xfd6fdb000-0xfd6ffffff]
[    0.000000]        [0xfd71db000-0xfd71fffff]
[    0.000000]        [0xfd73db000-0xfd73fffff]
[    0.000000]        [0xfd75db000-0xfd75fffff]
[    0.000000]        [0xfd77db000-0xfd77fffff]
[    0.000000]        [0xfd79db000-0xfd79fffff]
[    0.000000]        [0x1017a00000-0x1017ebdfff]
[    0.000000]        [0x101f7fb000-0x101fbcffff]
[    0.000000]        [0x101fbd6000-0x101fe5cfff]
[    0.000000]        [0x101fec8000-0x101fec8fff]
[    0.000000]        [0x101fecb000-0x101fecafff]
[    0.000000]        [0x101fecd000-0x101feccfff]
[    0.000000]        [0x101fec5000-0x101fec7fff]
[    0.000000] Memory: 65298080k/67633152k available (14249k kernel code, 524788k absent, 1810284k reserved, 9665k data, 3196k init)
[    0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=254, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:716800 nr_irqs:40 0
[    0.000000] IOAPIC[0]: apic_id 254, GSI 0-23 ==> irq 0-23 reserved
[    0.000000] IOAPIC[extra]: GSI 24-39 ==> irq 24-39 reserved
[    0.000000]   alloc irq_desc for 0 on node 0
[    0.000000]   alloc irq_desc for 1 on node 0
[    0.000000]   alloc irq_desc for 2 on node 0
[    0.000000]   alloc irq_desc for 3 on node 0
[    0.000000]   alloc irq_desc for 4 on node 0
[    0.000000]   alloc irq_desc for 5 on node 0
[    0.000000]   alloc irq_desc for 6 on node 0
[    0.000000]   alloc irq_desc for 7 on node 0
[    0.000000]   alloc irq_desc for 8 on node 0
[    0.000000]   alloc irq_desc for 9 on node 0
[    0.000000]   alloc irq_desc for 10 on node 0
[    0.000000]   alloc irq_desc for 11 on node 0
[    0.000000]   alloc irq_desc for 12 on node 0
[    0.000000]   alloc irq_desc for 13 on node 0
[    0.000000]   alloc irq_desc for 14 on node 0
[    0.000000]   alloc irq_desc for 15 on node 0
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [ttyS0] enabled, bootconsole disabled
[    0.000000] console [ttyS0] enabled, bootconsole disabled
[    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.000000] ... MAX_LOCK_DEPTH:          48
[    0.000000] ... MAX_LOCKDEP_KEYS:        8191
[    0.000000] ... CLASSHASH_SIZE:          4096
[    0.000000] ... MAX_LOCKDEP_ENTRIES:     16384
[    0.000000] ... MAX_LOCKDEP_CHAINS:      32768
[    0.000000] ... CHAINHASH_SIZE:          16384
[    0.000000]  memory used by lock dependency info: 6367 kB
[    0.000000]  per task-struct memory footprint: 2688 bytes
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration failed
[    0.000000] tsc: PIT calibration matches HPET. 1 loops
[    0.000000] tsc: Detected 2393.969 MHz processor
[    0.012119] CPU0: Calibrating delay loop (skipped), value calculated using timer frequency.. 4787.93 BogoMIPS (lpj=9575876)
[    0.016009] pid_max: default: 260096 minimum: 2032
[    0.036842] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes)
[    0.081052] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes)
[    0.099765] Mount-cache hash table entries: 256
[    0.102424] Initializing cgroup subsys cpuacct
[    0.104015] Initializing cgroup subsys devices
[    0.105333] Initializing cgroup subsys freezer
[    0.108015] Initializing cgroup subsys blkio
[    0.109873] CPU: L1 I cache: 32K, L1 D cache: 32K
[    0.111271] CPU: L2 cache: 4096K
[    0.112027] CPU 0/0x0 -> Node 0
[    0.112992] CPU 0 microcode level: 0x1
[    0.114100] mce: CPU supports 10 MCE banks
[    0.116379] ACPI: Core revision 20120518
[    0.134130] ftrace: allocating 58731 entries in 230 pages
[    0.156581] Getting VERSION: 50014
[    0.160029] Getting VERSION: 50014
[    0.161061] Getting ID: 0
[    0.161867] Getting ID: ff000000
[    0.162838] Getting LVT0: 8700
[    0.164024] Getting LVT1: 8400
[    0.164955] Switched APIC routing to physical flat.
[    0.166522] enabled ExtINT on CPU#0
[    0.170348] ENABLING IO-APIC IRQs
[    0.171359] init IO_APIC IRQs
[    0.172019]  apic 254 pin 0 not connected
[    0.173259] IOAPIC[0]: Set routing entry (254-1 -> 0x31 -> IRQ 1 Mode:0 Active:0 Dest:0)
[    0.176055] IOAPIC[0]: Set routing entry (254-2 -> 0x30 -> IRQ 0 Mode:0 Active:0 Dest:0)
[    0.178464] IOAPIC[0]: Set routing entry (254-3 -> 0x33 -> IRQ 3 Mode:0 Active:0 Dest:0)
[    0.180052] IOAPIC[0]: Set routing entry (254-4 -> 0x34 -> IRQ 4 Mode:0 Active:0 Dest:0)
[    0.184051] IOAPIC[0]: Set routing entry (254-5 -> 0x35 -> IRQ 5 Mode:1 Active:0 Dest:0)
[    0.186474] IOAPIC[0]: Set routing entry (254-6 -> 0x36 -> IRQ 6 Mode:0 Active:0 Dest:0)
[    0.188052] IOAPIC[0]: Set routing entry (254-7 -> 0x37 -> IRQ 7 Mode:0 Active:0 Dest:0)
[    0.190473] IOAPIC[0]: Set routing entry (254-8 -> 0x38 -> IRQ 8 Mode:0 Active:0 Dest:0)
[    0.192052] IOAPIC[0]: Set routing entry (254-9 -> 0x39 -> IRQ 9 Mode:1 Active:0 Dest:0)
[    0.196053] IOAPIC[0]: Set routing entry (254-10 -> 0x3a -> IRQ 10 Mode:1 Active:0 Dest:0)
[    0.198484] IOAPIC[0]: Set routing entry (254-11 -> 0x3b -> IRQ 11 Mode:1 Active:0 Dest:0)
[    0.200052] IOAPIC[0]: Set routing entry (254-12 -> 0x3c -> IRQ 12 Mode:0 Active:0 Dest:0)
[    0.204054] IOAPIC[0]: Set routing entry (254-13 -> 0x3d -> IRQ 13 Mode:0 Active:0 Dest:0)
[    0.206647] IOAPIC[0]: Set routing entry (254-14 -> 0x3e -> IRQ 14 Mode:0 Active:0 Dest:0)
[    0.208053] IOAPIC[0]: Set routing entry (254-15 -> 0x3f -> IRQ 15 Mode:0 Active:0 Dest:0)
[    0.212049]  apic 254 pin 16 not connected
[    0.213363]  apic 254 pin 17 not connected
[    0.214565]  apic 254 pin 18 not connected
[    0.215746]  apic 254 pin 19 not connected
[    0.216017]  apic 254 pin 20 not connected
[    0.217388]  apic 254 pin 21 not connected
[    0.218568]  apic 254 pin 22 not connected
[    0.220018]  apic 254 pin 23 not connected
[    0.221743] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.265053] smpboot: CPU0: Intel QEMU Virtual CPU version 1.0.50 stepping 03
[    0.267857] Using local APIC timer interrupts.
[    0.267857] calibrating APIC timer ...
[    0.272016] ... lapic delta = 6250607
[    0.272016] ... PM-Timer delta = 357953
[    0.272016] ... PM-Timer result ok
[    0.272016] ..... delta 6250607
[    0.272016] ..... mult: 268444748
[    0.272016] ..... calibration result: 4000388
[    0.272016] ..... CPU clock speed is 2393.3897 MHz.
[    0.272016] ..... host bus clock speed is 1000.0388 MHz.
[    0.272138] calling  trace_init_flags_sys_exit+0x0/0x12 @ 1
[    0.274312] initcall trace_init_flags_sys_exit+0x0/0x12 returned 0 after 0 usecs
[    0.276023] calling  trace_init_flags_sys_enter+0x0/0x12 @ 1
[    0.278231] initcall trace_init_flags_sys_enter+0x0/0x12 returned 0 after 0 usecs
[    0.280023] calling  init_hw_perf_events+0x0/0x31b @ 1
[    0.284023] Performance Events: unsupported p6 CPU model 2 no PMU driver, software events only.
[    0.287338] initcall init_hw_perf_events+0x0/0x31b returned 0 after 0 usecs
[    0.288026] calling  register_trigger_all_cpu_backtrace+0x0/0x16 @ 1
[    0.292032] initcall register_trigger_all_cpu_backtrace+0x0/0x16 returned 0 after 0 usecs
[    0.296025] calling  spawn_ksoftirqd+0x0/0x51 @ 1
[    0.297952] initcall spawn_ksoftirqd+0x0/0x51 returned 0 after 0 usecs
[    0.300023] calling  init_workqueues+0x0/0x377 @ 1
[    0.302849] initcall init_workqueues+0x0/0x377 returned 0 after 0 usecs
[    0.304025] calling  migration_init+0x0/0x6d @ 1
[    0.308028] initcall migration_init+0x0/0x6d returned 0 after 0 usecs
[    0.310530] calling  numa_init+0x0/0x183 @ 1
[    0.312078] initcall numa_init+0x0/0x183 returned 0 after 0 usecs
[    0.314468] calling  cpu_stop_init+0x0/0xcd @ 1
[    0.316182] initcall cpu_stop_init+0x0/0xcd returned 0 after 0 usecs
[    0.318684] calling  rcu_scheduler_really_started+0x0/0x12 @ 1
[    0.320025] initcall rcu_scheduler_really_started+0x0/0x12 returned 0 after 0 usecs
[    0.324024] calling  relay_init+0x0/0x14 @ 1
[    0.325692] initcall relay_init+0x0/0x14 returned 0 after 0 usecs
[    0.328025] calling  tracer_alloc_buffers+0x0/0x274 @ 1
[    0.330204] initcall tracer_alloc_buffers+0x0/0x274 returned 0 after 0 usecs
[    0.332025] calling  init_events+0x0/0x60 @ 1
[    0.333752] initcall init_events+0x0/0x60 returned 0 after 0 usecs
[    0.336026] calling  init_trace_printk+0x0/0x12 @ 1
[    0.340026] initcall init_trace_printk+0x0/0x12 returned 0 after 0 usecs
[    0.342642] NMI watchdog: disabled (cpu0): hardware events not enabled

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-21 20:19               ` Tejun Heo
@ 2012-06-22 10:29                 ` Sasha Levin
  -1 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-22 10:29 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, 2012-06-21 at 13:19 -0700, Tejun Heo wrote:
> Hello,
> 
> Sasha, can you please apply the following patch and verify that the
> issue is gone?

That did the trick.

Thanks!


^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 10:29                 ` Sasha Levin
  0 siblings, 0 replies; 71+ messages in thread
From: Sasha Levin @ 2012-06-22 10:29 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Andrew Morton, David Miller, hpa, linux-mm, linux-kernel

On Thu, 2012-06-21 at 13:19 -0700, Tejun Heo wrote:
> Hello,
> 
> Sasha, can you please apply the following patch and verify that the
> issue is gone?

That did the trick.

Thanks!

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22 10:29                 ` Sasha Levin
@ 2012-06-22 18:15                   ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 18:15 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Gavin Shan, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 3:29 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-21 at 13:19 -0700, Tejun Heo wrote:
>> Hello,
>>
>> Sasha, can you please apply the following patch and verify that the
>> issue is gone?
>
> That did the trick.

can you please try two patch that I sent before

fix_free_memblock_reserve_v4_5.patch
memblock_reserved_clear_check.patch


Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 18:15                   ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 18:15 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Tejun Heo, Gavin Shan, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 3:29 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On Thu, 2012-06-21 at 13:19 -0700, Tejun Heo wrote:
>> Hello,
>>
>> Sasha, can you please apply the following patch and verify that the
>> issue is gone?
>
> That did the trick.

can you please try two patch that I sent before

fix_free_memblock_reserve_v4_5.patch
memblock_reserved_clear_check.patch


Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22  1:47                   ` Yinghai Lu
@ 2012-06-22 18:51                       ` Tejun Heo
  2012-06-22 18:51                       ` Tejun Heo
  1 sibling, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-22 18:51 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Thu, Jun 21, 2012 at 06:47:24PM -0700, Yinghai Lu wrote:
> > I'm afraid this is too early.  We don't want the region to be unmapped
> > yet.  This should only happen after all memblock usages are finished
> > which I don't think is the case yet.
> 
> No, it is not early. at that time memblock usage is done.
> 
> Also I tested one system with huge memory, duplicated the problem on
> KVM that Sasha met.
> my patch fixes the problem.
> 
> please check attached patch.
> 
> Also I add another patch to double check if there is any reference
> with reserved.region.
> so far there is no reference found.

Thanks for checking it.  I was worried because of the re-reservation
of reserved.regions after giving memory to the page allocator -
ie. memblock_reserve_reserved_regions() call.  If memblock is done at
that point, there's no reason to have that call at all.  It could be
that that's just dead code.  If so, why aren't we freeing
memory.regions?  Also, shouldn't we be clearing
memblock.cnt/max/total_size/regions so that we know for sure that it's
never used again?  What am I missing?

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 18:51                       ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-22 18:51 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Thu, Jun 21, 2012 at 06:47:24PM -0700, Yinghai Lu wrote:
> > I'm afraid this is too early.  We don't want the region to be unmapped
> > yet.  This should only happen after all memblock usages are finished
> > which I don't think is the case yet.
> 
> No, it is not early. at that time memblock usage is done.
> 
> Also I tested one system with huge memory, duplicated the problem on
> KVM that Sasha met.
> my patch fixes the problem.
> 
> please check attached patch.
> 
> Also I add another patch to double check if there is any reference
> with reserved.region.
> so far there is no reference found.

Thanks for checking it.  I was worried because of the re-reservation
of reserved.regions after giving memory to the page allocator -
ie. memblock_reserve_reserved_regions() call.  If memblock is done at
that point, there's no reason to have that call at all.  It could be
that that's just dead code.  If so, why aren't we freeing
memory.regions?  Also, shouldn't we be clearing
memblock.cnt/max/total_size/regions so that we know for sure that it's
never used again?  What am I missing?

Thanks.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22 18:51                       ` Tejun Heo
@ 2012-06-22 19:23                         ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 19:23 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 11:51 AM, Tejun Heo <tj@kernel.org> wrote:
> Hello, Yinghai.
>>
>> Also I add another patch to double check if there is any reference
>> with reserved.region.
>> so far there is no reference found.
>
> Thanks for checking it.  I was worried because of the re-reservation
> of reserved.regions after giving memory to the page allocator -
> ie. memblock_reserve_reserved_regions() call.  If memblock is done at
> that point, there's no reason to have that call at all.  It could be
> that that's just dead code.  If so, why aren't we freeing
> memory.regions?

During converting bootmem to use early_res stage, I still kept the
numa handling.
like one node by one node. So need to put the reserved.regions back.
Later found we could do that for all node at the same time.

For memory.regions, a little different, at that time I want to kill
e820 all like e820_all_mapped_ram.

Yes, we should get back region that is allocated for doubled memory.regions.
but did not trigger that doubling yet.

Also for x86, all memblock in __initdata, and will be freed later.

> Also, shouldn't we be clearing
> memblock.cnt/max/total_size/regions so that we know for sure that it's
> never used again?  What am I missing?

64bit mem_init(), after absent_page_in_range(), will not need memblock anymore.
  --- absent_page_in_range will refer for_each_mem_pfn_range.

so after that could clear that for memory.regions too.

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 19:23                         ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 19:23 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 11:51 AM, Tejun Heo <tj@kernel.org> wrote:
> Hello, Yinghai.
>>
>> Also I add another patch to double check if there is any reference
>> with reserved.region.
>> so far there is no reference found.
>
> Thanks for checking it.  I was worried because of the re-reservation
> of reserved.regions after giving memory to the page allocator -
> ie. memblock_reserve_reserved_regions() call.  If memblock is done at
> that point, there's no reason to have that call at all.  It could be
> that that's just dead code.  If so, why aren't we freeing
> memory.regions?

During converting bootmem to use early_res stage, I still kept the
numa handling.
like one node by one node. So need to put the reserved.regions back.
Later found we could do that for all node at the same time.

For memory.regions, a little different, at that time I want to kill
e820 all like e820_all_mapped_ram.

Yes, we should get back region that is allocated for doubled memory.regions.
but did not trigger that doubling yet.

Also for x86, all memblock in __initdata, and will be freed later.

> Also, shouldn't we be clearing
> memblock.cnt/max/total_size/regions so that we know for sure that it's
> never used again?  What am I missing?

64bit mem_init(), after absent_page_in_range(), will not need memblock anymore.
  --- absent_page_in_range will refer for_each_mem_pfn_range.

so after that could clear that for memory.regions too.

Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22 19:23                         ` Yinghai Lu
@ 2012-06-22 19:29                           ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-22 19:29 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Fri, Jun 22, 2012 at 12:23:24PM -0700, Yinghai Lu wrote:
> > Thanks for checking it.  I was worried because of the re-reservation
> > of reserved.regions after giving memory to the page allocator -
> > ie. memblock_reserve_reserved_regions() call.  If memblock is done at
> > that point, there's no reason to have that call at all.  It could be
> > that that's just dead code.  If so, why aren't we freeing
> > memory.regions?
> 
> During converting bootmem to use early_res stage, I still kept the
> numa handling.
> like one node by one node. So need to put the reserved.regions back.
> Later found we could do that for all node at the same time.
> 
> For memory.regions, a little different, at that time I want to kill
> e820 all like e820_all_mapped_ram.
> 
> Yes, we should get back region that is allocated for doubled memory.regions.
> but did not trigger that doubling yet.
> 
> Also for x86, all memblock in __initdata, and will be freed later.

Thanks for the explanation.

> > Also, shouldn't we be clearing
> > memblock.cnt/max/total_size/regions so that we know for sure that it's
> > never used again?  What am I missing?
> 
> 64bit mem_init(), after absent_page_in_range(), will not need memblock anymore.
>   --- absent_page_in_range will refer for_each_mem_pfn_range.
> 
> so after that could clear that for memory.regions too.

I wish we had a single call - say, memblock_die(), or whatever - so
that there's a clear indication that memblock usage is done, but yeah
maybe another day.  Will review the patch itself.  BTW, can't you post
patches inline anymore?  Attaching is better than corrupt but is still
a bit annoying for review.

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 19:29                           ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-22 19:29 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Fri, Jun 22, 2012 at 12:23:24PM -0700, Yinghai Lu wrote:
> > Thanks for checking it.  I was worried because of the re-reservation
> > of reserved.regions after giving memory to the page allocator -
> > ie. memblock_reserve_reserved_regions() call.  If memblock is done at
> > that point, there's no reason to have that call at all.  It could be
> > that that's just dead code.  If so, why aren't we freeing
> > memory.regions?
> 
> During converting bootmem to use early_res stage, I still kept the
> numa handling.
> like one node by one node. So need to put the reserved.regions back.
> Later found we could do that for all node at the same time.
> 
> For memory.regions, a little different, at that time I want to kill
> e820 all like e820_all_mapped_ram.
> 
> Yes, we should get back region that is allocated for doubled memory.regions.
> but did not trigger that doubling yet.
> 
> Also for x86, all memblock in __initdata, and will be freed later.

Thanks for the explanation.

> > Also, shouldn't we be clearing
> > memblock.cnt/max/total_size/regions so that we know for sure that it's
> > never used again?  What am I missing?
> 
> 64bit mem_init(), after absent_page_in_range(), will not need memblock anymore.
>   --- absent_page_in_range will refer for_each_mem_pfn_range.
> 
> so after that could clear that for memory.regions too.

I wish we had a single call - say, memblock_die(), or whatever - so
that there's a clear indication that memblock usage is done, but yeah
maybe another day.  Will review the patch itself.  BTW, can't you post
patches inline anymore?  Attaching is better than corrupt but is still
a bit annoying for review.

Thanks.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22 19:29                           ` Tejun Heo
@ 2012-06-22 20:01                             ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 20:01 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
>
> I wish we had a single call - say, memblock_die(), or whatever - so
> that there's a clear indication that memblock usage is done, but yeah
> maybe another day.  Will review the patch itself.  BTW, can't you post
> patches inline anymore?  Attaching is better than corrupt but is still
> a bit annoying for review.

ok, will update memblock_clear patch to memblock_die...

using yhlu.kernel@gmail.com to get mail from the list and respond as
yinghai@kernel.org.

gmail web client does not allow us to insert plain text.

if using standline thunderbird, that seems can not handle thousand mail.

noticed now even Linus is attaching patch, so I assume that is ok
because there is no othe good rway.

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 20:01                             ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 20:01 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
>
> I wish we had a single call - say, memblock_die(), or whatever - so
> that there's a clear indication that memblock usage is done, but yeah
> maybe another day.  Will review the patch itself.  BTW, can't you post
> patches inline anymore?  Attaching is better than corrupt but is still
> a bit annoying for review.

ok, will update memblock_clear patch to memblock_die...

using yhlu.kernel@gmail.com to get mail from the list and respond as
yinghai@kernel.org.

gmail web client does not allow us to insert plain text.

if using standline thunderbird, that seems can not handle thousand mail.

noticed now even Linus is attaching patch, so I assume that is ok
because there is no othe good rway.

Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22 20:01                             ` Yinghai Lu
@ 2012-06-22 20:14                               ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-22 20:14 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Fri, Jun 22, 2012 at 01:01:32PM -0700, Yinghai Lu wrote:
> using yhlu.kernel@gmail.com to get mail from the list and respond as
> yinghai@kernel.org.
> 
> gmail web client does not allow us to insert plain text.
> 
> if using standline thunderbird, that seems can not handle thousand mail.

I moved away from TB too (to gmail + mutt) but IIRC turning off
indexing made it mostly bearable for me.

> noticed now even Linus is attaching patch, so I assume that is ok
> because there is no othe good rway.

Yeah, it's okay but just not optimal.  I was wondering what changed.
My setup is pretty similar and in case you're intersted, here are some
tricks I've been using.

Thunderbird

 * In the Composition & Addressing tab of account setting, clear
   "Compose messages in HTML format".

 * Open Config Editor under Preferences -> Advanced -> General.
   * set mailnews.wraplength to 9999
   * set mailnews.send_plaintext_flowed to false

 * Install External Editor add-on and configure it to your favorite
   editor.

   http://globs.org/articles.php?pg=2&lng=en

   Ctrl-E launches the external editor.  The only caveat is that there
   seems to be a race condition and if the machine is under heavy load
   the extension occassinally loses the edited text, so it usually is a
   good idea to save a copy in a separate file before exiting the
   external editor.  It never happens on my desktop but happens on my
   laptop once in a blue moon.

Alternatively, you can use mutt for patch sending / processing.  With
caches turned on (set header_cache, set message_cachedir), it's
actually pretty useable w/ gmail.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 20:14                               ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-22 20:14 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

On Fri, Jun 22, 2012 at 01:01:32PM -0700, Yinghai Lu wrote:
> using yhlu.kernel@gmail.com to get mail from the list and respond as
> yinghai@kernel.org.
> 
> gmail web client does not allow us to insert plain text.
> 
> if using standline thunderbird, that seems can not handle thousand mail.

I moved away from TB too (to gmail + mutt) but IIRC turning off
indexing made it mostly bearable for me.

> noticed now even Linus is attaching patch, so I assume that is ok
> because there is no othe good rway.

Yeah, it's okay but just not optimal.  I was wondering what changed.
My setup is pretty similar and in case you're intersted, here are some
tricks I've been using.

Thunderbird

 * In the Composition & Addressing tab of account setting, clear
   "Compose messages in HTML format".

 * Open Config Editor under Preferences -> Advanced -> General.
   * set mailnews.wraplength to 9999
   * set mailnews.send_plaintext_flowed to false

 * Install External Editor add-on and configure it to your favorite
   editor.

   http://globs.org/articles.php?pg=2&lng=en

   Ctrl-E launches the external editor.  The only caveat is that there
   seems to be a race condition and if the machine is under heavy load
   the extension occassinally loses the edited text, so it usually is a
   good idea to save a copy in a separate file before exiting the
   external editor.  It never happens on my desktop but happens on my
   laptop once in a blue moon.

Alternatively, you can use mutt for patch sending / processing.  With
caches turned on (set header_cache, set message_cachedir), it's
actually pretty useable w/ gmail.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22 20:14                               ` Tejun Heo
@ 2012-06-22 20:23                                 ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 20:23 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 1:14 PM, Tejun Heo <tj@kernel.org> wrote:
>
> Alternatively, you can use mutt for patch sending / processing.  With
> caches turned on (set header_cache, set message_cachedir), it's
> actually pretty useable w/ gmail.

will try this.

i like to use gmail web client, and other way to send patch but keep
the threading.

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-22 20:23                                 ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-22 20:23 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Fri, Jun 22, 2012 at 1:14 PM, Tejun Heo <tj@kernel.org> wrote:
>
> Alternatively, you can use mutt for patch sending / processing.  With
> caches turned on (set header_cache, set message_cachedir), it's
> actually pretty useable w/ gmail.

will try this.

i like to use gmail web client, and other way to send patch but keep
the threading.

Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-22 19:29                           ` Tejun Heo
  (?)
  (?)
@ 2012-06-23  2:14                           ` Yinghai Lu
  2012-06-27 18:13                               ` Tejun Heo
  -1 siblings, 1 reply; 71+ messages in thread
From: Yinghai Lu @ 2012-06-23  2:14 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 446 bytes --]

On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
> I wish we had a single call - say, memblock_die(), or whatever - so
> that there's a clear indication that memblock usage is done, but yeah
> maybe another day.  Will review the patch itself.  BTW, can't you post
> patches inline anymore?  Attaching is better than corrupt but is still
> a bit annoying for review.

please check the three patches:

Thanks

Yinghai

[-- Attachment #2: fix_free_memblock_reserve_v4_5.patch --]
[-- Type: application/octet-stream, Size: 6770 bytes --]

Subject: [PATCH] memblock: free allocated memblock_reserved_regions later

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

-v5: Use new_alloc_size, and old_alloc_size to simplify it according to tj.

Cc: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   51 +++++++++++++++++++++--------------------------
 mm/nobootmem.c           |   36 ++++++++++++++++++++-------------
 3 files changed, 46 insertions(+), 45 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
 						phys_addr_t new_area_size)
 {
 	struct memblock_region *new_array, *old_array;
+	phys_addr_t old_alloc_size, new_alloc_size;
 	phys_addr_t old_size, new_size, addr;
 	int use_slab = slab_is_available();
 	int *in_slab;
@@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
 	new_size = old_size << 1;
+	/*
+	 * We need to allocated new one align to PAGE_SIZE,
+	 *  so late could free them completely.
+	 */
+	old_alloc_size = PAGE_ALIGN(old_size);
+	new_alloc_size = PAGE_ALIGN(new_size);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,11 +240,11 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_alloc_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_alloc_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
@@ -279,13 +274,13 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), old_alloc_size);
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
 	 */
 	if (!use_slab)
-		BUG_ON(memblock_reserve(addr, new_size));
+		BUG_ON(memblock_reserve(addr, new_alloc_size));
 
 	/* Update slab flag */
 	*in_slab = use_slab;
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

[-- Attachment #3: fix_free_memblock_memory.patch --]
[-- Type: application/octet-stream, Size: 3624 bytes --]

Subject: [PATCH] memblock: Free allocated memblock.memory.regions

We could allocate that too.

So free it like reserved.regions.

For x86_64, need to move absent_page calculating early.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/mm/init_64.c    |    4 +++-
 include/linux/memblock.h |    1 +
 mm/memblock.c            |   23 ++++++++++++++++++-----
 mm/nobootmem.c           |    5 +++++
 4 files changed, 27 insertions(+), 6 deletions(-)

Index: linux-2.6/arch/x86/mm/init_64.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init_64.c
+++ linux-2.6/arch/x86/mm/init_64.c
@@ -690,6 +690,9 @@ void __init mem_init(void)
 
 	reservedpages = 0;
 
+	/* get that before num_free_all_bootmem, it will free memory.regions */
+	absent_pages = absent_pages_in_range(0, max_pfn);
+
 	/* this will put all low memory onto the freelists */
 #ifdef CONFIG_NUMA
 	totalram_pages = numa_free_all_bootmem();
@@ -697,7 +700,6 @@ void __init mem_init(void)
 	totalram_pages = free_all_bootmem();
 #endif
 
-	absent_pages = absent_pages_in_range(0, max_pfn);
 	reservedpages = max_pfn - totalram_pages - absent_pages;
 	after_bootmem = 1;
 
Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -51,6 +51,7 @@ phys_addr_t memblock_find_in_range_node(
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
 phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
+phys_addr_t get_allocated_memblock_memory_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -160,16 +160,29 @@ static void __init_memblock memblock_rem
 	}
 }
 
-phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+static phys_addr_t __init_memblock get_allocated_memblock_regions_info(
+					struct memblock_type *type,
 					phys_addr_t *addr)
 {
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
+        if (type->regions == memblock_memory_init_regions ||
+            type->regions == memblock_reserved_init_regions)
 		return 0;
 
-	*addr = __pa(memblock.reserved.regions);
+	*addr = __pa(type->regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) * type->max);
+}
+
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	return get_allocated_memblock_regions_info(&memblock.reserved, addr);
+}
 
-	return PAGE_ALIGN(sizeof(struct memblock_region) *
-			  memblock.reserved.max);
+phys_addr_t __init_memblock get_allocated_memblock_memory_regions_info(
+					phys_addr_t *addr)
+{
+	return get_allocated_memblock_regions_info(&memblock.memory, addr);
 }
 
 /**
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -134,6 +134,11 @@ unsigned long __init free_low_memory_cor
 	if (size)
 		count += __free_memory_core(start, start + size);
 
+	/* free range that is used for memory array if we allocate it */
+	size = get_allocated_memblock_memory_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
+
 	return count;
 }
 

[-- Attachment #4: memblock_clear_check.patch --]
[-- Type: application/octet-stream, Size: 5256 bytes --]

Subject: [PATCH] memblock: Add checking about illegal using memblock

After memblock is not used anymore, Clear the memblock so we will not
use it wrongly.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/mm/init_32.c    |    3 +++
 arch/x86/mm/init_64.c    |    2 ++
 include/linux/memblock.h |    1 +
 mm/memblock.c            |   28 ++++++++++++++++++++++++++++
 4 files changed, 34 insertions(+)

Index: linux-2.6/arch/x86/mm/init_32.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init_32.c
+++ linux-2.6/arch/x86/mm/init_32.c
@@ -759,6 +759,9 @@ void __init mem_init(void)
 		if (page_is_ram(tmp) && PageReserved(pfn_to_page(tmp)))
 			reservedpages++;
 
+	/* clear to catch wrong usage */
+	memblock_clear();
+
 	codesize =  (unsigned long) &_etext - (unsigned long) &_text;
 	datasize =  (unsigned long) &_edata - (unsigned long) &_etext;
 	initsize =  (unsigned long) &__init_end - (unsigned long) &__init_begin;
Index: linux-2.6/arch/x86/mm/init_64.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init_64.c
+++ linux-2.6/arch/x86/mm/init_64.c
@@ -701,6 +701,8 @@ void __init mem_init(void)
 #endif
 
 	reservedpages = max_pfn - totalram_pages - absent_pages;
+	/* clear to catch wrong usage */
+	memblock_clear();
 	after_bootmem = 1;
 
 	codesize =  (unsigned long) &_etext - (unsigned long) &_text;
Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -46,6 +46,7 @@ extern int memblock_debug;
 #define memblock_dbg(fmt, ...) \
 	if (memblock_debug) printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
 
+void memblock_clear(void);
 phys_addr_t memblock_find_in_range_node(phys_addr_t start, phys_addr_t end,
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -101,6 +101,8 @@ phys_addr_t __init_memblock memblock_fin
 	phys_addr_t this_start, this_end, cand;
 	u64 i;
 
+	WARN_ONCE(!memblock.reserved.max, "memblock.reserved was cleared already!");
+
 	/* pump up @end */
 	if (end == MEMBLOCK_ALLOC_ACCESSIBLE)
 		end = memblock.current_limit;
@@ -143,6 +145,15 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
+/*
+ * Clear memblock
+ */
+void __init_memblock memblock_clear(void)
+{
+	memset(&memblock.reserved, 0, sizeof(memblock.reserved));
+	memset(&memblock.memory, 0, sizeof(memblock.memory));
+}
+
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -448,11 +459,15 @@ repeat:
 int __init_memblock memblock_add_node(phys_addr_t base, phys_addr_t size,
 				       int nid)
 {
+	WARN_ONCE(!memblock.memory.max, "memblock.memory was cleared already!");
+
 	return memblock_add_region(&memblock.memory, base, size, nid);
 }
 
 int __init_memblock memblock_add(phys_addr_t base, phys_addr_t size)
 {
+	WARN_ONCE(!memblock.memory.max, "memblock.memory was cleared already!");
+
 	return memblock_add_region(&memblock.memory, base, size, MAX_NUMNODES);
 }
 
@@ -547,11 +562,15 @@ static int __init_memblock __memblock_re
 
 int __init_memblock memblock_remove(phys_addr_t base, phys_addr_t size)
 {
+	WARN_ONCE(!memblock.memory.max, "memblock.memory was cleared already!");
+
 	return __memblock_remove(&memblock.memory, base, size);
 }
 
 int __init_memblock memblock_free(phys_addr_t base, phys_addr_t size)
 {
+	WARN_ONCE(!memblock.reserved.max, "memblock.reserved was cleared already!");
+
 	memblock_dbg("   memblock_free: [%#016llx-%#016llx] %pF\n",
 		     (unsigned long long)base,
 		     (unsigned long long)base + size,
@@ -564,6 +583,7 @@ int __init_memblock memblock_reserve(phy
 {
 	struct memblock_type *_rgn = &memblock.reserved;
 
+	WARN_ONCE(!memblock.reserved.max, "memblock.reserved was cleared already!");
 	memblock_dbg("memblock_reserve: [%#016llx-%#016llx] %pF\n",
 		     (unsigned long long)base,
 		     (unsigned long long)base + size,
@@ -604,6 +624,9 @@ void __init_memblock __next_free_mem_ran
 	int mi = *idx & 0xffffffff;
 	int ri = *idx >> 32;
 
+	WARN_ONCE(!mem->max, "memblock.memory was cleared already!");
+	WARN_ONCE(!rsv->max, "memblock.reserved was cleared already!");
+
 	for ( ; mi < mem->cnt; mi++) {
 		struct memblock_region *m = &mem->regions[mi];
 		phys_addr_t m_start = m->base;
@@ -667,6 +690,9 @@ void __init_memblock __next_free_mem_ran
 	int mi = *idx & 0xffffffff;
 	int ri = *idx >> 32;
 
+	WARN_ONCE(!mem->max, "memblock.memory was cleared already!");
+	WARN_ONCE(!rsv->max, "memblock.reserved was cleared already!");
+
 	if (*idx == (u64)ULLONG_MAX) {
 		mi = mem->cnt - 1;
 		ri = rsv->cnt;
@@ -763,6 +789,8 @@ int __init_memblock memblock_set_node(ph
 	int start_rgn, end_rgn;
 	int i, ret;
 
+	WARN_ONCE(!memblock.memory.max, "memblock.memory was cleared already!");
+
 	ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn);
 	if (ret)
 		return ret;

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-23  2:14                           ` Yinghai Lu
@ 2012-06-27 18:13                               ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-27 18:13 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

Sorry about the delay.  I'm in bug storm somehow. :(

On Fri, Jun 22, 2012 at 07:14:43PM -0700, Yinghai Lu wrote:
> On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
> > I wish we had a single call - say, memblock_die(), or whatever - so
> > that there's a clear indication that memblock usage is done, but yeah
> > maybe another day.  Will review the patch itself.  BTW, can't you post
> > patches inline anymore?  Attaching is better than corrupt but is still
> > a bit annoying for review.
> 
> please check the three patches:

Heh, reviewing is cumbersome this way but here are my comments.

* "[PATCH] memblock: free allocated memblock_reserved_regions later"
  looks okay to me.

* "[PATCH] memblock: Free allocated memblock.memory.regions" makes me
  wonder whether it would be better to have something like the
  following instead.

  typedef void memblock_free_region_fn_t(unsigned long start, unsigned size);

  void memblock_free_regions(memblock_free_region_fn_t free_fn)
  {
	/* call free_fn() on reserved and memory regions arrays */
	/* clear both structures so that any further usage triggers warning */
  }

* "memblock: Add checking about illegal using memblock".
  Hmm... wouldn't it be better to be less explicit?  I think it's
  adding too much opencoded identical checks.  Maybe implement a
  common check & warning function?

Thanks.

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-27 18:13                               ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-27 18:13 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

Hello, Yinghai.

Sorry about the delay.  I'm in bug storm somehow. :(

On Fri, Jun 22, 2012 at 07:14:43PM -0700, Yinghai Lu wrote:
> On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
> > I wish we had a single call - say, memblock_die(), or whatever - so
> > that there's a clear indication that memblock usage is done, but yeah
> > maybe another day.  Will review the patch itself.  BTW, can't you post
> > patches inline anymore?  Attaching is better than corrupt but is still
> > a bit annoying for review.
> 
> please check the three patches:

Heh, reviewing is cumbersome this way but here are my comments.

* "[PATCH] memblock: free allocated memblock_reserved_regions later"
  looks okay to me.

* "[PATCH] memblock: Free allocated memblock.memory.regions" makes me
  wonder whether it would be better to have something like the
  following instead.

  typedef void memblock_free_region_fn_t(unsigned long start, unsigned size);

  void memblock_free_regions(memblock_free_region_fn_t free_fn)
  {
	/* call free_fn() on reserved and memory regions arrays */
	/* clear both structures so that any further usage triggers warning */
  }

* "memblock: Add checking about illegal using memblock".
  Hmm... wouldn't it be better to be less explicit?  I think it's
  adding too much opencoded identical checks.  Maybe implement a
  common check & warning function?

Thanks.

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-27 18:13                               ` Tejun Heo
@ 2012-06-27 19:22                                 ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-27 19:22 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Wed, Jun 27, 2012 at 11:13 AM, Tejun Heo <tj@kernel.org> wrote:
> Hello, Yinghai.
>
> Sorry about the delay.  I'm in bug storm somehow. :(
>
> On Fri, Jun 22, 2012 at 07:14:43PM -0700, Yinghai Lu wrote:
>> On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
>> > I wish we had a single call - say, memblock_die(), or whatever - so
>> > that there's a clear indication that memblock usage is done, but yeah
>> > maybe another day.  Will review the patch itself.  BTW, can't you post
>> > patches inline anymore?  Attaching is better than corrupt but is still
>> > a bit annoying for review.
>>
>> please check the three patches:
>
> Heh, reviewing is cumbersome this way but here are my comments.
>
> * "[PATCH] memblock: free allocated memblock_reserved_regions later"
>  looks okay to me.

Good, this one should go to 3.5, right?


>
> * "[PATCH] memblock: Free allocated memblock.memory.regions" makes me
>  wonder whether it would be better to have something like the
>  following instead.
>
>  typedef void memblock_free_region_fn_t(unsigned long start, unsigned size);
>
>  void memblock_free_regions(memblock_free_region_fn_t free_fn)
>  {
>        /* call free_fn() on reserved and memory regions arrays */
>        /* clear both structures so that any further usage triggers warning */
>  }

ok, will check it.

>
> * "memblock: Add checking about illegal using memblock".
>  Hmm... wouldn't it be better to be less explicit?  I think it's
>  adding too much opencoded identical checks.  Maybe implement a
>  common check & warning function?

yes.

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-27 19:22                                 ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-27 19:22 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Wed, Jun 27, 2012 at 11:13 AM, Tejun Heo <tj@kernel.org> wrote:
> Hello, Yinghai.
>
> Sorry about the delay.  I'm in bug storm somehow. :(
>
> On Fri, Jun 22, 2012 at 07:14:43PM -0700, Yinghai Lu wrote:
>> On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
>> > I wish we had a single call - say, memblock_die(), or whatever - so
>> > that there's a clear indication that memblock usage is done, but yeah
>> > maybe another day.  Will review the patch itself.  BTW, can't you post
>> > patches inline anymore?  Attaching is better than corrupt but is still
>> > a bit annoying for review.
>>
>> please check the three patches:
>
> Heh, reviewing is cumbersome this way but here are my comments.
>
> * "[PATCH] memblock: free allocated memblock_reserved_regions later"
>  looks okay to me.

Good, this one should go to 3.5, right?


>
> * "[PATCH] memblock: Free allocated memblock.memory.regions" makes me
>  wonder whether it would be better to have something like the
>  following instead.
>
>  typedef void memblock_free_region_fn_t(unsigned long start, unsigned size);
>
>  void memblock_free_regions(memblock_free_region_fn_t free_fn)
>  {
>        /* call free_fn() on reserved and memory regions arrays */
>        /* clear both structures so that any further usage triggers warning */
>  }

ok, will check it.

>
> * "memblock: Add checking about illegal using memblock".
>  Hmm... wouldn't it be better to be less explicit?  I think it's
>  adding too much opencoded identical checks.  Maybe implement a
>  common check & warning function?

yes.

Thanks

Yinghai

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-27 19:22                                 ` Yinghai Lu
@ 2012-06-27 19:26                                   ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-27 19:26 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Wed, Jun 27, 2012 at 12:22:14PM -0700, Yinghai Lu wrote:
> On Wed, Jun 27, 2012 at 11:13 AM, Tejun Heo <tj@kernel.org> wrote:
> > Hello, Yinghai.
> >
> > Sorry about the delay.  I'm in bug storm somehow. :(
> >
> > On Fri, Jun 22, 2012 at 07:14:43PM -0700, Yinghai Lu wrote:
> >> On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
> >> > I wish we had a single call - say, memblock_die(), or whatever - so
> >> > that there's a clear indication that memblock usage is done, but yeah
> >> > maybe another day.  Will review the patch itself.  BTW, can't you post
> >> > patches inline anymore?  Attaching is better than corrupt but is still
> >> > a bit annoying for review.
> >>
> >> please check the three patches:
> >
> > Heh, reviewing is cumbersome this way but here are my comments.
> >
> > * "[PATCH] memblock: free allocated memblock_reserved_regions later"
> >  looks okay to me.
> 
> Good, this one should go to 3.5, right?

Yes, I think so.

Thank you!

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
@ 2012-06-27 19:26                                   ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-27 19:26 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Gavin Shan, Sasha Levin, Andrew Morton, David Miller, hpa,
	linux-mm, linux-kernel

On Wed, Jun 27, 2012 at 12:22:14PM -0700, Yinghai Lu wrote:
> On Wed, Jun 27, 2012 at 11:13 AM, Tejun Heo <tj@kernel.org> wrote:
> > Hello, Yinghai.
> >
> > Sorry about the delay.  I'm in bug storm somehow. :(
> >
> > On Fri, Jun 22, 2012 at 07:14:43PM -0700, Yinghai Lu wrote:
> >> On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
> >> > I wish we had a single call - say, memblock_die(), or whatever - so
> >> > that there's a clear indication that memblock usage is done, but yeah
> >> > maybe another day.  Will review the patch itself.  BTW, can't you post
> >> > patches inline anymore?  Attaching is better than corrupt but is still
> >> > a bit annoying for review.
> >>
> >> please check the three patches:
> >
> > Heh, reviewing is cumbersome this way but here are my comments.
> >
> > * "[PATCH] memblock: free allocated memblock_reserved_regions later"
> >  looks okay to me.
> 
> Good, this one should go to 3.5, right?

Yes, I think so.

Thank you!

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Early boot panic on machine with lots of memory
  2012-06-27 19:26                                   ` Tejun Heo
  (?)
@ 2012-06-27 21:15                                   ` Yinghai Lu
  2012-06-29 18:27                                       ` Yinghai Lu
  -1 siblings, 1 reply; 71+ messages in thread
From: Yinghai Lu @ 2012-06-27 21:15 UTC (permalink / raw)
  To: Tejun Heo, Andrew Morton, Ingo Molnar, H. Peter Anvin
  Cc: Gavin Shan, Sasha Levin, David Miller, hpa, linux-mm, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1194 bytes --]

On Wed, Jun 27, 2012 at 12:26 PM, Tejun Heo <tj@kernel.org> wrote:
> On Wed, Jun 27, 2012 at 12:22:14PM -0700, Yinghai Lu wrote:
>> On Wed, Jun 27, 2012 at 11:13 AM, Tejun Heo <tj@kernel.org> wrote:
>> > Hello, Yinghai.
>> >
>> > Sorry about the delay.  I'm in bug storm somehow. :(
>> >
>> > On Fri, Jun 22, 2012 at 07:14:43PM -0700, Yinghai Lu wrote:
>> >> On Fri, Jun 22, 2012 at 12:29 PM, Tejun Heo <tj@kernel.org> wrote:
>> >> > I wish we had a single call - say, memblock_die(), or whatever - so
>> >> > that there's a clear indication that memblock usage is done, but yeah
>> >> > maybe another day.  Will review the patch itself.  BTW, can't you post
>> >> > patches inline anymore?  Attaching is better than corrupt but is still
>> >> > a bit annoying for review.
>> >>
>> >> please check the three patches:
>> >
>> > Heh, reviewing is cumbersome this way but here are my comments.
>> >
>> > * "[PATCH] memblock: free allocated memblock_reserved_regions later"
>> >  looks okay to me.
>>
>> Good, this one should go to 3.5, right?
>
> Yes, I think so.
>

Andrew,

can you push attached to Linus ?
or we need to route it through tip?

Thanks

Yinghai

[-- Attachment #2: fix_free_memblock_reserve_v4_5.patch --]
[-- Type: application/octet-stream, Size: 6776 bytes --]

Subject: [PATCH] memblock: free allocated memblock_reserved_regions later

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

-v5: Use new_alloc_size, and old_alloc_size to simplify it according to tj.

Acked-by: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   51 +++++++++++++++++++++--------------------------
 mm/nobootmem.c           |   36 ++++++++++++++++++++-------------
 3 files changed, 46 insertions(+), 45 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
 						phys_addr_t new_area_size)
 {
 	struct memblock_region *new_array, *old_array;
+	phys_addr_t old_alloc_size, new_alloc_size;
 	phys_addr_t old_size, new_size, addr;
 	int use_slab = slab_is_available();
 	int *in_slab;
@@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
 	new_size = old_size << 1;
+	/*
+	 * We need to allocated new one align to PAGE_SIZE,
+	 *  so late could free them completely.
+	 */
+	old_alloc_size = PAGE_ALIGN(old_size);
+	new_alloc_size = PAGE_ALIGN(new_size);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,11 +240,11 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_alloc_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_alloc_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
@@ -279,13 +274,13 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), old_alloc_size);
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
 	 */
 	if (!use_slab)
-		BUG_ON(memblock_reserve(addr, new_size));
+		BUG_ON(memblock_reserve(addr, new_alloc_size));
 
 	/* Update slab flag */
 	*in_slab = use_slab;
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

^ permalink raw reply	[flat|nested] 71+ messages in thread

* [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later
  2012-06-27 21:15                                   ` Yinghai Lu
@ 2012-06-29 18:27                                       ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-29 18:27 UTC (permalink / raw)
  To: Andrew Morton, Ingo Molnar, H. Peter Anvin
  Cc: Tejun Heo, Sasha Levin, Gavin Shan, linux-mm, linux-kernel,
	Benjamin Herrenschmidt, Yinghai Lu

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

-v5: Use new_alloc_size, and old_alloc_size to simplify it according to tj.

Repored-by: Sasha Levin <levinsasha928@gmail.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   51 +++++++++++++++++++++--------------------------
 mm/nobootmem.c           |   36 ++++++++++++++++++++-------------
 3 files changed, 46 insertions(+), 45 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
 						phys_addr_t new_area_size)
 {
 	struct memblock_region *new_array, *old_array;
+	phys_addr_t old_alloc_size, new_alloc_size;
 	phys_addr_t old_size, new_size, addr;
 	int use_slab = slab_is_available();
 	int *in_slab;
@@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
 	new_size = old_size << 1;
+	/*
+	 * We need to allocated new one align to PAGE_SIZE,
+	 *  so late could free them completely.
+	 */
+	old_alloc_size = PAGE_ALIGN(old_size);
+	new_alloc_size = PAGE_ALIGN(new_size);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,11 +240,11 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_alloc_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_alloc_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
@@ -279,13 +274,13 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), old_alloc_size);
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
 	 */
 	if (!use_slab)
-		BUG_ON(memblock_reserve(addr, new_size));
+		BUG_ON(memblock_reserve(addr, new_alloc_size));
 
 	/* Update slab flag */
 	*in_slab = use_slab;
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

^ permalink raw reply	[flat|nested] 71+ messages in thread

* [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later
@ 2012-06-29 18:27                                       ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-29 18:27 UTC (permalink / raw)
  To: Andrew Morton, Ingo Molnar, H. Peter Anvin
  Cc: Tejun Heo, Sasha Levin, Gavin Shan, linux-mm, linux-kernel,
	Benjamin Herrenschmidt, Yinghai Lu

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

-v5: Use new_alloc_size, and old_alloc_size to simplify it according to tj.

Repored-by: Sasha Levin <levinsasha928@gmail.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   51 +++++++++++++++++++++--------------------------
 mm/nobootmem.c           |   36 ++++++++++++++++++++-------------
 3 files changed, 46 insertions(+), 45 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
 						phys_addr_t new_area_size)
 {
 	struct memblock_region *new_array, *old_array;
+	phys_addr_t old_alloc_size, new_alloc_size;
 	phys_addr_t old_size, new_size, addr;
 	int use_slab = slab_is_available();
 	int *in_slab;
@@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
 	new_size = old_size << 1;
+	/*
+	 * We need to allocated new one align to PAGE_SIZE,
+	 *  so late could free them completely.
+	 */
+	old_alloc_size = PAGE_ALIGN(old_size);
+	new_alloc_size = PAGE_ALIGN(new_size);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,11 +240,11 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_alloc_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_alloc_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
@@ -279,13 +274,13 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), old_alloc_size);
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
 	 */
 	if (!use_slab)
-		BUG_ON(memblock_reserve(addr, new_size));
+		BUG_ON(memblock_reserve(addr, new_alloc_size));
 
 	/* Update slab flag */
 	*in_slab = use_slab;
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later
  2012-06-29 18:27                                       ` Yinghai Lu
@ 2012-06-29 18:32                                         ` Tejun Heo
  -1 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-29 18:32 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Andrew Morton, Ingo Molnar, H. Peter Anvin, Sasha Levin,
	Gavin Shan, linux-mm, linux-kernel, Benjamin Herrenschmidt

Hello, Yinghai.

Just one nitpick.

On Fri, Jun 29, 2012 at 11:27:57AM -0700, Yinghai Lu wrote:
>  /**
>   * memblock_double_array - double the size of the memblock regions array
>   * @type: memblock type of the regions array being doubled
> @@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
>  						phys_addr_t new_area_size)
>  {
>  	struct memblock_region *new_array, *old_array;
> +	phys_addr_t old_alloc_size, new_alloc_size;
>  	phys_addr_t old_size, new_size, addr;
>  	int use_slab = slab_is_available();
>  	int *in_slab;
> @@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
>  	/* Calculate new doubled size */
>  	old_size = type->max * sizeof(struct memblock_region);
>  	new_size = old_size << 1;
> +	/*
> +	 * We need to allocated new one align to PAGE_SIZE,
> +	 *  so late could free them completely.

An extra space and probably "so we can free them completely later"
fits better.

Thank you!

-- 
tejun

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later
@ 2012-06-29 18:32                                         ` Tejun Heo
  0 siblings, 0 replies; 71+ messages in thread
From: Tejun Heo @ 2012-06-29 18:32 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Andrew Morton, Ingo Molnar, H. Peter Anvin, Sasha Levin,
	Gavin Shan, linux-mm, linux-kernel, Benjamin Herrenschmidt

Hello, Yinghai.

Just one nitpick.

On Fri, Jun 29, 2012 at 11:27:57AM -0700, Yinghai Lu wrote:
>  /**
>   * memblock_double_array - double the size of the memblock regions array
>   * @type: memblock type of the regions array being doubled
> @@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
>  						phys_addr_t new_area_size)
>  {
>  	struct memblock_region *new_array, *old_array;
> +	phys_addr_t old_alloc_size, new_alloc_size;
>  	phys_addr_t old_size, new_size, addr;
>  	int use_slab = slab_is_available();
>  	int *in_slab;
> @@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
>  	/* Calculate new doubled size */
>  	old_size = type->max * sizeof(struct memblock_region);
>  	new_size = old_size << 1;
> +	/*
> +	 * We need to allocated new one align to PAGE_SIZE,
> +	 *  so late could free them completely.

An extra space and probably "so we can free them completely later"
fits better.

Thank you!

-- 
tejun

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

* [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later
  2012-06-29 18:32                                         ` Tejun Heo
@ 2012-06-29 18:38                                           ` Yinghai Lu
  -1 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-29 18:38 UTC (permalink / raw)
  To: Andrew Morton, Ingo Molnar, H. Peter Anvin
  Cc: Tejun Heo, Sasha Levin, Gavin Shan, linux-mm, linux-kernel,
	Benjamin Herrenschmidt, Yinghai Lu

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

-v5: Use new_alloc_size, and old_alloc_size to simplify it according to tj.
-v6: update one comment according to tj.

Repored-by: Sasha Levin <levinsasha928@gmail.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   51 +++++++++++++++++++++--------------------------
 mm/nobootmem.c           |   36 ++++++++++++++++++++-------------
 3 files changed, 46 insertions(+), 45 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
 						phys_addr_t new_area_size)
 {
 	struct memblock_region *new_array, *old_array;
+	phys_addr_t old_alloc_size, new_alloc_size;
 	phys_addr_t old_size, new_size, addr;
 	int use_slab = slab_is_available();
 	int *in_slab;
@@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
 	new_size = old_size << 1;
+	/*
+	 * We need to allocated new one align to PAGE_SIZE,
+	 *   so we can free them completely later.
+	 */
+	old_alloc_size = PAGE_ALIGN(old_size);
+	new_alloc_size = PAGE_ALIGN(new_size);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,11 +240,11 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_alloc_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_alloc_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
@@ -279,13 +274,13 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), old_alloc_size);
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
 	 */
 	if (!use_slab)
-		BUG_ON(memblock_reserve(addr, new_size));
+		BUG_ON(memblock_reserve(addr, new_alloc_size));
 
 	/* Update slab flag */
 	*in_slab = use_slab;
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

^ permalink raw reply	[flat|nested] 71+ messages in thread

* [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later
@ 2012-06-29 18:38                                           ` Yinghai Lu
  0 siblings, 0 replies; 71+ messages in thread
From: Yinghai Lu @ 2012-06-29 18:38 UTC (permalink / raw)
  To: Andrew Morton, Ingo Molnar, H. Peter Anvin
  Cc: Tejun Heo, Sasha Levin, Gavin Shan, linux-mm, linux-kernel,
	Benjamin Herrenschmidt, Yinghai Lu

In memblock_free_reserved_regions, will call memblock_free(),
but memblock_free() would double reserved.regions too, so we could free
old range for reserved.regions.

Also tj said there is another bug could be related to this too.

| I don't think we're saving any noticeable
| amount by doing this "free - give it to page allocator - reserve
| again" dancing.  We should just allocate regions aligned to page
| boundaries and free them later when memblock is no longer in use.

So try to allocate that in PAGE_SIZE alignment and free that later.

-v5: Use new_alloc_size, and old_alloc_size to simplify it according to tj.
-v6: update one comment according to tj.

Repored-by: Sasha Levin <levinsasha928@gmail.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 include/linux/memblock.h |    4 ---
 mm/memblock.c            |   51 +++++++++++++++++++++--------------------------
 mm/nobootmem.c           |   36 ++++++++++++++++++++-------------
 3 files changed, 46 insertions(+), 45 deletions(-)

Index: linux-2.6/include/linux/memblock.h
===================================================================
--- linux-2.6.orig/include/linux/memblock.h
+++ linux-2.6/include/linux/memblock.h
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(
 				phys_addr_t size, phys_addr_t align, int nid);
 phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
 				   phys_addr_t size, phys_addr_t align);
-int memblock_free_reserved_regions(void);
-int memblock_reserve_reserved_regions(void);
-
+phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
 void memblock_allow_resize(void);
 int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
 int memblock_add(phys_addr_t base, phys_addr_t size);
Index: linux-2.6/mm/memblock.c
===================================================================
--- linux-2.6.orig/mm/memblock.c
+++ linux-2.6/mm/memblock.c
@@ -143,30 +143,6 @@ phys_addr_t __init_memblock memblock_fin
 					   MAX_NUMNODES);
 }
 
-/*
- * Free memblock.reserved.regions
- */
-int __init_memblock memblock_free_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_free(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
-/*
- * Reserve memblock.reserved.regions
- */
-int __init_memblock memblock_reserve_reserved_regions(void)
-{
-	if (memblock.reserved.regions == memblock_reserved_init_regions)
-		return 0;
-
-	return memblock_reserve(__pa(memblock.reserved.regions),
-		 sizeof(struct memblock_region) * memblock.reserved.max);
-}
-
 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
 {
 	type->total_size -= type->regions[r].size;
@@ -184,6 +160,18 @@ static void __init_memblock memblock_rem
 	}
 }
 
+phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info(
+					phys_addr_t *addr)
+{
+	if (memblock.reserved.regions == memblock_reserved_init_regions)
+		return 0;
+
+	*addr = __pa(memblock.reserved.regions);
+
+	return PAGE_ALIGN(sizeof(struct memblock_region) *
+			  memblock.reserved.max);
+}
+
 /**
  * memblock_double_array - double the size of the memblock regions array
  * @type: memblock type of the regions array being doubled
@@ -204,6 +192,7 @@ static int __init_memblock memblock_doub
 						phys_addr_t new_area_size)
 {
 	struct memblock_region *new_array, *old_array;
+	phys_addr_t old_alloc_size, new_alloc_size;
 	phys_addr_t old_size, new_size, addr;
 	int use_slab = slab_is_available();
 	int *in_slab;
@@ -217,6 +206,12 @@ static int __init_memblock memblock_doub
 	/* Calculate new doubled size */
 	old_size = type->max * sizeof(struct memblock_region);
 	new_size = old_size << 1;
+	/*
+	 * We need to allocated new one align to PAGE_SIZE,
+	 *   so we can free them completely later.
+	 */
+	old_alloc_size = PAGE_ALIGN(old_size);
+	new_alloc_size = PAGE_ALIGN(new_size);
 
 	/* Retrieve the slab flag */
 	if (type == &memblock.memory)
@@ -245,11 +240,11 @@ static int __init_memblock memblock_doub
 
 		addr = memblock_find_in_range(new_area_start + new_area_size,
 						memblock.current_limit,
-						new_size, sizeof(phys_addr_t));
+						new_alloc_size, PAGE_SIZE);
 		if (!addr && new_area_size)
 			addr = memblock_find_in_range(0,
 					min(new_area_start, memblock.current_limit),
-					new_size, sizeof(phys_addr_t));
+					new_alloc_size, PAGE_SIZE);
 
 		new_array = addr ? __va(addr) : 0;
 	}
@@ -279,13 +274,13 @@ static int __init_memblock memblock_doub
 		kfree(old_array);
 	else if (old_array != memblock_memory_init_regions &&
 		 old_array != memblock_reserved_init_regions)
-		memblock_free(__pa(old_array), old_size);
+		memblock_free(__pa(old_array), old_alloc_size);
 
 	/* Reserve the new array if that comes from the memblock.
 	 * Otherwise, we needn't do it
 	 */
 	if (!use_slab)
-		BUG_ON(memblock_reserve(addr, new_size));
+		BUG_ON(memblock_reserve(addr, new_alloc_size));
 
 	/* Update slab flag */
 	*in_slab = use_slab;
Index: linux-2.6/mm/nobootmem.c
===================================================================
--- linux-2.6.orig/mm/nobootmem.c
+++ linux-2.6/mm/nobootmem.c
@@ -105,27 +105,35 @@ static void __init __free_pages_memory(u
 		__free_pages_bootmem(pfn_to_page(i), 0);
 }
 
+static unsigned long __init __free_memory_core(phys_addr_t start,
+				 phys_addr_t end)
+{
+	unsigned long start_pfn = PFN_UP(start);
+	unsigned long end_pfn = min_t(unsigned long,
+				      PFN_DOWN(end), max_low_pfn);
+
+	if (start_pfn > end_pfn)
+		return 0;
+
+	__free_pages_memory(start_pfn, end_pfn);
+
+	return end_pfn - start_pfn;
+}
+
 unsigned long __init free_low_memory_core_early(int nodeid)
 {
 	unsigned long count = 0;
-	phys_addr_t start, end;
+	phys_addr_t start, end, size;
 	u64 i;
 
-	/* free reserved array temporarily so that it's treated as free area */
-	memblock_free_reserved_regions();
+	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+		count += __free_memory_core(start, end);
 
-	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL) {
-		unsigned long start_pfn = PFN_UP(start);
-		unsigned long end_pfn = min_t(unsigned long,
-					      PFN_DOWN(end), max_low_pfn);
-		if (start_pfn < end_pfn) {
-			__free_pages_memory(start_pfn, end_pfn);
-			count += end_pfn - start_pfn;
-		}
-	}
+	/* free range that is used for reserved array if we allocate it */
+	size = get_allocated_memblock_reserved_regions_info(&start);
+	if (size)
+		count += __free_memory_core(start, start + size);
 
-	/* put region array back? */
-	memblock_reserve_reserved_regions();
 	return count;
 }
 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 71+ messages in thread

end of thread, other threads:[~2012-06-29 18:40 UTC | newest]

Thread overview: 71+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-13 21:38 Early boot panic on machine with lots of memory Sasha Levin
2012-06-14  3:20 ` Tejun Heo
2012-06-14  3:20   ` Tejun Heo
2012-06-14  9:50   ` Sasha Levin
2012-06-14  9:50     ` Sasha Levin
2012-06-14 20:56     ` Yinghai Lu
2012-06-14 20:56       ` Yinghai Lu
2012-06-14 21:34       ` Sasha Levin
2012-06-14 21:34         ` Sasha Levin
2012-06-14 23:57         ` Yinghai Lu
2012-06-14 23:57           ` Yinghai Lu
2012-06-15  0:59           ` Sasha Levin
2012-06-15  0:59             ` Sasha Levin
2012-06-15  0:59             ` Sasha Levin
2012-06-15  2:21             ` Yinghai Lu
2012-06-15  2:21               ` Yinghai Lu
2012-06-15  7:41               ` Sasha Levin
2012-06-15  7:41                 ` Sasha Levin
2012-06-18 22:32     ` Tejun Heo
2012-06-18 22:32       ` Tejun Heo
2012-06-18 22:50       ` Sasha Levin
2012-06-18 22:50         ` Sasha Levin
2012-06-19  4:11         ` Gavin Shan
2012-06-19  4:11           ` Gavin Shan
2012-06-19  5:43           ` Yinghai Lu
2012-06-19  5:43             ` Yinghai Lu
2012-06-19  6:09             ` Gavin Shan
2012-06-19  6:09               ` Gavin Shan
2012-06-19 18:12               ` Yinghai Lu
2012-06-19 18:12                 ` Yinghai Lu
2012-06-19 21:20           ` Tejun Heo
2012-06-19 21:20             ` Tejun Heo
2012-06-19 21:26             ` Tejun Heo
2012-06-19 21:26               ` Tejun Heo
2012-06-20  2:57               ` Yinghai Lu
2012-06-21 20:17                 ` Tejun Heo
2012-06-21 20:17                   ` Tejun Heo
2012-06-22  1:47                   ` Yinghai Lu
2012-06-22  1:58                     ` Yinghai Lu
2012-06-22 18:51                     ` Tejun Heo
2012-06-22 18:51                       ` Tejun Heo
2012-06-22 19:23                       ` Yinghai Lu
2012-06-22 19:23                         ` Yinghai Lu
2012-06-22 19:29                         ` Tejun Heo
2012-06-22 19:29                           ` Tejun Heo
2012-06-22 20:01                           ` Yinghai Lu
2012-06-22 20:01                             ` Yinghai Lu
2012-06-22 20:14                             ` Tejun Heo
2012-06-22 20:14                               ` Tejun Heo
2012-06-22 20:23                               ` Yinghai Lu
2012-06-22 20:23                                 ` Yinghai Lu
2012-06-23  2:14                           ` Yinghai Lu
2012-06-27 18:13                             ` Tejun Heo
2012-06-27 18:13                               ` Tejun Heo
2012-06-27 19:22                               ` Yinghai Lu
2012-06-27 19:22                                 ` Yinghai Lu
2012-06-27 19:26                                 ` Tejun Heo
2012-06-27 19:26                                   ` Tejun Heo
2012-06-27 21:15                                   ` Yinghai Lu
2012-06-29 18:27                                     ` [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later Yinghai Lu
2012-06-29 18:27                                       ` Yinghai Lu
2012-06-29 18:32                                       ` Tejun Heo
2012-06-29 18:32                                         ` Tejun Heo
2012-06-29 18:38                                         ` Yinghai Lu
2012-06-29 18:38                                           ` Yinghai Lu
2012-06-21 20:19             ` Early boot panic on machine with lots of memory Tejun Heo
2012-06-21 20:19               ` Tejun Heo
2012-06-22 10:29               ` Sasha Levin
2012-06-22 10:29                 ` Sasha Levin
2012-06-22 18:15                 ` Yinghai Lu
2012-06-22 18:15                   ` Yinghai Lu

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.