Lynn Kerby wrote:
Hi KVM developers (and lurkers like myself).

Apologies in advance as this is probably not the right forum for this question.

It is certainly the right forum.

I've had no success getting an SMP virtual machine running on my AMD Athlon64 X2 server. The base system is Ubuntu 7.10 (recently upgraded from 7.04) with a 2.6.22 kernel and I've tried kvm releases 49 & 50 with no success. My memory of whether or not it worked months ago with kvm-28 on the Ubuntu 2.6.20-16 kernel is no longer with me :-(. The recent failures have all been BIOS problems at rombios.c:10605. I'm pretty sure I must have something wrong in my environment and have spent entirely too much of my spare time trying various things with no success.

Yes you've been doing something wrong -- you should have reported this quickly. Worst case somebody would have pointed out something trivial you're doing wrong and you'd have felt foolish for a bit. But in this particular case...

Can someone that has actually has an SMP virtual machine running currently on an AMD processor (preferably a 64-bit guest) give me some details on the base system kernel, KVM related bits, and the guest OS?


Turns out kvm smp on amd is broken. I committed a fix for kvm-51, and now I have FC6 running happily with two vcpus.

If you see problems, please report them soon. I'd rather have noise on the list than problems going unreported.

I'm attaching the patch which fixes the problem, let us know if it helps or not (there may be more problems lurking).

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

commit 157117844e1d228db58dfe7fbd51c5a225ceafe4
Author: Avi Kivity <[EMAIL PROTECTED]>
Date:   Wed Nov 7 12:57:23 2007 +0200

    KVM: SVM: Fix SMP with kernel apic
    
    AP processor needs to reset to the SIPI vector, not normal INIT.
    
    Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>

diff --git a/kernel/svm.c b/kernel/svm.c
index 95a3489..ea2cb83 100644
--- a/kernel/svm.c
+++ b/kernel/svm.c
@@ -563,6 +563,12 @@ static int svm_vcpu_reset(struct kvm_vcpu *vcpu)
 
 	init_vmcb(svm->vmcb);
 
+	if (vcpu->vcpu_id != 0) {
+		svm->vmcb->save.rip = 0;
+		svm->vmcb->save.cs.base = svm->vcpu.sipi_vector << 12;
+		svm->vmcb->save.cs.selector = svm->vcpu.sipi_vector << 8;
+	}
+
 	return 0;
 }
 
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to