On 2010-10-09 03:10, Arjan Koers wrote: > > On 2010-10-09 00:06, Marcelo Tosatti wrote: ... >> >> >> >> Backports attached. Michael, Arjan, please give them a try. >> >> > > > > Thanks for the patches. > > > > Successfully tested with 2.6.34.7, 2.6.35.7 and 2.6.36-rc7 host > > (with a 2.6.35.7 guest). Here's a smaller version of a previous email that didn't make it to the list... The host side fixes stop the hanging problem, but the real problem is on the guest: The guest starts with one hv_clock struct, which gets written to by the host (for CPU0). The percpu code allocates separate hv_clock structs for each CPU and copies the data from the old hv_clock struct to the new structs. The CPU1 hv_clock struct with old CPU0 data is accessed, which causes the problems. I've performed some tests with an unmodified 2.6.32.24 host and a recent kvm.git guest. The unmodified guest hangs. A modified guest where the CPU1 hv_clock struct is initialized to 0, doesn't hang. Here's a boot log that shows what happens: +-printk_cpu (kernel/printk.c) | +-&hv_clock CPU0 (arch/x86/kernel/kvmclock.c) | | +-hv_clock.version CPU0 | | | +-&hv_clock CPU1 | | | | +-hv_clock.version CPU1 | | | | | [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] Linux version 2.6.36-rc7-201010141519-guestmp-kvm+ (arjan@dev-lenny) (gcc version 4.4.5 20100728 (prerelease) (Debian 4.4.4-8) ) #1 SMP Thu Oct 14 15:22:48 UTC 2010 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.36-rc7-201010141519-guestmp-kvm+ root=UUID=22a4b388-70e0-4d2a-9aa1-bd842504378a ro quiet [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-provided physical RAM map: [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-e820: 0000000000000000 - 000000000009bc00 (usable) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-e820: 000000000009bc00 - 00000000000a0000 (reserved) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-e820: 0000000000100000 - 000000001fffd000 (usable) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-e820: 000000001fffd000 - 0000000020000000 (reserved) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] BIOS-e820: feffd00000000000 - ff00100000000000 (reserved) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] NX (Execute Disable) protection: active [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] DMI 2.4 present. [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] No AGP bridge found [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] last_pfn = 0x1fffd max_arch_pfn = 0x400000000 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] MTRR default type: write-back [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] MTRR fixed ranges enabled: [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 00000-9FFFF write-back [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] A0000-BFFFF uncachable [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] C0000-FFFFF write-protect [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] MTRR variable ranges enabled: [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 0 base 00E0000000 mask FFE0000000 uncachable [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 1 disabled [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 2 disabled [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 3 disabled [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 4 disabled [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 5 disabled [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 6 disabled [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 7 disabled [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] x86 PAT enabled: cpu 0, old 0x0, new 0x7010600070106 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] initial memory mapped : 0 - 20000000 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] Using GB pages for direct mapping [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] init_memory_mapping: 0000000000000000-000000001fffd000 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 0000000000 - 001fe00000 page 2M [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] 001fe00000 - 001fffd000 page 4k [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] kernel direct mapping tables up to 1fffd000 @ 8000-b000 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] RAMDISK: 17df6000 - 1803e000 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: RSDP 00000000000fdb80 00014 (v00 BOCHS ) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: RSDT 000000001fffde10 00034 (v01 BOCHS BXPCRSDT 00000001 BXPC 00000001) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: FACP 000000001ffffe40 00074 (v01 BOCHS BXPCFACP 00000001 BXPC 00000001) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: DSDT 000000001fffdfd0 01E22 (v01 BXPC BXDSDT 00000001 INTL 20090123) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: FACS 000000001ffffe00 00040 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: SSDT 000000001fffdf80 00044 (v01 BOCHS BXPCSSDT 00000001 BXPC 00000001) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: APIC 000000001fffde90 0007A (v01 BOCHS BXPCAPIC 00000001 BXPC 00000001) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: HPET 000000001fffde50 00038 (v01 BOCHS BXPCHPET 00000001 BXPC 00000001) [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] ACPI: Local APIC address 0xfee00000 [0 ffffffff81324fc0 0 ffffffff81324fc0 0 0.000000] kvm-clock: Using msrs 12 and 11 pass the address of the hv_clock struct to the host; the host starts writing to it: [0 ffffffff81324fc0 11c3c2 ffffffff81324fc0 11c3c2 0.000000] kvm-clock: cpu 0, msr 0:1324fc1, boot clock pv_clock data is accessed in kvm_get_tsc_khz: [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] [ffffea0000000000-ffffea00007fffff] PMD -> [ffff880001c00000-ffff8800023fffff] on node 0 [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] Zone PFN ranges: [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] DMA 0x00000001 -> 0x00001000 [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] DMA32 0x00001000 -> 0x00100000 [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] Normal empty [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] Movable zone start PFN for each node [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] early_node_map[2] active PFN ranges [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] 0: 0x00000001 -> 0x0000009b [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] 0: 0x00000100 -> 0x0001fffd [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] On node 0 totalpages: 130967 [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] DMA zone: 56 pages used for memmap [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] DMA zone: 0 pages reserved [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] DMA zone: 3938 pages, LIFO batch:0 [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] DMA32 zone: 1736 pages used for memmap [0 ffffffff81324fc0 11c3ca ffffffff81324fc0 11c3ca 0.000000] DMA32 zone: 125237 pages, LIFO batch:31 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: PM-Timer IO Port: 0xb008 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: Local APIC address 0xfee00000 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: IRQ0 used by override. [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: IRQ2 used by override. [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: IRQ5 used by override. [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: IRQ9 used by override. [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: IRQ10 used by override. [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: IRQ11 used by override. [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] Using ACPI (MADT) for SMP configuration information [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] nr_irqs_gsi: 40 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] Allocating PCI resources starting at 20000000 (gap: 20000000:dffc0000) [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] Booting paravirtualized kernel on KVM [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] setup_percpu: NR_CPUS:2 nr_cpumask_bits:2 nr_cpu_ids:2 nr_node_ids:1 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] early_res array is doubled to 64 at [3000 - 37ff] [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] PERCPU: Embedded 26 pages/cpu @ffff880001400000 s76736 r8192 d21568 u1048576 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] pcpu-alloc: s76736 r8192 d21568 u1048576 alloc=1*2097152 [0 ffffffff81324fc0 11c4ae ffffffff81324fc0 11c4ae 0.000000] pcpu-alloc: [0] 0 1 the single hv_clock struct has been copied to two new structs (one for each CPU); the contents are correct for CPU0, but not for CPU1 the host may still write to the old pv_clock location; can this cause problems? if the CPU1 hv_clock struct is zeroed here, pvclock_clocksource_read will not return wrong data and the guest won't hang pass the address of the CPU0 hv_clock struct to the host; the host starts writing to it: [0 ffff880001411fc0 11c4b0 ffff880001511fc0 11c4ae 0.000000] kvm-clock: cpu 0, msr 0:1411fc1, primary cpu clock [0 ffff880001411fc0 11c4b0 ffff880001511fc0 11c4ae 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 129175 [0 ffff880001411fc0 11c4b0 ffff880001511fc0 11c4ae 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.36-rc7-201010141519-guestmp-kvm+ root=UUID=22a4b388-70e0-4d2a-9aa1-bd842504378a ro quiet [0 ffff880001411fc0 11c4b0 ffff880001511fc0 11c4ae 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes) [0 ffff880001411fc0 11c4b0 ffff880001511fc0 11c4ae 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) [0 ffff880001411fc0 11c4b0 ffff880001511fc0 11c4ae 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes) [0 ffff880001411fc0 11c4b0 ffff880001511fc0 11c4ae 0.000000] Checking aperture... [0 ffff880001411fc0 1244dc ffff880001511fc0 11c4ae 0.000000] No AGP bridge found [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] Subtract (39 early reservations) [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #1 [0001000000 - 00013d6d38] TEXT DATA BSS [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #2 [0017df6000 - 001803e000] RAMDISK [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #3 [000009bc00 - 0000100000] BIOS reserved [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #4 [00013d7000 - 00013d7071] BRK [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #5 [0000001000 - 0000003000] TRAMPOLINE [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #6 [0000008000 - 0000009000] PGTABLE [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #7 [00013d7080 - 00013d8080] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #8 [00013d6d40 - 00013d6da0] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #9 [0001bd9000 - 0001bda000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #10 [0001bda000 - 0001bdb000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #11 [0001c00000 - 0002400000] MEMMAP 0 [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #12 [00013d6dc0 - 00013d6f40] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #13 [00013d8080 - 00013db080] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #14 [00013dc000 - 00013dd000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #15 [00013d6f40 - 00013d6f81] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #16 [00013db080 - 00013db0c3] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #17 [00013db100 - 00013db2c0] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #18 [00013db2c0 - 00013db328] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #19 [00013db340 - 00013db3a8] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #20 [00013db3c0 - 00013db428] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #21 [00013db440 - 00013db4a8] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #22 [00013db4c0 - 00013db528] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #23 [00013db540 - 00013db5a8] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #24 [00013db5c0 - 00013db628] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #25 [00013db640 - 00013db6b6] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #26 [00013db6c0 - 00013db736] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #27 [0001400000 - 000141a000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #28 [0001500000 - 000151a000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #29 [00013d6fc0 - 00013d6fc8] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #30 [00013db740 - 00013db748] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #31 [00013db780 - 00013db788] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #32 [00013db7c0 - 00013db7d0] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #33 [00013db800 - 00013db940] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #34 [00013db940 - 00013db9a0] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #35 [00013db9c0 - 00013dba20] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #36 [00013dd000 - 00013e1000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #37 [000141a000 - 000149a000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] #38 [000149a000 - 00014da000] BOOTMEM [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] Memory: 508372k/524276k available (2128k kernel code, 408k absent, 15496k reserved, 1011k data, 472k init) [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] Hierarchical RCU implementation. [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] RCU-based detection of stalled CPUs is disabled. [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] Verbose stalled-CPUs detection is disabled. [0 ffff880001411fc0 1245fc ffff880001511fc0 11c4ae 0.000000] NR_IRQS:320 [0 ffff880001411fc0 126736 ffff880001511fc0 11c4ae 0.000000] Console: colour VGA+ 80x25 [0 ffff880001411fc0 126736 ffff880001511fc0 11c4ae 0.000000] console [tty0] enabled [0 ffff880001411fc0 126766 ffff880001511fc0 11c4ae 0.000000] hpet clockevent registered [0 ffff880001411fc0 126766 ffff880001511fc0 11c4ae 0.000000] Detected 2799.750 MHz processor. [0 ffff880001411fc0 126766 ffff880001511fc0 11c4ae 0.012000] Calibrating delay loop (skipped) preset value.. 5599.50 BogoMIPS (lpj=11199000) [0 ffff880001411fc0 126766 ffff880001511fc0 11c4ae 0.012000] pid_max: default: 32768 minimum: 301 [0 ffff880001411fc0 126766 ffff880001511fc0 11c4ae 0.012000] Mount-cache hash table entries: 256 [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] using C1E aware idle routine [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] Performance Events: AMD PMU driver. [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] ... version: 0 [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] ... bit width: 48 [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] ... generic registers: 4 [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] ... value mask: 0000ffffffffffff [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] ... max period: 00007fffffffffff [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] ... fixed-purpose events: 0 [0 ffff880001411fc0 12676a ffff880001511fc0 11c4ae 0.012000] ... event mask: 000000000000000f [0 ffff880001411fc0 12676c ffff880001511fc0 11c4ae 0.012333] Freeing SMP alternatives: 12k freed [0 ffff880001411fc0 12676c ffff880001511fc0 11c4ae 0.012342] ACPI: Core revision 20100702 [0 ffff880001411fc0 126770 ffff880001511fc0 11c4ae 0.014061] Setting APIC routing to flat [0 ffff880001411fc0 126774 ffff880001511fc0 11c4ae 0.015478] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [0 ffff880001411fc0 126774 ffff880001511fc0 11c4ae 0.015483] CPU0: AMD Athlon(tm) II X2 240 Processor stepping 02 [0 ffff880001411fc0 126830 ffff880001511fc0 11c4ae 0.016000] ++++++++++++++++++++=_---CPU UP 1 [0 ffff880001411fc0 126830 ffff880001511fc0 11c4ae 0.016000] Booting Node 0, Processors #1 Ok. [0 ffff880001411fc0 126830 ffff880001511fc0 11c4ae 0.016000] Setting warm reset code and vector. [0 ffff880001411fc0 126834 ffff880001511fc0 11c4ae 0.016000] 1. [0 ffff880001411fc0 126834 ffff880001511fc0 11c4ae 0.016000] 2. [0 ffff880001411fc0 126834 ffff880001511fc0 11c4ae 0.016000] 3. [0 ffff880001411fc0 126834 ffff880001511fc0 11c4ae 0.016000] Asserting INIT. [0 ffff880001411fc0 126834 ffff880001511fc0 11c4ae 0.016000] Waiting for send to finish... [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.022250] Deasserting INIT. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.022259] Waiting for send to finish... [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.022265] #startup loops: 2. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.022268] Sending STARTUP #1. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.022275] After apic_write. this printk gets the time from the CPU1 hv_clock (with old CPU0 data), which results in value far into the future: [1 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.012000] CPU#1 (phys ID: 1) waiting for CALLOUT [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] Startup point 1. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] Waiting for send to finish... [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] Sending STARTUP #2. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] After apic_write. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] Startup point 1. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] Waiting for send to finish... [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] After Startup. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] Before Callout 1. [0 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.024000] After Callout 1. same as previous comment: [1 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.012000] CALLIN, before setup_local_APIC(). same as previous comment: [1 ffff880001411fc0 126836 ffff880001511fc0 11c4ae 0.012000] Stack at about ffff88001f89ff44 pass the address of the CPU1 hv_clock struct to the host; the host starts writing to it and the data in both structs (CPU0 and CPU1) is valid now: [1 ffff880001411fc0 126836 ffff880001511fc0 11ddcc 0.012000] kvm-clock: cpu 1, msr 0:1511fc1, secondary cpu clock [0 ffff880001411fc0 126836 ffff880001511fc0 11ddcc 0.025001] CPU1: has booted. [0 ffff880001411fc0 12683a ffff880001511fc0 11ddcc 0.025001] Brought up 2 CPUs [0 ffff880001411fc0 12683a ffff880001511fc0 11ddcc 0.025001] Boot done. [0 ffff880001411fc0 12683a ffff880001511fc0 11ddcc 0.025001] Before bogomips. [0 ffff880001411fc0 12683a ffff880001511fc0 11ddcc 0.025001] Total of 2 processors activated (11199.00 BogoMIPS). [0 ffff880001411fc0 12683a ffff880001511fc0 11ddcc 0.025001] Before bogocount - setting activated=1. [1 ffff880001411fc0 12683a ffff880001511fc0 11ddce 0.025001] x86 PAT enabled: cpu 1, old 0x0, new 0x7010600070106 ... -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html