|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 1/1] Introduce VCPUOP_reset_vcpu_info
>>> On 06.08.14 at 15:08, <vkuznets@xxxxxxxxxx> wrote:
> + case VCPUOP_reset_vcpu_info:
> + {
> + struct domain *d = v->domain;
There is a suitable variable in scope already; please don't repeat the
mistake of the code handling VCPUOP_register_vcpu_info.
> +
> + if ( !test_bit(_VPF_down, &v->pause_flags) )
> + return -EFAULT;
So how is that going to work then for CPU 0 in the guest? And why
-EFAULT?
> +
> + domain_lock(d);
> + unmap_vcpu_info(v);
> + if ( vcpuid < XEN_LEGACY_MAX_VCPUS )
> + v->vcpu_info = (vcpu_info_t *)&shared_info(d, vcpu_info[vcpuid]);
This would clearly need to be done before unmapping, and you'd have
to avoid unmap_vcpu_info() overwriting it again (and the order of
operations there doesn't fit your need anyway). Furthermore you'd
need to deal with the guest having set up FIFO event channels when
re-registering the vCPU info - this is a shortcoming in map_vcpu_info()
which I suppose doesn't matter much right now because interested
guests set their vCPU info area before switching away from 2-level
event channels. You'd also need to put consideration into 2-level
event channel behavior - it would seem to me that the tail part of
map_vcpu_info() would now also be needed in unmap_vcpu_info(),
since you won't know when or in which manner the vCPU would be
brought back up again. And that of course along with the copying of
the contents.
> --- a/xen/include/public/vcpu.h
> +++ b/xen/include/public/vcpu.h
> @@ -227,6 +227,12 @@ struct vcpu_register_time_memory_area {
> typedef struct vcpu_register_time_memory_area
> vcpu_register_time_memory_area_t;
> DEFINE_XEN_GUEST_HANDLE(vcpu_register_time_memory_area_t);
>
> +/*
> + * Reset all of the vcpu_info information from their previous location
> + * to the default one used at bootup.
> + */
> +#define VCPUOP_reset_vcpu_info 14
Without explicitly explaining all the limitations this shouldn't be put in
a public header.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |