* Re: kvm kdump regression [not found] <1888861854.1349971284977836487.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com> @ 2010-09-20 10:17 ` caiqian 2010-09-20 23:09 ` Tejun Heo 0 siblings, 1 reply; 14+ messages in thread From: caiqian @ 2010-09-20 10:17 UTC (permalink / raw) To: Tejun Heo Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity [-- Attachment #1: Type: text/plain, Size: 6552 bytes --] ----- "Tejun Heo" <tj@kernel.org> wrote: > Hello, > > I was slightly confused with the debug patch but it looks like > someone > is feeding non-percpu address to the function. Hmm... or it could be > that the first chunk test is returning false incorrectly for an > address which is inside static percpu area. Can you please try the > following patch instead? This should make the problem go away and > give us enough information about which address is causing the > problem. > Please attach logs from both the original kernel before triggering > crash and from the crash kernel. I can't reproduce it anymore after applied the patch. Both the first and the second kernel logs attached. > > Thank you. > > diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c > index 7d9c1d0..357569a 100644 > --- a/mm/percpu-vm.c > +++ b/mm/percpu-vm.c > @@ -415,6 +415,7 @@ static struct pcpu_chunk *pcpu_create_chunk(void) > { > struct pcpu_chunk *chunk; > struct vm_struct **vms; > + int i; > > chunk = pcpu_alloc_chunk(); > if (!chunk) > @@ -429,6 +430,13 @@ static struct pcpu_chunk > *pcpu_create_chunk(void) > > chunk->data = vms; > chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; > + chunk->chunkno = ++chunkno; > + printk("XXX chunk %d allocated base_addr=%p\n", > + chunk->chunkno, chunk->base_addr); > + printk("XXX VMS:"); > + for (i = 0; i < pcpu_nr_groups; i++) > + printk(" %zu@%p", vms[i]->size, vms[i]->addr); > + printk("\n"); > return chunk; > } > > diff --git a/mm/percpu.c b/mm/percpu.c > index 77e3f5a..14c836b 100644 > --- a/mm/percpu.c > +++ b/mm/percpu.c > @@ -96,7 +96,10 @@ > #define __pcpu_ptr_to_addr(ptr) (void __force *)(ptr) > #endif /* CONFIG_SMP */ > > +static int chunkno; > + > struct pcpu_chunk { > + int chunkno; > struct list_head list; /* linked to pcpu_slot lists */ > int free_size; /* free bytes in the chunk */ > int contig_hint; /* max contiguous size hint */ > @@ -182,6 +185,40 @@ static struct list_head *pcpu_slot __read_mostly; > /* chunk list slots */ > static void pcpu_reclaim(struct work_struct *work); > static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim); > > +void pcpu_dump_chunk(struct pcpu_chunk *chunk) > +{ > + int i, contig = 0, free = 0; > + > + printk("XXX %d(f=%d,c=%d,u=%d,a=%d)", chunk->chunkno, > + chunk->free_size, chunk->contig_hint, > + chunk->map_used, chunk->map_alloc); > + for (i = 0; i < chunk->map_used; i++) { > + if (chunk->map[i] > 0) { > + free += chunk->map[i]; > + contig = max(contig, chunk->map[i]); > + } > + printk(" %d", chunk->map[i]); > + } > + printk(" free=%d contig=%d%s\n", free, contig, > + (free != chunk->free_size || contig != chunk->contig_hint) ? > + " MISMATCH!" : ""); > +} > + > +void pcpu_dump_chunk_slots(void) > +{ > + struct pcpu_chunk *chunk; > + int i; > + > + printk("XXX percpu allocator dump\n"); > + for (i = 0; i < pcpu_nr_slots; i++) { > + if (list_empty(&pcpu_slot[i])) > + continue; > + printk("XXX SLOT[%02d]\n", i); > + list_for_each_entry(chunk, &pcpu_slot[i], list) > + pcpu_dump_chunk(chunk); > + } > +} > + > static bool pcpu_addr_in_first_chunk(void *addr) > { > void *first_start = pcpu_first_chunk->base_addr; > @@ -1017,8 +1054,20 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr) > return __pa(addr); > else > return page_to_phys(vmalloc_to_page(addr)); > - } else > + } else { > + if ((unsigned long)addr < VMALLOC_START || > + (unsigned long)addr >= VMALLOC_END) { > + static bool first = true; > + if (first) { > + WARN_ON(1); > + printk("XXX addr=%p out of vmalloc area and not in first > chunk\n", addr); > + pcpu_dump_chunk_slots(); > + first = false; > + } > + return __pa(addr); > + } > return page_to_phys(pcpu_addr_to_page(addr)); > + } > } > > /** > @@ -1283,6 +1332,11 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) + > BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long); > > + printk("XXX CPU->UNIT M/O"); > + for_each_possible_cpu(cpu) > + printk(" %d:%lx", unit_map[cpu], unit_off[cpu]); > + printk("\n"); > + > /* > * Allocate chunk slots. The additional last slot is for > * empty chunks. > @@ -1292,6 +1346,10 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > for (i = 0; i < pcpu_nr_slots; i++) > INIT_LIST_HEAD(&pcpu_slot[i]); > > + printk("XXX ss=%zu up=%d us=%d ns=%d rs=%zd ds=%zd\n", > + ai->static_size, pcpu_unit_pages, pcpu_unit_size, > + pcpu_nr_slots, ai->reserved_size, dyn_size); > + > /* > * Initialize static chunk. If reserved_size is zero, the > * static chunk covers static area + dynamic allocation area > @@ -1311,6 +1369,7 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > schunk->free_size = ai->reserved_size; > pcpu_reserved_chunk = schunk; > pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; > + schunk->chunkno = -1; > } else { > schunk->free_size = dyn_size; > dyn_size = 0; /* dynamic area covered */ > @@ -1340,6 +1399,12 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_first_chunk = dchunk ?: schunk; > pcpu_chunk_relocate(pcpu_first_chunk, -1); > > + if (pcpu_reserved_chunk) { > + printk("XXX reserved chunk\n"); > + pcpu_dump_chunk(pcpu_reserved_chunk); > + } > + pcpu_dump_chunk_slots(); > + > /* we're done */ > pcpu_base_addr = base_addr; > return 0; > @@ -1623,6 +1688,7 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > goto out_free_areas; > } > areas[group] = ptr; > + printk("XXX areas[%d]=%p\n", group, areas[group]); > > base = min(ptr, base); > > @@ -1639,12 +1705,15 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > } > > /* base address is now known, determine group base offsets */ > + printk("XXX base_addr=%p", base); > max_distance = 0; > for (group = 0; group < ai->nr_groups; group++) { > ai->groups[group].base_offset = areas[group] - base; > max_distance = max_t(size_t, max_distance, > ai->groups[group].base_offset); > + printk(" %lx", ai->groups[group].base_offset); > } > + printk("\n"); > max_distance += ai->unit_size; > > /* warn if maximum distance is further than 75% of vmalloc space */ > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec [-- Attachment #2: second --] [-- Type: application/octet-stream, Size: 28682 bytes --] # echo c >/proc/sysrq-trigger SysRq : Trigger a crash BUG: unable to handle kernel NULL pointer dereference at (null) IP: [<ffffffff812cbad6>] sysrq_handle_crash+0x16/0x20 PGD c5f4dc067 PUD c61ed8067 PMD 0 Oops: 0002 [#1] SMP last sysfs file: /sys/devices/virtio-pci/virtio2/block/vda/dev CPU 0 Modules linked in: ipv6 xfs exportfs virtio_net pcspkr snd_intel8x0 snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc i2c_piix4 i2c_core ext4 mbcache jbd2 floppy virtio_blk virtio_pci virtio_ring virtio ata_generic pata_acpi ata_piix dm_mod [last unloaded: scsi_wait_scan] Pid: 5066, comm: bash Tainted: G W 2.6.36-rc4-mm1+ #27 /KVM RIP: 0010:[<ffffffff812cbad6>] [<ffffffff812cbad6>] sysrq_handle_crash+0x16/0x20 RSP: 0018:ffff880c5f019e38 EFLAGS: 00010092 RAX: 0000000000000010 RBX: 0000000000000063 RCX: 0000000000000cee RDX: 0000000000000000 RSI: 0000000000000046 RDI: 0000000000000063 RBP: ffff880c5f019e38 R08: 0000000000000000 R09: ffffffff8163f5a0 R10: 0000000000000001 R11: 0000000000000000 R12: ffffffff81a734c0 R13: 0000000000000286 R14: 0000000000000007 R15: 0000000000000000 FS: 00007f8715e2b700(0000) GS:ffff880002800000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 0000000c64808000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process bash (pid: 5066, threadinfo ffff880c5f018000, task ffff880c5da7aa90) Stack: ffff880c5f019e78 ffffffff812cc0e9 0000000000000000 0000000000000002 <0> ffff880c62831cc0 00007f8715e29000 0000000000000002 fffffffffffffffb <0> ffff880c5f019ea8 ffffffff812cc19a 0000000000000002 00007f8715e29000 Call Trace: [<ffffffff812cc0e9>] __handle_sysrq+0x129/0x190 [<ffffffff812cc19a>] write_sysrq_trigger+0x4a/0x50 [<ffffffff8119f266>] proc_reg_write+0x76/0xb0 [<ffffffff81145958>] vfs_write+0xc8/0x190 [<ffffffff811462f1>] sys_write+0x51/0x90 [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b Code: d0 88 81 43 6d 25 82 c9 c3 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00 c7 05 69 ca b3 00 01 00 00 00 0f ae f8 <c6> 04 25 00 00 00 00 01 c9 c3 55 48 89 e5 0f 1f 44 00 00 8d 47 RIP [<ffffffff812cbad6>] sysrq_handle_crash+0x16/0x20 RSP <ffff880c5f019e38> CR2: 0000000000000000 Initializing cgroup subsys cpuset Linux version 2.6.36-rc4-mm1+ (root@localhost.localdomain) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #27 SMP Mon Sep 20 06:07:55 EDT 2010 Command line: ro root=/dev/mapper/VolGroup-lv_root console=tty0 console=ttyS0,115200 SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us no_console_suspend irqpoll maxcpus=1 reset_devices cgroup_disable=memory memmap=exactmap memmap=640K@0K memmap=130412K@49792K elfcorehdr=180204K memmap=64K$960K memmap=20K$3669996K memmap=272K$4194032K BIOS-provided physical RAM map: BIOS-e820: 0000000000000100 - 000000000009a800 (usable) BIOS-e820: 000000000009a800 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 00000000dfffb000 (usable) BIOS-e820: 00000000dfffb000 - 00000000e0000000 (reserved) BIOS-e820: 00000000fffbc000 - 0000000100000000 (reserved) BIOS-e820: 0000000100000000 - 0000000ca0000000 (usable) last_pfn = 0xca0000 max_arch_pfn = 0x400000000 NX (Execute Disable) protection: active user-defined physical RAM map: user: 0000000000000000 - 00000000000a0000 (usable) user: 00000000000f0000 - 0000000000100000 (reserved) user: 00000000030a0000 - 000000000affb000 (usable) user: 00000000dfffb000 - 00000000e0000000 (reserved) user: 00000000fffbc000 - 0000000100000000 (reserved) DMI 2.4 present. No AGP bridge found last_pfn = 0xaffb max_arch_pfn = 0x400000000 PAT not supported by CPU. found SMP MP-table at [ffff8800000f7d40] f7d40 init_memory_mapping: 0000000000000000-000000000affb000 RAMDISK: 0ab4c000 - 0afef000 ACPI: RSDP 00000000000f7cf0 00014 (v00 BOCHS ) ACPI: RSDT 00000000dfffd0d0 00030 (v01 BOCHS BXPCRSDT 00000001 BXPC 00000001) ACPI: FACP 00000000dffff4f0 00074 (v01 BOCHS BXPCFACP 00000001 BXPC 00000001) ACPI: DSDT 00000000dfffd630 01E4B (v01 BXPC BXDSDT 00000001 INTL 20090123) ACPI: FACS 00000000dffff480 00040 ACPI: SSDT 00000000dfffd370 002B5 (v01 BOCHS BXPCSSDT 00000001 BXPC 00000001) ACPI: APIC 00000000dfffd100 001FA (v01 BOCHS BXPCAPIC 00000001 BXPC 00000001) No NUMA configuration found Faking a node at 0000000000000000-000000000affb000 Initmem setup node 0 0000000000000000-000000000affb000 NODE_DATA [00000000030a0000 - 00000000030c6fff] kvm-clock: Using msrs 12 and 11 kvm-clock: cpu 0, msr 0:4af5c01, boot clock Zone PFN ranges: DMA 0x00000010 -> 0x00001000 DMA32 0x00001000 -> 0x00100000 Normal empty Movable zone start PFN for each node early_node_map[2] active PFN ranges 0: 0x00000010 -> 0x000000a0 0: 0x000030a0 -> 0x0000affb ACPI: PM-Timer IO Port: 0xb008 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled) ACPI: LAPIC (acpi_id[0x04] lapic_id[0x04] enabled) ACPI: LAPIC (acpi_id[0x05] lapic_id[0x05] enabled) ACPI: LAPIC (acpi_id[0x06] lapic_id[0x06] enabled) ACPI: LAPIC (acpi_id[0x07] lapic_id[0x07] enabled) ACPI: LAPIC (acpi_id[0x08] lapic_id[0x08] enabled) ACPI: LAPIC (acpi_id[0x09] lapic_id[0x09] enabled) ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x0a] enabled) ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x0b] enabled) ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x0c] enabled) ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x0d] enabled) ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x0e] enabled) ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x0f] enabled) ACPI: LAPIC (acpi_id[0x10] lapic_id[0x10] enabled) ACPI: LAPIC (acpi_id[0x11] lapic_id[0x11] enabled) ACPI: LAPIC (acpi_id[0x12] lapic_id[0x12] enabled) ACPI: LAPIC (acpi_id[0x13] lapic_id[0x13] enabled) ACPI: LAPIC (acpi_id[0x14] lapic_id[0x14] enabled) ACPI: LAPIC (acpi_id[0x15] lapic_id[0x15] enabled) ACPI: LAPIC (acpi_id[0x16] lapic_id[0x16] enabled) ACPI: LAPIC (acpi_id[0x17] lapic_id[0x17] enabled) ACPI: LAPIC (acpi_id[0x18] lapic_id[0x18] enabled) ACPI: LAPIC (acpi_id[0x19] lapic_id[0x19] enabled) ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x1a] enabled) ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x1b] enabled) ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x1c] enabled) ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x1d] enabled) ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x1e] enabled) ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x1f] enabled) ACPI: LAPIC (acpi_id[0x20] lapic_id[0x20] enabled) ACPI: LAPIC (acpi_id[0x21] lapic_id[0x21] enabled) ACPI: LAPIC (acpi_id[0x22] lapic_id[0x22] enabled) ACPI: LAPIC (acpi_id[0x23] lapic_id[0x23] enabled) ACPI: LAPIC (acpi_id[0x24] lapic_id[0x24] enabled) ACPI: LAPIC (acpi_id[0x25] lapic_id[0x25] enabled) ACPI: LAPIC (acpi_id[0x26] lapic_id[0x26] enabled) ACPI: LAPIC (acpi_id[0x27] lapic_id[0x27] enabled) ACPI: LAPIC (acpi_id[0x28] lapic_id[0x28] enabled) ACPI: LAPIC (acpi_id[0x29] lapic_id[0x29] enabled) ACPI: LAPIC (acpi_id[0x2a] lapic_id[0x2a] enabled) ACPI: LAPIC (acpi_id[0x2b] lapic_id[0x2b] enabled) ACPI: LAPIC (acpi_id[0x2c] lapic_id[0x2c] enabled) ACPI: LAPIC (acpi_id[0x2d] lapic_id[0x2d] enabled) ACPI: LAPIC (acpi_id[0x2e] lapic_id[0x2e] enabled) ACPI: LAPIC (acpi_id[0x2f] lapic_id[0x2f] enabled) ACPI: LAPIC (acpi_id[0x30] lapic_id[0x30] enabled) ACPI: LAPIC (acpi_id[0x31] lapic_id[0x31] enabled) ACPI: IOAPIC (id[0x32] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 50, version 17, address 0xfec00000, GSI 0-23 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level) Using ACPI (MADT) for SMP configuration information SMP: Allowing 50 CPUs, 0 hotplug CPUs PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 PM: Registered nosave memory: 0000000000100000 - 00000000030a0000 Allocating PCI resources starting at affb000 (gap: affb000:d5000000) Booting paravirtualized kernel on KVM setup_percpu: NR_CPUS:4096 nr_cpumask_bits:50 nr_cpu_ids:50 nr_node_ids:1 XXX areas[0]=ffff880005400000 XXX base_addr=ffff880005400000 0 PERCPU: Embedded 29 pages/cpu @ffff880005400000 s88128 r8192 d22464 u131072 pcpu-alloc: s88128 r8192 d22464 u131072 alloc=1*2097152 pcpu-alloc: [0] 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 pcpu-alloc: [0] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 pcpu-alloc: [0] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 pcpu-alloc: [0] 48 49 -- -- -- -- -- -- -- -- -- -- -- -- -- -- XXX CPU->UNIT M/O 0:0 1:20000 2:40000 3:60000 4:80000 5:a0000 6:c0000 7:e0000 8:100000 9:120000 10:140000 11:160000 12:180000 13:1a0000 14:1c0000 15:1e0000 16:200000 17:220000 18:240000 19:260000 20:280000 21:2a0000 22:2c0000 23:2e0000 24:300000 25:320000 26:340000 27:360000 28:380000 29:3a0000 30:3c0000 31:3e0000 32:400000 33:420000 34:440000 35:460000 36:480000 37:4a0000 38:4c0000 39:4e0000 40:500000 41:520000 42:540000 43:560000 44:580000 45:5a0000 46:5c0000 47:5e0000 48:600000 49:620000 XXX ss=88128 up=32 us=131072 ns=17 rs=8192 ds=22464 XXX reserved chunk XXX -1(f=8192,c=8192,u=2,a=128) -88128 8192 free=8192 contig=8192 XXX percpu allocator dump XXX SLOT[12] XXX 0(f=22464,c=22464,u=2,a=128) -96320 22464 free=22464 contig=22464 kvm-clock: cpu 0, msr 0:5414c01, primary cpu clock Built 1 zonelists in Node order, mobility grouping on. Total pages: 32131 Policy zone: DMA32 Kernel command line: ro root=/dev/mapper/VolGroup-lv_root console=tty0 console=ttyS0,115200 SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us no_console_suspend irqpoll maxcpus=1 reset_devices cgroup_disable=memory memmap=exactmap memmap=640K@0K memmap=130412K@49792K elfcorehdr=180204K memmap=64K$960K memmap=20K$3669996K memmap=272K$4194032K Misrouted IRQ fixup and polling support enabled This may significantly impact system performance Disabling memory control group subsystem PID hash table entries: 512 (order: 0, 4096 bytes) Checking aperture... No AGP bridge found Subtract (95 early reservations) #1 [0004000000 - 0005298a08] TEXT DATA BSS #2 [000ab4c000 - 000afef000] RAMDISK #3 [0005299000 - 0005299079] BRK #4 [000009a800 - 00000f7d40] BIOS reserved #5 [00000f7d40 - 00000f7d50] MP-table mpf #6 [00000f8224 - 0000100000] BIOS reserved #7 [00000f7d50 - 00000f8224] MP-table mpc #8 [0000010000 - 0000012000] TRAMPOLINE #9 [0000012000 - 0000016000] ACPI WAKEUP #10 [0000016000 - 0000017000] PGTABLE #11 [00030a0000 - 00030c7000] NODE_DATA #12 [00030c7000 - 00030c8000] BOOTMEM #13 [00034c8000 - 00034c8030] BOOTMEM #14 [00038c9000 - 00038ca000] BOOTMEM #15 [00038ca000 - 00038cb000] BOOTMEM #16 [0003a00000 - 0003e00000] MEMMAP 0 #17 [00030c8000 - 00030c8180] BOOTMEM #18 [00030c8180 - 00030c9980] BOOTMEM #19 [00030ca000 - 00030cb000] BOOTMEM #20 [00030c9980 - 00030c99c3] BOOTMEM #21 [00030c9a00 - 00030c9b50] BOOTMEM #22 [00030c9b80 - 00030c9be8] BOOTMEM #23 [00030c9c00 - 00030c9c68] BOOTMEM #24 [00030c9c80 - 00030c9ce8] BOOTMEM #25 [00030c9d00 - 00030c9d68] BOOTMEM #26 [00030c9d80 - 00030c9de8] BOOTMEM #27 [00030c9e00 - 00030c9e68] BOOTMEM #28 [00030c9e80 - 00030c9ee8] BOOTMEM #29 [00030c9f00 - 00030c9f20] BOOTMEM #30 [00030cb000 - 00030cb149] BOOTMEM #31 [00030cb180 - 00030cb2c9] BOOTMEM #32 [0005400000 - 000541d000] BOOTMEM #33 [0005420000 - 000543d000] BOOTMEM #34 [0005440000 - 000545d000] BOOTMEM #35 [0005460000 - 000547d000] BOOTMEM #36 [0005480000 - 000549d000] BOOTMEM #37 [00054a0000 - 00054bd000] BOOTMEM #38 [00054c0000 - 00054dd000] BOOTMEM #39 [00054e0000 - 00054fd000] BOOTMEM #40 [0005500000 - 000551d000] BOOTMEM #41 [0005520000 - 000553d000] BOOTMEM #42 [0005540000 - 000555d000] BOOTMEM #43 [0005560000 - 000557d000] BOOTMEM #44 [0005580000 - 000559d000] BOOTMEM #45 [00055a0000 - 00055bd000] BOOTMEM #46 [00055c0000 - 00055dd000] BOOTMEM #47 [00055e0000 - 00055fd000] BOOTMEM #48 [0005600000 - 000561d000] BOOTMEM #49 [0005620000 - 000563d000] BOOTMEM #50 [0005640000 - 000565d000] BOOTMEM #51 [0005660000 - 000567d000] BOOTMEM #52 [0005680000 - 000569d000] BOOTMEM #53 [00056a0000 - 00056bd000] BOOTMEM #54 [00056c0000 - 00056dd000] BOOTMEM #55 [00056e0000 - 00056fd000] BOOTMEM #56 [0005700000 - 000571d000] BOOTMEM #57 [0005720000 - 000573d000] BOOTMEM #58 [0005740000 - 000575d000] BOOTMEM #59 [0005760000 - 000577d000] BOOTMEM #60 [0005780000 - 000579d000] BOOTMEM #61 [00057a0000 - 00057bd000] BOOTMEM #62 [00057c0000 - 00057dd000] BOOTMEM #63 [00057e0000 - 00057fd000] BOOTMEM #64 [0005800000 - 000581d000] BOOTMEM #65 [0005820000 - 000583d000] BOOTMEM #66 [0005840000 - 000585d000] BOOTMEM #67 [0005860000 - 000587d000] BOOTMEM #68 [0005880000 - 000589d000] BOOTMEM #69 [00058a0000 - 00058bd000] BOOTMEM #70 [00058c0000 - 00058dd000] BOOTMEM #71 [00058e0000 - 00058fd000] BOOTMEM #72 [0005900000 - 000591d000] BOOTMEM #73 [0005920000 - 000593d000] BOOTMEM #74 [0005940000 - 000595d000] BOOTMEM #75 [0005960000 - 000597d000] BOOTMEM #76 [0005980000 - 000599d000] BOOTMEM #77 [00059a0000 - 00059bd000] BOOTMEM #78 [00059c0000 - 00059dd000] BOOTMEM #79 [00059e0000 - 00059fd000] BOOTMEM #80 [0005a00000 - 0005a1d000] BOOTMEM #81 [0005a20000 - 0005a3d000] BOOTMEM #82 [00030c9f40 - 00030c9f48] BOOTMEM #83 [00030c9f80 - 00030c9f88] BOOTMEM #84 [00030cd300 - 00030cd3c8] BOOTMEM #85 [00030cd400 - 00030cd590] BOOTMEM #86 [00030cd5c0 - 00030cd6d0] BOOTMEM #87 [00030cd700 - 00030cd750] BOOTMEM #88 [00030cd780 - 00030cd7d0] BOOTMEM #89 [00030cb300 - 00030cb500] BOOTMEM #90 [00030cb500 - 00030cb700] BOOTMEM #91 [00030cb700 - 00030cb900] BOOTMEM #92 [00030cb900 - 00030cbb00] BOOTMEM #93 [00030cbb00 - 00030cbd00] BOOTMEM #94 [00030cbd00 - 00030ccd00] BOOTMEM Memory: 97048k/180204k available (4738k kernel code, 49216k absent, 33940k reserved, 6395k data, 2660k init) Hierarchical RCU implementation. RCU-based detection of stalled CPUs is disabled. Verbose stalled-CPUs detection is disabled. NR_IRQS:262400 nr_irqs:1080 Spurious LAPIC timer interrupt on cpu 0 Console: colour VGA+ 80x25 console [tty0] enabled console [ttyS0] enabled Detected 1994.626 MHz processor. Calibrating delay loop (skipped) preset value.. 3989.25 BogoMIPS (lpj=1994626) pid_max: default: 51200 minimum: 400 Security Framework initialized SELinux: Initializing. Dentry cache hash table entries: 16384 (order: 5, 131072 bytes) Inode-cache hash table entries: 8192 (order: 4, 65536 bytes) Mount-cache hash table entries: 256 Initializing cgroup subsys ns Initializing cgroup subsys cpuacct Initializing cgroup subsys memory Initializing cgroup subsys devices Initializing cgroup subsys freezer Initializing cgroup subsys net_cls mce: CPU supports 10 MCE banks Performance Events: p6 PMU driver. ... version: 0 ... bit width: 32 ... generic registers: 2 ... value mask: 00000000ffffffff ... max period: 000000007fffffff ... fixed-purpose events: 0 ... event mask: 0000000000000003 SMP alternatives: switching to UP code ACPI: Core revision 20100702 ftrace: converting mcount calls to 0f 1f 44 00 00 ftrace: allocating 18399 entries in 73 pages Setting APIC routing to physical flat ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 CPU0: Intel QEMU Virtual CPU version (cpu64-rhel6) stepping 03 Brought up 1 CPUs Total of 1 processors activated (3989.25 BogoMIPS). devtmpfs: initialized regulator: core version 0.5 NET: Registered protocol family 16 ACPI: bus type pci registered PCI: Using configuration type 1 for base access bio: create slab <bio-0> at 0 IRQ 9: starting IRQFIXUP_POLL ACPI: Interpreter enabled ACPI: (supports S0 S3 S4 S5) ACPI: Using IOAPIC for interrupt routing ACPI: No dock devices found. PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) pci 0000:00:01.3: quirk: [io 0xb000-0xb03f] claimed by PIIX4 ACPI pci 0000:00:01.3: quirk: [io 0xb100-0xb10f] claimed by PIIX4 SMB ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11) ACPI: PCI Interrupt Link [LNKB] (IRQs 5 10 *11) ACPI: PCI Interrupt Link [LNKC] (IRQs 5 *10 11) ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11) vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none vgaarb: loaded SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb PCI: Using ACPI for IRQ routing NetLabel: Initializing NetLabel: domain hash size = 128 NetLabel: protocols = UNLABELED CIPSOv4 NetLabel: unlabeled traffic allowed by default Switching to clocksource kvm-clock pnp: PnP ACPI init ACPI: bus type pnp registered pnp: PnP ACPI: found 6 devices ACPI: ACPI bus type pnp unregistered NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 1, 8192 bytes) TCP established hash table entries: 4096 (order: 4, 65536 bytes) TCP bind hash table entries: 4096 (order: 4, 65536 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered UDP hash table entries: 128 (order: 0, 4096 bytes) UDP-Lite hash table entries: 128 (order: 0, 4096 bytes) NET: Registered protocol family 1 pci 0000:00:00.0: Limiting direct PCI/PCI transfers pci 0000:00:01.0: Activating ISA DMA hang workarounds Trying to unpack rootfs image as initramfs... Freeing initrd memory: 4748k freed audit: initializing netlink socket (disabled) type=2000 audit(1284977685.455:1): initialized HugeTLB registered 2 MB page size, pre-allocated 0 pages VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 512 (order 0, 4096 bytes) msgmni has been set to 198 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) pci_hotplug: PCI Hot Plug PCI Core version: 0.5 pciehp: PCI Express Hot Plug Controller Driver version: 0.4 acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 acpiphp: Slot [1] registered acpiphp: Slot [2] registered acpiphp: Slot [3] registered acpiphp: Slot [4] registered acpiphp: Slot [5] registered acpiphp: Slot [6] registered acpiphp: Slot [7] registered acpiphp: Slot [8] registered acpiphp: Slot [9] registered acpiphp: Slot [10] registered acpiphp: Slot [11] registered acpiphp: Slot [12] registered acpiphp: Slot [13] registered acpiphp: Slot [14] registered acpiphp: Slot [15] registered acpiphp: Slot [16] registered acpiphp: Slot [17] registered acpiphp: Slot [18] registered acpiphp: Slot [19] registered acpiphp: Slot [20] registered acpiphp: Slot [21] registered acpiphp: Slot [22] registered acpiphp: Slot [23] registered acpiphp: Slot [24] registered acpiphp: Slot [25] registered acpiphp: Slot [26] registered acpiphp: Slot [27] registered acpiphp: Slot [28] registered acpiphp: Slot [29] registered acpiphp: Slot [30] registered acpiphp: Slot [31] registered pci-stub: invalid id string "" input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0 ACPI: Power Button [PWRF] hpet_acpi_add: no address or irqs in _CRS Non-volatile memory driver v1.3 Linux agpgart interface v0.103 Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled �serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A brd: module loaded loop: module loaded Fixed MDIO Bus: probed ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver uhci_hcd: USB Universal Host Controller Interface driver ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11 uhci_hcd 0000:00:01.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11 uhci_hcd 0000:00:01.2: UHCI Host Controller uhci_hcd 0000:00:01.2: new USB bus registered, assigned bus number 1 IRQ 11: starting IRQFIXUP_POLL uhci_hcd 0000:00:01.2: irq 11, io base 0x0000c020 usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: UHCI Host Controller usb usb1: Manufacturer: Linux 2.6.36-rc4-mm1+ uhci_hcd usb usb1: SerialNumber: 0000:00:01.2 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12 IRQ 12: starting IRQFIXUP_POLL IRQ 12: polling stopped IRQ 1: starting IRQFIXUP_POLL serio: i8042 KBD port at 0x60,0x64 irq 1 serio: i8042 AUX port at 0x60,0x64 irq 12 mice: PS/2 mouse device common for all mice input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1 rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0 rtc0: alarms up to one day, 114 bytes nvram cpuidle: using governor ladder cpuidle: using governor menu usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: USB HID core driver TCP cubic registered Initializing XFRM netlink socket NET: Registered protocol family 17 Registering the dns_resolver key type registered taskstats version 1 IMA: No TPM chip found, activating TPM-bypass! rtc_cmos 00:01: setting system clock to 2010-09-20 10:14:46 UTC (1284977686) Initalizing network drop monitor service IRQ 4: starting IRQFIXUP_POLL Freeing unused kernel memory: 2660k freed Write protecting the kernel read-only data: 10240k Freeing unused kernel memory: 1388k freed Freeing unused kernel memory: 1896k freed Mounting proc filesystem Mounting sysfs filesystem Creating /dev Creating initial device nodes Free memory/Total memory (free %): 71560 / 107740 ( 66.4192 ) Loading jbd2.ko module Loading mbcache.ko module Loading ext4.ko module Loading virtio_ring.ko module Loading virtio.ko module Loading virtio_blk.ko module Loading dm-mod.ko module device-mapper: uevent: version 1.0.3 device-mapper: ioctl: 4.18.0-ioctl (2010-06-29) initialised: dm-devel@redhat.com Loading dm-log.ko module Loading dm-region-hash.ko module Loading dm-mirror.ko module Loading dm-zero.ko module Loading dm-snapshot.ko module Loading ipv6.ko module NET: Registered protocol family 10 XXX chunk 1 allocated base_addr=ffffe8ffff600000 XXX VMS: 8388608@ffffe8ffff600000 lo: Disabled Privacy Extensions Loading exportfs.ko module Loading virtio_net.ko module Loading pcspkr.ko module input: PC Speaker as /devices/platform/pcspkr/input/input2 Loading ac97_bus.ko module Loading soundcore.ko module Loading snd-page-alloc.ko module Loading i2c-core.ko module Loading floppy.ko module FDC 0 is a S82078B Loading virtio_pci.ko module ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10 virtio-pci 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10 ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10 virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, high) -> IRQ 10 ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11 virtio-pci 0000:00:06.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, high) -> IRQ 11 vda: vda1 vda2 virtio-pci 0000:00:07.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10 vdb: vdb1 Loading ata_generic.ko module Loading pata_acpi.ko module Loading ata_piix.ko module IRQ 14: starting IRQFIXUP_POLL IRQ 15: starting IRQFIXUP_POLL scsi0 : ata_piix scsi1 : ata_piix ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc000 irq 14+ ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc008 irq 15+ input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3 Loading xfs.ko module SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled SGI XFS Quota Management subsystem Loading snd.ko module Loading i2c-piix4.ko module piix4_smbus 0000:00:01.3: SMBus Host Controller at 0xb100, revision 0 Loading snd-seq-device.ko module Loading snd-timer.ko module Loading snd-seq.ko module Loading snd-pcm.ko module Loading snd-ac97-codec.ko module Loading snd-intel8x0.ko module Intel ICH 0000:00:04.0: PCI INT A -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11 intel8x0_measure_ac97_clock: measured 51143 usecs (4400 samples) intel8x0: measured clock 86033 rejected intel8x0_measure_ac97_clock: measured 51000 usecs (4238 samples) intel8x0: measured clock 83098 rejected intel8x0_measure_ac97_clock: measured 51040 usecs (4241 samples) intel8x0: measured clock 83091 rejected intel8x0: clocking to 48000 Waiting for required block device discovery Waiting for 2 vda-like device(s)...cat: can't open '/sys/block/vda/device/model': No such file or directory cat: can't open '/sys/block/vda/device/rev': No such file or directory cat: can't open '/sys/block/vda/device/type': No such file or directory cat: can't open '/sys/block/vdb/device/model': No such file or directory cat: can't open '/sys/block/vdb/device/rev': No such file or directory cat: can't open '/sys/block/vdb/device/type': No such file or directory Found Creating Block Devices Creating block device loop0 Creating block device loop1 Creating block device loop2 Creating block device loop3 Creating block device loop4 Creating block device loop5 Creating block device loop6 Creating block device loop7 Creating block device ram0 Creating block device ram1 Creating block device ram10 Creating block device ram11 Creating block device ram12 Creating block device ram13 Creating block device ram14 Creating block device ram15 Creating block device ram2 Creating block device ram3 Creating block device ram4 Creating block device ram5 Creating block device ram6 Creating block device ram7 Creating block device ram8 Creating block device ram9 Creating block device vda vda: vda1 vda2 Creating block device vdb vdb: vdb1 Making device-mapper control node mknod: invalid number 'device-mapper' mdadm: No arrays found in config file or automatically Free memory/Total memory (free %): 59108 / 107740 ( 54.8617 ) Scanning logical volumes Reading all physical volumes. This may take a while... Found volume group "VolGroup" using metadata type lvm2 Activating logical volumes 2 logical volume(s) in volume group "VolGroup" now active Free memory/Total memory (free %): 58468 / 107740 ( 54.2677 ) Saving to the local filesystem /dev/mapper/VolGroup-lv_root e2fsck 1.41.12 (17-May-2010) /dev/mapper/VolGroup-lv_root: recovering journal /dev/mapper/VolGroup-lv_root: clean, 74989/624624 files, 2438201/2495488 blocks EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: Free memory/Total memory (free %): 57664 / 107740 ( 53.5214 ) Loading SELINUX policy type=1404 audit(1284977688.617:2): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 SELinux: Permission audit_access in class file not defined in policy. SELinux: Permission audit_access in class dir not defined in policy. SELinux: Permission execmod in class dir not defined in policy. SELinux: Permission audit_access in class lnk_file not defined in policy. SELinux: Permission open in class lnk_file not defined in policy. SELinux: Permission execmod in class lnk_file not defined in policy. SELinux: Permission audit_access in class chr_file not defined in policy. SELinux: Permission audit_access in class blk_file not defined in policy. SELinux: Permission execmod in class blk_file not defined in policy. SELinux: Permission audit_access in class sock_file not defined in policy. SELinux: Permission execmod in class sock_file not defined in policy. SELinux: Permission audit_access in class fifo_file not defined in policy. SELinux: Permission execmod in class fifo_file not defined in policy. SELinux: the above unknown classes and permissions will be allowed type=1403 audit(1284977689.189:3): policy loaded auid=4294967295 ses=4294967295 Copying data : [ 62 %] [-- Attachment #3: first --] [-- Type: application/octet-stream, Size: 32011 bytes --] Initializing cgroup subsys cpuset Linux version 2.6.36-rc4-mm1+ (root@localhost.localdomain) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #27 SMP Mon Sep 20 06:07:55 EDT 2010 Command line: ro root=/dev/mapper/VolGroup-lv_root crashkernel=128M console=tty0 console=ttyS0,115200 SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us no_console_suspend BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009a800 (usable) BIOS-e820: 000000000009a800 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 00000000dfffb000 (usable) BIOS-e820: 00000000dfffb000 - 00000000e0000000 (reserved) BIOS-e820: 00000000fffbc000 - 0000000100000000 (reserved) BIOS-e820: 0000000100000000 - 0000000ca0000000 (usable) NX (Execute Disable) protection: active DMI 2.4 present. No AGP bridge found last_pfn = 0xca0000 max_arch_pfn = 0x400000000 PAT not supported by CPU. last_pfn = 0xdfffb max_arch_pfn = 0x400000000 found SMP MP-table at [ffff8800000f7d40] f7d40 init_memory_mapping: 0000000000000000-00000000dfffb000 init_memory_mapping: 0000000100000000-0000000ca0000000 RAMDISK: 37572000 - 37ff0000 Reserving 128MB of memory at 48MB for crashkernel (System RAM: 51712MB) ACPI: RSDP 00000000000f7cf0 00014 (v00 BOCHS ) ACPI: RSDT 00000000dfffd0d0 00030 (v01 BOCHS BXPCRSDT 00000001 BXPC 00000001) ACPI: FACP 00000000dffff4f0 00074 (v01 BOCHS BXPCFACP 00000001 BXPC 00000001) ACPI: DSDT 00000000dfffd630 01E4B (v01 BXPC BXDSDT 00000001 INTL 20090123) ACPI: FACS 00000000dffff480 00040 ACPI: SSDT 00000000dfffd370 002B5 (v01 BOCHS BXPCSSDT 00000001 BXPC 00000001) ACPI: APIC 00000000dfffd100 001FA (v01 BOCHS BXPCAPIC 00000001 BXPC 00000001) No NUMA configuration found Faking a node at 0000000000000000-0000000ca0000000 Initmem setup node 0 0000000000000000-0000000ca0000000 NODE_DATA [0000000100000000 - 0000000100026fff] kvm-clock: Using msrs 12 and 11 kvm-clock: cpu 0, msr 0:1af5c01, boot clock Zone PFN ranges: DMA 0x00000010 -> 0x00001000 DMA32 0x00001000 -> 0x00100000 Normal 0x00100000 -> 0x00ca0000 Movable zone start PFN for each node early_node_map[3] active PFN ranges 0: 0x00000010 -> 0x0000009a 0: 0x00000100 -> 0x000dfffb 0: 0x00100000 -> 0x00ca0000 ACPI: PM-Timer IO Port: 0xb008 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled) ACPI: LAPIC (acpi_id[0x04] lapic_id[0x04] enabled) ACPI: LAPIC (acpi_id[0x05] lapic_id[0x05] enabled) ACPI: LAPIC (acpi_id[0x06] lapic_id[0x06] enabled) ACPI: LAPIC (acpi_id[0x07] lapic_id[0x07] enabled) ACPI: LAPIC (acpi_id[0x08] lapic_id[0x08] enabled) ACPI: LAPIC (acpi_id[0x09] lapic_id[0x09] enabled) ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x0a] enabled) ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x0b] enabled) ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x0c] enabled) ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x0d] enabled) ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x0e] enabled) ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x0f] enabled) ACPI: LAPIC (acpi_id[0x10] lapic_id[0x10] enabled) ACPI: LAPIC (acpi_id[0x11] lapic_id[0x11] enabled) ACPI: LAPIC (acpi_id[0x12] lapic_id[0x12] enabled) ACPI: LAPIC (acpi_id[0x13] lapic_id[0x13] enabled) ACPI: LAPIC (acpi_id[0x14] lapic_id[0x14] enabled) ACPI: LAPIC (acpi_id[0x15] lapic_id[0x15] enabled) ACPI: LAPIC (acpi_id[0x16] lapic_id[0x16] enabled) ACPI: LAPIC (acpi_id[0x17] lapic_id[0x17] enabled) ACPI: LAPIC (acpi_id[0x18] lapic_id[0x18] enabled) ACPI: LAPIC (acpi_id[0x19] lapic_id[0x19] enabled) ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x1a] enabled) ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x1b] enabled) ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x1c] enabled) ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x1d] enabled) ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x1e] enabled) ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x1f] enabled) ACPI: LAPIC (acpi_id[0x20] lapic_id[0x20] enabled) ACPI: LAPIC (acpi_id[0x21] lapic_id[0x21] enabled) ACPI: LAPIC (acpi_id[0x22] lapic_id[0x22] enabled) ACPI: LAPIC (acpi_id[0x23] lapic_id[0x23] enabled) ACPI: LAPIC (acpi_id[0x24] lapic_id[0x24] enabled) ACPI: LAPIC (acpi_id[0x25] lapic_id[0x25] enabled) ACPI: LAPIC (acpi_id[0x26] lapic_id[0x26] enabled) ACPI: LAPIC (acpi_id[0x27] lapic_id[0x27] enabled) ACPI: LAPIC (acpi_id[0x28] lapic_id[0x28] enabled) ACPI: LAPIC (acpi_id[0x29] lapic_id[0x29] enabled) ACPI: LAPIC (acpi_id[0x2a] lapic_id[0x2a] enabled) ACPI: LAPIC (acpi_id[0x2b] lapic_id[0x2b] enabled) ACPI: LAPIC (acpi_id[0x2c] lapic_id[0x2c] enabled) ACPI: LAPIC (acpi_id[0x2d] lapic_id[0x2d] enabled) ACPI: LAPIC (acpi_id[0x2e] lapic_id[0x2e] enabled) ACPI: LAPIC (acpi_id[0x2f] lapic_id[0x2f] enabled) ACPI: LAPIC (acpi_id[0x30] lapic_id[0x30] enabled) ACPI: LAPIC (acpi_id[0x31] lapic_id[0x31] enabled) ACPI: IOAPIC (id[0x32] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 50, version 17, address 0xfec00000, GSI 0-23 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level) Using ACPI (MADT) for SMP configuration information SMP: Allowing 50 CPUs, 0 hotplug CPUs PM: Registered nosave memory: 000000000009a000 - 000000000009b000 PM: Registered nosave memory: 000000000009b000 - 00000000000a0000 PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 PM: Registered nosave memory: 00000000dfffb000 - 00000000e0000000 PM: Registered nosave memory: 00000000e0000000 - 00000000fffbc000 PM: Registered nosave memory: 00000000fffbc000 - 0000000100000000 Allocating PCI resources starting at e0000000 (gap: e0000000:1ffbc000) Booting paravirtualized kernel on KVM setup_percpu: NR_CPUS:4096 nr_cpumask_bits:50 nr_cpu_ids:50 nr_node_ids:1 XXX areas[0]=ffff880002800000 XXX base_addr=ffff880002800000 0 PERCPU: Embedded 29 pages/cpu @ffff880002800000 s88128 r8192 d22464 u131072 pcpu-alloc: s88128 r8192 d22464 u131072 alloc=1*2097152 pcpu-alloc: [0] 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 pcpu-alloc: [0] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 pcpu-alloc: [0] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 pcpu-alloc: [0] 48 49 -- -- -- -- -- -- -- -- -- -- -- -- -- -- XXX CPU->UNIT M/O 0:0 1:20000 2:40000 3:60000 4:80000 5:a0000 6:c0000 7:e0000 8:100000 9:120000 10:140000 11:160000 12:180000 13:1a0000 14:1c0000 15:1e0000 16:200000 17:220000 18:240000 19:260000 20:280000 21:2a0000 22:2c0000 23:2e0000 24:300000 25:320000 26:340000 27:360000 28:380000 29:3a0000 30:3c0000 31:3e0000 32:400000 33:420000 34:440000 35:460000 36:480000 37:4a0000 38:4c0000 39:4e0000 40:500000 41:520000 42:540000 43:560000 44:580000 45:5a0000 46:5c0000 47:5e0000 48:600000 49:620000 XXX ss=88128 up=32 us=131072 ns=17 rs=8192 ds=22464 XXX reserved chunk XXX -1(f=8192,c=8192,u=2,a=128) -88128 8192 free=8192 contig=8192 XXX percpu allocator dump XXX SLOT[12] XXX 0(f=22464,c=22464,u=2,a=128) -96320 22464 free=22464 contig=22464 kvm-clock: cpu 0, msr 0:2814c01, primary cpu clock Built 1 zonelists in Zone order, mobility grouping on. Total pages: 12926085 Policy zone: Normal Kernel command line: ro root=/dev/mapper/VolGroup-lv_root crashkernel=128M console=tty0 console=ttyS0,115200 SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us no_console_suspend PID hash table entries: 4096 (order: 3, 32768 bytes) Checking aperture... No AGP bridge found Subtract (106 early reservations) #1 [0001000000 - 0002298a08] TEXT DATA BSS #2 [0037572000 - 0037ff0000] RAMDISK #3 [0002299000 - 0002299079] BRK #4 [000009a800 - 00000f7d40] BIOS reserved #5 [00000f7d40 - 00000f7d50] MP-table mpf #6 [00000f8224 - 0000100000] BIOS reserved #7 [00000f7d50 - 00000f8224] MP-table mpc #8 [0000010000 - 0000012000] TRAMPOLINE #9 [0000012000 - 0000016000] ACPI WAKEUP #10 [0000016000 - 000001a000] PGTABLE #11 [000001a000 - 0000049000] PGTABLE #12 [0003000000 - 000b000000] CRASH KERNEL #13 [0100000000 - 0100027000] NODE_DATA #14 [0002299080 - 000229a080] BOOTMEM #15 [000229a080 - 000229b080] BOOTMEM #16 [000229b080 - 000229c080] BOOTMEM #17 [000229c080 - 000229d080] BOOTMEM #18 [000269d080 - 000269f600] BOOTMEM #19 [0100027000 - 0100028000] BOOTMEM #20 [0100028000 - 0100029000] BOOTMEM #21 [0100200000 - 012c000000] MEMMAP 0 #22 [0002298a40 - 0002298bc0] BOOTMEM #23 [000229d080 - 00022b5080] BOOTMEM #24 [00022b5080 - 00022cd080] BOOTMEM #25 [00022ce000 - 00022cf000] BOOTMEM #26 [0002298bc0 - 0002298c03] BOOTMEM #27 [0002298c40 - 0002298e00] BOOTMEM #28 [0002298e00 - 0002298e68] BOOTMEM #29 [0002298e80 - 0002298ee8] BOOTMEM #30 [0002298f00 - 0002298f68] BOOTMEM #31 [0002298f80 - 0002298fe8] BOOTMEM #32 [00022cd080 - 00022cd0e8] BOOTMEM #33 [00022cd100 - 00022cd168] BOOTMEM #34 [00022cd180 - 00022cd1e8] BOOTMEM #35 [00022cd200 - 00022cd220] BOOTMEM #36 [00022cd240 - 00022cd260] BOOTMEM #37 [00022cd280 - 00022cd322] BOOTMEM #38 [00022cd340 - 00022cd3e2] BOOTMEM #39 [0002800000 - 000281d000] BOOTMEM #40 [0002820000 - 000283d000] BOOTMEM #41 [0002840000 - 000285d000] BOOTMEM #42 [0002860000 - 000287d000] BOOTMEM #43 [0002880000 - 000289d000] BOOTMEM #44 [00028a0000 - 00028bd000] BOOTMEM #45 [00028c0000 - 00028dd000] BOOTMEM #46 [00028e0000 - 00028fd000] BOOTMEM #47 [0002900000 - 000291d000] BOOTMEM #48 [0002920000 - 000293d000] BOOTMEM #49 [0002940000 - 000295d000] BOOTMEM #50 [0002960000 - 000297d000] BOOTMEM #51 [0002980000 - 000299d000] BOOTMEM #52 [00029a0000 - 00029bd000] BOOTMEM #53 [00029c0000 - 00029dd000] BOOTMEM #54 [00029e0000 - 00029fd000] BOOTMEM #55 [0002a00000 - 0002a1d000] BOOTMEM #56 [0002a20000 - 0002a3d000] BOOTMEM #57 [0002a40000 - 0002a5d000] BOOTMEM #58 [0002a60000 - 0002a7d000] BOOTMEM #59 [0002a80000 - 0002a9d000] BOOTMEM #60 [0002aa0000 - 0002abd000] BOOTMEM #61 [0002ac0000 - 0002add000] BOOTMEM #62 [0002ae0000 - 0002afd000] BOOTMEM #63 [0002b00000 - 0002b1d000] BOOTMEM #64 [0002b20000 - 0002b3d000] BOOTMEM #65 [0002b40000 - 0002b5d000] BOOTMEM #66 [0002b60000 - 0002b7d000] BOOTMEM #67 [0002b80000 - 0002b9d000] BOOTMEM #68 [0002ba0000 - 0002bbd000] BOOTMEM #69 [0002bc0000 - 0002bdd000] BOOTMEM #70 [0002be0000 - 0002bfd000] BOOTMEM #71 [0002c00000 - 0002c1d000] BOOTMEM #72 [0002c20000 - 0002c3d000] BOOTMEM #73 [0002c40000 - 0002c5d000] BOOTMEM #74 [0002c60000 - 0002c7d000] BOOTMEM #75 [0002c80000 - 0002c9d000] BOOTMEM #76 [0002ca0000 - 0002cbd000] BOOTMEM #77 [0002cc0000 - 0002cdd000] BOOTMEM #78 [0002ce0000 - 0002cfd000] BOOTMEM #79 [0002d00000 - 0002d1d000] BOOTMEM #80 [0002d20000 - 0002d3d000] BOOTMEM #81 [0002d40000 - 0002d5d000] BOOTMEM #82 [0002d60000 - 0002d7d000] BOOTMEM #83 [0002d80000 - 0002d9d000] BOOTMEM #84 [0002da0000 - 0002dbd000] BOOTMEM #85 [0002dc0000 - 0002ddd000] BOOTMEM #86 [0002de0000 - 0002dfd000] BOOTMEM #87 [0002e00000 - 0002e1d000] BOOTMEM #88 [0002e20000 - 0002e3d000] BOOTMEM #89 [00022cd400 - 00022cd408] BOOTMEM #90 [00022cd440 - 00022cd448] BOOTMEM #91 [00022cd480 - 00022cd548] BOOTMEM #92 [00022cd580 - 00022cd710] BOOTMEM #93 [00022cd740 - 00022cd850] BOOTMEM #94 [00022cd880 - 00022cd8d0] BOOTMEM #95 [00022cd900 - 00022cd950] BOOTMEM #96 [00022cd980 - 00022cdb80] BOOTMEM #97 [00022cdb80 - 00022cdd80] BOOTMEM #98 [00022cdd80 - 00022cdf80] BOOTMEM #99 [00022cf000 - 00022cf200] BOOTMEM #100 [00022cf200 - 00022cf400] BOOTMEM #101 [00022cf400 - 00022d7400] BOOTMEM #102 [000b000000 - 000f000000] BOOTMEM #103 [00022d7400 - 00022f7400] BOOTMEM #104 [00022f7400 - 0002337400] BOOTMEM #105 [000004a800 - 0000052800] BOOTMEM Memory: 51476188k/52953088k available (4738k kernel code, 524780k absent, 952120k reserved, 6395k data, 2660k init) Hierarchical RCU implementation. RCU-based detection of stalled CPUs is disabled. Verbose stalled-CPUs detection is disabled. NR_IRQS:262400 nr_irqs:1080 Console: colour VGA+ 80x25 console [tty0] enabled console [ttyS0] enabled allocated 524288000 bytes of page_cgroup please try 'cgroup_disable=memory' option if you don't want memory cgroups Detected 1994.626 MHz processor. Calibrating delay loop (skipped) preset value.. 3989.25 BogoMIPS (lpj=1994626) pid_max: default: 51200 minimum: 400 Security Framework initialized SELinux: Initializing. Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes) Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes) Mount-cache hash table entries: 256 Initializing cgroup subsys ns Initializing cgroup subsys cpuacct Initializing cgroup subsys memory Initializing cgroup subsys devices Initializing cgroup subsys freezer Initializing cgroup subsys net_cls mce: CPU supports 10 MCE banks Performance Events: p6 PMU driver. ... version: 0 ... bit width: 32 ... generic registers: 2 ... value mask: 00000000ffffffff ... max period: 000000007fffffff ... fixed-purpose events: 0 ... event mask: 0000000000000003 ACPI: Core revision 20100702 ftrace: converting mcount calls to 0f 1f 44 00 00 ftrace: allocating 18399 entries in 73 pages Setting APIC routing to physical flat ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 CPU0: Intel QEMU Virtual CPU version (cpu64-rhel6) stepping 03 Booting Node 0, Processors #1 kvm-clock: cpu 1, msr 0:2834c01, secondary cpu clock #2 kvm-clock: cpu 2, msr 0:2854c01, secondary cpu clock #3 kvm-clock: cpu 3, msr 0:2874c01, secondary cpu clock #4 kvm-clock: cpu 4, msr 0:2894c01, secondary cpu clock #5 kvm-clock: cpu 5, msr 0:28b4c01, secondary cpu clock #6 kvm-clock: cpu 6, msr 0:28d4c01, secondary cpu clock #7 kvm-clock: cpu 7, msr 0:28f4c01, secondary cpu clock #8 kvm-clock: cpu 8, msr 0:2914c01, secondary cpu clock #9 kvm-clock: cpu 9, msr 0:2934c01, secondary cpu clock #10 kvm-clock: cpu 10, msr 0:2954c01, secondary cpu clock #11 kvm-clock: cpu 11, msr 0:2974c01, secondary cpu clock #12 kvm-clock: cpu 12, msr 0:2994c01, secondary cpu clock #13 kvm-clock: cpu 13, msr 0:29b4c01, secondary cpu clock #14 kvm-clock: cpu 14, msr 0:29d4c01, secondary cpu clock #15 kvm-clock: cpu 15, msr 0:29f4c01, secondary cpu clock #16 kvm-clock: cpu 16, msr 0:2a14c01, secondary cpu clock #17 kvm-clock: cpu 17, msr 0:2a34c01, secondary cpu clock #18 kvm-clock: cpu 18, msr 0:2a54c01, secondary cpu clock #19 kvm-clock: cpu 19, msr 0:2a74c01, secondary cpu clock #20 kvm-clock: cpu 20, msr 0:2a94c01, secondary cpu clock #21 kvm-clock: cpu 21, msr 0:2ab4c01, secondary cpu clock #22 kvm-clock: cpu 22, msr 0:2ad4c01, secondary cpu clock #23 kvm-clock: cpu 23, msr 0:2af4c01, secondary cpu clock #24 kvm-clock: cpu 24, msr 0:2b14c01, secondary cpu clock #25 kvm-clock: cpu 25, msr 0:2b34c01, secondary cpu clock #26 kvm-clock: cpu 26, msr 0:2b54c01, secondary cpu clock #27 kvm-clock: cpu 27, msr 0:2b74c01, secondary cpu clock #28 kvm-clock: cpu 28, msr 0:2b94c01, secondary cpu clock #29 kvm-clock: cpu 29, msr 0:2bb4c01, secondary cpu clock #30 kvm-clock: cpu 30, msr 0:2bd4c01, secondary cpu clock #31 kvm-clock: cpu 31, msr 0:2bf4c01, secondary cpu clock #32 kvm-clock: cpu 32, msr 0:2c14c01, secondary cpu clock #33 kvm-clock: cpu 33, msr 0:2c34c01, secondary cpu clock #34 kvm-clock: cpu 34, msr 0:2c54c01, secondary cpu clock #35 kvm-clock: cpu 35, msr 0:2c74c01, secondary cpu clock #36 kvm-clock: cpu 36, msr 0:2c94c01, secondary cpu clock #37 kvm-clock: cpu 37, msr 0:2cb4c01, secondary cpu clock #38 kvm-clock: cpu 38, msr 0:2cd4c01, secondary cpu clock #39 kvm-clock: cpu 39, msr 0:2cf4c01, secondary cpu clock #40 kvm-clock: cpu 40, msr 0:2d14c01, secondary cpu clock #41 kvm-clock: cpu 41, msr 0:2d34c01, secondary cpu clock #42 kvm-clock: cpu 42, msr 0:2d54c01, secondary cpu clock #43 kvm-clock: cpu 43, msr 0:2d74c01, secondary cpu clock #44 kvm-clock: cpu 44, msr 0:2d94c01, secondary cpu clock #45 kvm-clock: cpu 45, msr 0:2db4c01, secondary cpu clock #46 kvm-clock: cpu 46, msr 0:2dd4c01, secondary cpu clock #47 kvm-clock: cpu 47, msr 0:2df4c01, secondary cpu clock #48 kvm-clock: cpu 48, msr 0:2e14c01, secondary cpu clock #49 Ok. kvm-clock: cpu 49, msr 0:2e34c01, secondary cpu clock Brought up 50 CPUs Total of 50 processors activated (199462.60 BogoMIPS). devtmpfs: initialized regulator: core version 0.5 NET: Registered protocol family 16 ACPI: bus type pci registered PCI: Using configuration type 1 for base access mtrr: your CPUs had inconsistent variable MTRR settings mtrr: your CPUs had inconsistent MTRRdefType settings mtrr: probably your BIOS does not setup all CPUs. mtrr: corrected configuration. bio: create slab <bio-0> at 0 ACPI: Interpreter enabled ACPI: (supports S0 S3 S4 S5) ACPI: Using IOAPIC for interrupt routing ACPI: No dock devices found. PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) pci 0000:00:01.3: quirk: [io 0xb000-0xb03f] claimed by PIIX4 ACPI pci 0000:00:01.3: quirk: [io 0xb100-0xb10f] claimed by PIIX4 SMB ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11) ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11) ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11) ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11) vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none vgaarb: loaded SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb PCI: Using ACPI for IRQ routing NetLabel: Initializing NetLabel: domain hash size = 128 NetLabel: protocols = UNLABELED CIPSOv4 NetLabel: unlabeled traffic allowed by default Switching to clocksource kvm-clock pnp: PnP ACPI init ACPI: bus type pnp registered pnp: PnP ACPI: found 6 devices ACPI: ACPI bus type pnp unregistered NET: Registered protocol family 2 IP route cache hash table entries: 524288 (order: 10, 4194304 bytes) TCP established hash table entries: 524288 (order: 11, 8388608 bytes) TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) TCP: Hash tables configured (established 524288 bind 65536) TCP reno registered UDP hash table entries: 32768 (order: 8, 1048576 bytes) UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes) NET: Registered protocol family 1 pci 0000:00:00.0: Limiting direct PCI/PCI transfers pci 0000:00:01.0: PIIX3: Enabling Passive Release pci 0000:00:01.0: Activating ISA DMA hang workarounds Trying to unpack rootfs image as initramfs... Freeing initrd memory: 10744k freed PCI-DMA: Using software bounce buffering for IO (SWIOTLB) Placing 64MB software IO TLB between ffff88000b000000 - ffff88000f000000 software IO TLB at phys 0xb000000 - 0xf000000 audit: initializing netlink socket (disabled) type=2000 audit(1284977543.850:1): initialized HugeTLB registered 2 MB page size, pre-allocated 0 pages VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 512 (order 0, 4096 bytes) msgmni has been set to 32768 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) pci_hotplug: PCI Hot Plug PCI Core version: 0.5 pciehp: PCI Express Hot Plug Controller Driver version: 0.4 acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 acpiphp: Slot [1] registered acpiphp: Slot [2] registered acpiphp: Slot [3] registered acpiphp: Slot [4] registered acpiphp: Slot [5] registered acpiphp: Slot [6] registered acpiphp: Slot [7] registered acpiphp: Slot [8] registered acpiphp: Slot [9] registered acpiphp: Slot [10] registered acpiphp: Slot [11] registered acpiphp: Slot [12] registered acpiphp: Slot [13] registered acpiphp: Slot [14] registered acpiphp: Slot [15] registered acpiphp: Slot [16] registered acpiphp: Slot [17] registered acpiphp: Slot [18] registered acpiphp: Slot [19] registered acpiphp: Slot [20] registered acpiphp: Slot [21] registered acpiphp: Slot [22] registered acpiphp: Slot [23] registered acpiphp: Slot [24] registered acpiphp: Slot [25] registered acpiphp: Slot [26] registered acpiphp: Slot [27] registered acpiphp: Slot [28] registered acpiphp: Slot [29] registered acpiphp: Slot [30] registered acpiphp: Slot [31] registered pci-stub: invalid id string "" input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0 ACPI: Power Button [PWRF] hpet_acpi_add: no address or irqs in _CRS Non-volatile memory driver v1.3 Linux agpgart interface v0.103 Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled �serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A brd: module loaded loop: module loaded Fixed MDIO Bus: probed ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver uhci_hcd: USB Universal Host Controller Interface driver ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11 uhci_hcd 0000:00:01.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11 uhci_hcd 0000:00:01.2: UHCI Host Controller uhci_hcd 0000:00:01.2: new USB bus registered, assigned bus number 1 uhci_hcd 0000:00:01.2: irq 11, io base 0x0000c020 usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: UHCI Host Controller usb usb1: Manufacturer: Linux 2.6.36-rc4-mm1+ uhci_hcd usb usb1: SerialNumber: 0000:00:01.2 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12 serio: i8042 KBD port at 0x60,0x64 irq 1 serio: i8042 AUX port at 0x60,0x64 irq 12 mice: PS/2 mouse device common for all mice rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0 input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1 rtc0: alarms up to one day, 114 bytes nvram cpuidle: using governor ladder cpuidle: using governor menu usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: USB HID core driver TCP cubic registered Initializing XFRM netlink socket NET: Registered protocol family 17 Registering the dns_resolver key type registered taskstats version 1 IMA: No TPM chip found, activating TPM-bypass! rtc_cmos 00:01: setting system clock to 2010-09-20 10:12:27 UTC (1284977547) Initalizing network drop monitor service Freeing unused kernel memory: 2660k freed Write protecting the kernel read-only data: 10240k Freeing unused kernel memory: 1388k freed Freeing unused kernel memory: 1896k freed dracut: dracut-004-32.el6 device-mapper: uevent: version 1.0.3 device-mapper: ioctl: 4.18.0-ioctl (2010-06-29) initialised: dm-devel@redhat.com udev: starting version 147 udevd (249): /proc/249/oom_adj is deprecated, please use /proc/249/oom_score_adj instead. dracut: Starting plymouth daemon could not read byte from child: Success scsi0 : ata_piix scsi1 : ata_piix ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc000 irq 14+ ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc008 irq 15+ input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input2 ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10 virtio-pci 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10 ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10 virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, high) -> IRQ 10 ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11 virtio-pci 0000:00:06.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, high) -> IRQ 11 virtio-pci 0000:00:07.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10 vda: vda1 vda2 vdb: vdb1 FDC 0 is a S82078B dracut: Scanning devices vda2 for LVM volume groups dracut: Reading all physical volumes. This may take a while... dracut: Found volume group "VolGroup" using metadata type lvm2 dracut: 2 logical volume(s) in volume group "VolGroup" now active XXX chunk 1 allocated base_addr=ffffe8ffff600000 XXX VMS: 8388608@ffffe8ffff600000 EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null) dracut: Mounted root filesystem /dev/mapper/VolGroup-lv_root dracut: Loading SELinux policy type=1404 audit(1284977550.107:2): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 SELinux: Permission audit_access in class file not defined in policy. SELinux: Permission audit_access in class dir not defined in policy. SELinux: Permission execmod in class dir not defined in policy. SELinux: Permission audit_access in class lnk_file not defined in policy. SELinux: Permission open in class lnk_file not defined in policy. SELinux: Permission execmod in class lnk_file not defined in policy. SELinux: Permission audit_access in class chr_file not defined in policy. SELinux: Permission audit_access in class blk_file not defined in policy. SELinux: Permission execmod in class blk_file not defined in policy. SELinux: Permission audit_access in class sock_file not defined in policy. SELinux: Permission execmod in class sock_file not defined in policy. SELinux: Permission audit_access in class fifo_file not defined in policy. SELinux: Permission execmod in class fifo_file not defined in policy. SELinux: the above unknown classes and permissions will be allowed type=1403 audit(1284977550.745:3): policy loaded auid=4294967295 ses=4294967295 dracut: dracut: Switching root Welcome to Red Hat Enterprise Linux Server Starting udev: udev: starting version 147 piix4_smbus 0000:00:01.3: SMBus Host Controller at 0xb100, revision 0 Intel ICH 0000:00:04.0: PCI INT A -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11 intel8x0_measure_ac97_clock: measured 50918 usecs (4243 samples) intel8x0: measured clock 83330 rejected intel8x0_measure_ac97_clock: measured 50957 usecs (4439 samples) intel8x0: measured clock 87112 rejected intel8x0_measure_ac97_clock: measured 51133 usecs (4245 samples) intel8x0: measured clock 83018 rejected intel8x0: clocking to 48000 input: PC Speaker as /devices/platform/pcspkr/input/input3 [ OK ] Setting hostname localhost.localdomain: [ OK ] Setting up Logical Volume Management: 2 logical volume(s) in volume group "VolGroup" now active [ OK ] Checking filesystems Checking all file systems. [/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a /dev/mapper/VolGroup-lv_root /dev/mapper/VolGroup-lv_root: clean, 74974/624624 files, 2438422/2495488 blocks [/sbin/fsck.ext4 (1) -- /boot] fsck.ext4 -a /dev/vda1 /dev/vda1: clean, 83/128016 files, 258341/512000 blocks [ OK ] Remounting root filesystem in read-write mode: EXT4-fs (dm-0): re-mounted. Opts: (null) [ OK ] Mounting local filesystems: EXT4-fs (vda1): mounted filesystem with ordered data mode. Opts: (null) SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled SGI XFS Quota Management subsystem XFS mounting filesystem vdb1 [ OK ] Enabling /etc/fstab swaps: Adding 9981948k swap on /dev/mapper/VolGroup-lv_swap. Priority:-1 extents:1 across:9981948k [ OK ] Entering non-interactive startup Starting monitoring for VG VolGroup: 2 logical volume(s) in volume group "VolGroup" monitored [ OK ] NET: Registered protocol family 10 lo: Disabled Privacy Extensions Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining IP information for eth0... done. [ OK ] Starting auditd: [ OK ] Starting system logger: [ OK ] Starting mdmonitor: [ OK ] Detected change(s) the following file(s): /boot/vmlinuz-2.6.36-rc4-mm1+ Rebuilding /boot/initrd-2.6.36-rc4-mm1+kdump.img cat: /sys/block/vda/device/model: No such file or directory cat: /sys/block/vda/device/rev: No such file or directory cat: /sys/block/vda/device/type: No such file or directory cat: /sys/block/vda/device/model: No such file or directory cat: /sys/block/vda/device/rev: No such file or directory cat: /sys/block/vda/device/type: No such file or directory cat: /sys/block/vdb/device/model: No such file or directory cat: /sys/block/vdb/device/rev: No such file or directory cat: /sys/block/vdb/device/type: No such file or directory Warning: There is not enough space to save a vmcore. The size of /dev/mapper/VolGroup-lv_root should be much greater than 51492876 kilo bytes. Your running kernel is using more than 70% of the amount of space you reserved for kdump, you should consider increasing your crashkernel reservation[WARNING] ------------[ cut here ]------------ WARNING: at mm/percpu.c:1062 per_cpu_ptr_to_phys+0x15a/0x180() Hardware name: KVM Modules linked in: ipv6 xfs exportfs virtio_net pcspkr snd_intel8x0 snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc i2c_piix4 i2c_core ext4 mbcache jbd2 floppy virtio_blk virtio_pci virtio_ring virtio ata_generic pata_acpi ata_piix dm_mod [last unloaded: scsi_wait_scan] Pid: 4888, comm: kexec Not tainted 2.6.36-rc4-mm1+ #27 Call Trace: [<ffffffff8105c0ff>] warn_slowpath_common+0x7f/0xc0 [<ffffffff8105c15a>] warn_slowpath_null+0x1a/0x20 [<ffffffff8110ff6a>] per_cpu_ptr_to_phys+0x15a/0x180 [<ffffffff812f0dcb>] show_crash_notes+0x2b/0x50 [<ffffffff812ebaff>] sysdev_show+0x1f/0x30 [<ffffffff811af971>] sysfs_read_file+0x111/0x1f0 [<ffffffff81145ae5>] vfs_read+0xc5/0x190 [<ffffffff81146261>] sys_read+0x51/0x90 [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b ---[ end trace a1251df84136cd9d ]--- XXX addr=ffff88000283bec0 out of vmalloc area and not in first chunk XXX percpu allocator dump XXX SLOT[00] XXX 0(f=0,c=0,u=319,a=512) -96320 -104 -104 -104 -4 -4 -4 -4 -4 -4 -16 -4 -4 -4 -4 -16 -4 -4 -16 -4 -4 -4 -4 -4 -4 -4 -4 -16 -4 -4 -8 -4 -4 -64 -4 -4 -4 -4 -16 -4 -4 -16 -4 -8 -8 -4 -16 -4 -4 -16 -8 -8 -8 -8 -8 -112 -64 -8 -8 -4 -4 -24 -4 -4 -16 -4 -4 -112 -16 -4 -4 -88 -4 -4 -4 -4 -4 -4 -4 -4 -112 -256 -120 -4 -4 -4 -4 -4 -4 -112 -120 -16 -4 -4 -112 -56 -56 -4 -4 -16 -4 -4 -112 -56 -56 -16 -16 -112 -4 -4 -80 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -112 -80 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -112 -4096 -216 -216 -248 -248 -632 -632 -224 -224 -4096 -4096 -368 -80 -80 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -112 -80 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -112 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -80 -4 -4 -80 -4 -4 -4 -4 -80 -4 -4 -80 -4 -4 -4 -4 -80 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -16 -64 -16 -4 -4 -16 -4 -4 -4 -4 -16 -8 -8 -8 -8 -8 -8 -8 -8 -80 -4 -4 -4 -4 -80 -80 -80 -4 -4 -80 -8 -80 -80 -80 -80 -80 -80 -80 -80 -4 -4 -4 -4 -4 -4 -80 -4 -4 -4 -4 -80 -8 -8 -8 -16 -4 -4 -4 -4 -4 -4 -4 -8 -8 -8 -8 -8 -8 -4 -112 -8 -8 -8 -8 -8 -8 -8 -8 -16 -4 -4 -4 -4 -8 -8 -4 -4 -16 -8 free=0 contig=0 XXX SLOT[14] XXX 1(f=103556,c=103496,u=37,a=64) -200 -32 -16 -4 4 -112 -200 -56 -56 -56 32 -112 -56 -40 -40 8 -112 -88 -40 16 -112 -248 -248 -4096 -4096 -248 -248 -40 -4096 -4096 -248 -248 -40 -40 -4096 -4096 103496 free=103556 contig=103496 Starting kdump:[ OK ] Mounting other filesystems: [ OK ] Retrigger failed udev events[ OK ] Starting sshd: [ OK ] Starting postfix: [ OK ] [ OK ] crond: [ OK ] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-20 10:17 ` kvm kdump regression caiqian @ 2010-09-20 23:09 ` Tejun Heo 2010-09-21 0:40 ` CAI Qian 0 siblings, 1 reply; 14+ messages in thread From: Tejun Heo @ 2010-09-20 23:09 UTC (permalink / raw) To: caiqian Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity Hello, Thanks a lot for testing. Can you please verify whether the following patch fixes the problem? diff --git a/mm/percpu.c b/mm/percpu.c index 58c572b..c76ef38 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -1401,9 +1401,9 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, if (pcpu_first_unit_cpu == NR_CPUS) pcpu_first_unit_cpu = cpu; + pcpu_last_unit_cpu = cpu; } } - pcpu_last_unit_cpu = cpu; pcpu_nr_units = unit; for_each_possible_cpu(cpu) ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-20 23:09 ` Tejun Heo @ 2010-09-21 0:40 ` CAI Qian 2010-09-21 6:13 ` [PATCH] percpu: fix pcpu_last_unit_cpu Tejun Heo 0 siblings, 1 reply; 14+ messages in thread From: CAI Qian @ 2010-09-21 0:40 UTC (permalink / raw) To: Tejun Heo Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity ----- "Tejun Heo" <tj@kernel.org> wrote: > Hello, > > Thanks a lot for testing. Can you please verify whether the > following patch fixes the problem? Yes, it did. > > diff --git a/mm/percpu.c b/mm/percpu.c > index 58c572b..c76ef38 100644 > --- a/mm/percpu.c > +++ b/mm/percpu.c > @@ -1401,9 +1401,9 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > > if (pcpu_first_unit_cpu == NR_CPUS) > pcpu_first_unit_cpu = cpu; > + pcpu_last_unit_cpu = cpu; > } > } > - pcpu_last_unit_cpu = cpu; > pcpu_nr_units = unit; > > for_each_possible_cpu(cpu) ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH] percpu: fix pcpu_last_unit_cpu 2010-09-21 0:40 ` CAI Qian @ 2010-09-21 6:13 ` Tejun Heo 0 siblings, 0 replies; 14+ messages in thread From: Tejun Heo @ 2010-09-21 6:13 UTC (permalink / raw) To: CAI Qian, lkml Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity pcpu_first/last_unit_cpu are used to track which cpu has the first and last units assigned. This in turn is used to determine the span of a chunk for man/unmap cache flushes and whether an address belongs to the first chunk or not in per_cpu_ptr_to_phys(). When the number of possible CPUs isn't power of two, a chunk may contain unassigned units towards the end of a chunk. The logic to determine pcpu_last_unit_cpu was incorrect when there was an unused unit at the end of a chunk. It failed to ignore the unused unit and assigned the unused marker NR_CPUS to pcpu_last_unit_cpu. This was discovered through kdump failure which was caused by malfunctioning per_cpu_ptr_to_phys() on a kvm setup with 50 possible CPUs by CAI Qian. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: CAI Qian <caiqian@redhat.com> Cc: stable@kernel.org --- This is pretty subtle and has the potential to cause mysterious problems on vcache architectuers. Thanks a lot for discovering it and your patience. I'll put it out in linux-next for a couple of days and push it to Linus and stable. Thanks. mm/percpu.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/mm/percpu.c b/mm/percpu.c index 58c572b..c76ef38 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -1401,9 +1401,9 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, if (pcpu_first_unit_cpu == NR_CPUS) pcpu_first_unit_cpu = cpu; + pcpu_last_unit_cpu = cpu; } } - pcpu_last_unit_cpu = cpu; pcpu_nr_units = unit; for_each_possible_cpu(cpu) -- 1.7.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* kvm kdump regression
@ 2010-09-14 3:09 CAI Qian
2010-09-14 8:26 ` Tejun Heo
0 siblings, 1 reply; 14+ messages in thread
From: CAI Qian @ 2010-09-14 3:09 UTC (permalink / raw)
To: linux-kernel
Cc: Avi Kivity, Marcelo Tosatti, tj, dhowells, graff.yang, sonic.adi,
kexec
This commit introduced a regression that an empty vmcore was generated on a kvm guest.
ioremap: invalid physical address db74000000000000
------------[ cut here ]------------
WARNING: at arch/x86/mm/ioremap.c:83 __ioremap_caller+0x307/0x380()
Hardware name: KVM
Modules linked in:
Pid: 1, comm: swapper Not tainted 2.6.36-rc2-mm1+ #2
Call Trace:
[<ffffffff8105f48f>] warn_slowpath_common+0x7f/0xc0
[<ffffffff8103052e>] ? copy_oldmem_page+0x4e/0xc0
[<ffffffff8105f4ea>] warn_slowpath_null+0x1a/0x20
[<ffffffff8103f0a7>] __ioremap_caller+0x307/0x380
[<ffffffff8103f1f7>] ioremap_nocache+0x17/0x20
[<ffffffff8103052e>] copy_oldmem_page+0x4e/0xc0
[<ffffffff811af4ca>] read_from_oldmem+0x7a/0xb0
[<ffffffff81c4f70b>] merge_note_headers_elf64.clone.1+0x6c/0x21f
[<ffffffff8103056e>] ? copy_oldmem_page+0x8e/0xc0
[<ffffffff811af4ca>] ? read_from_oldmem+0x7a/0xb0
[<ffffffff81c4fa5b>] vmcore_init+0x19d/0x396
[<ffffffff81c4f8be>] ? vmcore_init+0x0/0x396
[<ffffffff81002053>] do_one_initcall+0x43/0x190
[<ffffffff81c278ab>] kernel_init+0x2a0/0x330
[<ffffffff8100be84>] kernel_thread_helper+0x4/0x10
[<ffffffff81c2760b>] ? kernel_init+0x0/0x330
[<ffffffff8100be80>] ? kernel_thread_helper+0x0/0x10
---[ end trace 93d72a36b9146f22 ]---
Kdump: vmcore not initialized
commit 020ec6537aa65c18e9084c568d7b94727f2026fd
Author: Tejun Heo <tj@kernel.org>
Date: Fri Apr 9 18:57:00 2010 +0900
percpu: factor out pcpu_addr_in_first/reserved_chunk() and update per_cpu_ptr_to_phys()
Factor out pcpu_addr_in_first/reserved_chunk() from
pcpu_chunk_addr_search() and use it to update per_cpu_ptr_to_phys()
such that it handles first chunk differently from the rest.
This patch doesn't cause any functional change and is to prepare for
percpu nommu support.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: David Howells <dhowells@redhat.com>
Cc: Graff Yang <graff.yang@gmail.com>
Cc: Sonic Zhang <sonic.adi@gmail.com>
diff --git a/mm/percpu.c b/mm/percpu.c
index 6e09741..1aeb081 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -177,6 +177,21 @@ static struct list_head *pcpu_slot __read_mostly; /* chunk list slots */
static void pcpu_reclaim(struct work_struct *work);
static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim);
+static bool pcpu_addr_in_first_chunk(void *addr)
+{
+ void *first_start = pcpu_first_chunk->base_addr;
+
+ return addr >= first_start && addr < first_start + pcpu_unit_size;
+}
+
+static bool pcpu_addr_in_reserved_chunk(void *addr)
+{
+ void *first_start = pcpu_first_chunk->base_addr;
+
+ return addr >= first_start &&
+ addr < first_start + pcpu_reserved_chunk_limit;
+}
+
static int __pcpu_size_to_slot(int size)
{
int highbit = fls(size); /* size is in bytes */
@@ -334,12 +349,10 @@ static void pcpu_chunk_relocate(struct pcpu_chunk *chunk, int oslot)
*/
static struct pcpu_chunk *pcpu_chunk_addr_search(void *addr)
{
- void *first_start = pcpu_first_chunk->base_addr;
-
/* is it in the first chunk? */
- if (addr >= first_start && addr < first_start + pcpu_unit_size) {
+ if (pcpu_addr_in_first_chunk(addr)) {
/* is it in the reserved area? */
- if (addr < first_start + pcpu_reserved_chunk_limit)
+ if (pcpu_addr_in_reserved_chunk(addr))
return pcpu_reserved_chunk;
return pcpu_first_chunk;
}
@@ -1343,10 +1356,13 @@ bool is_kernel_percpu_address(unsigned long addr)
*/
phys_addr_t per_cpu_ptr_to_phys(void *addr)
{
- if ((unsigned long)addr < VMALLOC_START ||
- (unsigned long)addr >= VMALLOC_END)
- return __pa(addr);
- else
+ if (pcpu_addr_in_first_chunk(addr)) {
+ if ((unsigned long)addr < VMALLOC_START ||
+ (unsigned long)addr >= VMALLOC_END)
+ return __pa(addr);
+ else
+ return page_to_phys(vmalloc_to_page(addr));
+ } else
return page_to_phys(vmalloc_to_page(addr));
}
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: kvm kdump regression 2010-09-14 3:09 kvm kdump regression CAI Qian @ 2010-09-14 8:26 ` Tejun Heo 2010-09-14 8:29 ` CAI Qian 0 siblings, 1 reply; 14+ messages in thread From: Tejun Heo @ 2010-09-14 8:26 UTC (permalink / raw) To: CAI Qian Cc: linux-kernel, Avi Kivity, Marcelo Tosatti, dhowells, graff.yang, sonic.adi, kexec On 09/14/2010 05:09 AM, CAI Qian wrote: > This commit introduced a regression that an empty vmcore was generated on a kvm guest. > ioremap: invalid physical address db74000000000000 > ------------[ cut here ]------------ > WARNING: at arch/x86/mm/ioremap.c:83 __ioremap_caller+0x307/0x380() > Hardware name: KVM > Modules linked in: > Pid: 1, comm: swapper Not tainted 2.6.36-rc2-mm1+ #2 > Call Trace: > [<ffffffff8105f48f>] warn_slowpath_common+0x7f/0xc0 > [<ffffffff8103052e>] ? copy_oldmem_page+0x4e/0xc0 > [<ffffffff8105f4ea>] warn_slowpath_null+0x1a/0x20 > [<ffffffff8103f0a7>] __ioremap_caller+0x307/0x380 > [<ffffffff8103f1f7>] ioremap_nocache+0x17/0x20 > [<ffffffff8103052e>] copy_oldmem_page+0x4e/0xc0 > [<ffffffff811af4ca>] read_from_oldmem+0x7a/0xb0 > [<ffffffff81c4f70b>] merge_note_headers_elf64.clone.1+0x6c/0x21f > [<ffffffff8103056e>] ? copy_oldmem_page+0x8e/0xc0 > [<ffffffff811af4ca>] ? read_from_oldmem+0x7a/0xb0 > [<ffffffff81c4fa5b>] vmcore_init+0x19d/0x396 > [<ffffffff81c4f8be>] ? vmcore_init+0x0/0x396 > [<ffffffff81002053>] do_one_initcall+0x43/0x190 > [<ffffffff81c278ab>] kernel_init+0x2a0/0x330 > [<ffffffff8100be84>] kernel_thread_helper+0x4/0x10 > [<ffffffff81c2760b>] ? kernel_init+0x0/0x330 > [<ffffffff8100be80>] ? kernel_thread_helper+0x0/0x10 > ---[ end trace 93d72a36b9146f22 ]--- > Kdump: vmcore not initialized > > commit 020ec6537aa65c18e9084c568d7b94727f2026fd > Author: Tejun Heo <tj@kernel.org> > Date: Fri Apr 9 18:57:00 2010 +0900 > > percpu: factor out pcpu_addr_in_first/reserved_chunk() and update per_cpu_ptr_to_phys() Hmm... I'm confused. Isn't this the one fixed by commit 9983b6f0 (percpu: fix first chunk match in per_cpu_ptr_to_phys())? Thanks. -- tejun ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-14 8:26 ` Tejun Heo @ 2010-09-14 8:29 ` CAI Qian 2010-09-17 15:22 ` Tejun Heo 0 siblings, 1 reply; 14+ messages in thread From: CAI Qian @ 2010-09-14 8:29 UTC (permalink / raw) To: Tejun Heo Cc: linux-kernel, Avi Kivity, Marcelo Tosatti, dhowells, graff yang, sonic adi, kexec, Chris Lalancette ----- "Tejun Heo" <tj@kernel.org> wrote: > On 09/14/2010 05:09 AM, CAI Qian wrote: > > This commit introduced a regression that an empty vmcore was > generated on a kvm guest. > > ioremap: invalid physical address db74000000000000 > > ------------[ cut here ]------------ > > WARNING: at arch/x86/mm/ioremap.c:83 __ioremap_caller+0x307/0x380() > > Hardware name: KVM > > Modules linked in: > > Pid: 1, comm: swapper Not tainted 2.6.36-rc2-mm1+ #2 > > Call Trace: > > [<ffffffff8105f48f>] warn_slowpath_common+0x7f/0xc0 > > [<ffffffff8103052e>] ? copy_oldmem_page+0x4e/0xc0 > > [<ffffffff8105f4ea>] warn_slowpath_null+0x1a/0x20 > > [<ffffffff8103f0a7>] __ioremap_caller+0x307/0x380 > > [<ffffffff8103f1f7>] ioremap_nocache+0x17/0x20 > > [<ffffffff8103052e>] copy_oldmem_page+0x4e/0xc0 > > [<ffffffff811af4ca>] read_from_oldmem+0x7a/0xb0 > > [<ffffffff81c4f70b>] merge_note_headers_elf64.clone.1+0x6c/0x21f > > [<ffffffff8103056e>] ? copy_oldmem_page+0x8e/0xc0 > > [<ffffffff811af4ca>] ? read_from_oldmem+0x7a/0xb0 > > [<ffffffff81c4fa5b>] vmcore_init+0x19d/0x396 > > [<ffffffff81c4f8be>] ? vmcore_init+0x0/0x396 > > [<ffffffff81002053>] do_one_initcall+0x43/0x190 > > [<ffffffff81c278ab>] kernel_init+0x2a0/0x330 > > [<ffffffff8100be84>] kernel_thread_helper+0x4/0x10 > > [<ffffffff81c2760b>] ? kernel_init+0x0/0x330 > > [<ffffffff8100be80>] ? kernel_thread_helper+0x0/0x10 > > ---[ end trace 93d72a36b9146f22 ]--- > > Kdump: vmcore not initialized > > > > commit 020ec6537aa65c18e9084c568d7b94727f2026fd > > Author: Tejun Heo <tj@kernel.org> > > Date: Fri Apr 9 18:57:00 2010 +0900 > > > > percpu: factor out pcpu_addr_in_first/reserved_chunk() and > update per_cpu_ptr_to_phys() > > Hmm... I'm confused. Isn't this the one fixed by commit 9983b6f0 > (percpu: fix first chunk match in per_cpu_ptr_to_phys())? No, it did not. 2.6.36-rc2-mm1 still had the same problem. > > Thanks. > > -- > tejun ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-14 8:29 ` CAI Qian @ 2010-09-17 15:22 ` Tejun Heo 2010-09-18 12:36 ` CAI Qian 0 siblings, 1 reply; 14+ messages in thread From: Tejun Heo @ 2010-09-17 15:22 UTC (permalink / raw) To: CAI Qian Cc: linux-kernel, Avi Kivity, Marcelo Tosatti, dhowells, graff yang, sonic adi, kexec, Chris Lalancette Hello, Can you please apply the following patch, reproduce the problem and report the kernel log? Thanks. diff --git a/arch/x86/kernel/crash_dump_64.c b/arch/x86/kernel/crash_dump_64.c index 045b36c..8ac45a4 100644 --- a/arch/x86/kernel/crash_dump_64.c +++ b/arch/x86/kernel/crash_dump_64.c @@ -13,6 +13,7 @@ /* Stores the physical address of elf header of crash image. */ unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; +void per_cpu_ptr_to_phys_failed(void *addr); /** * copy_oldmem_page - copy one page from "oldmem" * @pfn: page frame number to be copied @@ -35,8 +36,10 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf, return 0; vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE); - if (!vaddr) + if (!vaddr) { + per_cpu_ptr_to_phys_failed(vaddr); return -ENOMEM; + } if (userbuf) { if (copy_to_user(buf, vaddr + offset, csize)) { diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 932eaee..3bbffb0 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -6540,6 +6540,8 @@ static void __init ata_parse_force_param(void) ata_force_tbl_size = idx; } +void per_cpu_ptr_to_phys_failed(void *addr); + static int __init ata_init(void) { int rc = -ENOMEM; @@ -6553,6 +6555,7 @@ static int __init ata_init(void) } printk(KERN_DEBUG "libata version " DRV_VERSION " loaded.\n"); + per_cpu_ptr_to_phys_failed(0x1234); return 0; } diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c index 7d9c1d0..357569a 100644 --- a/mm/percpu-vm.c +++ b/mm/percpu-vm.c @@ -415,6 +415,7 @@ static struct pcpu_chunk *pcpu_create_chunk(void) { struct pcpu_chunk *chunk; struct vm_struct **vms; + int i; chunk = pcpu_alloc_chunk(); if (!chunk) @@ -429,6 +430,13 @@ static struct pcpu_chunk *pcpu_create_chunk(void) chunk->data = vms; chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; + chunk->chunkno = ++chunkno; + printk("XXX chunk %d allocated base_addr=%p\n", + chunk->chunkno, chunk->base_addr); + printk("XXX VMS:"); + for (i = 0; i < pcpu_nr_groups; i++) + printk(" %zu@%p", vms[i]->size, vms[i]->addr); + printk("\n"); return chunk; } diff --git a/mm/percpu.c b/mm/percpu.c index 58c572b..8ef744d 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -90,7 +90,10 @@ (unsigned long)__per_cpu_start) #endif +static int chunkno; + struct pcpu_chunk { + int chunkno; struct list_head list; /* linked to pcpu_slot lists */ int free_size; /* free bytes in the chunk */ int contig_hint; /* max contiguous size hint */ @@ -176,6 +179,40 @@ static struct list_head *pcpu_slot __read_mostly; /* chunk list slots */ static void pcpu_reclaim(struct work_struct *work); static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim); +void pcpu_dump_chunk(struct pcpu_chunk *chunk) +{ + int i, contig = 0, free = 0; + + printk("XXX %d(f=%d,c=%d,u=%d,a=%d)", chunk->chunkno, + chunk->free_size, chunk->contig_hint, + chunk->map_used, chunk->map_alloc); + for (i = 0; i < chunk->map_used; i++) { + if (chunk->map[i] > 0) { + free += chunk->map[i]; + contig = max(contig, chunk->map[i]); + } + printk(" %d", chunk->map[i]); + } + printk(" free=%d contig=%d%s\n", free, contig, + (free != chunk->free_size || contig != chunk->contig_hint) ? + " MISMATCH!" : ""); +} + +void pcpu_dump_chunk_slots(void) +{ + struct pcpu_chunk *chunk; + int i; + + printk("XXX percpu allocator dump\n"); + for (i = 0; i < pcpu_nr_slots; i++) { + if (list_empty(&pcpu_slot[i])) + continue; + printk("XXX SLOT[%02d]\n", i); + list_for_each_entry(chunk, &pcpu_slot[i], list) + pcpu_dump_chunk(chunk); + } +} + static bool pcpu_addr_in_first_chunk(void *addr) { void *first_start = pcpu_first_chunk->base_addr; @@ -1011,6 +1048,19 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr) return page_to_phys(pcpu_addr_to_page(addr)); } +void per_cpu_ptr_to_phys_failed(void *addr) +{ + phys_addr_t phys; + unsigned long flags; + + phys = per_cpu_ptr_to_phys(addr); + printk("XXX per_cpu_ptry_to_phys(%p) returned invalid address 0x%llx\n", + addr, (unsigned long long)phys); + spin_lock_irqsave(&pcpu_lock, flags); + pcpu_dump_chunk_slots(); + spin_unlock_irqrestore(&pcpu_lock, flags); +} + /** * pcpu_alloc_alloc_info - allocate percpu allocation info * @nr_groups: the number of groups @@ -1426,6 +1476,11 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) + BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long); + printk("XXX CPU->UNIT M/O"); + for_each_possible_cpu(cpu) + printk(" %d:%lx", unit_map[cpu], unit_off[cpu]); + printk("\n"); + /* * Allocate chunk slots. The additional last slot is for * empty chunks. @@ -1435,6 +1490,10 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, for (i = 0; i < pcpu_nr_slots; i++) INIT_LIST_HEAD(&pcpu_slot[i]); + printk("XXX ss=%zu up=%d us=%d ns=%d rs=%zd ds=%zd\n", + ai->static_size, pcpu_unit_pages, pcpu_unit_size, + pcpu_nr_slots, ai->reserved_size, dyn_size); + /* * Initialize static chunk. If reserved_size is zero, the * static chunk covers static area + dynamic allocation area @@ -1454,6 +1513,7 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, schunk->free_size = ai->reserved_size; pcpu_reserved_chunk = schunk; pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; + schunk->chunkno = -1; } else { schunk->free_size = dyn_size; dyn_size = 0; /* dynamic area covered */ @@ -1483,6 +1543,12 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, pcpu_first_chunk = dchunk ?: schunk; pcpu_chunk_relocate(pcpu_first_chunk, -1); + if (pcpu_reserved_chunk) { + printk("XXX reserved chunk\n"); + pcpu_dump_chunk(pcpu_reserved_chunk); + } + pcpu_dump_chunk_slots(); + /* we're done */ pcpu_base_addr = base_addr; return 0; @@ -1592,6 +1658,7 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, goto out_free_areas; } areas[group] = ptr; + printk("XXX areas[%d]=%p\n", group, areas[group]); base = min(ptr, base); @@ -1608,12 +1675,15 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, } /* base address is now known, determine group base offsets */ + printk("XXX base_addr=%p", base); max_distance = 0; for (group = 0; group < ai->nr_groups; group++) { ai->groups[group].base_offset = areas[group] - base; max_distance = max_t(size_t, max_distance, ai->groups[group].base_offset); + printk(" %lx", ai->groups[group].base_offset); } + printk("\n"); max_distance += ai->unit_size; /* warn if maximum distance is further than 75% of vmalloc space */ ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-17 15:22 ` Tejun Heo @ 2010-09-18 12:36 ` CAI Qian 2010-09-19 15:02 ` Tejun Heo 0 siblings, 1 reply; 14+ messages in thread From: CAI Qian @ 2010-09-18 12:36 UTC (permalink / raw) To: Tejun Heo Cc: linux-kernel, Avi Kivity, Marcelo Tosatti, dhowells, graff yang, sonic adi, kexec, Chris Lalancette ----- "Tejun Heo" <tj@kernel.org> wrote: > Hello, > > Can you please apply the following patch, reproduce the problem and > report the kernel log? Tejun, which version this patch is against? Both 2.6.36-rc2-mm1 and 2.6.36-rc4-mm1 failed to apply it, patching file arch/x86/kernel/crash_dump_64.c Hunk #2 FAILED at 36. 1 out of 2 hunks FAILED -- saving rejects to file arch/x86/kernel/crash_dump_64.c.rej patching file drivers/ata/libata-core.c Hunk #1 succeeded at 6578 with fuzz 1 (offset 38 lines). Hunk #2 FAILED at 6555. 1 out of 2 hunks FAILED -- saving rejects to file drivers/ata/libata-core.c.rej patching file mm/percpu-vm.c Hunk #1 FAILED at 415. Hunk #2 FAILED at 429. 2 out of 2 hunks FAILED -- saving rejects to file mm/percpu-vm.c.rej patching file mm/percpu.c Hunk #1 FAILED at 90. Hunk #2 succeeded at 176 with fuzz 1. Hunk #3 succeeded at 1045 with fuzz 1. Hunk #4 FAILED at 1473. Hunk #5 FAILED at 1482. Hunk #6 FAILED at 1501. Hunk #7 FAILED at 1530. Hunk #8 FAILED at 1639. Hunk #9 FAILED at 1655. 7 out of 9 hunks FAILED -- saving rejects to file mm/percpu.c.rej > > Thanks. > > diff --git a/arch/x86/kernel/crash_dump_64.c > b/arch/x86/kernel/crash_dump_64.c > index 045b36c..8ac45a4 100644 > --- a/arch/x86/kernel/crash_dump_64.c > +++ b/arch/x86/kernel/crash_dump_64.c > @@ -13,6 +13,7 @@ > /* Stores the physical address of elf header of crash image. */ > unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; > > +void per_cpu_ptr_to_phys_failed(void *addr); > /** > * copy_oldmem_page - copy one page from "oldmem" > * @pfn: page frame number to be copied > @@ -35,8 +36,10 @@ ssize_t copy_oldmem_page(unsigned long pfn, char > *buf, > return 0; > > vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE); > - if (!vaddr) > + if (!vaddr) { > + per_cpu_ptr_to_phys_failed(vaddr); > return -ENOMEM; > + } > > if (userbuf) { > if (copy_to_user(buf, vaddr + offset, csize)) { > diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c > index 932eaee..3bbffb0 100644 > --- a/drivers/ata/libata-core.c > +++ b/drivers/ata/libata-core.c > @@ -6540,6 +6540,8 @@ static void __init ata_parse_force_param(void) > ata_force_tbl_size = idx; > } > > +void per_cpu_ptr_to_phys_failed(void *addr); > + > static int __init ata_init(void) > { > int rc = -ENOMEM; > @@ -6553,6 +6555,7 @@ static int __init ata_init(void) > } > > printk(KERN_DEBUG "libata version " DRV_VERSION " loaded.\n"); > + per_cpu_ptr_to_phys_failed(0x1234); > return 0; > } > > diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c > index 7d9c1d0..357569a 100644 > --- a/mm/percpu-vm.c > +++ b/mm/percpu-vm.c > @@ -415,6 +415,7 @@ static struct pcpu_chunk *pcpu_create_chunk(void) > { > struct pcpu_chunk *chunk; > struct vm_struct **vms; > + int i; > > chunk = pcpu_alloc_chunk(); > if (!chunk) > @@ -429,6 +430,13 @@ static struct pcpu_chunk > *pcpu_create_chunk(void) > > chunk->data = vms; > chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; > + chunk->chunkno = ++chunkno; > + printk("XXX chunk %d allocated base_addr=%p\n", > + chunk->chunkno, chunk->base_addr); > + printk("XXX VMS:"); > + for (i = 0; i < pcpu_nr_groups; i++) > + printk(" %zu@%p", vms[i]->size, vms[i]->addr); > + printk("\n"); > return chunk; > } > > diff --git a/mm/percpu.c b/mm/percpu.c > index 58c572b..8ef744d 100644 > --- a/mm/percpu.c > +++ b/mm/percpu.c > @@ -90,7 +90,10 @@ > (unsigned long)__per_cpu_start) > #endif > > +static int chunkno; > + > struct pcpu_chunk { > + int chunkno; > struct list_head list; /* linked to pcpu_slot lists */ > int free_size; /* free bytes in the chunk */ > int contig_hint; /* max contiguous size hint */ > @@ -176,6 +179,40 @@ static struct list_head *pcpu_slot __read_mostly; > /* chunk list slots */ > static void pcpu_reclaim(struct work_struct *work); > static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim); > > +void pcpu_dump_chunk(struct pcpu_chunk *chunk) > +{ > + int i, contig = 0, free = 0; > + > + printk("XXX %d(f=%d,c=%d,u=%d,a=%d)", chunk->chunkno, > + chunk->free_size, chunk->contig_hint, > + chunk->map_used, chunk->map_alloc); > + for (i = 0; i < chunk->map_used; i++) { > + if (chunk->map[i] > 0) { > + free += chunk->map[i]; > + contig = max(contig, chunk->map[i]); > + } > + printk(" %d", chunk->map[i]); > + } > + printk(" free=%d contig=%d%s\n", free, contig, > + (free != chunk->free_size || contig != chunk->contig_hint) ? > + " MISMATCH!" : ""); > +} > + > +void pcpu_dump_chunk_slots(void) > +{ > + struct pcpu_chunk *chunk; > + int i; > + > + printk("XXX percpu allocator dump\n"); > + for (i = 0; i < pcpu_nr_slots; i++) { > + if (list_empty(&pcpu_slot[i])) > + continue; > + printk("XXX SLOT[%02d]\n", i); > + list_for_each_entry(chunk, &pcpu_slot[i], list) > + pcpu_dump_chunk(chunk); > + } > +} > + > static bool pcpu_addr_in_first_chunk(void *addr) > { > void *first_start = pcpu_first_chunk->base_addr; > @@ -1011,6 +1048,19 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr) > return page_to_phys(pcpu_addr_to_page(addr)); > } > > +void per_cpu_ptr_to_phys_failed(void *addr) > +{ > + phys_addr_t phys; > + unsigned long flags; > + > + phys = per_cpu_ptr_to_phys(addr); > + printk("XXX per_cpu_ptry_to_phys(%p) returned invalid address > 0x%llx\n", > + addr, (unsigned long long)phys); > + spin_lock_irqsave(&pcpu_lock, flags); > + pcpu_dump_chunk_slots(); > + spin_unlock_irqrestore(&pcpu_lock, flags); > +} > + > /** > * pcpu_alloc_alloc_info - allocate percpu allocation info > * @nr_groups: the number of groups > @@ -1426,6 +1476,11 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) + > BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long); > > + printk("XXX CPU->UNIT M/O"); > + for_each_possible_cpu(cpu) > + printk(" %d:%lx", unit_map[cpu], unit_off[cpu]); > + printk("\n"); > + > /* > * Allocate chunk slots. The additional last slot is for > * empty chunks. > @@ -1435,6 +1490,10 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > for (i = 0; i < pcpu_nr_slots; i++) > INIT_LIST_HEAD(&pcpu_slot[i]); > > + printk("XXX ss=%zu up=%d us=%d ns=%d rs=%zd ds=%zd\n", > + ai->static_size, pcpu_unit_pages, pcpu_unit_size, > + pcpu_nr_slots, ai->reserved_size, dyn_size); > + > /* > * Initialize static chunk. If reserved_size is zero, the > * static chunk covers static area + dynamic allocation area > @@ -1454,6 +1513,7 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > schunk->free_size = ai->reserved_size; > pcpu_reserved_chunk = schunk; > pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; > + schunk->chunkno = -1; > } else { > schunk->free_size = dyn_size; > dyn_size = 0; /* dynamic area covered */ > @@ -1483,6 +1543,12 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_first_chunk = dchunk ?: schunk; > pcpu_chunk_relocate(pcpu_first_chunk, -1); > > + if (pcpu_reserved_chunk) { > + printk("XXX reserved chunk\n"); > + pcpu_dump_chunk(pcpu_reserved_chunk); > + } > + pcpu_dump_chunk_slots(); > + > /* we're done */ > pcpu_base_addr = base_addr; > return 0; > @@ -1592,6 +1658,7 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > goto out_free_areas; > } > areas[group] = ptr; > + printk("XXX areas[%d]=%p\n", group, areas[group]); > > base = min(ptr, base); > > @@ -1608,12 +1675,15 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > } > > /* base address is now known, determine group base offsets */ > + printk("XXX base_addr=%p", base); > max_distance = 0; > for (group = 0; group < ai->nr_groups; group++) { > ai->groups[group].base_offset = areas[group] - base; > max_distance = max_t(size_t, max_distance, > ai->groups[group].base_offset); > + printk(" %lx", ai->groups[group].base_offset); > } > + printk("\n"); > max_distance += ai->unit_size; > > /* warn if maximum distance is further than 75% of vmalloc space */ ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-18 12:36 ` CAI Qian @ 2010-09-19 15:02 ` Tejun Heo 2010-09-20 8:00 ` CAI Qian 0 siblings, 1 reply; 14+ messages in thread From: Tejun Heo @ 2010-09-19 15:02 UTC (permalink / raw) To: CAI Qian Cc: linux-kernel, Avi Kivity, Marcelo Tosatti, dhowells, graff yang, sonic adi, kexec, Chris Lalancette On 09/18/2010 02:36 PM, CAI Qian wrote: >> Can you please apply the following patch, reproduce the problem and >> report the kernel log? > Tejun, which version this patch is against? Both 2.6.36-rc2-mm1 and 2.6.36-rc4-mm1 failed to apply it, The patch was against percpu#for-next branch. Below is a patch regenerated against the current linux-next. Thanks. diff --git a/arch/x86/kernel/crash_dump_64.c b/arch/x86/kernel/crash_dump_64.c index bf43188..9510e7d 100644 --- a/arch/x86/kernel/crash_dump_64.c +++ b/arch/x86/kernel/crash_dump_64.c @@ -13,6 +13,7 @@ /* Stores the physical address of elf header of crash image. */ unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; +void per_cpu_ptr_to_phys_failed(void *addr); /** * copy_oldmem_page - copy one page from "oldmem" * @pfn: page frame number to be copied @@ -35,8 +36,10 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf, return 0; vaddr = ioremap_cache(pfn << PAGE_SHIFT, PAGE_SIZE); - if (!vaddr) + if (!vaddr) { + per_cpu_ptr_to_phys_failed(vaddr); return -ENOMEM; + } if (userbuf) { if (copy_to_user(buf, vaddr + offset, csize)) { diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c index 7d9c1d0..357569a 100644 --- a/mm/percpu-vm.c +++ b/mm/percpu-vm.c @@ -415,6 +415,7 @@ static struct pcpu_chunk *pcpu_create_chunk(void) { struct pcpu_chunk *chunk; struct vm_struct **vms; + int i; chunk = pcpu_alloc_chunk(); if (!chunk) @@ -429,6 +430,13 @@ static struct pcpu_chunk *pcpu_create_chunk(void) chunk->data = vms; chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; + chunk->chunkno = ++chunkno; + printk("XXX chunk %d allocated base_addr=%p\n", + chunk->chunkno, chunk->base_addr); + printk("XXX VMS:"); + for (i = 0; i < pcpu_nr_groups; i++) + printk(" %zu@%p", vms[i]->size, vms[i]->addr); + printk("\n"); return chunk; } diff --git a/mm/percpu.c b/mm/percpu.c index 77e3f5a..f4b094b 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -96,7 +96,10 @@ #define __pcpu_ptr_to_addr(ptr) (void __force *)(ptr) #endif /* CONFIG_SMP */ +static int chunkno; + struct pcpu_chunk { + int chunkno; struct list_head list; /* linked to pcpu_slot lists */ int free_size; /* free bytes in the chunk */ int contig_hint; /* max contiguous size hint */ @@ -182,6 +185,40 @@ static struct list_head *pcpu_slot __read_mostly; /* chunk list slots */ static void pcpu_reclaim(struct work_struct *work); static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim); +void pcpu_dump_chunk(struct pcpu_chunk *chunk) +{ + int i, contig = 0, free = 0; + + printk("XXX %d(f=%d,c=%d,u=%d,a=%d)", chunk->chunkno, + chunk->free_size, chunk->contig_hint, + chunk->map_used, chunk->map_alloc); + for (i = 0; i < chunk->map_used; i++) { + if (chunk->map[i] > 0) { + free += chunk->map[i]; + contig = max(contig, chunk->map[i]); + } + printk(" %d", chunk->map[i]); + } + printk(" free=%d contig=%d%s\n", free, contig, + (free != chunk->free_size || contig != chunk->contig_hint) ? + " MISMATCH!" : ""); +} + +void pcpu_dump_chunk_slots(void) +{ + struct pcpu_chunk *chunk; + int i; + + printk("XXX percpu allocator dump\n"); + for (i = 0; i < pcpu_nr_slots; i++) { + if (list_empty(&pcpu_slot[i])) + continue; + printk("XXX SLOT[%02d]\n", i); + list_for_each_entry(chunk, &pcpu_slot[i], list) + pcpu_dump_chunk(chunk); + } +} + static bool pcpu_addr_in_first_chunk(void *addr) { void *first_start = pcpu_first_chunk->base_addr; @@ -1021,6 +1058,19 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr) return page_to_phys(pcpu_addr_to_page(addr)); } +void per_cpu_ptr_to_phys_failed(void *addr) +{ + phys_addr_t phys; + unsigned long flags; + + phys = per_cpu_ptr_to_phys(addr); + printk("XXX per_cpu_ptry_to_phys(%p) returned invalid address 0x%llx\n", + addr, (unsigned long long)phys); + spin_lock_irqsave(&pcpu_lock, flags); + pcpu_dump_chunk_slots(); + spin_unlock_irqrestore(&pcpu_lock, flags); +} + /** * pcpu_alloc_alloc_info - allocate percpu allocation info * @nr_groups: the number of groups @@ -1283,6 +1333,11 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) + BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long); + printk("XXX CPU->UNIT M/O"); + for_each_possible_cpu(cpu) + printk(" %d:%lx", unit_map[cpu], unit_off[cpu]); + printk("\n"); + /* * Allocate chunk slots. The additional last slot is for * empty chunks. @@ -1292,6 +1347,10 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, for (i = 0; i < pcpu_nr_slots; i++) INIT_LIST_HEAD(&pcpu_slot[i]); + printk("XXX ss=%zu up=%d us=%d ns=%d rs=%zd ds=%zd\n", + ai->static_size, pcpu_unit_pages, pcpu_unit_size, + pcpu_nr_slots, ai->reserved_size, dyn_size); + /* * Initialize static chunk. If reserved_size is zero, the * static chunk covers static area + dynamic allocation area @@ -1311,6 +1370,7 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, schunk->free_size = ai->reserved_size; pcpu_reserved_chunk = schunk; pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; + schunk->chunkno = -1; } else { schunk->free_size = dyn_size; dyn_size = 0; /* dynamic area covered */ @@ -1340,6 +1400,12 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, pcpu_first_chunk = dchunk ?: schunk; pcpu_chunk_relocate(pcpu_first_chunk, -1); + if (pcpu_reserved_chunk) { + printk("XXX reserved chunk\n"); + pcpu_dump_chunk(pcpu_reserved_chunk); + } + pcpu_dump_chunk_slots(); + /* we're done */ pcpu_base_addr = base_addr; return 0; @@ -1623,6 +1689,7 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, goto out_free_areas; } areas[group] = ptr; + printk("XXX areas[%d]=%p\n", group, areas[group]); base = min(ptr, base); @@ -1639,12 +1706,15 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, } /* base address is now known, determine group base offsets */ + printk("XXX base_addr=%p", base); max_distance = 0; for (group = 0; group < ai->nr_groups; group++) { ai->groups[group].base_offset = areas[group] - base; max_distance = max_t(size_t, max_distance, ai->groups[group].base_offset); + printk(" %lx", ai->groups[group].base_offset); } + printk("\n"); max_distance += ai->unit_size; /* warn if maximum distance is further than 75% of vmalloc space */ ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-19 15:02 ` Tejun Heo @ 2010-09-20 8:00 ` CAI Qian 2010-09-20 9:12 ` Tejun Heo 0 siblings, 1 reply; 14+ messages in thread From: CAI Qian @ 2010-09-20 8:00 UTC (permalink / raw) To: Tejun Heo Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity ----- "Tejun Heo" <tj@kernel.org> wrote: > On 09/18/2010 02:36 PM, CAI Qian wrote: > >> Can you please apply the following patch, reproduce the problem > and > >> report the kernel log? > > Tejun, which version this patch is against? Both 2.6.36-rc2-mm1 and > 2.6.36-rc4-mm1 failed to apply it, > > The patch was against percpu#for-next branch. Below is a patch > regenerated against the current linux-next. Here were the messages when triggering kdump after applied this patch. SysRq : Trigger a crash BUG: unable to handle kernel NULL pointer dereference at (null) IP: [<ffffffff812cbaa6>] sysrq_handle_crash+0x16/0x20 PGD c638be067 PUD c61eb1067 PMD 0 Oops: 0002 [#1] SMP last sysfs file: /sys/devices/virtio-pci/virtio2/block/vda/dev CPU 4 Modules linked in: ipv6 xfs exportfs virtio_net pcspkr snd_intel8x0 snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc i2c_piix4 i2c_core ext4 mbcache jbd2 floppy virtio_blk virtio_pci virtio_ring virtio ata_generic pata_acpi ata_piix dm_mod [last unloaded: scsi_wait_scan] Pid: 5055, comm: bash Not tainted 2.6.36-rc4-mm1+ #24 /KVM RIP: 0010:[<ffffffff812cbaa6>] [<ffffffff812cbaa6>] sysrq_handle_crash+0x16/0x20 RSP: 0018:ffff880c638a7e38 EFLAGS: 00010092 RAX: 0000000000000010 RBX: 0000000000000063 RCX: 00000000000016b5 RDX: 0000000000000000 RSI: 0000000000000046 RDI: 0000000000000063 RBP: ffff880c638a7e38 R08: 0000000000000000 R09: ffffffff8163f5a0 R10: 0000000000000001 R11: 0000000000000000 R12: ffffffff81a73480 R13: 0000000000000286 R14: 0000000000000007 R15: 0000000000000000 FS: 00007f342adb9700(0000) GS:ffff880002880000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 0000000c63d8d000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process bash (pid: 5055, threadinfo ffff880c638a6000, task ffff880c608e7560) Stack: ffff880c638a7e78 ffffffff812cc0b9 ffff880c674bf680 0000000000000002 <0> ffff880c602e4d80 00007f342adbb000 0000000000000002 fffffffffffffffb <0> ffff880c638a7ea8 ffffffff812cc16a ffff880c00000002 00007f342adbb000 Call Trace: [<ffffffff812cc0b9>] __handle_sysrq+0x129/0x190 [<ffffffff812cc16a>] write_sysrq_trigger+0x4a/0x50 [<ffffffff8119f236>] proc_reg_write+0x76/0xb0 [<ffffffff81145928>] vfs_write+0xc8/0x190 [<ffffffff811462c1>] sys_write+0x51/0x90 [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b Code: d0 88 81 43 6d 25 82 c9 c3 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00 c7 05 99 ca b3 00 01 00 00 00 0f ae f8 <c6> 04 25 00 00 00 00 01 c9 c3 55 48 89 e5 0f 1f 44 00 00 8d 47 RIP [<ffffffff812cbaa6>] sysrq_handle_crash+0x16/0x20 RSP <ffff880c638a7e38> CR2: 0000000000000000 Initializing cgroup subsys cpuset Linux version 2.6.36-rc4-mm1+ (root@localhost.localdomain) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #24 SMP Mon Sep 20 03:44:24 EDT 2010 Command line: ro root=/dev/mapper/VolGroup-lv_root console=tty0 console=ttyS0,115200 SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us no_console_suspend irqpoll maxcpus=1 reset_devices cgroup_disable=memory memmap=exactmap memmap=640K@0K memmap=130412K@49792K elfcorehdr=180204K memmap=64K$960K memmap=20K$3669996K memmap=272K$4194032K BIOS-provided physical RAM map: BIOS-e820: 0000000000000100 - 000000000009a800 (usable) BIOS-e820: 000000000009a800 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 00000000dfffb000 (usable) BIOS-e820: 00000000dfffb000 - 00000000e0000000 (reserved) BIOS-e820: 00000000fffbc000 - 0000000100000000 (reserved) BIOS-e820: 0000000100000000 - 0000000ca0000000 (usable) last_pfn = 0xca0000 max_arch_pfn = 0x400000000 NX (Execute Disable) protection: active user-defined physical RAM map: user: 0000000000000000 - 00000000000a0000 (usable) user: 00000000000f0000 - 0000000000100000 (reserved) user: 00000000030a0000 - 000000000affb000 (usable) user: 00000000dfffb000 - 00000000e0000000 (reserved) user: 00000000fffbc000 - 0000000100000000 (reserved) DMI 2.4 present. No AGP bridge found last_pfn = 0xaffb max_arch_pfn = 0x400000000 PAT not supported by CPU. found SMP MP-table at [ffff8800000f7d40] f7d40 init_memory_mapping: 0000000000000000-000000000affb000 RAMDISK: 0ab4c000 - 0afef000 ACPI: RSDP 00000000000f7cf0 00014 (v00 BOCHS ) ACPI: RSDT 00000000dfffd0d0 00030 (v01 BOCHS BXPCRSDT 00000001 BXPC 00000001) ACPI: FACP 00000000dffff4f0 00074 (v01 BOCHS BXPCFACP 00000001 BXPC 00000001) ACPI: DSDT 00000000dfffd630 01E4B (v01 BXPC BXDSDT 00000001 INTL 20090123) ACPI: FACS 00000000dffff480 00040 ACPI: SSDT 00000000dfffd370 002B5 (v01 BOCHS BXPCSSDT 00000001 BXPC 00000001) ACPI: APIC 00000000dfffd100 001FA (v01 BOCHS BXPCAPIC 00000001 BXPC 00000001) No NUMA configuration found Faking a node at 0000000000000000-000000000affb000 Initmem setup node 0 0000000000000000-000000000affb000 NODE_DATA [00000000030a0000 - 00000000030c6fff] kvm-clock: Using msrs 12 and 11 kvm-clock: cpu 0, msr 0:4af5c01, boot clock Zone PFN ranges: DMA 0x00000010 -> 0x00001000 DMA32 0x00001000 -> 0x00100000 Normal empty Movable zone start PFN for each node early_node_map[2] active PFN ranges 0: 0x00000010 -> 0x000000a0 0: 0x000030a0 -> 0x0000affb ACPI: PM-Timer IO Port: 0xb008 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled) ACPI: LAPIC (acpi_id[0x04] lapic_id[0x04] enabled) ACPI: LAPIC (acpi_id[0x05] lapic_id[0x05] enabled) ACPI: LAPIC (acpi_id[0x06] lapic_id[0x06] enabled) ACPI: LAPIC (acpi_id[0x07] lapic_id[0x07] enabled) ACPI: LAPIC (acpi_id[0x08] lapic_id[0x08] enabled) ACPI: LAPIC (acpi_id[0x09] lapic_id[0x09] enabled) ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x0a] enabled) ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x0b] enabled) ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x0c] enabled) ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x0d] enabled) ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x0e] enabled) ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x0f] enabled) ACPI: LAPIC (acpi_id[0x10] lapic_id[0x10] enabled) ACPI: LAPIC (acpi_id[0x11] lapic_id[0x11] enabled) ACPI: LAPIC (acpi_id[0x12] lapic_id[0x12] enabled) ACPI: LAPIC (acpi_id[0x13] lapic_id[0x13] enabled) ACPI: LAPIC (acpi_id[0x14] lapic_id[0x14] enabled) ACPI: LAPIC (acpi_id[0x15] lapic_id[0x15] enabled) ACPI: LAPIC (acpi_id[0x16] lapic_id[0x16] enabled) ACPI: LAPIC (acpi_id[0x17] lapic_id[0x17] enabled) ACPI: LAPIC (acpi_id[0x18] lapic_id[0x18] enabled) ACPI: LAPIC (acpi_id[0x19] lapic_id[0x19] enabled) ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x1a] enabled) ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x1b] enabled) ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x1c] enabled) ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x1d] enabled) ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x1e] enabled) ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x1f] enabled) ACPI: LAPIC (acpi_id[0x20] lapic_id[0x20] enabled) ACPI: LAPIC (acpi_id[0x21] lapic_id[0x21] enabled) ACPI: LAPIC (acpi_id[0x22] lapic_id[0x22] enabled) ACPI: LAPIC (acpi_id[0x23] lapic_id[0x23] enabled) ACPI: LAPIC (acpi_id[0x24] lapic_id[0x24] enabled) ACPI: LAPIC (acpi_id[0x25] lapic_id[0x25] enabled) ACPI: LAPIC (acpi_id[0x26] lapic_id[0x26] enabled) ACPI: LAPIC (acpi_id[0x27] lapic_id[0x27] enabled) ACPI: LAPIC (acpi_id[0x28] lapic_id[0x28] enabled) ACPI: LAPIC (acpi_id[0x29] lapic_id[0x29] enabled) ACPI: LAPIC (acpi_id[0x2a] lapic_id[0x2a] enabled) ACPI: LAPIC (acpi_id[0x2b] lapic_id[0x2b] enabled) ACPI: LAPIC (acpi_id[0x2c] lapic_id[0x2c] enabled) ACPI: LAPIC (acpi_id[0x2d] lapic_id[0x2d] enabled) ACPI: LAPIC (acpi_id[0x2e] lapic_id[0x2e] enabled) ACPI: LAPIC (acpi_id[0x2f] lapic_id[0x2f] enabled) ACPI: LAPIC (acpi_id[0x30] lapic_id[0x30] enabled) ACPI: LAPIC (acpi_id[0x31] lapic_id[0x31] enabled) ACPI: IOAPIC (id[0x32] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 50, version 17, address 0xfec00000, GSI 0-23 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level) ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level) Using ACPI (MADT) for SMP configuration information SMP: Allowing 50 CPUs, 0 hotplug CPUs PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 PM: Registered nosave memory: 0000000000100000 - 00000000030a0000 Allocating PCI resources starting at affb000 (gap: affb000:d5000000) Booting paravirtualized kernel on KVM setup_percpu: NR_CPUS:4096 nr_cpumask_bits:50 nr_cpu_ids:50 nr_node_ids:1 XXX areas[0]=ffff880005400000 XXX base_addr=ffff880005400000 0 PERCPU: Embedded 29 pages/cpu @ffff880005400000 s88128 r8192 d22464 u131072 pcpu-alloc: s88128 r8192 d22464 u131072 alloc=1*2097152 pcpu-alloc: [0] 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 pcpu-alloc: [0] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 pcpu-alloc: [0] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 pcpu-alloc: [0] 48 49 -- -- -- -- -- -- -- -- -- -- -- -- -- -- XXX CPU->UNIT M/O 0:0 1:20000 2:40000 3:60000 4:80000 5:a0000 6:c0000 7:e0000 8:100000 9:120000 10:140000 11:160000 12:180000 13:1a0000 14:1c0000 15:1e0000 16:200000 17:220000 18:240000 19:260000 20:280000 21:2a0000 22:2c0000 23:2e0000 24:300000 25:320000 26:340000 27:360000 28:380000 29:3a0000 30:3c0000 31:3e0000 32:400000 33:420000 34:440000 35:460000 36:480000 37:4a0000 38:4c0000 39:4e0000 40:500000 41:520000 42:540000 43:560000 44:580000 45:5a0000 46:5c0000 47:5e0000 48:600000 49:620000 XXX ss=88128 up=32 us=131072 ns=17 rs=8192 ds=22464 XXX reserved chunk XXX -1(f=8192,c=8192,u=2,a=128) -88128 8192 free=8192 contig=8192 XXX percpu allocator dump XXX SLOT[12] XXX 0(f=22464,c=22464,u=2,a=128) -96320 22464 free=22464 contig=22464 kvm-clock: cpu 0, msr 0:5414c01, primary cpu clock Built 1 zonelists in Node order, mobility grouping on. Total pages: 32131 Policy zone: DMA32 Kernel command line: ro root=/dev/mapper/VolGroup-lv_root console=tty0 console=ttyS0,115200 SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us no_console_suspend irqpoll maxcpus=1 reset_devices cgroup_disable=memory memmap=exactmap memmap=640K@0K memmap=130412K@49792K elfcorehdr=180204K memmap=64K$960K memmap=20K$3669996K memmap=272K$4194032K Misrouted IRQ fixup and polling support enabled This may significantly impact system performance Disabling memory control group subsystem PID hash table entries: 512 (order: 0, 4096 bytes) Checking aperture... No AGP bridge found Subtract (95 early reservations) #1 [0004000000 - 0005298a08] TEXT DATA BSS #2 [000ab4c000 - 000afef000] RAMDISK #3 [0005299000 - 0005299079] BRK #4 [000009a800 - 00000f7d40] BIOS reserved #5 [00000f7d40 - 00000f7d50] MP-table mpf #6 [00000f8224 - 0000100000] BIOS reserved #7 [00000f7d50 - 00000f8224] MP-table mpc #8 [0000010000 - 0000012000] TRAMPOLINE #9 [0000012000 - 0000016000] ACPI WAKEUP #10 [0000016000 - 0000017000] PGTABLE #11 [00030a0000 - 00030c7000] NODE_DATA #12 [00030c7000 - 00030c8000] BOOTMEM #13 [00034c8000 - 00034c8030] BOOTMEM #14 [00038c9000 - 00038ca000] BOOTMEM #15 [00038ca000 - 00038cb000] BOOTMEM #16 [0003a00000 - 0003e00000] MEMMAP 0 #17 [00030c8000 - 00030c8180] BOOTMEM #18 [00030c8180 - 00030c9980] BOOTMEM #19 [00030ca000 - 00030cb000] BOOTMEM #20 [00030c9980 - 00030c99c3] BOOTMEM #21 [00030c9a00 - 00030c9b50] BOOTMEM #22 [00030c9b80 - 00030c9be8] BOOTMEM #23 [00030c9c00 - 00030c9c68] BOOTMEM #24 [00030c9c80 - 00030c9ce8] BOOTMEM #25 [00030c9d00 - 00030c9d68] BOOTMEM #26 [00030c9d80 - 00030c9de8] BOOTMEM #27 [00030c9e00 - 00030c9e68] BOOTMEM #28 [00030c9e80 - 00030c9ee8] BOOTMEM #29 [00030c9f00 - 00030c9f20] BOOTMEM #30 [00030cb000 - 00030cb149] BOOTMEM #31 [00030cb180 - 00030cb2c9] BOOTMEM #32 [0005400000 - 000541d000] BOOTMEM #33 [0005420000 - 000543d000] BOOTMEM #34 [0005440000 - 000545d000] BOOTMEM #35 [0005460000 - 000547d000] BOOTMEM #36 [0005480000 - 000549d000] BOOTMEM #37 [00054a0000 - 00054bd000] BOOTMEM #38 [00054c0000 - 00054dd000] BOOTMEM #39 [00054e0000 - 00054fd000] BOOTMEM #40 [0005500000 - 000551d000] BOOTMEM #41 [0005520000 - 000553d000] BOOTMEM #42 [0005540000 - 000555d000] BOOTMEM #43 [0005560000 - 000557d000] BOOTMEM #44 [0005580000 - 000559d000] BOOTMEM #45 [00055a0000 - 00055bd000] BOOTMEM #46 [00055c0000 - 00055dd000] BOOTMEM #47 [00055e0000 - 00055fd000] BOOTMEM #48 [0005600000 - 000561d000] BOOTMEM #49 [0005620000 - 000563d000] BOOTMEM #50 [0005640000 - 000565d000] BOOTMEM #51 [0005660000 - 000567d000] BOOTMEM #52 [0005680000 - 000569d000] BOOTMEM #53 [00056a0000 - 00056bd000] BOOTMEM #54 [00056c0000 - 00056dd000] BOOTMEM #55 [00056e0000 - 00056fd000] BOOTMEM #56 [0005700000 - 000571d000] BOOTMEM #57 [0005720000 - 000573d000] BOOTMEM #58 [0005740000 - 000575d000] BOOTMEM #59 [0005760000 - 000577d000] BOOTMEM #60 [0005780000 - 000579d000] BOOTMEM #61 [00057a0000 - 00057bd000] BOOTMEM #62 [00057c0000 - 00057dd000] BOOTMEM #63 [00057e0000 - 00057fd000] BOOTMEM #64 [0005800000 - 000581d000] BOOTMEM #65 [0005820000 - 000583d000] BOOTMEM #66 [0005840000 - 000585d000] BOOTMEM #67 [0005860000 - 000587d000] BOOTMEM #68 [0005880000 - 000589d000] BOOTMEM #69 [00058a0000 - 00058bd000] BOOTMEM #70 [00058c0000 - 00058dd000] BOOTMEM #71 [00058e0000 - 00058fd000] BOOTMEM #72 [0005900000 - 000591d000] BOOTMEM #73 [0005920000 - 000593d000] BOOTMEM #74 [0005940000 - 000595d000] BOOTMEM #75 [0005960000 - 000597d000] BOOTMEM #76 [0005980000 - 000599d000] BOOTMEM #77 [00059a0000 - 00059bd000] BOOTMEM #78 [00059c0000 - 00059dd000] BOOTMEM #79 [00059e0000 - 00059fd000] BOOTMEM #80 [0005a00000 - 0005a1d000] BOOTMEM #81 [0005a20000 - 0005a3d000] BOOTMEM #82 [00030c9f40 - 00030c9f48] BOOTMEM #83 [00030c9f80 - 00030c9f88] BOOTMEM #84 [00030cd300 - 00030cd3c8] BOOTMEM #85 [00030cd400 - 00030cd590] BOOTMEM #86 [00030cd5c0 - 00030cd6d0] BOOTMEM #87 [00030cd700 - 00030cd750] BOOTMEM #88 [00030cd780 - 00030cd7d0] BOOTMEM #89 [00030cb300 - 00030cb500] BOOTMEM #90 [00030cb500 - 00030cb700] BOOTMEM #91 [00030cb700 - 00030cb900] BOOTMEM #92 [00030cb900 - 00030cbb00] BOOTMEM #93 [00030cbb00 - 00030cbd00] BOOTMEM #94 [00030cbd00 - 00030ccd00] BOOTMEM Memory: 97048k/180204k available (4738k kernel code, 49216k absent, 33940k reserved, 6395k data, 2660k init) Hierarchical RCU implementation. RCU-based detection of stalled CPUs is disabled. Verbose stalled-CPUs detection is disabled. NR_IRQS:262400 nr_irqs:1080 Spurious LAPIC timer interrupt on cpu 0 Console: colour VGA+ 80x25 console [tty0] enabled console [ttyS0] enabled Detected 1994.626 MHz processor. Calibrating delay loop (skipped) preset value.. 3989.25 BogoMIPS (lpj=1994626) pid_max: default: 51200 minimum: 400 Security Framework initialized SELinux: Initializing. Dentry cache hash table entries: 16384 (order: 5, 131072 bytes) Inode-cache hash table entries: 8192 (order: 4, 65536 bytes) Mount-cache hash table entries: 256 Initializing cgroup subsys ns Initializing cgroup subsys cpuacct Initializing cgroup subsys memory Initializing cgroup subsys devices Initializing cgroup subsys freezer Initializing cgroup subsys net_cls mce: CPU supports 10 MCE banks Performance Events: p6 PMU driver. ... version: 0 ... bit width: 32 ... generic registers: 2 ... value mask: 00000000ffffffff ... max period: 000000007fffffff ... fixed-purpose events: 0 ... event mask: 0000000000000003 SMP alternatives: switching to UP code ACPI: Core revision 20100702 ftrace: converting mcount calls to 0f 1f 44 00 00 ftrace: allocating 18398 entries in 73 pages Setting APIC routing to physical flat ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 CPU0: Intel QEMU Virtual CPU version (cpu64-rhel6) stepping 03 Brought up 1 CPUs Total of 1 processors activated (3989.25 BogoMIPS). devtmpfs: initialized regulator: core version 0.5 NET: Registered protocol family 16 ACPI: bus type pci registered PCI: Using configuration type 1 for base access bio: create slab <bio-0> at 0 IRQ 9: starting IRQFIXUP_POLL ACPI: Interpreter enabled ACPI: (supports S0 S3 S4 S5) ACPI: Using IOAPIC for interrupt routing ACPI: No dock devices found. PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) pci 0000:00:01.3: quirk: [io 0xb000-0xb03f] claimed by PIIX4 ACPI pci 0000:00:01.3: quirk: [io 0xb100-0xb10f] claimed by PIIX4 SMB ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11) ACPI: PCI Interrupt Link [LNKB] (IRQs 5 10 *11) ACPI: PCI Interrupt Link [LNKC] (IRQs 5 *10 11) ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11) vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none vgaarb: loaded SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb PCI: Using ACPI for IRQ routing NetLabel: Initializing NetLabel: domain hash size = 128 NetLabel: protocols = UNLABELED CIPSOv4 NetLabel: unlabeled traffic allowed by default Switching to clocksource kvm-clock pnp: PnP ACPI init ACPI: bus type pnp registered pnp: PnP ACPI: found 6 devices ACPI: ACPI bus type pnp unregistered NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 1, 8192 bytes) TCP established hash table entries: 4096 (order: 4, 65536 bytes) TCP bind hash table entries: 4096 (order: 4, 65536 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered UDP hash table entries: 128 (order: 0, 4096 bytes) UDP-Lite hash table entries: 128 (order: 0, 4096 bytes) NET: Registered protocol family 1 pci 0000:00:00.0: Limiting direct PCI/PCI transfers pci 0000:00:01.0: Activating ISA DMA hang workarounds Trying to unpack rootfs image as initramfs... Freeing initrd memory: 4748k freed audit: initializing netlink socket (disabled) type=2000 audit(1284969484.402:1): initialized HugeTLB registered 2 MB page size, pre-allocated 0 pages VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 512 (order 0, 4096 bytes) ioremap: invalid physical address db74000000000000 ------------[ cut here ]------------ WARNING: at arch/x86/mm/ioremap.c:83 __ioremap_caller+0x307/0x380() Hardware name: KVM Modules linked in: Pid: 1, comm: swapper Not tainted 2.6.36-rc4-mm1+ #24 Call Trace: [<ffffffff8105c0ff>] warn_slowpath_common+0x7f/0xc0 [<ffffffff81030532>] ? copy_oldmem_page+0x52/0xc0 [<ffffffff8105c15a>] warn_slowpath_null+0x1a/0x20 [<ffffffff8103efd7>] __ioremap_caller+0x307/0x380 [<ffffffff811213bd>] ? find_vmap_area+0x1d/0x60 [<ffffffff8103f084>] ioremap_cache+0x14/0x20 [<ffffffff81030532>] copy_oldmem_page+0x52/0xc0 [<ffffffff811a9f3a>] read_from_oldmem+0x7a/0xb0 [<ffffffff81b1f94e>] merge_note_headers_elf64.clone.1+0x6c/0x21f [<ffffffff811a9f3a>] ? read_from_oldmem+0x7a/0xb0 [<ffffffff81b1fc9e>] vmcore_init+0x19d/0x396 [<ffffffff81b1fb01>] ? vmcore_init+0x0/0x396 [<ffffffff81002053>] do_one_initcall+0x43/0x190 [<ffffffff81af78ab>] kernel_init+0x2a0/0x330 [<ffffffff8100be84>] kernel_thread_helper+0x4/0x10 [<ffffffff81af760b>] ? kernel_init+0x0/0x330 [<ffffffff8100be80>] ? kernel_thread_helper+0x0/0x10 ---[ end trace 93d72a36b9146f22 ]--- XXX per_cpu_ptry_to_phys((null)) returned invalid address 0xdb74000000000000 XXX percpu allocator dump XXX SLOT[10] XXX 0(f=4424,c=3984,u=116,a=128) -96320 -104 -104 -4 -4 -4 -4 -4 -4 -16 -4 -4 -4 -4 -16 -4 -4 -16 -4 -4 -4 -4 -4 -4 -4 -4 -16 -4 -4 -8 -4 -4 -64 -4 -4 -112 -4 -4 -16 -4 -4 -16 -4 -8 -8 -4 -16 -4 -4 -16 -8 -8 -8 -8 -112 -64 -8 -8 -8 -4 -4 -24 -4 -4 -16 -112 -256 -16 -4 -4 -4 -4 -88 -4 -4 -4 -4 -4 -4 -112 -120 -4 -4 -4 -4 -4 -4 -112 -120 24 -112 -56 -56 32 -112 -56 -56 32 -112 144 -112 -4096 -216 -216 -248 -248 -632 -632 -224 -224 -4096 -4096 -368 208 -112 3984 free=4424 contig=3984 Kdump: vmcore not initialized msgmni has been set to 198 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) pci_hotplug: PCI Hot Plug PCI Core version: 0.5 pciehp: PCI Express Hot Plug Controller Driver version: 0.4 acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 acpiphp: Slot [1] registered acpiphp: Slot [2] registered acpiphp: Slot [3] registered acpiphp: Slot [4] registered acpiphp: Slot [5] registered acpiphp: Slot [6] registered acpiphp: Slot [7] registered acpiphp: Slot [8] registered acpiphp: Slot [9] registered acpiphp: Slot [10] registered acpiphp: Slot [11] registered acpiphp: Slot [12] registered acpiphp: Slot [13] registered acpiphp: Slot [14] registered acpiphp: Slot [15] registered acpiphp: Slot [16] registered acpiphp: Slot [17] registered acpiphp: Slot [18] registered acpiphp: Slot [19] registered acpiphp: Slot [20] registered acpiphp: Slot [21] registered acpiphp: Slot [22] registered acpiphp: Slot [23] registered acpiphp: Slot [24] registered acpiphp: Slot [25] registered acpiphp: Slot [26] registered acpiphp: Slot [27] registered acpiphp: Slot [28] registered acpiphp: Slot [29] registered acpiphp: Slot [30] registered acpiphp: Slot [31] registered pci-stub: invalid id string "" input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0 ACPI: Power Button [PWRF] hpet_acpi_add: no address or irqs in _CRS Non-volatile memory driver v1.3 Linux agpgart interface v0.103 Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled �serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A brd: module loaded loop: module loaded Fixed MDIO Bus: probed ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver uhci_hcd: USB Universal Host Controller Interface driver ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11 uhci_hcd 0000:00:01.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11 uhci_hcd 0000:00:01.2: UHCI Host Controller uhci_hcd 0000:00:01.2: new USB bus registered, assigned bus number 1 IRQ 11: starting IRQFIXUP_POLL uhci_hcd 0000:00:01.2: irq 11, io base 0x0000c020 usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: UHCI Host Controller usb usb1: Manufacturer: Linux 2.6.36-rc4-mm1+ uhci_hcd usb usb1: SerialNumber: 0000:00:01.2 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12 IRQ 12: starting IRQFIXUP_POLL IRQ 12: polling stopped IRQ 1: starting IRQFIXUP_POLL serio: i8042 KBD port at 0x60,0x64 irq 1 serio: i8042 AUX port at 0x60,0x64 irq 12 mice: PS/2 mouse device common for all mice input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1 rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0 rtc0: alarms up to one day, 114 bytes nvram cpuidle: using governor ladder cpuidle: using governor menu usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: USB HID core driver TCP cubic registered Initializing XFRM netlink socket NET: Registered protocol family 17 Registering the dns_resolver key type registered taskstats version 1 IMA: No TPM chip found, activating TPM-bypass! rtc_cmos 00:01: setting system clock to 2010-09-20 07:58:05 UTC (1284969485) Initalizing network drop monitor service IRQ 4: starting IRQFIXUP_POLL Freeing unused kernel memory: 2660k freed Write protecting the kernel read-only data: 10240k Freeing unused kernel memory: 1388k freed Freeing unused kernel memory: 1896k freed Mounting proc filesystem Mounting sysfs filesystem Creating /dev Creating initial device nodes Free memory/Total memory (free %): 71560 / 107740 ( 66.4192 ) Loading jbd2.ko module Loading mbcache.ko module Loading ext4.ko module Loading virtio_ring.ko module Loading virtio.ko module Loading virtio_blk.ko module Loading dm-mod.ko module device-mapper: uevent: version 1.0.3 device-mapper: ioctl: 4.18.0-ioctl (2010-06-29) initialised: dm-devel@redhat.com Loading dm-log.ko module Loading dm-region-hash.ko module Loading dm-mirror.ko module Loading dm-zero.ko module Loading dm-snapshot.ko module Loading ipv6.ko module NET: Registered protocol family 10 XXX chunk 1 allocated base_addr=ffffe8ffff600000 XXX VMS: 8388608@ffffe8ffff600000 lo: Disabled Privacy Extensions Loading exportfs.ko module Loading virtio_net.ko module Loading pcspkr.ko module input: PC Speaker as /devices/platform/pcspkr/input/input2 Loading ac97_bus.ko module Loading soundcore.ko module Loading snd-page-alloc.ko module Loading i2c-core.ko module Loading floppy.ko module FDC 0 is a S82078B Loading virtio_pci.ko module ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10 virtio-pci 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10 ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10 virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, high) -> IRQ 10 ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11 virtio-pci 0000:00:06.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, high) -> IRQ 11 vda: vda1 vda2 virtio-pci 0000:00:07.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10 vdb: vdb1 Loading ata_generic.ko module Loading pata_acpi.ko module Loading ata_piix.ko module IRQ 14: starting IRQFIXUP_POLL IRQ 15: starting IRQFIXUP_POLL scsi0 : ata_piix scsi1 : ata_piix ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc000 irq 14+ ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc008 irq 15+ input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3 Loading xfs.ko module SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled SGI XFS Quota Management subsystem Loading snd.ko module Loading i2c-piix4.ko module piix4_smbus 0000:00:01.3: SMBus Host Controller at 0xb100, revision 0 Loading snd-seq-device.ko module Loading snd-timer.ko module Loading snd-seq.ko module Loading snd-pcm.ko module Loading snd-ac97-codec.ko module Loading snd-intel8x0.ko module Intel ICH 0000:00:04.0: PCI INT A -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11 intel8x0_measure_ac97_clock: measured 50887 usecs (4433 samples) intel8x0: measured clock 87114 rejected intel8x0_measure_ac97_clock: measured 50824 usecs (4255 samples) intel8x0: measured clock 83720 rejected intel8x0_measure_ac97_clock: measured 51220 usecs (4438 samples) intel8x0: measured clock 86645 rejected intel8x0: clocking to 48000 Waiting for required block device discovery Waiting for 2 vda-like device(s)...cat: can't open '/sys/block/vda/device/model': No such file or directory cat: can't open '/sys/block/vda/device/rev': No such file or directory cat: can't open '/sys/block/vda/device/type': No such file or directory cat: can't open '/sys/block/vdb/device/model': No such file or directory cat: can't open '/sys/block/vdb/device/rev': No such file or directory cat: can't open '/sys/block/vdb/device/type': No such file or directory Found Creating Block Devices Creating block device loop0 Creating block device loop1 Creating block device loop2 Creating block device loop3 Creating block device loop4 Creating block device loop5 Creating block device loop6 Creating block device loop7 Creating block device ram0 Creating block device ram1 Creating block device ram10 Creating block device ram11 Creating block device ram12 Creating block device ram13 Creating block device ram14 Creating block device ram15 Creating block device ram2 Creating block device ram3 Creating block device ram4 Creating block device ram5 Creating block device ram6 Creating block device ram7 Creating block device ram8 Creating block device ram9 Creating block device vda vda: vda1 vda2 Creating block device vdb vdb: vdb1 Making device-mapper control node mknod: invalid number 'device-mapper' mdadm: No arrays found in config file or automatically Free memory/Total memory (free %): 59080 / 107740 ( 54.8357 ) Scanning logical volumes Reading all physical volumes. This may take a while... Found volume group "VolGroup" using metadata type lvm2 Activating logical volumes 2 logical volume(s) in volume group "VolGroup" now active Free memory/Total memory (free %): 58448 / 107740 ( 54.2491 ) Saving to the local filesystem /dev/mapper/VolGroup-lv_root e2fsck 1.41.12 (17-May-2010) /dev/mapper/VolGroup-lv_root: recovering journal /dev/mapper/VolGroup-lv_root: clean, 74982/624624 files, 2387354/2495488 blocks EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: Free memory/Total memory (free %): 57524 / 107740 ( 53.3915 ) Loading SELINUX policy type=1404 audit(1284969487.918:2): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 SELinux: Permission audit_access in class file not defined in policy. SELinux: Permission audit_access in class dir not defined in policy. SELinux: Permission execmod in class dir not defined in policy. SELinux: Permission audit_access in class lnk_file not defined in policy. SELinux: Permission open in class lnk_file not defined in policy. SELinux: Permission execmod in class lnk_file not defined in policy. SELinux: Permission audit_access in class chr_file not defined in policy. SELinux: Permission audit_access in class blk_file not defined in policy. SELinux: Permission execmod in class blk_file not defined in policy. SELinux: Permission audit_access in class sock_file not defined in policy. SELinux: Permission execmod in class sock_file not defined in policy. SELinux: Permission audit_access in class fifo_file not defined in policy. SELinux: Permission execmod in class fifo_file not defined in policy. SELinux: the above unknown classes and permissions will be allowed type=1403 audit(1284969488.606:3): policy loaded auid=4294967295 ses=4294967295 open_dump_memory: Can't open the dump memory(/proc/vmcore). No such file or directory dropping to initramfs shell exiting this shell will reboot your system / # > > Thanks. > > diff --git a/arch/x86/kernel/crash_dump_64.c > b/arch/x86/kernel/crash_dump_64.c > index bf43188..9510e7d 100644 > --- a/arch/x86/kernel/crash_dump_64.c > +++ b/arch/x86/kernel/crash_dump_64.c > @@ -13,6 +13,7 @@ > /* Stores the physical address of elf header of crash image. */ > unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; > > +void per_cpu_ptr_to_phys_failed(void *addr); > /** > * copy_oldmem_page - copy one page from "oldmem" > * @pfn: page frame number to be copied > @@ -35,8 +36,10 @@ ssize_t copy_oldmem_page(unsigned long pfn, char > *buf, > return 0; > > vaddr = ioremap_cache(pfn << PAGE_SHIFT, PAGE_SIZE); > - if (!vaddr) > + if (!vaddr) { > + per_cpu_ptr_to_phys_failed(vaddr); > return -ENOMEM; > + } > > if (userbuf) { > if (copy_to_user(buf, vaddr + offset, csize)) { > diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c > index 7d9c1d0..357569a 100644 > --- a/mm/percpu-vm.c > +++ b/mm/percpu-vm.c > @@ -415,6 +415,7 @@ static struct pcpu_chunk *pcpu_create_chunk(void) > { > struct pcpu_chunk *chunk; > struct vm_struct **vms; > + int i; > > chunk = pcpu_alloc_chunk(); > if (!chunk) > @@ -429,6 +430,13 @@ static struct pcpu_chunk > *pcpu_create_chunk(void) > > chunk->data = vms; > chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; > + chunk->chunkno = ++chunkno; > + printk("XXX chunk %d allocated base_addr=%p\n", > + chunk->chunkno, chunk->base_addr); > + printk("XXX VMS:"); > + for (i = 0; i < pcpu_nr_groups; i++) > + printk(" %zu@%p", vms[i]->size, vms[i]->addr); > + printk("\n"); > return chunk; > } > > diff --git a/mm/percpu.c b/mm/percpu.c > index 77e3f5a..f4b094b 100644 > --- a/mm/percpu.c > +++ b/mm/percpu.c > @@ -96,7 +96,10 @@ > #define __pcpu_ptr_to_addr(ptr) (void __force *)(ptr) > #endif /* CONFIG_SMP */ > > +static int chunkno; > + > struct pcpu_chunk { > + int chunkno; > struct list_head list; /* linked to pcpu_slot lists */ > int free_size; /* free bytes in the chunk */ > int contig_hint; /* max contiguous size hint */ > @@ -182,6 +185,40 @@ static struct list_head *pcpu_slot __read_mostly; > /* chunk list slots */ > static void pcpu_reclaim(struct work_struct *work); > static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim); > > +void pcpu_dump_chunk(struct pcpu_chunk *chunk) > +{ > + int i, contig = 0, free = 0; > + > + printk("XXX %d(f=%d,c=%d,u=%d,a=%d)", chunk->chunkno, > + chunk->free_size, chunk->contig_hint, > + chunk->map_used, chunk->map_alloc); > + for (i = 0; i < chunk->map_used; i++) { > + if (chunk->map[i] > 0) { > + free += chunk->map[i]; > + contig = max(contig, chunk->map[i]); > + } > + printk(" %d", chunk->map[i]); > + } > + printk(" free=%d contig=%d%s\n", free, contig, > + (free != chunk->free_size || contig != chunk->contig_hint) ? > + " MISMATCH!" : ""); > +} > + > +void pcpu_dump_chunk_slots(void) > +{ > + struct pcpu_chunk *chunk; > + int i; > + > + printk("XXX percpu allocator dump\n"); > + for (i = 0; i < pcpu_nr_slots; i++) { > + if (list_empty(&pcpu_slot[i])) > + continue; > + printk("XXX SLOT[%02d]\n", i); > + list_for_each_entry(chunk, &pcpu_slot[i], list) > + pcpu_dump_chunk(chunk); > + } > +} > + > static bool pcpu_addr_in_first_chunk(void *addr) > { > void *first_start = pcpu_first_chunk->base_addr; > @@ -1021,6 +1058,19 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr) > return page_to_phys(pcpu_addr_to_page(addr)); > } > > +void per_cpu_ptr_to_phys_failed(void *addr) > +{ > + phys_addr_t phys; > + unsigned long flags; > + > + phys = per_cpu_ptr_to_phys(addr); > + printk("XXX per_cpu_ptry_to_phys(%p) returned invalid address > 0x%llx\n", > + addr, (unsigned long long)phys); > + spin_lock_irqsave(&pcpu_lock, flags); > + pcpu_dump_chunk_slots(); > + spin_unlock_irqrestore(&pcpu_lock, flags); > +} > + > /** > * pcpu_alloc_alloc_info - allocate percpu allocation info > * @nr_groups: the number of groups > @@ -1283,6 +1333,11 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) + > BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long); > > + printk("XXX CPU->UNIT M/O"); > + for_each_possible_cpu(cpu) > + printk(" %d:%lx", unit_map[cpu], unit_off[cpu]); > + printk("\n"); > + > /* > * Allocate chunk slots. The additional last slot is for > * empty chunks. > @@ -1292,6 +1347,10 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > for (i = 0; i < pcpu_nr_slots; i++) > INIT_LIST_HEAD(&pcpu_slot[i]); > > + printk("XXX ss=%zu up=%d us=%d ns=%d rs=%zd ds=%zd\n", > + ai->static_size, pcpu_unit_pages, pcpu_unit_size, > + pcpu_nr_slots, ai->reserved_size, dyn_size); > + > /* > * Initialize static chunk. If reserved_size is zero, the > * static chunk covers static area + dynamic allocation area > @@ -1311,6 +1370,7 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > schunk->free_size = ai->reserved_size; > pcpu_reserved_chunk = schunk; > pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; > + schunk->chunkno = -1; > } else { > schunk->free_size = dyn_size; > dyn_size = 0; /* dynamic area covered */ > @@ -1340,6 +1400,12 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_first_chunk = dchunk ?: schunk; > pcpu_chunk_relocate(pcpu_first_chunk, -1); > > + if (pcpu_reserved_chunk) { > + printk("XXX reserved chunk\n"); > + pcpu_dump_chunk(pcpu_reserved_chunk); > + } > + pcpu_dump_chunk_slots(); > + > /* we're done */ > pcpu_base_addr = base_addr; > return 0; > @@ -1623,6 +1689,7 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > goto out_free_areas; > } > areas[group] = ptr; > + printk("XXX areas[%d]=%p\n", group, areas[group]); > > base = min(ptr, base); > > @@ -1639,12 +1706,15 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > } > > /* base address is now known, determine group base offsets */ > + printk("XXX base_addr=%p", base); > max_distance = 0; > for (group = 0; group < ai->nr_groups; group++) { > ai->groups[group].base_offset = areas[group] - base; > max_distance = max_t(size_t, max_distance, > ai->groups[group].base_offset); > + printk(" %lx", ai->groups[group].base_offset); > } > + printk("\n"); > max_distance += ai->unit_size; > > /* warn if maximum distance is further than 75% of vmalloc space */ > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-20 8:00 ` CAI Qian @ 2010-09-20 9:12 ` Tejun Heo 2010-09-20 9:44 ` CAI Qian 0 siblings, 1 reply; 14+ messages in thread From: Tejun Heo @ 2010-09-20 9:12 UTC (permalink / raw) To: CAI Qian Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity Hello, I was slightly confused with the debug patch but it looks like someone is feeding non-percpu address to the function. Hmm... or it could be that the first chunk test is returning false incorrectly for an address which is inside static percpu area. Can you please try the following patch instead? This should make the problem go away and give us enough information about which address is causing the problem. Please attach logs from both the original kernel before triggering crash and from the crash kernel. Thank you. diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c index 7d9c1d0..357569a 100644 --- a/mm/percpu-vm.c +++ b/mm/percpu-vm.c @@ -415,6 +415,7 @@ static struct pcpu_chunk *pcpu_create_chunk(void) { struct pcpu_chunk *chunk; struct vm_struct **vms; + int i; chunk = pcpu_alloc_chunk(); if (!chunk) @@ -429,6 +430,13 @@ static struct pcpu_chunk *pcpu_create_chunk(void) chunk->data = vms; chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; + chunk->chunkno = ++chunkno; + printk("XXX chunk %d allocated base_addr=%p\n", + chunk->chunkno, chunk->base_addr); + printk("XXX VMS:"); + for (i = 0; i < pcpu_nr_groups; i++) + printk(" %zu@%p", vms[i]->size, vms[i]->addr); + printk("\n"); return chunk; } diff --git a/mm/percpu.c b/mm/percpu.c index 77e3f5a..14c836b 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -96,7 +96,10 @@ #define __pcpu_ptr_to_addr(ptr) (void __force *)(ptr) #endif /* CONFIG_SMP */ +static int chunkno; + struct pcpu_chunk { + int chunkno; struct list_head list; /* linked to pcpu_slot lists */ int free_size; /* free bytes in the chunk */ int contig_hint; /* max contiguous size hint */ @@ -182,6 +185,40 @@ static struct list_head *pcpu_slot __read_mostly; /* chunk list slots */ static void pcpu_reclaim(struct work_struct *work); static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim); +void pcpu_dump_chunk(struct pcpu_chunk *chunk) +{ + int i, contig = 0, free = 0; + + printk("XXX %d(f=%d,c=%d,u=%d,a=%d)", chunk->chunkno, + chunk->free_size, chunk->contig_hint, + chunk->map_used, chunk->map_alloc); + for (i = 0; i < chunk->map_used; i++) { + if (chunk->map[i] > 0) { + free += chunk->map[i]; + contig = max(contig, chunk->map[i]); + } + printk(" %d", chunk->map[i]); + } + printk(" free=%d contig=%d%s\n", free, contig, + (free != chunk->free_size || contig != chunk->contig_hint) ? + " MISMATCH!" : ""); +} + +void pcpu_dump_chunk_slots(void) +{ + struct pcpu_chunk *chunk; + int i; + + printk("XXX percpu allocator dump\n"); + for (i = 0; i < pcpu_nr_slots; i++) { + if (list_empty(&pcpu_slot[i])) + continue; + printk("XXX SLOT[%02d]\n", i); + list_for_each_entry(chunk, &pcpu_slot[i], list) + pcpu_dump_chunk(chunk); + } +} + static bool pcpu_addr_in_first_chunk(void *addr) { void *first_start = pcpu_first_chunk->base_addr; @@ -1017,8 +1054,20 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr) return __pa(addr); else return page_to_phys(vmalloc_to_page(addr)); - } else + } else { + if ((unsigned long)addr < VMALLOC_START || + (unsigned long)addr >= VMALLOC_END) { + static bool first = true; + if (first) { + WARN_ON(1); + printk("XXX addr=%p out of vmalloc area and not in first chunk\n", addr); + pcpu_dump_chunk_slots(); + first = false; + } + return __pa(addr); + } return page_to_phys(pcpu_addr_to_page(addr)); + } } /** @@ -1283,6 +1332,11 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) + BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long); + printk("XXX CPU->UNIT M/O"); + for_each_possible_cpu(cpu) + printk(" %d:%lx", unit_map[cpu], unit_off[cpu]); + printk("\n"); + /* * Allocate chunk slots. The additional last slot is for * empty chunks. @@ -1292,6 +1346,10 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, for (i = 0; i < pcpu_nr_slots; i++) INIT_LIST_HEAD(&pcpu_slot[i]); + printk("XXX ss=%zu up=%d us=%d ns=%d rs=%zd ds=%zd\n", + ai->static_size, pcpu_unit_pages, pcpu_unit_size, + pcpu_nr_slots, ai->reserved_size, dyn_size); + /* * Initialize static chunk. If reserved_size is zero, the * static chunk covers static area + dynamic allocation area @@ -1311,6 +1369,7 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, schunk->free_size = ai->reserved_size; pcpu_reserved_chunk = schunk; pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; + schunk->chunkno = -1; } else { schunk->free_size = dyn_size; dyn_size = 0; /* dynamic area covered */ @@ -1340,6 +1399,12 @@ int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, pcpu_first_chunk = dchunk ?: schunk; pcpu_chunk_relocate(pcpu_first_chunk, -1); + if (pcpu_reserved_chunk) { + printk("XXX reserved chunk\n"); + pcpu_dump_chunk(pcpu_reserved_chunk); + } + pcpu_dump_chunk_slots(); + /* we're done */ pcpu_base_addr = base_addr; return 0; @@ -1623,6 +1688,7 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, goto out_free_areas; } areas[group] = ptr; + printk("XXX areas[%d]=%p\n", group, areas[group]); base = min(ptr, base); @@ -1639,12 +1705,15 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, } /* base address is now known, determine group base offsets */ + printk("XXX base_addr=%p", base); max_distance = 0; for (group = 0; group < ai->nr_groups; group++) { ai->groups[group].base_offset = areas[group] - base; max_distance = max_t(size_t, max_distance, ai->groups[group].base_offset); + printk(" %lx", ai->groups[group].base_offset); } + printk("\n"); max_distance += ai->unit_size; /* warn if maximum distance is further than 75% of vmalloc space */ ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-20 9:12 ` Tejun Heo @ 2010-09-20 9:44 ` CAI Qian 2010-09-20 9:49 ` CAI Qian 0 siblings, 1 reply; 14+ messages in thread From: CAI Qian @ 2010-09-20 9:44 UTC (permalink / raw) To: Tejun Heo Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity ----- "Tejun Heo" <tj@kernel.org> wrote: > Hello, > > I was slightly confused with the debug patch but it looks like > someone > is feeding non-percpu address to the function. Hmm... or it could be > that the first chunk test is returning false incorrectly for an > address which is inside static percpu area. Can you please try the > following patch instead? This should make the problem go away and > give us enough information about which address is causing the > problem. > Please attach logs from both the original kernel before triggering > crash and from the crash kernel. Tejun, which version should I apply this patch for? # patch -Np1 <tejun2.patch patching file mm/percpu-vm.c Hunk #1 FAILED at 415. Hunk #2 FAILED at 429. 2 out of 2 hunks FAILED -- saving rejects to file mm/percpu-vm.c.rej patching file mm/percpu.c Hunk #1 FAILED at 96. Hunk #2 succeeded at 182 with fuzz 1. Hunk #3 FAILED at 1051. Hunk #4 FAILED at 1317. Hunk #5 FAILED at 1326. Hunk #6 FAILED at 1345. Hunk #7 FAILED at 1374. Hunk #8 FAILED at 1657. Hunk #9 FAILED at 1673. 8 out of 9 hunks FAILED -- saving rejects to file mm/percpu.c.rej > > Thank you. > > diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c > index 7d9c1d0..357569a 100644 > --- a/mm/percpu-vm.c > +++ b/mm/percpu-vm.c > @@ -415,6 +415,7 @@ static struct pcpu_chunk *pcpu_create_chunk(void) > { > struct pcpu_chunk *chunk; > struct vm_struct **vms; > + int i; > > chunk = pcpu_alloc_chunk(); > if (!chunk) > @@ -429,6 +430,13 @@ static struct pcpu_chunk > *pcpu_create_chunk(void) > > chunk->data = vms; > chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; > + chunk->chunkno = ++chunkno; > + printk("XXX chunk %d allocated base_addr=%p\n", > + chunk->chunkno, chunk->base_addr); > + printk("XXX VMS:"); > + for (i = 0; i < pcpu_nr_groups; i++) > + printk(" %zu@%p", vms[i]->size, vms[i]->addr); > + printk("\n"); > return chunk; > } > > diff --git a/mm/percpu.c b/mm/percpu.c > index 77e3f5a..14c836b 100644 > --- a/mm/percpu.c > +++ b/mm/percpu.c > @@ -96,7 +96,10 @@ > #define __pcpu_ptr_to_addr(ptr) (void __force *)(ptr) > #endif /* CONFIG_SMP */ > > +static int chunkno; > + > struct pcpu_chunk { > + int chunkno; > struct list_head list; /* linked to pcpu_slot lists */ > int free_size; /* free bytes in the chunk */ > int contig_hint; /* max contiguous size hint */ > @@ -182,6 +185,40 @@ static struct list_head *pcpu_slot __read_mostly; > /* chunk list slots */ > static void pcpu_reclaim(struct work_struct *work); > static DECLARE_WORK(pcpu_reclaim_work, pcpu_reclaim); > > +void pcpu_dump_chunk(struct pcpu_chunk *chunk) > +{ > + int i, contig = 0, free = 0; > + > + printk("XXX %d(f=%d,c=%d,u=%d,a=%d)", chunk->chunkno, > + chunk->free_size, chunk->contig_hint, > + chunk->map_used, chunk->map_alloc); > + for (i = 0; i < chunk->map_used; i++) { > + if (chunk->map[i] > 0) { > + free += chunk->map[i]; > + contig = max(contig, chunk->map[i]); > + } > + printk(" %d", chunk->map[i]); > + } > + printk(" free=%d contig=%d%s\n", free, contig, > + (free != chunk->free_size || contig != chunk->contig_hint) ? > + " MISMATCH!" : ""); > +} > + > +void pcpu_dump_chunk_slots(void) > +{ > + struct pcpu_chunk *chunk; > + int i; > + > + printk("XXX percpu allocator dump\n"); > + for (i = 0; i < pcpu_nr_slots; i++) { > + if (list_empty(&pcpu_slot[i])) > + continue; > + printk("XXX SLOT[%02d]\n", i); > + list_for_each_entry(chunk, &pcpu_slot[i], list) > + pcpu_dump_chunk(chunk); > + } > +} > + > static bool pcpu_addr_in_first_chunk(void *addr) > { > void *first_start = pcpu_first_chunk->base_addr; > @@ -1017,8 +1054,20 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr) > return __pa(addr); > else > return page_to_phys(vmalloc_to_page(addr)); > - } else > + } else { > + if ((unsigned long)addr < VMALLOC_START || > + (unsigned long)addr >= VMALLOC_END) { > + static bool first = true; > + if (first) { > + WARN_ON(1); > + printk("XXX addr=%p out of vmalloc area and not in first > chunk\n", addr); > + pcpu_dump_chunk_slots(); > + first = false; > + } > + return __pa(addr); > + } > return page_to_phys(pcpu_addr_to_page(addr)); > + } > } > > /** > @@ -1283,6 +1332,11 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) + > BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long); > > + printk("XXX CPU->UNIT M/O"); > + for_each_possible_cpu(cpu) > + printk(" %d:%lx", unit_map[cpu], unit_off[cpu]); > + printk("\n"); > + > /* > * Allocate chunk slots. The additional last slot is for > * empty chunks. > @@ -1292,6 +1346,10 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > for (i = 0; i < pcpu_nr_slots; i++) > INIT_LIST_HEAD(&pcpu_slot[i]); > > + printk("XXX ss=%zu up=%d us=%d ns=%d rs=%zd ds=%zd\n", > + ai->static_size, pcpu_unit_pages, pcpu_unit_size, > + pcpu_nr_slots, ai->reserved_size, dyn_size); > + > /* > * Initialize static chunk. If reserved_size is zero, the > * static chunk covers static area + dynamic allocation area > @@ -1311,6 +1369,7 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > schunk->free_size = ai->reserved_size; > pcpu_reserved_chunk = schunk; > pcpu_reserved_chunk_limit = ai->static_size + ai->reserved_size; > + schunk->chunkno = -1; > } else { > schunk->free_size = dyn_size; > dyn_size = 0; /* dynamic area covered */ > @@ -1340,6 +1399,12 @@ int __init pcpu_setup_first_chunk(const struct > pcpu_alloc_info *ai, > pcpu_first_chunk = dchunk ?: schunk; > pcpu_chunk_relocate(pcpu_first_chunk, -1); > > + if (pcpu_reserved_chunk) { > + printk("XXX reserved chunk\n"); > + pcpu_dump_chunk(pcpu_reserved_chunk); > + } > + pcpu_dump_chunk_slots(); > + > /* we're done */ > pcpu_base_addr = base_addr; > return 0; > @@ -1623,6 +1688,7 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > goto out_free_areas; > } > areas[group] = ptr; > + printk("XXX areas[%d]=%p\n", group, areas[group]); > > base = min(ptr, base); > > @@ -1639,12 +1705,15 @@ int __init pcpu_embed_first_chunk(size_t > reserved_size, size_t dyn_size, > } > > /* base address is now known, determine group base offsets */ > + printk("XXX base_addr=%p", base); > max_distance = 0; > for (group = 0; group < ai->nr_groups; group++) { > ai->groups[group].base_offset = areas[group] - base; > max_distance = max_t(size_t, max_distance, > ai->groups[group].base_offset); > + printk(" %lx", ai->groups[group].base_offset); > } > + printk("\n"); > max_distance += ai->unit_size; > > /* warn if maximum distance is further than 75% of vmalloc space */ > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: kvm kdump regression 2010-09-20 9:44 ` CAI Qian @ 2010-09-20 9:49 ` CAI Qian 0 siblings, 0 replies; 14+ messages in thread From: CAI Qian @ 2010-09-20 9:49 UTC (permalink / raw) To: Tejun Heo Cc: graff yang, Marcelo Tosatti, kexec, linux-kernel, dhowells, sonic adi, Chris Lalancette, Avi Kivity > Tejun, which version should I apply this patch for? Never mind. Fixed. Testing it right away... ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2010-09-21 6:13 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1888861854.1349971284977836487.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com>
2010-09-20 10:17 ` kvm kdump regression caiqian
2010-09-20 23:09 ` Tejun Heo
2010-09-21 0:40 ` CAI Qian
2010-09-21 6:13 ` [PATCH] percpu: fix pcpu_last_unit_cpu Tejun Heo
2010-09-14 3:09 kvm kdump regression CAI Qian
2010-09-14 8:26 ` Tejun Heo
2010-09-14 8:29 ` CAI Qian
2010-09-17 15:22 ` Tejun Heo
2010-09-18 12:36 ` CAI Qian
2010-09-19 15:02 ` Tejun Heo
2010-09-20 8:00 ` CAI Qian
2010-09-20 9:12 ` Tejun Heo
2010-09-20 9:44 ` CAI Qian
2010-09-20 9:49 ` CAI Qian
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox