From ad6647cc24a09e872b244768ba2dcd7a46d171a9 Mon Sep 17 00:00:00 2001 From: Konrad Rzeszutek Wilk Date: Fri, 27 Jun 2014 11:09:35 -0400 Subject: [PATCH 1/2] VCPUOP_reset_vcpu_info Prototype. Signed-off-by: Konrad Rzeszutek Wilk --- xen/arch/x86/hvm/hvm.c | 1 + xen/common/domain.c | 16 ++++++++++++++++ xen/include/public/vcpu.h | 6 ++++++ 3 files changed, 23 insertions(+), 0 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index ef2411c..065abb4 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -4628,6 +4628,7 @@ static long hvm_vcpu_op( case VCPUOP_set_singleshot_timer: case VCPUOP_stop_singleshot_timer: case VCPUOP_register_vcpu_info: + case VCPUOP_reset_vcpu_info: case VCPUOP_register_vcpu_time_memory_area: rc = do_vcpu_op(cmd, vcpuid, arg); break; diff --git a/xen/common/domain.c b/xen/common/domain.c index c3a576e..f4536af 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1196,6 +1196,22 @@ long do_vcpu_op(int cmd, int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg) break; } + case VCPUOP_reset_vcpu_info: + { + struct domain *d = v->domain; + + if (!test_bit(_VPF_down, &v->pause_flags)) + return -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]); + domain_unlock(d); + rc = 0; + break; + } + case VCPUOP_register_runstate_memory_area: { struct vcpu_register_runstate_memory_area area; diff --git a/xen/include/public/vcpu.h b/xen/include/public/vcpu.h index e888daf..c0283bc 100644 --- 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 + #endif /* __XEN_PUBLIC_VCPU_H__ */ /* -- 1.7.7.6