Mikel Ward
2009-Sep-16 09:59 UTC
[Xen-devel] cygwin longjmp error on Xen guest - gs not restored?
[resending to xen-devel instead of xen-users as suggested] Hi All A colleague tells me there is a problem with Xen 3.0.3 on RHEL5 where Cygwin''s bash fails to call longjmp() in a Windows guest. The consensus is that Xen and KVM both had a bug, but that Xen has not yet fixed it. Indeed I couldn''t find any proof that it had been reported to Xen, hence this email. Original KVM bug report: http://sourceforge.net/tracker/?func=detail&atid=893831&aid=1872255&group_id=180599 Test case: http://article.gmane.org/gmane.comp.emulators.kvm.devel/28099 #include <setjmp.h> jmp_buf env; main() { if(setjmp(env)) return; longjmp(env, 1); } More details: it''s something to do with the GS register: http://markmail.org/message/5aqlqtrld4ti4gse #include <stdio.h> int main() { unsigned short gs; unsigned x; asm ("mov %%gs, %0\n" : "=g"(gs)); asm ("movl %%gs:0x30, %0\n" : "=r"(x)); printf("gs: %x\n", gs); printf("gs:0x30: %x\n", x); asm ("mov %0, %%gs\n" : : "g"(gs)); printf("test\n"); asm ("movl %%gs:0x30, %0\n" : "=r"(x)); return 0; } KVM fix: http://article.gmane.org/gmane.comp.emulators.kvm.devel/28418 diff --git a/kernel/x86/vmx.c b/kernel/x86/vmx.c index 7507ce2..048460d 100644 --- a/kernel/x86/vmx.c +++ b/kernel/x86/vmx.c @@ -910,6 +910,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata) data = vmcs_readl(GUEST_SYSENTER_ESP); break; default: + vmx_load_host_state(vcpu); msr = find_msr_entry(to_vmx(vcpu), msr_index); if (msr) { data = msr->data; Another related KVM thread: http://markmail.org/message/owy3x7pf6oywdx5e Cygwin developers: http://www.cygwin.com/ml/cygwin/2009-05/msg00841.html http://www.cygwin.com/ml/cygwin/2008-08/msg00437.html I''ll be happy to spend some time helping to test/diagnose if you can tell me what you need me to do. Thanks Mike _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2009-Sep-21 12:38 UTC
Re: [Xen-devel] cygwin longjmp error on Xen guest - gs not restored?
On 16/09/2009 10:59, "Mikel Ward" <mward@aconex.com> wrote:> [resending to xen-devel instead of xen-users as suggested] > > Hi All > > A colleague tells me there is a problem with Xen 3.0.3 on RHEL5 where > Cygwin''s bash fails to call longjmp() in a Windows guest.Have you tested this with a newer version of Xen than 3.0.3? For example the latest stable release, 3.4.1? In all likelihood this is already fixed. -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel