diff -r 85f92475b943 tools/libxc/xc_linux_build.c --- a/tools/libxc/xc_linux_build.c Mon Oct 3 18:14:02 2005 +++ b/tools/libxc/xc_linux_build.c Tue Oct 4 16:37:44 2005 @@ -847,7 +847,7 @@ launch_op.u.setdomaininfo.domain = (domid_t)domid; launch_op.u.setdomaininfo.vcpu = 0; - launch_op.u.setdomaininfo.ctxt = ctxt; + launch_op.u.setdomaininfo.ctxt.ptr = ctxt; launch_op.cmd = DOM0_SETDOMAININFO; rc = xc_dom0_op(xc_handle, &launch_op); diff -r 85f92475b943 tools/libxc/xc_linux_restore.c --- a/tools/libxc/xc_linux_restore.c Mon Oct 3 18:14:02 2005 +++ b/tools/libxc/xc_linux_restore.c Tue Oct 4 16:37:44 2005 @@ -631,7 +631,7 @@ op.cmd = DOM0_SETDOMAININFO; op.u.setdomaininfo.domain = (domid_t)dom; op.u.setdomaininfo.vcpu = 0; - op.u.setdomaininfo.ctxt = &ctxt; + op.u.setdomaininfo.ctxt.ptr = &ctxt; rc = xc_dom0_op(xc_handle, &op); if ( rc != 0 ) diff -r 85f92475b943 tools/libxc/xc_ptrace.c --- a/tools/libxc/xc_ptrace.c Mon Oct 3 18:14:02 2005 +++ b/tools/libxc/xc_ptrace.c Tue Oct 4 16:37:44 2005 @@ -385,7 +385,7 @@ op.u.setdomaininfo.domain = domid; /* XXX need to understand multiple vcpus */ op.u.setdomaininfo.vcpu = cpu; - op.u.setdomaininfo.ctxt = &ctxt[cpu]; + op.u.setdomaininfo.ctxt.ptr = &ctxt[cpu]; retval = do_dom0_op(xc_handle, &op); if (retval) goto error_out; @@ -416,7 +416,7 @@ op.cmd = DOM0_SETDOMAININFO; op.u.setdomaininfo.domain = domid; op.u.setdomaininfo.vcpu = 0; - op.u.setdomaininfo.ctxt = &ctxt[cpu]; + op.u.setdomaininfo.ctxt.ptr = &ctxt[cpu]; retval = do_dom0_op(xc_handle, &op); if ( retval ) { @@ -437,7 +437,7 @@ op.cmd = DOM0_SETDOMAININFO; op.u.setdomaininfo.domain = domid; op.u.setdomaininfo.vcpu = cpu; - op.u.setdomaininfo.ctxt = &ctxt[cpu]; + op.u.setdomaininfo.ctxt.ptr = &ctxt[cpu]; retval = do_dom0_op(xc_handle, &op); if ( retval ) { diff -r 85f92475b943 tools/libxc/xc_vmx_build.c --- a/tools/libxc/xc_vmx_build.c Mon Oct 3 18:14:02 2005 +++ b/tools/libxc/xc_vmx_build.c Tue Oct 4 16:37:44 2005 @@ -700,7 +700,7 @@ launch_op.u.setdomaininfo.domain = (domid_t)domid; launch_op.u.setdomaininfo.vcpu = 0; - launch_op.u.setdomaininfo.ctxt = ctxt; + launch_op.u.setdomaininfo.ctxt.ptr = ctxt; launch_op.cmd = DOM0_SETDOMAININFO; rc = xc_dom0_op(xc_handle, &launch_op); diff -r 85f92475b943 xen/common/domain.c --- a/xen/common/domain.c Mon Oct 3 18:14:02 2005 +++ b/xen/common/domain.c Tue Oct 4 16:37:44 2005 @@ -351,7 +351,7 @@ if ( (c = xmalloc(struct vcpu_guest_context)) == NULL ) return -ENOMEM; - if ( copy_from_user(c, setdomaininfo->ctxt, sizeof(*c)) ) + if ( copy_from_user(c, setdomaininfo->ctxt.ptr, sizeof(*c)) ) { rc = -EFAULT; goto out; diff -r 85f92475b943 xen/include/public/dom0_ops.h --- a/xen/include/public/dom0_ops.h Mon Oct 3 18:14:02 2005 +++ b/xen/include/public/dom0_ops.h Tue Oct 4 16:37:44 2005 @@ -99,7 +99,10 @@ domid_t domain; u16 vcpu; /* IN/OUT parameters */ - vcpu_guest_context_t *ctxt; + union { + vcpu_guest_context_t *ptr; + u64 _; + } ctxt; } dom0_setdomaininfo_t; #define DOM0_MSR 15