>>> On 04.08.16 at 10:21, <rcojoc...@bitdefender.com> wrote:
> Looking at xen/common/domctl.c, it appears that during handling of
> XEN_DOMCTL_setvcpucontext, a domain_pause() happens unconditionally:
> 
>  465         if ( ret == 0 )
>  466         {
>  467             domain_pause(d);
>  468             ret = arch_set_info_guest(v, c);
>  469             domain_unpause(d);
>  470
>  471             if ( ret == -ERESTART )
>  472                 ret = hypercall_create_continuation(
>  473                           __HYPERVISOR_domctl, "h", u_domctl);
>  474         }
> 
> I assume that this is because in xen/arch/x86/domain.c,
> arch_set_info_guest() uses v->domain here:

Not only: It would be rather bad to change register state
underneath a running vCPU (such a change then would not take
effect right away, and might not [fully] take effect at all). Plus,
if you paused only the subject vCPU, you'd risk races with other
vCPU-s interacting with the paused one.

It's anyway questionable whether setting context for a vCPU
after it got started is really such a good idea, even more so if
you mean to do this frequently (and only then I can see that
the pausing may get into the way).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to