KVM guest: Move a printk that's using the clock before it's ready
authorArjan Koers <0h61vkll2ly8@xutrox.com>
Mon, 2 Aug 2010 21:35:28 +0000 (23:35 +0200)
committerAvi Kivity <avi@redhat.com>
Sun, 24 Oct 2010 08:53:06 +0000 (10:53 +0200)
Fix a hang during SMP kernel boot on KVM that showed up
after commit 489fb490dbf8dab0249ad82b56688ae3842a79e8
(2.6.35) and 59aab522154a2f17b25335b63c1cf68a51fb6ae0
(2.6.34.1). The problem only occurs when
CONFIG_PRINTK_TIME is set.

KVM-Stable-Tag.
Signed-off-by: Arjan Koers <0h61vkll2ly8@xutrox.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kernel/kvmclock.c

index eb9b76c..ca43ce3 100644 (file)
@@ -128,13 +128,15 @@ static struct clocksource kvm_clock = {
 static int kvm_register_clock(char *txt)
 {
        int cpu = smp_processor_id();
-       int low, high;
+       int low, high, ret;
+
        low = (int)__pa(&per_cpu(hv_clock, cpu)) | 1;
        high = ((u64)__pa(&per_cpu(hv_clock, cpu)) >> 32);
+       ret = native_write_msr_safe(msr_kvm_system_time, low, high);
        printk(KERN_INFO "kvm-clock: cpu %d, msr %x:%x, %s\n",
               cpu, high, low, txt);
 
-       return native_write_msr_safe(msr_kvm_system_time, low, high);
+       return ret;
 }
 
 #ifdef CONFIG_X86_LOCAL_APIC