[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.