On 2010-10-09 03:10, Arjan Koers wrote:
> On 2010-10-09 00:06, Marcelo Tosatti wrote:
>> On Thu, Oct 07, 2010 at 04:47:11PM -1000, Zachary Amsden wrote:
>>> On 10/07/2010 02:12 PM, Arjan Koers wrote:
>>>> On 2010-10-03 01:42, Zachary Amsden wrote:
>>>> ...
>>>>> Umm... do you guys have this commit? This is supposed to address the
>>>>> issue where the guest keeps resetting the TSC. A guest which does that
>>>>> will break kvmclock. It only happens on SMP, and it's much worse on AMD
>>>>> CPUs...
>>>>>
>>>>> sound like your scenario.
>>>>>
>>>>> commit bd59fc8ff95126f27b7a0df1b6cc602aa428812d
>>>>> Author: Zachary Amsden<[email protected]>
>>>>> Date: Thu Aug 19 22:07:26 2010 -1000
>>>>
>>>> This commit fixes the problem:
>>>>
>>>> commit aad07c4f92bae2edaa42bcef84c2afdd0d082458
>>>> Author: Zachary Amsden<[email protected]>
>>>> Date: Thu Aug 19 22:07:19 2010 -1000
>>>>
>>>> KVM: x86: Move TSC reset out of vmcb_init
>>>>
>>>> The VMCB is reset whenever we receive a startup IPI, so Linux is
>>>> setting
>>>> TSC back to zero happens very late in the boot process and
>>>> destabilizing
>>>> the TSC. Instead, just set TSC to zero once at VCPU creation time.
>>>>
>>>> Why the separate patch? So git-bisect is your friend.
>>>
>>> Okay, apparently I need to go poke around 2.6.35 and see what
>>> patches made it there and what patches didn't.
>>
>> 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).
>
> It failed with a 2.6.32.24 host. The patch applied, but
> pvclock_clocksource_read on the guest is still producing wrong
> results for CPU 1 while it's booting. I'll re-check tomorrow.
I've performed some more tests on 2.6.32.24 and it turns out that
the wrong value for CPU 1 is not far enough into the future to make
the guest hang, but that may be different on someone else's system.
See the attached boot log 'dmesg-tsc-unstable.txt'. Note that the printk
time doesn't change for a while after switching to clocksource kvm-clock.
On 2.6.32 and 2.6.33, the TSC is unstable, while on 2.6.34+ it's not
(with Marcelo's patches applied). The attached host patches (backported
from 2.6.34) make them all behave like 2.6.34+, with stable TSC. See
boot log 'dmesg-tsc-stable.txt'.
If I'm not mistaken, the code in pvclock_clocksource_read that
causes the hangs will never be reached when the TSC is stable.
[ 0.000000] Linux version 2.6.32.24-201010092338-guestmp (ar...@dev-lenny)
(gcc version 4.4.5 20100728 (prerelease) (Debian 4.4.4-8) ) #1 SMP Sat Oct 9
23:42:46 UTC 2010
[ 0.000000] Command line:
BOOT_IMAGE=/boot/vmlinuz-2.6.32.24-201010092338-guestmp
root=UUID=22a4b388-70e0-4d2a-9aa1-bd842504378a ro quiet
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Centaur CentaurHauls
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009bc00 (usable)
[ 0.000000] BIOS-e820: 000000000009bc00 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 000000001fffd000 (usable)
[ 0.000000] BIOS-e820: 000000001fffd000 - 0000000020000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
[ 0.000000] BIOS-e820: feffd00000000000 - ff00100000000000 (reserved)
[ 0.000000] DMI 2.4 present.
[ 0.000000] last_pfn = 0x1fffd max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: write-back
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-FFFFF write-protect
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 00E0000000 mask FFE0000000 uncachable
[ 0.000000] 1 disabled
[ 0.000000] 2 disabled
[ 0.000000] 3 disabled
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] x86 PAT enabled: cpu 0, old 0x0, new 0x7010600070106
[ 0.000000] initial memory mapped : 0 - 20000000
[ 0.000000] Using GB pages for direct mapping
[ 0.000000] init_memory_mapping: 0000000000000000-000000001fffd000
[ 0.000000] 0000000000 - 001fe00000 page 2M
[ 0.000000] 001fe00000 - 001fffd000 page 4k
[ 0.000000] kernel direct mapping tables up to 1fffd000 @ 8000-b000
[ 0.000000] RAMDISK: 17df5000 - 1803d7b1
[ 0.000000] ACPI: RSDP 00000000000fdb80 00014 (v00 BOCHS )
[ 0.000000] ACPI: RSDT 000000001fffde10 00034 (v01 BOCHS BXPCRSDT 00000001
BXPC 00000001)
[ 0.000000] ACPI: FACP 000000001ffffe40 00074 (v01 BOCHS BXPCFACP 00000001
BXPC 00000001)
[ 0.000000] ACPI: DSDT 000000001fffdfd0 01E22 (v01 BXPC BXDSDT 00000001
INTL 20090123)
[ 0.000000] ACPI: FACS 000000001ffffe00 00040
[ 0.000000] ACPI: SSDT 000000001fffdf80 00044 (v01 BOCHS BXPCSSDT 00000001
BXPC 00000001)
[ 0.000000] ACPI: APIC 000000001fffde90 0007A (v01 BOCHS BXPCAPIC 00000001
BXPC 00000001)
[ 0.000000] ACPI: HPET 000000001fffde50 00038 (v01 BOCHS BXPCHPET 00000001
BXPC 00000001)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] (7 early reservations) ==> bootmem [0000000000 - 001fffd000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000
- 0000001000]
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE ==> [0000006000
- 0000008000]
[ 0.000000] #2 [0001000000 - 00013d08d8] TEXT DATA BSS ==> [0001000000
- 00013d08d8]
[ 0.000000] #3 [0017df5000 - 001803d7b1] RAMDISK ==> [0017df5000
- 001803d7b1]
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved ==> [000009bc00
- 0000100000]
[ 0.000000] #5 [00013d1000 - 00013d1071] BRK ==> [00013d1000
- 00013d1071]
[ 0.000000] #6 [0000008000 - 0000009000] PGTABLE ==> [0000008000
- 0000009000]
[ 0.000000] kvm-clock: cpu 0, msr 0:1322601, boot clock
[ 0.000000] [ffffea0000000000-ffffea00007fffff] PMD ->
[ffff880001800000-ffff880001ffffff] on node 0
[ 0.000000] Zone PFN ranges:
[ 0.000000] DMA 0x00000000 -> 0x00001000
[ 0.000000] DMA32 0x00001000 -> 0x00100000
[ 0.000000] Normal 0x00100000 -> 0x00100000
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[2] active PFN ranges
[ 0.000000] 0: 0x00000000 -> 0x0000009b
[ 0.000000] 0: 0x00000100 -> 0x0001fffd
[ 0.000000] On node 0 totalpages: 130968
[ 0.000000] DMA zone: 56 pages used for memmap
[ 0.000000] DMA zone: 104 pages reserved
[ 0.000000] DMA zone: 3835 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 1736 pages used for memmap
[ 0.000000] DMA32 zone: 125237 pages, LIFO batch:31
[ 0.000000] ACPI: PM-Timer IO Port: 0xb008
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ2 used by override.
[ 0.000000] ACPI: IRQ5 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] ACPI: IRQ10 used by override.
[ 0.000000] ACPI: IRQ11 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs
[ 0.000000] nr_irqs_gsi: 24
[ 0.000000] Allocating PCI resources starting at 20000000 (gap:
20000000:dffc0000)
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.000000] NR_CPUS:6 nr_cpumask_bits:6 nr_cpu_ids:2 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 26 pages/cpu @ffff880001400000 s73816 r8192
d24488 u1048576
[ 0.000000] pcpu-alloc: s73816 r8192 d24488 u1048576 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1
[ 0.000000] kvm-clock: cpu 0, msr 0:1411601, primary cpu clock
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total
pages: 129072
[ 0.000000] Kernel command line:
BOOT_IMAGE=/boot/vmlinuz-2.6.32.24-201010092338-guestmp
root=UUID=22a4b388-70e0-4d2a-9aa1-bd842504378a ro quiet
[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.000000] Initializing CPU#0
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Memory: 507724k/524276k available (2072k kernel code, 404k
absent, 15504k reserved, 1063k data, 452k init)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:448
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] hpet clockevent registered
[ 0.000000] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
[ 0.000000] Detected 2799.842 MHz processor.
[ 0.012000] Calibrating delay loop (skipped) preset value.. 5599.68 BogoMIPS
(lpj=11199368)
[ 0.012000] Mount-cache hash table entries: 256
[ 0.012000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
[ 0.012000] CPU: L2 Cache: 512K (64 bytes/line)
[ 0.012000] using C1E aware idle routine
[ 0.012000] Performance Events: AMD PMU driver.
[ 0.012000] ... version: 0
[ 0.012000] ... bit width: 48
[ 0.012000] ... generic registers: 4
[ 0.012000] ... value mask: 0000ffffffffffff
[ 0.012000] ... max period: 00007fffffffffff
[ 0.012000] ... fixed-purpose events: 0
[ 0.012000] ... event mask: 000000000000000f
[ 0.012000] Freeing SMP alternatives: 20k freed
[ 0.012019] ACPI: Core revision 20090903
[ 0.014379] Setting APIC routing to flat
[ 0.015667] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.015669] CPU0: AMD Athlon(tm) II X2 240 Processor stepping 02
[ 0.016000] Booting processor 1 APIC 0x1 ip 0x6000
[ 0.012000] Initializing CPU#1
[ 0.012000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
[ 0.012000] CPU: L2 Cache: 512K (64 bytes/line)
[ 0.012000] kvm-clock: cpu 1, msr 0:1511601, secondary cpu clock
[ 0.025724] CPU1: AMD Athlon(tm) II X2 240 Processor stepping 02
[ 0.025724] Brought up 2 CPUs
[ 0.025724] Total of 2 processors activated (11199.36 BogoMIPS).
[ 0.025724] x86 PAT enabled: cpu 1, old 0x0, new 0x7010600070106
[ 0.028000] NET: Registered protocol family 16
[ 0.028000] ACPI: bus type pci registered
[ 0.028000] PCI: Using configuration type 1 for base access
[ 0.028000] PCI: Using configuration type 1 for extended access
[ 0.028000] mtrr: your CPUs had inconsistent variable MTRR settings
[ 0.028000] mtrr: your CPUs had inconsistent MTRRdefType settings
[ 0.028000] mtrr: probably your BIOS does not setup all CPUs.
[ 0.028000] mtrr: corrected configuration.
[ 0.040000] bio: create slab <bio-0> at 0
[ 0.040000] ACPI: EC: Look up EC in DSDT
[ 0.040000] ACPI: Interpreter enabled
[ 0.040000] ACPI: (supports S0 S5)
[ 0.040000] ACPI: Using IOAPIC for interrupt routing
[ 0.064000] ACPI: PCI Root Bridge [PCI0] (0000:00)
[ 0.064000] pci 0000:00:01.1: reg 20 io port: [0xc000-0xc00f]
[ 0.064000] pci 0000:00:01.3: quirk: region b000-b03f claimed by PIIX4 ACPI
[ 0.064000] pci 0000:00:01.3: quirk: region b100-b10f claimed by PIIX4 SMB
[ 0.068000] pci 0000:00:02.0: reg 10 32bit mmio pref: [0xf0000000-0xf1ffffff]
[ 0.068000] pci 0000:00:02.0: reg 14 32bit mmio: [0xf2000000-0xf2000fff]
[ 0.072000] pci 0000:00:02.0: reg 30 32bit mmio pref: [0xf2010000-0xf201ffff]
[ 0.072000] pci 0000:00:03.0: reg 10 io port: [0xc020-0xc03f]
[ 0.072000] pci 0000:00:03.0: reg 14 32bit mmio: [0xf2020000-0xf2020fff]
[ 0.072000] pci 0000:00:03.0: reg 30 32bit mmio pref: [0xf2030000-0xf203ffff]
[ 0.072000] pci 0000:00:04.0: reg 10 io port: [0xc040-0xc05f]
[ 0.072000] pci 0000:00:05.0: reg 10 io port: [0xc080-0xc0bf]
[ 0.072000] pci 0000:00:05.0: reg 14 32bit mmio: [0xf2040000-0xf2040fff]
[ 0.072000] pci 0000:00:06.0: reg 10 io port: [0xc0c0-0xc0ff]
[ 0.072000] pci 0000:00:06.0: reg 14 32bit mmio: [0xf2041000-0xf2041fff]
[ 0.072000] pci_bus 0000:00: on NUMA node 0
[ 0.072000] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ 0.080000] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
[ 0.080000] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
[ 0.080000] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
[ 0.080000] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
[ 0.084000] vgaarb: device added:
PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.084000] vgaarb: loaded
[ 0.084000] PCI: Using ACPI for IRQ routing
[ 0.084000] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[ 0.088000] hpet0: 3 comparators, 64-bit 100.000000 MHz counter
[ 0.096000] Switching to clocksource kvm-clock
[ 0.096000] pnp: PnP ACPI init
[ 0.096000] ACPI: bus type pnp registered
[ 0.096000] pnp: PnP ACPI: found 7 devices
[ 0.096000] ACPI: ACPI bus type pnp unregistered
[ 0.096000] pci_bus 0000:00: resource 0 io: [0x00-0xffff]
[ 0.096000] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffffffffffff]
[ 0.096000] NET: Registered protocol family 2
[ 0.096000] IP route cache hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.096000] TCP established hash table entries: 16384 (order: 6, 262144
bytes)
[ 0.096000] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[ 0.096000] TCP: Hash tables configured (established 16384 bind 16384)
[ 0.096000] TCP reno registered
[ 0.096000] NET: Registered protocol family 1
[ 0.096000] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[ 0.096000] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[ 0.096000] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[ 0.096000] pci 0000:00:02.0: Boot video device
[ 0.096000] Unpacking initramfs...
[ 0.096000] Freeing initrd memory: 2337k freed
[ 0.096000] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.096000] msgmni has been set to 997
[ 0.096000] alg: No test for stdrng (krng)
[ 0.096000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major
253)
[ 0.096000] io scheduler noop registered
[ 0.096000] io scheduler anticipatory registered
[ 0.096000] io scheduler deadline registered
[ 0.096000] io scheduler cfq registered (default)
[ 0.096000] PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq
1,12
[ 0.096000] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.096000] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 0.096000] mice: PS/2 mouse device common for all mice
[ 0.096000] rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0
[ 0.096000] rtc0: alarms up to one day, 114 bytes nvram, hpet irqs
[ 0.096000] input: AT Translated Set 2 keyboard as
/devices/platform/i8042/serio0/input/input0
[ 0.096000] cpuidle: using governor ladder
[ 0.096000] cpuidle: using governor menu
[ 0.096000] TCP cubic registered
[ 0.096000] NET: Registered protocol family 17
[ 0.096000] rtc_cmos 00:01: setting system clock to 2010-10-10 00:15:08 UTC
(1286669708)
[ 0.096000] Freeing unused kernel memory: 452k freed
[ 0.096000] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
[ 0.096000] virtio-pci 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 11
(level, high) -> IRQ 11
[ 0.096000] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10
[ 0.096000] virtio-pci 0000:00:04.0: PCI INT A -> Link[LNKD] -> GSI 10
(level, high) -> IRQ 10
[ 0.096000] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10
[ 0.096000] virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10
(level, high) -> IRQ 10
[ 0.096000] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11
[ 0.096000] virtio-pci 0000:00:06.0: PCI INT A -> Link[LNKB] -> GSI 11
(level, high) -> IRQ 11
[ 0.096000] virtio-pci 0000:00:05.0: irq 24 for MSI/MSI-X
[ 0.096000] virtio-pci 0000:00:05.0: irq 25 for MSI/MSI-X
[ 0.096000] vda: vda1 vda2 < vda5 >
[ 0.096000] virtio-pci 0000:00:03.0: irq 26 for MSI/MSI-X
[ 0.096000] virtio-pci 0000:00:03.0: irq 27 for MSI/MSI-X
[ 0.096000] virtio-pci 0000:00:03.0: irq 28 for MSI/MSI-X
[ 0.096000] virtio-pci 0000:00:06.0: irq 29 for MSI/MSI-X
[ 0.096000] virtio-pci 0000:00:06.0: irq 30 for MSI/MSI-X
[ 0.096000] vdb: vdb1
[ 0.655063] kjournald starting. Commit interval 5 seconds
[ 0.655106] EXT3-fs: mounted filesystem with writeback data mode.
[ 1.009125] Clocksource tsc unstable (delta = 303360937 ns)
[ 2.278086] udev: starting version 160
[ 2.971618] input: Power Button as
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[ 2.971640] ACPI: Power Button [PWRF]
[ 3.156974] processor LNXCPU:00: registered as cooling_device0
[ 3.157091] processor LNXCPU:01: registered as cooling_device1
[ 4.305146] Adding 409616k swap on /dev/vda5. Priority:-1 extents:1
across:409616k
[ 4.465152] EXT3 FS on vda1, internal journal
[ 4.642414] loop: module loaded
[ 0.000000] Linux version 2.6.32.24-201010092338-guestmp (ar...@dev-lenny)
(gcc version 4.4.5 20100728 (prerelease) (Debian 4.4.4-8) ) #1 SMP Sat Oct 9
23:42:46 UTC 2010
[ 0.000000] Command line:
BOOT_IMAGE=/boot/vmlinuz-2.6.32.24-201010092338-guestmp
root=UUID=22a4b388-70e0-4d2a-9aa1-bd842504378a ro quiet
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Centaur CentaurHauls
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009bc00 (usable)
[ 0.000000] BIOS-e820: 000000000009bc00 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 000000001fffd000 (usable)
[ 0.000000] BIOS-e820: 000000001fffd000 - 0000000020000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
[ 0.000000] BIOS-e820: feffd00000000000 - ff00100000000000 (reserved)
[ 0.000000] DMI 2.4 present.
[ 0.000000] last_pfn = 0x1fffd max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: write-back
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-FFFFF write-protect
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 00E0000000 mask FFE0000000 uncachable
[ 0.000000] 1 disabled
[ 0.000000] 2 disabled
[ 0.000000] 3 disabled
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] x86 PAT enabled: cpu 0, old 0x0, new 0x7010600070106
[ 0.000000] initial memory mapped : 0 - 20000000
[ 0.000000] Using GB pages for direct mapping
[ 0.000000] init_memory_mapping: 0000000000000000-000000001fffd000
[ 0.000000] 0000000000 - 001fe00000 page 2M
[ 0.000000] 001fe00000 - 001fffd000 page 4k
[ 0.000000] kernel direct mapping tables up to 1fffd000 @ 8000-b000
[ 0.000000] RAMDISK: 17df5000 - 1803d7b1
[ 0.000000] ACPI: RSDP 00000000000fdb80 00014 (v00 BOCHS )
[ 0.000000] ACPI: RSDT 000000001fffde10 00034 (v01 BOCHS BXPCRSDT 00000001
BXPC 00000001)
[ 0.000000] ACPI: FACP 000000001ffffe40 00074 (v01 BOCHS BXPCFACP 00000001
BXPC 00000001)
[ 0.000000] ACPI: DSDT 000000001fffdfd0 01E22 (v01 BXPC BXDSDT 00000001
INTL 20090123)
[ 0.000000] ACPI: FACS 000000001ffffe00 00040
[ 0.000000] ACPI: SSDT 000000001fffdf80 00044 (v01 BOCHS BXPCSSDT 00000001
BXPC 00000001)
[ 0.000000] ACPI: APIC 000000001fffde90 0007A (v01 BOCHS BXPCAPIC 00000001
BXPC 00000001)
[ 0.000000] ACPI: HPET 000000001fffde50 00038 (v01 BOCHS BXPCHPET 00000001
BXPC 00000001)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] (7 early reservations) ==> bootmem [0000000000 - 001fffd000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000
- 0000001000]
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE ==> [0000006000
- 0000008000]
[ 0.000000] #2 [0001000000 - 00013d08d8] TEXT DATA BSS ==> [0001000000
- 00013d08d8]
[ 0.000000] #3 [0017df5000 - 001803d7b1] RAMDISK ==> [0017df5000
- 001803d7b1]
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved ==> [000009bc00
- 0000100000]
[ 0.000000] #5 [00013d1000 - 00013d1071] BRK ==> [00013d1000
- 00013d1071]
[ 0.000000] #6 [0000008000 - 0000009000] PGTABLE ==> [0000008000
- 0000009000]
[ 0.000000] kvm-clock: cpu 0, msr 0:1322601, boot clock
[ 0.000000] [ffffea0000000000-ffffea00007fffff] PMD ->
[ffff880001800000-ffff880001ffffff] on node 0
[ 0.000000] Zone PFN ranges:
[ 0.000000] DMA 0x00000000 -> 0x00001000
[ 0.000000] DMA32 0x00001000 -> 0x00100000
[ 0.000000] Normal 0x00100000 -> 0x00100000
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[2] active PFN ranges
[ 0.000000] 0: 0x00000000 -> 0x0000009b
[ 0.000000] 0: 0x00000100 -> 0x0001fffd
[ 0.000000] On node 0 totalpages: 130968
[ 0.000000] DMA zone: 56 pages used for memmap
[ 0.000000] DMA zone: 104 pages reserved
[ 0.000000] DMA zone: 3835 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 1736 pages used for memmap
[ 0.000000] DMA32 zone: 125237 pages, LIFO batch:31
[ 0.000000] ACPI: PM-Timer IO Port: 0xb008
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ2 used by override.
[ 0.000000] ACPI: IRQ5 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] ACPI: IRQ10 used by override.
[ 0.000000] ACPI: IRQ11 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs
[ 0.000000] nr_irqs_gsi: 24
[ 0.000000] Allocating PCI resources starting at 20000000 (gap:
20000000:dffc0000)
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.000000] NR_CPUS:6 nr_cpumask_bits:6 nr_cpu_ids:2 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 26 pages/cpu @ffff880001400000 s73816 r8192
d24488 u1048576
[ 0.000000] pcpu-alloc: s73816 r8192 d24488 u1048576 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1
[ 0.000000] kvm-clock: cpu 0, msr 0:1411601, primary cpu clock
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total
pages: 129072
[ 0.000000] Kernel command line:
BOOT_IMAGE=/boot/vmlinuz-2.6.32.24-201010092338-guestmp
root=UUID=22a4b388-70e0-4d2a-9aa1-bd842504378a ro quiet
[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.000000] Initializing CPU#0
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Memory: 507724k/524276k available (2072k kernel code, 404k
absent, 15504k reserved, 1063k data, 452k init)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:448
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] hpet clockevent registered
[ 0.000000] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
[ 0.000000] Detected 2800.486 MHz processor.
[ 0.012000] Calibrating delay loop (skipped) preset value.. 5600.97 BogoMIPS
(lpj=11201944)
[ 0.012000] Mount-cache hash table entries: 256
[ 0.012000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
[ 0.012000] CPU: L2 Cache: 512K (64 bytes/line)
[ 0.012000] using C1E aware idle routine
[ 0.012000] Performance Events: AMD PMU driver.
[ 0.012000] ... version: 0
[ 0.012000] ... bit width: 48
[ 0.012000] ... generic registers: 4
[ 0.012000] ... value mask: 0000ffffffffffff
[ 0.012000] ... max period: 00007fffffffffff
[ 0.012000] ... fixed-purpose events: 0
[ 0.012000] ... event mask: 000000000000000f
[ 0.012100] Freeing SMP alternatives: 20k freed
[ 0.012114] ACPI: Core revision 20090903
[ 0.014445] Setting APIC routing to flat
[ 0.015790] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.015793] CPU0: AMD Athlon(tm) II X2 240 Processor stepping 02
[ 0.016000] Booting processor 1 APIC 0x1 ip 0x6000
[ 0.012000] Initializing CPU#1
[ 0.012000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
[ 0.012000] CPU: L2 Cache: 512K (64 bytes/line)
[ 0.012000] kvm-clock: cpu 1, msr 0:1511601, secondary cpu clock
[ 0.024078] CPU1: AMD Athlon(tm) II X2 240 Processor stepping 02
[ 0.024108] Brought up 2 CPUs
[ 0.024110] Total of 2 processors activated (11201.94 BogoMIPS).
[ 0.024411] x86 PAT enabled: cpu 1, old 0x0, new 0x7010600070106
[ 0.025259] NET: Registered protocol family 16
[ 0.028133] ACPI: bus type pci registered
[ 0.028133] PCI: Using configuration type 1 for base access
[ 0.028133] PCI: Using configuration type 1 for extended access
[ 0.028188] mtrr: your CPUs had inconsistent variable MTRR settings
[ 0.028188] mtrr: your CPUs had inconsistent MTRRdefType settings
[ 0.028188] mtrr: probably your BIOS does not setup all CPUs.
[ 0.028188] mtrr: corrected configuration.
[ 0.036221] bio: create slab <bio-0> at 0
[ 0.044346] ACPI: EC: Look up EC in DSDT
[ 0.049855] ACPI: Interpreter enabled
[ 0.049857] ACPI: (supports S0 S5)
[ 0.049867] ACPI: Using IOAPIC for interrupt routing
[ 0.068474] ACPI: PCI Root Bridge [PCI0] (0000:00)
[ 0.072834] pci 0000:00:01.1: reg 20 io port: [0xc000-0xc00f]
[ 0.073227] pci 0000:00:01.3: quirk: region b000-b03f claimed by PIIX4 ACPI
[ 0.073239] pci 0000:00:01.3: quirk: region b100-b10f claimed by PIIX4 SMB
[ 0.075565] pci 0000:00:02.0: reg 10 32bit mmio pref: [0xf0000000-0xf1ffffff]
[ 0.075565] pci 0000:00:02.0: reg 14 32bit mmio: [0xf2000000-0xf2000fff]
[ 0.075565] pci 0000:00:02.0: reg 30 32bit mmio pref: [0xf2010000-0xf201ffff]
[ 0.075565] pci 0000:00:03.0: reg 10 io port: [0xc020-0xc03f]
[ 0.075565] pci 0000:00:03.0: reg 14 32bit mmio: [0xf2020000-0xf2020fff]
[ 0.075619] pci 0000:00:03.0: reg 30 32bit mmio pref: [0xf2030000-0xf203ffff]
[ 0.080155] pci 0000:00:04.0: reg 10 io port: [0xc040-0xc05f]
[ 0.080533] pci 0000:00:05.0: reg 10 io port: [0xc080-0xc0bf]
[ 0.080592] pci 0000:00:05.0: reg 14 32bit mmio: [0xf2040000-0xf2040fff]
[ 0.081031] pci 0000:00:06.0: reg 10 io port: [0xc0c0-0xc0ff]
[ 0.081089] pci 0000:00:06.0: reg 14 32bit mmio: [0xf2041000-0xf2041fff]
[ 0.081536] pci_bus 0000:00: on NUMA node 0
[ 0.081604] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ 0.092368] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
[ 0.092614] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
[ 0.092822] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
[ 0.093030] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
[ 0.093246] vgaarb: device added:
PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.093246] vgaarb: loaded
[ 0.096176] PCI: Using ACPI for IRQ routing
[ 0.096631] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[ 0.096631] hpet0: 3 comparators, 64-bit 100.000000 MHz counter
[ 0.112094] Switching to clocksource kvm-clock
[ 0.112665] pnp: PnP ACPI init
[ 0.112710] ACPI: bus type pnp registered
[ 0.117907] pnp: PnP ACPI: found 7 devices
[ 0.117914] ACPI: ACPI bus type pnp unregistered
[ 0.127084] pci_bus 0000:00: resource 0 io: [0x00-0xffff]
[ 0.127093] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffffffffffff]
[ 0.127513] NET: Registered protocol family 2
[ 0.127902] IP route cache hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.128916] TCP established hash table entries: 16384 (order: 6, 262144
bytes)
[ 0.129442] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[ 0.129976] TCP: Hash tables configured (established 16384 bind 16384)
[ 0.129987] TCP reno registered
[ 0.130420] NET: Registered protocol family 1
[ 0.130462] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[ 0.130498] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[ 0.130529] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[ 0.130559] pci 0000:00:02.0: Boot video device
[ 0.130721] Unpacking initramfs...
[ 0.177652] Freeing initrd memory: 2337k freed
[ 0.184652] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.185509] msgmni has been set to 997
[ 0.186409] alg: No test for stdrng (krng)
[ 0.186897] Block layer SCSI generic (bsg) driver version 0.4 loaded (major
253)
[ 0.186906] io scheduler noop registered
[ 0.186908] io scheduler anticipatory registered
[ 0.186909] io scheduler deadline registered
[ 0.187038] io scheduler cfq registered (default)
[ 0.219030] PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq
1,12
[ 0.220785] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.220803] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 0.221828] mice: PS/2 mouse device common for all mice
[ 0.223661] rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0
[ 0.223792] input: AT Translated Set 2 keyboard as
/devices/platform/i8042/serio0/input/input0
[ 0.224291] rtc0: alarms up to one day, 114 bytes nvram, hpet irqs
[ 0.224441] cpuidle: using governor ladder
[ 0.224447] cpuidle: using governor menu
[ 0.226020] TCP cubic registered
[ 0.226026] NET: Registered protocol family 17
[ 0.228262] rtc_cmos 00:01: setting system clock to 2010-10-09 23:52:14 UTC
(1286668334)
[ 0.228523] Freeing unused kernel memory: 452k freed
[ 0.319112] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
[ 0.319139] virtio-pci 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 11
(level, high) -> IRQ 11
[ 0.319275] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10
[ 0.319290] virtio-pci 0000:00:04.0: PCI INT A -> Link[LNKD] -> GSI 10
(level, high) -> IRQ 10
[ 0.319440] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10
[ 0.319443] virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10
(level, high) -> IRQ 10
[ 0.319592] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11
[ 0.319595] virtio-pci 0000:00:06.0: PCI INT A -> Link[LNKB] -> GSI 11
(level, high) -> IRQ 11
[ 0.365438] virtio-pci 0000:00:03.0: irq 24 for MSI/MSI-X
[ 0.365455] virtio-pci 0000:00:03.0: irq 25 for MSI/MSI-X
[ 0.365468] virtio-pci 0000:00:03.0: irq 26 for MSI/MSI-X
[ 0.366915] virtio-pci 0000:00:05.0: irq 27 for MSI/MSI-X
[ 0.366930] virtio-pci 0000:00:05.0: irq 28 for MSI/MSI-X
[ 0.367356] vda: vda1 vda2 < vda5 >
[ 0.393528] virtio-pci 0000:00:06.0: irq 29 for MSI/MSI-X
[ 0.393542] virtio-pci 0000:00:06.0: irq 30 for MSI/MSI-X
[ 0.394301] vdb: vdb1
[ 0.940463] kjournald starting. Commit interval 5 seconds
[ 0.940574] EXT3-fs: mounted filesystem with writeback data mode.
[ 2.603464] udev: starting version 160
[ 3.120632] input: Power Button as
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[ 3.120646] ACPI: Power Button [PWRF]
[ 3.328008] processor LNXCPU:00: registered as cooling_device0
[ 3.328080] processor LNXCPU:01: registered as cooling_device1
[ 4.534367] Adding 409616k swap on /dev/vda5. Priority:-1 extents:1
across:409616k
[ 4.702659] EXT3 FS on vda1, internal journal
[ 4.838516] loop: module loaded
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 61ba669..a5882fb 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -797,15 +797,17 @@ static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
if (unlikely(cpu != vcpu->cpu)) {
u64 tsc_this, delta;
- /*
- * Make sure that the guest sees a monotonically
- * increasing TSC.
- */
- rdtscll(tsc_this);
- delta = vcpu->arch.host_tsc - tsc_this;
- svm->vmcb->control.tsc_offset += delta;
- if (is_nested(svm))
- svm->nested.hsave->control.tsc_offset += delta;
+ if (check_tsc_unstable()) {
+ /*
+ * Make sure that the guest sees a monotonically
+ * increasing TSC.
+ */
+ rdtscll(tsc_this);
+ delta = vcpu->arch.host_tsc - tsc_this;
+ svm->vmcb->control.tsc_offset += delta;
+ if (is_nested(svm))
+ svm->nested.hsave->control.tsc_offset += delta;
+ }
vcpu->cpu = cpu;
kvm_migrate_timers(vcpu);
svm->asid_generation = 0;
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 8d128be..77f119c 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -801,14 +801,16 @@ static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
if (unlikely(cpu != vcpu->cpu)) {
u64 delta;
- /*
- * Make sure that the guest sees a monotonically
- * increasing TSC.
- */
- delta = vcpu->arch.host_tsc - native_read_tsc();
- svm->vmcb->control.tsc_offset += delta;
- if (is_nested(svm))
- svm->nested.hsave->control.tsc_offset += delta;
+ if (check_tsc_unstable()) {
+ /*
+ * Make sure that the guest sees a monotonically
+ * increasing TSC.
+ */
+ delta = vcpu->arch.host_tsc - native_read_tsc();
+ svm->vmcb->control.tsc_offset += delta;
+ if (is_nested(svm))
+ svm->nested.hsave->control.tsc_offset += delta;
+ }
vcpu->cpu = cpu;
kvm_migrate_timers(vcpu);
svm->asid_generation = 0;