All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] kvmclock: Ensure time in migration never goes backward
@ 2014-05-16 15:15 ` Alexander Graf
  0 siblings, 0 replies; 24+ messages in thread
From: Alexander Graf @ 2014-05-16 15:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: kvm, mtosatti, pbonzini

When we migrate we ask the kernel about its current belief on what the guest
time would be. However, I've seen cases where the kvmclock guest structure
indicates a time more recent than the kvm returned time.

To make sure we never go backwards, calculate what the guest would have seen
as time at the point of migration and use that value instead of the kernel
returned one when it's more recent.

While the underlying bug is supposedly fixed on newer KVM versions, it doesn't
hurt to base the view of the kvmclock after migration on the same foundation
in host as well as guest.

Signed-off-by: Alexander Graf <agraf@suse.de>

---

v1 -> v2:

  - always use guest structure when available
---
 hw/i386/kvm/clock.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index 892aa02..6f4ed28a 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -14,6 +14,7 @@
  */
 
 #include "qemu-common.h"
+#include "qemu/host-utils.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
 #include "hw/sysbus.h"
@@ -34,6 +35,47 @@ typedef struct KVMClockState {
     bool clock_valid;
 } KVMClockState;
 
+struct pvclock_vcpu_time_info {
+    uint32_t   version;
+    uint32_t   pad0;
+    uint64_t   tsc_timestamp;
+    uint64_t   system_time;
+    uint32_t   tsc_to_system_mul;
+    int8_t     tsc_shift;
+    uint8_t    flags;
+    uint8_t    pad[2];
+} __attribute__((__packed__)); /* 32 bytes */
+
+static uint64_t kvmclock_current_nsec(KVMClockState *s)
+{
+    CPUState *cpu = first_cpu;
+    CPUX86State *env = cpu->env_ptr;
+    hwaddr kvmclock_struct_pa = env->system_time_msr & ~1ULL;
+    uint64_t migration_tsc = env->tsc;
+    struct pvclock_vcpu_time_info time;
+    uint64_t delta;
+    uint64_t nsec_lo;
+    uint64_t nsec_hi;
+    uint64_t nsec;
+
+    if (!(env->system_time_msr & 1ULL)) {
+        /* KVM clock not active */
+        return 0;
+    }
+
+    cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
+
+    delta = migration_tsc - time.tsc_timestamp;
+    if (time.tsc_shift < 0) {
+        delta >>= -time.tsc_shift;
+    } else {
+        delta <<= time.tsc_shift;
+    }
+
+    mulu64(&nsec_lo, &nsec_hi, delta, time.tsc_to_system_mul);
+    nsec = (nsec_lo >> 32) | (nsec_hi << 32);
+    return nsec + time.system_time;
+}
 
 static void kvmclock_vm_state_change(void *opaque, int running,
                                      RunState state)
@@ -45,9 +87,15 @@ static void kvmclock_vm_state_change(void *opaque, int running,
 
     if (running) {
         struct kvm_clock_data data;
+        uint64_t time_at_migration = kvmclock_current_nsec(s);
 
         s->clock_valid = false;
 
+	/* We can't rely on the migrated clock value, just discard it */
+	if (time_at_migration) {
+	        s->clock = time_at_migration;
+	}
+
         data.clock = s->clock;
         data.flags = 0;
         ret = kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &data);
-- 
1.7.12.4


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

* [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
@ 2014-05-16 15:15 ` Alexander Graf
  0 siblings, 0 replies; 24+ messages in thread
From: Alexander Graf @ 2014-05-16 15:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, mtosatti, kvm

When we migrate we ask the kernel about its current belief on what the guest
time would be. However, I've seen cases where the kvmclock guest structure
indicates a time more recent than the kvm returned time.

To make sure we never go backwards, calculate what the guest would have seen
as time at the point of migration and use that value instead of the kernel
returned one when it's more recent.

While the underlying bug is supposedly fixed on newer KVM versions, it doesn't
hurt to base the view of the kvmclock after migration on the same foundation
in host as well as guest.

Signed-off-by: Alexander Graf <agraf@suse.de>

---

v1 -> v2:

  - always use guest structure when available
---
 hw/i386/kvm/clock.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index 892aa02..6f4ed28a 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -14,6 +14,7 @@
  */
 
 #include "qemu-common.h"
+#include "qemu/host-utils.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
 #include "hw/sysbus.h"
@@ -34,6 +35,47 @@ typedef struct KVMClockState {
     bool clock_valid;
 } KVMClockState;
 
+struct pvclock_vcpu_time_info {
+    uint32_t   version;
+    uint32_t   pad0;
+    uint64_t   tsc_timestamp;
+    uint64_t   system_time;
+    uint32_t   tsc_to_system_mul;
+    int8_t     tsc_shift;
+    uint8_t    flags;
+    uint8_t    pad[2];
+} __attribute__((__packed__)); /* 32 bytes */
+
+static uint64_t kvmclock_current_nsec(KVMClockState *s)
+{
+    CPUState *cpu = first_cpu;
+    CPUX86State *env = cpu->env_ptr;
+    hwaddr kvmclock_struct_pa = env->system_time_msr & ~1ULL;
+    uint64_t migration_tsc = env->tsc;
+    struct pvclock_vcpu_time_info time;
+    uint64_t delta;
+    uint64_t nsec_lo;
+    uint64_t nsec_hi;
+    uint64_t nsec;
+
+    if (!(env->system_time_msr & 1ULL)) {
+        /* KVM clock not active */
+        return 0;
+    }
+
+    cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
+
+    delta = migration_tsc - time.tsc_timestamp;
+    if (time.tsc_shift < 0) {
+        delta >>= -time.tsc_shift;
+    } else {
+        delta <<= time.tsc_shift;
+    }
+
+    mulu64(&nsec_lo, &nsec_hi, delta, time.tsc_to_system_mul);
+    nsec = (nsec_lo >> 32) | (nsec_hi << 32);
+    return nsec + time.system_time;
+}
 
 static void kvmclock_vm_state_change(void *opaque, int running,
                                      RunState state)
@@ -45,9 +87,15 @@ static void kvmclock_vm_state_change(void *opaque, int running,
 
     if (running) {
         struct kvm_clock_data data;
+        uint64_t time_at_migration = kvmclock_current_nsec(s);
 
         s->clock_valid = false;
 
+	/* We can't rely on the migrated clock value, just discard it */
+	if (time_at_migration) {
+	        s->clock = time_at_migration;
+	}
+
         data.clock = s->clock;
         data.flags = 0;
         ret = kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &data);
-- 
1.7.12.4

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

* Re: [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-05-16 15:15 ` [Qemu-devel] " Alexander Graf
@ 2014-05-18 13:20   ` Marcelo Tosatti
  -1 siblings, 0 replies; 24+ messages in thread
From: Marcelo Tosatti @ 2014-05-18 13:20 UTC (permalink / raw)
  To: Alexander Graf; +Cc: qemu-devel, kvm, pbonzini

On Fri, May 16, 2014 at 05:15:21PM +0200, Alexander Graf wrote:
> When we migrate we ask the kernel about its current belief on what the guest
> time would be. However, I've seen cases where the kvmclock guest structure
> indicates a time more recent than the kvm returned time.
> 
> To make sure we never go backwards, calculate what the guest would have seen
> as time at the point of migration and use that value instead of the kernel
> returned one when it's more recent.
> 
> While the underlying bug is supposedly fixed on newer KVM versions, it doesn't
> hurt to base the view of the kvmclock after migration on the same foundation
> in host as well as guest.

Remove this last phrase from the changelog please, the underlying bug is
not fixed on newer KVM versions.

Otherwise

Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>



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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
@ 2014-05-18 13:20   ` Marcelo Tosatti
  0 siblings, 0 replies; 24+ messages in thread
From: Marcelo Tosatti @ 2014-05-18 13:20 UTC (permalink / raw)
  To: Alexander Graf; +Cc: pbonzini, qemu-devel, kvm

On Fri, May 16, 2014 at 05:15:21PM +0200, Alexander Graf wrote:
> When we migrate we ask the kernel about its current belief on what the guest
> time would be. However, I've seen cases where the kvmclock guest structure
> indicates a time more recent than the kvm returned time.
> 
> To make sure we never go backwards, calculate what the guest would have seen
> as time at the point of migration and use that value instead of the kernel
> returned one when it's more recent.
> 
> While the underlying bug is supposedly fixed on newer KVM versions, it doesn't
> hurt to base the view of the kvmclock after migration on the same foundation
> in host as well as guest.

Remove this last phrase from the changelog please, the underlying bug is
not fixed on newer KVM versions.

Otherwise

Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>

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

* Re: [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-05-18 13:20   ` [Qemu-devel] " Marcelo Tosatti
@ 2014-05-19 11:31     ` Paolo Bonzini
  -1 siblings, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2014-05-19 11:31 UTC (permalink / raw)
  To: Marcelo Tosatti, Alexander Graf; +Cc: qemu-devel, kvm

Il 18/05/2014 15:20, Marcelo Tosatti ha scritto:
> Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>

Thanks Marcelo, applying to uq/master.

Paolo

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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
@ 2014-05-19 11:31     ` Paolo Bonzini
  0 siblings, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2014-05-19 11:31 UTC (permalink / raw)
  To: Marcelo Tosatti, Alexander Graf; +Cc: qemu-devel, kvm

Il 18/05/2014 15:20, Marcelo Tosatti ha scritto:
> Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>

Thanks Marcelo, applying to uq/master.

Paolo

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

* Re: [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-05-19 11:31     ` [Qemu-devel] " Paolo Bonzini
@ 2014-05-21 10:03       ` Alexander Graf
  -1 siblings, 0 replies; 24+ messages in thread
From: Alexander Graf @ 2014-05-21 10:03 UTC (permalink / raw)
  To: Paolo Bonzini, Marcelo Tosatti; +Cc: qemu-devel, kvm


On 19.05.14 13:31, Paolo Bonzini wrote:
> Il 18/05/2014 15:20, Marcelo Tosatti ha scritto:
>> Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
>
> Thanks Marcelo, applying to uq/master.

Same here, please also CC to stable :).


Alex


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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
@ 2014-05-21 10:03       ` Alexander Graf
  0 siblings, 0 replies; 24+ messages in thread
From: Alexander Graf @ 2014-05-21 10:03 UTC (permalink / raw)
  To: Paolo Bonzini, Marcelo Tosatti; +Cc: qemu-devel, kvm


On 19.05.14 13:31, Paolo Bonzini wrote:
> Il 18/05/2014 15:20, Marcelo Tosatti ha scritto:
>> Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
>
> Thanks Marcelo, applying to uq/master.

Same here, please also CC to stable :).


Alex

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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-05-16 15:15 ` [Qemu-devel] " Alexander Graf
  (?)
  (?)
@ 2014-06-02 20:31 ` Marcin Gibuła
  2014-06-03  5:16   ` Marcelo Tosatti
  -1 siblings, 1 reply; 24+ messages in thread
From: Marcin Gibuła @ 2014-06-02 20:31 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel; +Cc: pbonzini

> +    cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
> +
> +    delta = migration_tsc - time.tsc_timestamp;

Hi,

when I was testing live storage migration with libvirt I found out that 
this patch can cause virtual machine to hang when completing mirror job.

This is (probably) because kvmclock_current_nsec() is called twice in a 
row and on second call time.tsc_timestamp is larger than migration_tsc. 
This causes delta to be huge and sets timer to invalid value.

The double call happens when switching from old to new disk (pivoting in 
libvirt's nomenclature).

Example values:

First call: migration_tsc: 12052203518652476, time_tsc: 
12052203301565676, delta 108543400

Second call: migration_tsc: 12052203518652476, time_tsc: 
12052204478600322, delta 9223372036374801885

Perhaps it is worth adding:

if (time.tsc_timestamp > migration_tsc) {
     return 0;
}

there? Untested though...

-- 
mg

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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-06-02 20:31 ` Marcin Gibuła
@ 2014-06-03  5:16   ` Marcelo Tosatti
  2014-06-03  9:11     ` Marcin Gibuła
  2014-06-03 11:13     ` Paolo Bonzini
  0 siblings, 2 replies; 24+ messages in thread
From: Marcelo Tosatti @ 2014-06-03  5:16 UTC (permalink / raw)
  To: Marcin Gibuła; +Cc: pbonzini, Alexander Graf, qemu-devel

On Mon, Jun 02, 2014 at 10:31:44PM +0200, Marcin Gibuła wrote:
> >+    cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
> >+
> >+    delta = migration_tsc - time.tsc_timestamp;
> 
> Hi,
> 
> when I was testing live storage migration with libvirt I found out
> that this patch can cause virtual machine to hang when completing
> mirror job.
> 
> This is (probably) because kvmclock_current_nsec() is called twice
> in a row and on second call time.tsc_timestamp is larger than
> migration_tsc. This causes delta to be huge and sets timer to
> invalid value.
> 
> The double call happens when switching from old to new disk
> (pivoting in libvirt's nomenclature).
> 
> Example values:
> 
> First call: migration_tsc: 12052203518652476, time_tsc:
> 12052203301565676, delta 108543400
> 
> Second call: migration_tsc: 12052203518652476, time_tsc:
> 12052204478600322, delta 9223372036374801885
> 
> Perhaps it is worth adding:
> 
> if (time.tsc_timestamp > migration_tsc) {
>     return 0;
> }
> 
> there? Untested though...

Hi Marcin,

Can you give this patch a try?  Should read the guest TSC values after
stopping the VM.


diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index 6f4ed28a..bef2504 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -17,6 +17,7 @@
 #include "qemu/host-utils.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
+#include "sysemu/cpus.h"
 #include "hw/sysbus.h"
 #include "hw/kvm/clock.h"
 
@@ -65,6 +66,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s)
 
     cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
 
+    assert(time.tsc_timestamp <= migration_tsc);
     delta = migration_tsc - time.tsc_timestamp;
     if (time.tsc_shift < 0) {
         delta >>= -time.tsc_shift;
@@ -123,6 +125,8 @@ static void kvmclock_vm_state_change(void *opaque, int running,
         if (s->clock_valid) {
             return;
         }
+
+        cpu_synchronize_all_states();
         ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);
         if (ret < 0) {
             fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", strerror(ret));

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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-06-03  5:16   ` Marcelo Tosatti
@ 2014-06-03  9:11     ` Marcin Gibuła
  2014-06-03 11:13     ` Paolo Bonzini
  1 sibling, 0 replies; 24+ messages in thread
From: Marcin Gibuła @ 2014-06-03  9:11 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: pbonzini, Alexander Graf, qemu-devel

> Can you give this patch a try?  Should read the guest TSC values after
> stopping the VM.

Yes, this patch fixes that.

Thanks,

-- 
mg

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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-06-03  5:16   ` Marcelo Tosatti
  2014-06-03  9:11     ` Marcin Gibuła
@ 2014-06-03 11:13     ` Paolo Bonzini
  2014-06-03 16:34       ` [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation Marcelo Tosatti
  1 sibling, 1 reply; 24+ messages in thread
From: Paolo Bonzini @ 2014-06-03 11:13 UTC (permalink / raw)
  To: Marcelo Tosatti, Marcin Gibuła; +Cc: Alexander Graf, qemu-devel

Il 03/06/2014 07:16, Marcelo Tosatti ha scritto:
> On Mon, Jun 02, 2014 at 10:31:44PM +0200, Marcin Gibuła wrote:
>>> +    cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
>>> +
>>> +    delta = migration_tsc - time.tsc_timestamp;
>>
>> Hi,
>>
>> when I was testing live storage migration with libvirt I found out
>> that this patch can cause virtual machine to hang when completing
>> mirror job.
>>
>> This is (probably) because kvmclock_current_nsec() is called twice
>> in a row and on second call time.tsc_timestamp is larger than
>> migration_tsc. This causes delta to be huge and sets timer to
>> invalid value.
>>
>> The double call happens when switching from old to new disk
>> (pivoting in libvirt's nomenclature).
>>
>> Example values:
>>
>> First call: migration_tsc: 12052203518652476, time_tsc:
>> 12052203301565676, delta 108543400
>>
>> Second call: migration_tsc: 12052203518652476, time_tsc:
>> 12052204478600322, delta 9223372036374801885
>>
>> Perhaps it is worth adding:
>>
>> if (time.tsc_timestamp > migration_tsc) {
>>     return 0;
>> }
>>
>> there? Untested though...
>
> Hi Marcin,
>
> Can you give this patch a try?  Should read the guest TSC values after
> stopping the VM.
>
>
> diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
> index 6f4ed28a..bef2504 100644
> --- a/hw/i386/kvm/clock.c
> +++ b/hw/i386/kvm/clock.c
> @@ -17,6 +17,7 @@
>  #include "qemu/host-utils.h"
>  #include "sysemu/sysemu.h"
>  #include "sysemu/kvm.h"
> +#include "sysemu/cpus.h"
>  #include "hw/sysbus.h"
>  #include "hw/kvm/clock.h"
>
> @@ -65,6 +66,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s)
>
>      cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
>
> +    assert(time.tsc_timestamp <= migration_tsc);
>      delta = migration_tsc - time.tsc_timestamp;
>      if (time.tsc_shift < 0) {
>          delta >>= -time.tsc_shift;
> @@ -123,6 +125,8 @@ static void kvmclock_vm_state_change(void *opaque, int running,
>          if (s->clock_valid) {
>              return;
>          }
> +
> +        cpu_synchronize_all_states();
>          ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);
>          if (ret < 0) {
>              fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", strerror(ret));
>

Can you send it with a real commit message?

Paolo

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

* [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-06-03 11:13     ` Paolo Bonzini
@ 2014-06-03 16:34       ` Marcelo Tosatti
  2014-07-15 19:45         ` Paolo Bonzini
  0 siblings, 1 reply; 24+ messages in thread
From: Marcelo Tosatti @ 2014-06-03 16:34 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Marcin Gibuła, Alexander Graf, qemu-devel


Ensure proper env->tsc value for kvmclock_current_nsec calculation.

Reported-by: Marcin Gibuła <m.gibula@beyond.pl>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index 6f4ed28a..bef2504 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -17,6 +17,7 @@
 #include "qemu/host-utils.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
+#include "sysemu/cpus.h"
 #include "hw/sysbus.h"
 #include "hw/kvm/clock.h"
 
@@ -65,6 +66,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s)
 
     cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
 
+    assert(time.tsc_timestamp <= migration_tsc);
     delta = migration_tsc - time.tsc_timestamp;
     if (time.tsc_shift < 0) {
         delta >>= -time.tsc_shift;
@@ -123,6 +125,8 @@ static void kvmclock_vm_state_change(void *opaque, int running,
         if (s->clock_valid) {
             return;
         }
+
+        cpu_synchronize_all_states();
         ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);
         if (ret < 0) {
             fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", strerror(ret));

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

* Re: [PATCH v2] kvmclock: Ensure time in migration never goes backward
  2014-05-16 15:15 ` [Qemu-devel] " Alexander Graf
@ 2014-07-15 19:44   ` Paolo Bonzini
  -1 siblings, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2014-07-15 19:44 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel; +Cc: kvm, mtosatti

Il 16/05/2014 17:15, Alexander Graf ha scritto:
> When we migrate we ask the kernel about its current belief on what the guest
> time would be. However, I've seen cases where the kvmclock guest structure
> indicates a time more recent than the kvm returned time.
>
> To make sure we never go backwards, calculate what the guest would have seen
> as time at the point of migration and use that value instead of the kernel
> returned one when it's more recent.
>
> While the underlying bug is supposedly fixed on newer KVM versions, it doesn't
> hurt to base the view of the kvmclock after migration on the same foundation
> in host as well as guest.
>
> Signed-off-by: Alexander Graf <agraf@suse.de>
>
> ---
>
> v1 -> v2:
>
>   - always use guest structure when available
> ---
>  hw/i386/kvm/clock.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
>
> diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
> index 892aa02..6f4ed28a 100644
> --- a/hw/i386/kvm/clock.c
> +++ b/hw/i386/kvm/clock.c
> @@ -14,6 +14,7 @@
>   */
>
>  #include "qemu-common.h"
> +#include "qemu/host-utils.h"
>  #include "sysemu/sysemu.h"
>  #include "sysemu/kvm.h"
>  #include "hw/sysbus.h"
> @@ -34,6 +35,47 @@ typedef struct KVMClockState {
>      bool clock_valid;
>  } KVMClockState;
>
> +struct pvclock_vcpu_time_info {
> +    uint32_t   version;
> +    uint32_t   pad0;
> +    uint64_t   tsc_timestamp;
> +    uint64_t   system_time;
> +    uint32_t   tsc_to_system_mul;
> +    int8_t     tsc_shift;
> +    uint8_t    flags;
> +    uint8_t    pad[2];
> +} __attribute__((__packed__)); /* 32 bytes */
> +
> +static uint64_t kvmclock_current_nsec(KVMClockState *s)
> +{
> +    CPUState *cpu = first_cpu;
> +    CPUX86State *env = cpu->env_ptr;
> +    hwaddr kvmclock_struct_pa = env->system_time_msr & ~1ULL;
> +    uint64_t migration_tsc = env->tsc;
> +    struct pvclock_vcpu_time_info time;
> +    uint64_t delta;
> +    uint64_t nsec_lo;
> +    uint64_t nsec_hi;
> +    uint64_t nsec;
> +
> +    if (!(env->system_time_msr & 1ULL)) {
> +        /* KVM clock not active */
> +        return 0;
> +    }
> +
> +    cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
> +
> +    delta = migration_tsc - time.tsc_timestamp;
> +    if (time.tsc_shift < 0) {
> +        delta >>= -time.tsc_shift;
> +    } else {
> +        delta <<= time.tsc_shift;
> +    }
> +
> +    mulu64(&nsec_lo, &nsec_hi, delta, time.tsc_to_system_mul);
> +    nsec = (nsec_lo >> 32) | (nsec_hi << 32);
> +    return nsec + time.system_time;
> +}
>
>  static void kvmclock_vm_state_change(void *opaque, int running,
>                                       RunState state)
> @@ -45,9 +87,15 @@ static void kvmclock_vm_state_change(void *opaque, int running,
>
>      if (running) {
>          struct kvm_clock_data data;
> +        uint64_t time_at_migration = kvmclock_current_nsec(s);
>
>          s->clock_valid = false;
>
> +	/* We can't rely on the migrated clock value, just discard it */
> +	if (time_at_migration) {
> +	        s->clock = time_at_migration;
> +	}
> +
>          data.clock = s->clock;
>          data.flags = 0;
>          ret = kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &data);
>

I'm going to revert this patch for 2.1-rc3, since the dependent patch 
"kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec 
calculation" causes a hang during migration.

Paolo

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

* Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward
@ 2014-07-15 19:44   ` Paolo Bonzini
  0 siblings, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2014-07-15 19:44 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel; +Cc: mtosatti, kvm

Il 16/05/2014 17:15, Alexander Graf ha scritto:
> When we migrate we ask the kernel about its current belief on what the guest
> time would be. However, I've seen cases where the kvmclock guest structure
> indicates a time more recent than the kvm returned time.
>
> To make sure we never go backwards, calculate what the guest would have seen
> as time at the point of migration and use that value instead of the kernel
> returned one when it's more recent.
>
> While the underlying bug is supposedly fixed on newer KVM versions, it doesn't
> hurt to base the view of the kvmclock after migration on the same foundation
> in host as well as guest.
>
> Signed-off-by: Alexander Graf <agraf@suse.de>
>
> ---
>
> v1 -> v2:
>
>   - always use guest structure when available
> ---
>  hw/i386/kvm/clock.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
>
> diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
> index 892aa02..6f4ed28a 100644
> --- a/hw/i386/kvm/clock.c
> +++ b/hw/i386/kvm/clock.c
> @@ -14,6 +14,7 @@
>   */
>
>  #include "qemu-common.h"
> +#include "qemu/host-utils.h"
>  #include "sysemu/sysemu.h"
>  #include "sysemu/kvm.h"
>  #include "hw/sysbus.h"
> @@ -34,6 +35,47 @@ typedef struct KVMClockState {
>      bool clock_valid;
>  } KVMClockState;
>
> +struct pvclock_vcpu_time_info {
> +    uint32_t   version;
> +    uint32_t   pad0;
> +    uint64_t   tsc_timestamp;
> +    uint64_t   system_time;
> +    uint32_t   tsc_to_system_mul;
> +    int8_t     tsc_shift;
> +    uint8_t    flags;
> +    uint8_t    pad[2];
> +} __attribute__((__packed__)); /* 32 bytes */
> +
> +static uint64_t kvmclock_current_nsec(KVMClockState *s)
> +{
> +    CPUState *cpu = first_cpu;
> +    CPUX86State *env = cpu->env_ptr;
> +    hwaddr kvmclock_struct_pa = env->system_time_msr & ~1ULL;
> +    uint64_t migration_tsc = env->tsc;
> +    struct pvclock_vcpu_time_info time;
> +    uint64_t delta;
> +    uint64_t nsec_lo;
> +    uint64_t nsec_hi;
> +    uint64_t nsec;
> +
> +    if (!(env->system_time_msr & 1ULL)) {
> +        /* KVM clock not active */
> +        return 0;
> +    }
> +
> +    cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
> +
> +    delta = migration_tsc - time.tsc_timestamp;
> +    if (time.tsc_shift < 0) {
> +        delta >>= -time.tsc_shift;
> +    } else {
> +        delta <<= time.tsc_shift;
> +    }
> +
> +    mulu64(&nsec_lo, &nsec_hi, delta, time.tsc_to_system_mul);
> +    nsec = (nsec_lo >> 32) | (nsec_hi << 32);
> +    return nsec + time.system_time;
> +}
>
>  static void kvmclock_vm_state_change(void *opaque, int running,
>                                       RunState state)
> @@ -45,9 +87,15 @@ static void kvmclock_vm_state_change(void *opaque, int running,
>
>      if (running) {
>          struct kvm_clock_data data;
> +        uint64_t time_at_migration = kvmclock_current_nsec(s);
>
>          s->clock_valid = false;
>
> +	/* We can't rely on the migrated clock value, just discard it */
> +	if (time_at_migration) {
> +	        s->clock = time_at_migration;
> +	}
> +
>          data.clock = s->clock;
>          data.flags = 0;
>          ret = kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &data);
>

I'm going to revert this patch for 2.1-rc3, since the dependent patch 
"kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec 
calculation" causes a hang during migration.

Paolo

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-06-03 16:34       ` [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation Marcelo Tosatti
@ 2014-07-15 19:45         ` Paolo Bonzini
  2014-07-15 20:03           ` Marcin Gibuła
  0 siblings, 1 reply; 24+ messages in thread
From: Paolo Bonzini @ 2014-07-15 19:45 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Marcin Gibuła, Alexander Graf, qemu-devel

Il 03/06/2014 18:34, Marcelo Tosatti ha scritto:
>
> Ensure proper env->tsc value for kvmclock_current_nsec calculation.
>
> Reported-by: Marcin Gibuła <m.gibula@beyond.pl>
> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
>
> diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
> index 6f4ed28a..bef2504 100644
> --- a/hw/i386/kvm/clock.c
> +++ b/hw/i386/kvm/clock.c
> @@ -17,6 +17,7 @@
>  #include "qemu/host-utils.h"
>  #include "sysemu/sysemu.h"
>  #include "sysemu/kvm.h"
> +#include "sysemu/cpus.h"
>  #include "hw/sysbus.h"
>  #include "hw/kvm/clock.h"
>
> @@ -65,6 +66,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s)
>
>      cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
>
> +    assert(time.tsc_timestamp <= migration_tsc);
>      delta = migration_tsc - time.tsc_timestamp;
>      if (time.tsc_shift < 0) {
>          delta >>= -time.tsc_shift;
> @@ -123,6 +125,8 @@ static void kvmclock_vm_state_change(void *opaque, int running,
>          if (s->clock_valid) {
>              return;
>          }
> +
> +        cpu_synchronize_all_states();
>          ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);
>          if (ret < 0) {
>              fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", strerror(ret));
>
>

This causes a hang during migration, so I'll revert the patch from 2.1. 
  Sorry.

Paolo

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 19:45         ` Paolo Bonzini
@ 2014-07-15 20:03           ` Marcin Gibuła
  2014-07-15 20:15             ` Paolo Bonzini
  0 siblings, 1 reply; 24+ messages in thread
From: Marcin Gibuła @ 2014-07-15 20:03 UTC (permalink / raw)
  To: Paolo Bonzini, Marcelo Tosatti; +Cc: Alexander Graf, qemu-devel

>> @@ -65,6 +66,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s)
>>
>>      cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
>>
>> +    assert(time.tsc_timestamp <= migration_tsc);
>>      delta = migration_tsc - time.tsc_timestamp;
>>      if (time.tsc_shift < 0) {
>>          delta >>= -time.tsc_shift;
>> @@ -123,6 +125,8 @@ static void kvmclock_vm_state_change(void *opaque,
>> int running,
>>          if (s->clock_valid) {
>>              return;
>>          }
>> +
>> +        cpu_synchronize_all_states();
>>          ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);
>>          if (ret < 0) {
>>              fprintf(stderr, "KVM_GET_CLOCK failed: %s\n",
>> strerror(ret));
>>
>>
>
> This causes a hang during migration, so I'll revert the patch from 2.1.

For me this patch series fixed all hangs I had with migration (at least 
with qemu 2.0).

-- 
mg

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 20:03           ` Marcin Gibuła
@ 2014-07-15 20:15             ` Paolo Bonzini
  2014-07-15 20:31               ` Marcelo Tosatti
  0 siblings, 1 reply; 24+ messages in thread
From: Paolo Bonzini @ 2014-07-15 20:15 UTC (permalink / raw)
  To: Marcin Gibuła, Marcelo Tosatti; +Cc: Alexander Graf, qemu-devel

Il 15/07/2014 22:03, Marcin Gibuła ha scritto:
>> This causes a hang during migration, so I'll revert the patch from 2.1.
>
> For me this patch series fixed all hangs I had with migration (at least
> with qemu 2.0).

Unfortunately, someone else bisected their hangs exactly to this patch:

http://permalink.gmane.org/gmane.comp.emulators.qemu/286681

I could not reproduce that, but I couldn't reproduce yours either so I'm 
inclined to trust him and revert the patch.

Paolo

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 20:15             ` Paolo Bonzini
@ 2014-07-15 20:31               ` Marcelo Tosatti
  2014-07-15 20:34                 ` Marcelo Tosatti
  2014-07-15 20:43                 ` Paolo Bonzini
  0 siblings, 2 replies; 24+ messages in thread
From: Marcelo Tosatti @ 2014-07-15 20:31 UTC (permalink / raw)
  To: Paolo Bonzini, Andrey Korolyov
  Cc: Marcin Gibuła, Alexander Graf, qemu-devel

On Tue, Jul 15, 2014 at 10:15:14PM +0200, Paolo Bonzini wrote:
> Il 15/07/2014 22:03, Marcin Gibuła ha scritto:
> >>This causes a hang during migration, so I'll revert the patch from 2.1.
> >
> >For me this patch series fixed all hangs I had with migration (at least
> >with qemu 2.0).
> 
> Unfortunately, someone else bisected their hangs exactly to this patch:
> 
> http://permalink.gmane.org/gmane.comp.emulators.qemu/286681
> 
> I could not reproduce that, but I couldn't reproduce yours either so
> I'm inclined to trust him and revert the patch.

This patch (or some form of updating env->tsc, see changelog) 
is necessary.

I was just about to reproduce it.

Andrey, can you please provide the qemu command line ?

Can you attempt to start VM via command line and migrate
via QEMU monitor, then gdb -p to get a backtrace for all 
threads ?

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 20:31               ` Marcelo Tosatti
@ 2014-07-15 20:34                 ` Marcelo Tosatti
  2014-07-15 20:43                   ` Paolo Bonzini
  2014-07-15 20:43                 ` Paolo Bonzini
  1 sibling, 1 reply; 24+ messages in thread
From: Marcelo Tosatti @ 2014-07-15 20:34 UTC (permalink / raw)
  To: Paolo Bonzini, Andrey Korolyov
  Cc: Marcin Gibuła, Alexander Graf, qemu-devel

On Tue, Jul 15, 2014 at 05:31:22PM -0300, Marcelo Tosatti wrote:
> On Tue, Jul 15, 2014 at 10:15:14PM +0200, Paolo Bonzini wrote:
> > Il 15/07/2014 22:03, Marcin Gibuła ha scritto:
> > >>This causes a hang during migration, so I'll revert the patch from 2.1.
> > >
> > >For me this patch series fixed all hangs I had with migration (at least
> > >with qemu 2.0).
> > 
> > Unfortunately, someone else bisected their hangs exactly to this patch:
> > 
> > http://permalink.gmane.org/gmane.comp.emulators.qemu/286681
> > 
> > I could not reproduce that, but I couldn't reproduce yours either so
> > I'm inclined to trust him and revert the patch.
> 
> This patch (or some form of updating env->tsc, see changelog) 
> is necessary.
> 
> I was just about to reproduce it.
> 
> Andrey, can you please provide the qemu command line ?
> 
> Can you attempt to start VM via command line and migrate
> via QEMU monitor, then gdb -p to get a backtrace for all 
> threads ?
> 

The backtrace in the following message is for a different problem,
correct?

http://www.mail-archive.com/qemu-devel@nongnu.org/msg246161.html

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 20:31               ` Marcelo Tosatti
  2014-07-15 20:34                 ` Marcelo Tosatti
@ 2014-07-15 20:43                 ` Paolo Bonzini
  1 sibling, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2014-07-15 20:43 UTC (permalink / raw)
  To: Marcelo Tosatti, Andrey Korolyov
  Cc: Marcin Gibuła, Alexander Graf, qemu-devel

Il 15/07/2014 22:31, Marcelo Tosatti ha scritto:
> This patch (or some form of updating env->tsc, see changelog) 
> is necessary.

Yes, I was going to revert Alex's too.

> I was just about to reproduce it.
> 
> Andrey, can you please provide the qemu command line ?
> 
> Can you attempt to start VM via command line and migrate
> via QEMU monitor, then gdb -p to get a backtrace for all 
> threads ?

Andrey provided backtraces for this issue here:

http://article.gmane.org/gmane.comp.emulators.qemu/286679

The first backtrace attached is bt-noreset.txt, the second is bt-reset.txt
but they are identical.  The backtraces lack symbols for QEMU, but it looks 
like the VMs are running because the CPU threads all look like this:

Thread 4 (Thread 0x7f0054ff9700 (LWP 2915)):
#0  0x00007f00a04dbc37 in ioctl () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007f00a59ea0a9 in ?? ()
#2  0x00007f00a59ea1e5 in ?? ()
#3  0x00007f00a59d59bc in ?? ()
#4  0x00007f00a07b5e9a in start_thread (arg=0x7f0054ff9700) at pthread_create.c:308
#5  0x00007f00a04e33dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()

where the ioctl is likely KVM_RUN.

Paolo

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 20:34                 ` Marcelo Tosatti
@ 2014-07-15 20:43                   ` Paolo Bonzini
  2014-07-15 21:05                     ` Andrey Korolyov
  0 siblings, 1 reply; 24+ messages in thread
From: Paolo Bonzini @ 2014-07-15 20:43 UTC (permalink / raw)
  To: Marcelo Tosatti, Andrey Korolyov
  Cc: Marcin Gibuła, Alexander Graf, qemu-devel

Il 15/07/2014 22:34, Marcelo Tosatti ha scritto:
> The backtrace in the following message is for a different problem,
> correct?
>
> http://www.mail-archive.com/qemu-devel@nongnu.org/msg246161.html
>
>
>

Correct.

Paolo

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 20:43                   ` Paolo Bonzini
@ 2014-07-15 21:05                     ` Andrey Korolyov
  2014-07-15 21:08                       ` Paolo Bonzini
  0 siblings, 1 reply; 24+ messages in thread
From: Andrey Korolyov @ 2014-07-15 21:05 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Marcelo Tosatti, Marcin Gibuła, Alexander Graf, qemu-devel

On Wed, Jul 16, 2014 at 12:43 AM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> Il 15/07/2014 22:34, Marcelo Tosatti ha scritto:
>
>> The backtrace in the following message is for a different problem,
>> correct?
>>
>> http://www.mail-archive.com/qemu-devel@nongnu.org/msg246161.html
>>
>>
>>
>
> Correct.
>
> Paolo

Sorry for being unclear. VM is running well, the resulting lockup
visibly affects only disk, I wrote this as a lockup, but it is not
complete lockup, I am able to execute cached executables (and see, for
example, soft lockup warnings for the disk). Unfortunately I had not
prepared -dbg package, so if you need exact trace, let me know, I
thought that it is necessary just for quick verification. I`ll be very
glad to provide any other information if necessary. As I mentioned in
original thread, the issue is not specific to the iothread code,
though I had not tested with other bus than virtio. If any of you who
are interested in solving such a decision (thing which broke stuff for
me fixes stuff in the other place) in place, I may offer you a
sandboxed environment with rbd-ready deployment. The argument set
follows:

qemu-system-x86_64 -enable-kvm -name vm27842 -S -machine
pc-i440fx-2.1,accel=kvm,usb=off -m 256 -realtime mlock=off -smp
12,sockets=1,cores=12,threads=12 -numa node,nodeid=0,cpus=0,mem=256
-uuid 9a44bdae-5702-463b-aa1e-d8d85055f6af -nographic -no-user-config
-nodefaults -chardev
socket,id=charmonitor,path=/var/lib/libvirt/qemu/vm27842.monitor,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control -rtc
base=utc,clock=vm,driftfix=slew -global
kvm-pit.lost_tick_policy=discard -no-shutdown -boot strict=on -device
piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device
virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive
file=rbd:dev-rack2/vm27842-Kxs:id=qemukvm:key=XXXXXXXX:auth_supported=cephx\;none:mon_host=10.6.0.1\:6789\;10.6.0.4\:6789,if=none,id=drive-virtio-disk0,format=raw,cache=writeback
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
-netdev tap,fd=23,id=hostnet0,vhost=on,vhostfd=24 -device
virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:10:03:40,bus=pci.0,addr=0x3
-netdev tap,fd=25,id=hostnet1,vhost=on,vhostfd=26 -device
virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:10:03:41,bus=pci.0,addr=0x4
-chardev pty,id=charserial0 -device
isa-serial,chardev=charserial0,id=serial0 -chardev
socket,id=charchannel0,path=/var/lib/libvirt/qemu/vm27842.sock,server,nowait
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.1

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

* Re: [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  2014-07-15 21:05                     ` Andrey Korolyov
@ 2014-07-15 21:08                       ` Paolo Bonzini
  0 siblings, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2014-07-15 21:08 UTC (permalink / raw)
  To: Andrey Korolyov
  Cc: Marcelo Tosatti, Marcin Gibuła, Alexander Graf, qemu-devel

Il 15/07/2014 23:05, Andrey Korolyov ha scritto:
> On Wed, Jul 16, 2014 at 12:43 AM, Paolo Bonzini <pbonzini@redhat.com> wrote:
>> Il 15/07/2014 22:34, Marcelo Tosatti ha scritto:
>>
>>> The backtrace in the following message is for a different problem,
>>> correct?
>>>
>>> http://www.mail-archive.com/qemu-devel@nongnu.org/msg246161.html
>>
>> Correct.
>>
>> Paolo
>
> Sorry for being unclear. VM is running well, the resulting lockup
> visibly affects only disk, I wrote this as a lockup, but it is not
> complete lockup, I am able to execute cached executables (and see, for
> example, soft lockup warnings for the disk).

Yeah, that was my understanding.  Can you reproduce it without rbd?

Paolo

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

end of thread, other threads:[~2014-07-15 21:08 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-16 15:15 [PATCH v2] kvmclock: Ensure time in migration never goes backward Alexander Graf
2014-05-16 15:15 ` [Qemu-devel] " Alexander Graf
2014-05-18 13:20 ` Marcelo Tosatti
2014-05-18 13:20   ` [Qemu-devel] " Marcelo Tosatti
2014-05-19 11:31   ` Paolo Bonzini
2014-05-19 11:31     ` [Qemu-devel] " Paolo Bonzini
2014-05-21 10:03     ` Alexander Graf
2014-05-21 10:03       ` [Qemu-devel] " Alexander Graf
2014-06-02 20:31 ` Marcin Gibuła
2014-06-03  5:16   ` Marcelo Tosatti
2014-06-03  9:11     ` Marcin Gibuła
2014-06-03 11:13     ` Paolo Bonzini
2014-06-03 16:34       ` [Qemu-devel] [PATCH uq/master] kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation Marcelo Tosatti
2014-07-15 19:45         ` Paolo Bonzini
2014-07-15 20:03           ` Marcin Gibuła
2014-07-15 20:15             ` Paolo Bonzini
2014-07-15 20:31               ` Marcelo Tosatti
2014-07-15 20:34                 ` Marcelo Tosatti
2014-07-15 20:43                   ` Paolo Bonzini
2014-07-15 21:05                     ` Andrey Korolyov
2014-07-15 21:08                       ` Paolo Bonzini
2014-07-15 20:43                 ` Paolo Bonzini
2014-07-15 19:44 ` [PATCH v2] kvmclock: Ensure time in migration never goes backward Paolo Bonzini
2014-07-15 19:44   ` [Qemu-devel] " Paolo Bonzini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.