diff mbox

Live migration stops working...

Message ID 1250536345-31917-1-git-send-email-andre.przywara@amd.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andre Przywara Aug. 17, 2009, 7:12 p.m. UTC
Hi,

> This is the sysexit instruction.
I recently stumbled upon a similar issue.
Can you try the following patch? This is not a very nice one,
but it cured the problem I had.
Do you see anything in the guest? I had some messages on the console
about a faulting init (at boot time, when I was booting a 32bit userland
on a 64bit kernel).

Regards,
Andre.

Comments

Stephane Bakhos Aug. 18, 2009, 8:11 a.m. UTC | #1
> Hi,
>
>> This is the sysexit instruction.
> I recently stumbled upon a similar issue.
> Can you try the following patch? This is not a very nice one,
> but it cured the problem I had.
> Do you see anything in the guest? I had some messages on the console
> about a faulting init (at boot time, when I was booting a 32bit userland
> on a 64bit kernel).

I've tried the patch and it did not help, however I could only have it on 
the receiver of the migration. Would it need to be installed on the one 
sending the data ?

The guest kernel and userland are 32bits, the host's are 64 bits.

I do not see any message about a faulting init.
--
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 mbox

Patch

diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index fc14bdf..bddcde5 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2140,6 +2140,17 @@  static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
 	case MSR_VM_IGNNE:
 		pr_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data);
 		break;
+	case MSR_EFER:
+		{
+		int enable = !(data & (1<<_EFER_LME));
+		u32 *msrpm = svm->msrpm;
+		printk(KERN_INFO "%sabling SYSENTER MSR intercepts (%llx)\n",
+			enable ? "dis" : "en", data);
+		set_msr_interception(msrpm, MSR_IA32_SYSENTER_CS, enable, enable);
+		set_msr_interception(msrpm, MSR_IA32_SYSENTER_ESP, enable, enable);
+		set_msr_interception(msrpm, MSR_IA32_SYSENTER_EIP, enable, enable);
+		}
+		return kvm_set_msr_common(vcpu, ecx, data);
 	default:
 		return kvm_set_msr_common(vcpu, ecx, data);
 	}