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

Re: [Xen-devel] XEN_DOMCTL_setvcpucontext and domain_pause()



>>> On 04.08.16 at 10:21, <rcojocaru@xxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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