126 lines
3.6 KiB
Diff
126 lines
3.6 KiB
Diff
|
Index: xen-3.2.1-testing/xen/arch/x86/x86_64/domain.c
|
||
|
===================================================================
|
||
|
--- xen-3.2.1-testing.orig/xen/arch/x86/x86_64/domain.c
|
||
|
+++ xen-3.2.1-testing/xen/arch/x86/x86_64/domain.c
|
||
|
@@ -9,11 +9,23 @@
|
||
|
#include <asm/hypercall.h>
|
||
|
#include <compat/vcpu.h>
|
||
|
|
||
|
+#define xen_vcpu_info vcpu_info
|
||
|
+CHECK_SIZE_(struct, vcpu_info);
|
||
|
+#undef xen_vcpu_info
|
||
|
+
|
||
|
+#define xen_vcpu_register_vcpu_info vcpu_register_vcpu_info
|
||
|
+CHECK_vcpu_register_vcpu_info;
|
||
|
+#undef xen_vcpu_register_vcpu_info
|
||
|
+
|
||
|
+#define xen_vcpu_get_physid vcpu_get_physid
|
||
|
+CHECK_vcpu_get_physid;
|
||
|
+#undef xen_vcpu_get_physid
|
||
|
+
|
||
|
int
|
||
|
arch_compat_vcpu_op(
|
||
|
int cmd, struct vcpu *v, XEN_GUEST_HANDLE(void) arg)
|
||
|
{
|
||
|
- long rc = 0;
|
||
|
+ int rc = -ENOSYS;
|
||
|
|
||
|
switch ( cmd )
|
||
|
{
|
||
|
@@ -51,8 +63,9 @@ arch_compat_vcpu_op(
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
- default:
|
||
|
- rc = -ENOSYS;
|
||
|
+ case VCPUOP_register_vcpu_info:
|
||
|
+ case VCPUOP_get_physid:
|
||
|
+ rc = arch_do_vcpu_op(cmd, v, arg);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
Index: xen-3.2.1-testing/xen/common/compat/domain.c
|
||
|
===================================================================
|
||
|
--- xen-3.2.1-testing.orig/xen/common/compat/domain.c
|
||
|
+++ xen-3.2.1-testing/xen/common/compat/domain.c
|
||
|
@@ -11,11 +11,15 @@
|
||
|
#include <xen/hypercall.h>
|
||
|
#include <compat/vcpu.h>
|
||
|
|
||
|
+#define xen_vcpu_set_periodic_timer vcpu_set_periodic_timer
|
||
|
+CHECK_vcpu_set_periodic_timer;
|
||
|
+#undef xen_vcpu_set_periodic_timer
|
||
|
+
|
||
|
int compat_vcpu_op(int cmd, int vcpuid, XEN_GUEST_HANDLE(void) arg)
|
||
|
{
|
||
|
struct domain *d = current->domain;
|
||
|
struct vcpu *v;
|
||
|
- long rc = 0;
|
||
|
+ int rc = 0;
|
||
|
|
||
|
if ( (vcpuid < 0) || (vcpuid >= MAX_VIRT_CPUS) )
|
||
|
return -EINVAL;
|
||
|
@@ -57,7 +61,6 @@ int compat_vcpu_op(int cmd, int vcpuid,
|
||
|
case VCPUOP_is_up:
|
||
|
case VCPUOP_set_periodic_timer:
|
||
|
case VCPUOP_stop_periodic_timer:
|
||
|
- case VCPUOP_set_singleshot_timer:
|
||
|
case VCPUOP_stop_singleshot_timer:
|
||
|
case VCPUOP_send_nmi:
|
||
|
rc = do_vcpu_op(cmd, vcpuid, arg);
|
||
|
@@ -77,6 +80,19 @@ int compat_vcpu_op(int cmd, int vcpuid,
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
+ case VCPUOP_set_singleshot_timer:
|
||
|
+ {
|
||
|
+ struct compat_vcpu_set_singleshot_timer cmp;
|
||
|
+ struct vcpu_set_singleshot_timer *nat;
|
||
|
+
|
||
|
+ if ( copy_from_guest(&cmp, arg, 1) )
|
||
|
+ return -EFAULT;
|
||
|
+ nat = (void *)COMPAT_ARG_XLAT_VIRT_START(current->vcpu_id);
|
||
|
+ XLAT_vcpu_set_singleshot_timer(nat, &cmp);
|
||
|
+ rc = do_vcpu_op(cmd, vcpuid, guest_handle_from_ptr(nat, void));
|
||
|
+ break;
|
||
|
+ }
|
||
|
+
|
||
|
default:
|
||
|
rc = arch_compat_vcpu_op(cmd, v, arg);
|
||
|
break;
|
||
|
Index: xen-3.2.1-testing/xen/include/xlat.lst
|
||
|
===================================================================
|
||
|
--- xen-3.2.1-testing.orig/xen/include/xlat.lst
|
||
|
+++ xen-3.2.1-testing/xen/include/xlat.lst
|
||
|
@@ -5,6 +5,7 @@
|
||
|
? mmu_update xen.h
|
||
|
! mmuext_op xen.h
|
||
|
! start_info xen.h
|
||
|
+? vcpu_info xen.h
|
||
|
? vcpu_time_info xen.h
|
||
|
! cpu_user_regs arch-x86/xen-@arch@.h
|
||
|
! trap_info arch-x86/xen.h
|
||
|
@@ -40,6 +41,10 @@
|
||
|
? sched_remote_shutdown sched.h
|
||
|
? sched_shutdown sched.h
|
||
|
? t_buf trace.h
|
||
|
+? vcpu_get_physid vcpu.h
|
||
|
+? vcpu_register_vcpu_info vcpu.h
|
||
|
! vcpu_runstate_info vcpu.h
|
||
|
+? vcpu_set_periodic_timer vcpu.h
|
||
|
+! vcpu_set_singleshot_timer vcpu.h
|
||
|
? xenoprof_init xenoprof.h
|
||
|
? xenoprof_passive xenoprof.h
|
||
|
Index: xen-3.2.1-testing/xen/tools/get-fields.sh
|
||
|
===================================================================
|
||
|
--- xen-3.2.1-testing.orig/xen/tools/get-fields.sh
|
||
|
+++ xen-3.2.1-testing/xen/tools/get-fields.sh
|
||
|
@@ -310,7 +310,6 @@ build_body ()
|
||
|
done
|
||
|
echo " \\"
|
||
|
echo "} while (0)"
|
||
|
- echo ""
|
||
|
}
|
||
|
|
||
|
check_field ()
|