[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: Enable GNTTABOP_copy hypercall for HVMs
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1249476575 -3600 # Node ID f1b10de90679307824ee7e4dcb265ce571c83816 # Parent 70ead50fabfd16809d5f721be86f13d1d56de408 x86: Enable GNTTABOP_copy hypercall for HVMs This requires plumbing 32-bit compat guests through the compat version of teh grant-table hypercall. Signed-off-by: Jayaraman, Bhaskar <Bhaskar.Jayaraman@xxxxxxx> --- xen/arch/x86/hvm/hvm.c | 15 +++++++++++++-- xen/include/xen/hypercall.h | 6 ++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff -r 70ead50fabfd -r f1b10de90679 xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Wed Aug 05 13:40:21 2009 +0100 +++ b/xen/arch/x86/hvm/hvm.c Wed Aug 05 13:49:35 2009 +0100 @@ -1999,7 +1999,8 @@ static long hvm_grant_table_op( unsigned int cmd, XEN_GUEST_HANDLE(void) uop, unsigned int count) { if ( (cmd != GNTTABOP_query_size) && (cmd != GNTTABOP_setup_table) && - (cmd != GNTTABOP_map_grant_ref) && (cmd != GNTTABOP_unmap_grant_ref) ) + (cmd != GNTTABOP_map_grant_ref) && (cmd != GNTTABOP_unmap_grant_ref) && + (cmd != GNTTABOP_copy)) return -ENOSYS; /* all other commands need auditing */ return do_grant_table_op(cmd, uop, count); } @@ -2051,6 +2052,16 @@ static hvm_hypercall_t *hvm_hypercall32_ #else /* defined(__x86_64__) */ +static long hvm_grant_table_op_compat32( + unsigned int cmd, XEN_GUEST_HANDLE(void) uop, unsigned int count) +{ + if ( (cmd != GNTTABOP_query_size) && (cmd != GNTTABOP_setup_table) && + (cmd != GNTTABOP_map_grant_ref) && (cmd != GNTTABOP_unmap_grant_ref) && + (cmd != GNTTABOP_copy)) + return -ENOSYS; /* all other commands need auditing */ + return compat_grant_table_op(cmd, uop, count); +} + static long hvm_memory_op_compat32(int cmd, XEN_GUEST_HANDLE(void) arg) { long rc = compat_memory_op(cmd, arg); @@ -2090,7 +2101,7 @@ static hvm_hypercall_t *hvm_hypercall64_ 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, + [ __HYPERVISOR_grant_table_op ] = (hvm_hypercall_t *)hvm_grant_table_op_compat32, [ __HYPERVISOR_vcpu_op ] = (hvm_hypercall_t *)hvm_vcpu_op_compat32, HYPERCALL(xen_version), HYPERCALL(event_channel_op), diff -r 70ead50fabfd -r f1b10de90679 xen/include/xen/hypercall.h --- a/xen/include/xen/hypercall.h Wed Aug 05 13:40:21 2009 +0100 +++ b/xen/include/xen/hypercall.h Wed Aug 05 13:49:35 2009 +0100 @@ -129,6 +129,12 @@ compat_memory_op( XEN_GUEST_HANDLE(void) arg); extern int +compat_grant_table_op( + unsigned int cmd, + XEN_GUEST_HANDLE(void) uop, + unsigned int count); + +extern int compat_vcpu_op( int cmd, int vcpuid, _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |