Guest kernel hangs in smp kvm for older kernels prior to tsc synccleanup

From: Avi Kivity
Date: Tue Dec 18 2007 - 12:21:06 EST


Booting RHEL 5 i386 in kvm with -no-kvm-irqchip -smp 4 will hang in udev. I bisected this to a change in the _guest_ kernel:

commit 95492e4646e5de8b43d9a7908d6177fb737b61f0
Author: Ingo Molnar <mingo@xxxxxxx>
Date: Fri Feb 16 01:27:34 2007 -0800

[PATCH] x86: rewrite SMP TSC sync code

make the TSC synchronization code more robust, and unify it between x86_64 and
i386.

The biggest change is the removal of the 'fix up TSCs' code on x86_64 and
i386, in some rare cases it was /causing/ time-warps on SMP systems.

The new code only checks for TSC asynchronity - and if it can prove a
time-warp (if it can observe the TSC going backwards when going from one CPU
to another within a critical section), then the TSC clock-source is turned
off.

The TSC synchronization-checking code also got moved into a separate file.

So, guest kernels prior to this commit will hang in kvm smp; after this commit they will boot fine.

While the change mentions that it fixes a time warp bug, it also says it should be rare. So clearly kvm smp tsc handing is buggy. Ingo/Thomas, (or anybody else), do you have any insight as to what kvm can be doing wrong to trigger this behavior?


--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/