[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-4.1-testing] x86: use compat hypercall handlers for calls from 32-bit HVM guests
# HG changeset patch # User Tim Deegan <Tim.Deegan@xxxxxxxxxx> # Date 1305188369 -3600 # Node ID bd9b2a06768249caf1e6aaf1eb610adacb8d216e # Parent f04847b78328b3ccf9ae6720e4e3223231844629 x86: use compat hypercall handlers for calls from 32-bit HVM guests On 64-bit Xen, hypercalls from 32-bit HVM guests are handled as a special case, but not all the hypercalls are corrently redirected to their compat-mode wrappers. Use compat_* for xen_version, sched_op and set_timer_op for consistency. Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx> xen-unstable changeset: 23333:fabdd682420c xen-unstable date: Thu May 12 09:13:18 2011 +0100 --- diff -r f04847b78328 -r bd9b2a067682 xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Thu May 12 09:18:42 2011 +0100 +++ b/xen/arch/x86/hvm/hvm.c Thu May 12 09:19:29 2011 +0100 @@ -2679,15 +2679,18 @@ HYPERCALL(tmem_op) }; +#define COMPAT_CALL(x) \ + [ __HYPERVISOR_ ## x ] = (hvm_hypercall_t *) compat_ ## x + static hvm_hypercall_t *hvm_hypercall32_table[NR_hypercalls] = { [ __HYPERVISOR_memory_op ] = (hvm_hypercall_t *)hvm_memory_op_compat32, [ __HYPERVISOR_grant_table_op ] = (hvm_hypercall_t *)hvm_grant_table_op_compat32, [ __HYPERVISOR_vcpu_op ] = (hvm_hypercall_t *)hvm_vcpu_op_compat32, [ __HYPERVISOR_physdev_op ] = (hvm_hypercall_t *)hvm_physdev_op_compat32, - HYPERCALL(xen_version), + COMPAT_CALL(xen_version), HYPERCALL(event_channel_op), - HYPERCALL(sched_op), - HYPERCALL(set_timer_op), + COMPAT_CALL(sched_op), + COMPAT_CALL(set_timer_op), HYPERCALL(hvm_op), HYPERCALL(sysctl), HYPERCALL(tmem_op) diff -r f04847b78328 -r bd9b2a067682 xen/include/xen/hypercall.h --- a/xen/include/xen/hypercall.h Thu May 12 09:18:42 2011 +0100 +++ b/xen/include/xen/hypercall.h Thu May 12 09:19:29 2011 +0100 @@ -146,6 +146,20 @@ extern int compat_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg); +extern int +compat_xen_version( + int cmd, + XEN_GUEST_HANDLE(void) arg); + +extern int +compat_sched_op( + int cmd, + XEN_GUEST_HANDLE(void) arg); + +extern int +compat_set_timer_op( + s_time_t timeout); + #endif #endif /* __XEN_HYPERCALL_H__ */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |