Message ID | 4DF97D6C.2080900@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 06/16/2011 06:50 AM, Zachary Amsden wrote: > The 128-bit multiply in pvclock.h was missing an output constraint for > EDX which caused a register corruption to appear. Thanks to Ulrich > for diagnosing the EDX corruption and Avi for providing this fix > (which now I am sending back to you Avi..) Applied and queued, thanks.
On Sun, 2011-06-19 at 15:44 +0300, Avi Kivity wrote: > On 06/16/2011 06:50 AM, Zachary Amsden wrote: > > The 128-bit multiply in pvclock.h was missing an output constraint for > > EDX which caused a register corruption to appear. Was there any particular symptom associated with corruption at that particular point or just general badness? > Thanks to Ulrich > > for diagnosing the EDX corruption and Avi for providing this fix > > (which now I am sending back to you Avi..) > > Applied and queued, thanks. Seems like a stable candidate also? Ian. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/22/2011 12:35 PM, Ian Campbell wrote: > On Sun, 2011-06-19 at 15:44 +0300, Avi Kivity wrote: > > On 06/16/2011 06:50 AM, Zachary Amsden wrote: > > > The 128-bit multiply in pvclock.h was missing an output constraint for > > > EDX which caused a register corruption to appear. > > Was there any particular symptom associated with corruption at that > particular point or just general badness? > > > Thanks to Ulrich > > > for diagnosing the EDX corruption and Avi for providing this fix > > > (which now I am sending back to you Avi..) > > > > Applied and queued, thanks. > > Seems like a stable candidate also? Yes. I see it's merged; Marcelo, can you backport it?
On 06/22/2011 12:35 PM, Ian Campbell wrote: > On Sun, 2011-06-19 at 15:44 +0300, Avi Kivity wrote: > > On 06/16/2011 06:50 AM, Zachary Amsden wrote: > > > The 128-bit multiply in pvclock.h was missing an output constraint for > > > EDX which caused a register corruption to appear. > > Was there any particular symptom associated with corruption at that > particular point or just general badness? > Time went backwards and forwards as vcpus were migrated across cpus. The problem was in the host, not the guest, so Xen should not be affected.
On Wed, 2011-06-22 at 10:40 +0100, Avi Kivity wrote: > On 06/22/2011 12:35 PM, Ian Campbell wrote: > > On Sun, 2011-06-19 at 15:44 +0300, Avi Kivity wrote: > > > On 06/16/2011 06:50 AM, Zachary Amsden wrote: > > > > The 128-bit multiply in pvclock.h was missing an output constraint for > > > > EDX which caused a register corruption to appear. > > > > Was there any particular symptom associated with corruption at that > > particular point or just general badness? > > > > Time went backwards and forwards as vcpus were migrated across cpus. Oops! > The problem was in the host, not the guest, so Xen should not be affected. Good to know, thanks! Ian. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/x86/include/asm/pvclock.h b/arch/x86/include/asm/pvclock.h index 31d84ac..a518c0a 100644 --- a/arch/x86/include/asm/pvclock.h +++ b/arch/x86/include/asm/pvclock.h @@ -22,6 +22,8 @@ static inline u64 pvclock_scale_delta(u64 delta, u32 mul_frac, int shift) u64 product; #ifdef __i386__ u32 tmp1, tmp2; +#else + ulong tmp; #endif if (shift < 0) @@ -42,8 +44,11 @@ static inline u64 pvclock_scale_delta(u64 delta, u32 mul_frac, int shift) : "a" ((u32)delta), "1" ((u32)(delta >> 32)), "2" (mul_frac) ); #elif defined(__x86_64__) __asm__ ( - "mul %%rdx ; shrd $32,%%rdx,%%rax" - : "=a" (product) : "0" (delta), "d" ((u64)mul_frac) ); + "mul %[mul_frac] ; shrd $32, %[hi], %[lo]" + : [lo]"=a"(product), + [hi]"=d"(tmp) + : "0"(delta), + [mul_frac]"rm"((u64)mul_frac)); #else #error implement me! #endif
The 128-bit multiply in pvclock.h was missing an output constraint for EDX which caused a register corruption to appear. Thanks to Ulrich for diagnosing the EDX corruption and Avi for providing this fix (which now I am sending back to you Avi..) Zach From Avi and Ulrich, fix constraints for 128-bit multiply Signed-off-by: Zachary Amsden <zamsden@redhat.com>