[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] [IA64] xencomm: tmem support.
# HG changeset patch # User Isaku Yamahata <yamahata@xxxxxxxxxxxxx> # Date 1246242196 -32400 # Node ID 92a119f247f7e0df7557ecc4526f40c5709f38b1 # Parent 5bb4e5dd1abc7d9ec42fefdae2726b4040d07f2e [IA64] xencomm: tmem support. add tmem support to xencomm. Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx> --- arch/ia64/xen/xcom_hcall.c | 13 +++++++++++++ arch/ia64/xen/xcom_privcmd.c | 19 +++++++++++++++++++ include/asm-ia64/hypercall.h | 7 +++++++ 3 files changed, 39 insertions(+) diff -r 5bb4e5dd1abc -r 92a119f247f7 arch/ia64/xen/xcom_hcall.c --- a/arch/ia64/xen/xcom_hcall.c Mon Jun 29 11:22:41 2009 +0900 +++ b/arch/ia64/xen/xcom_hcall.c Mon Jun 29 11:23:16 2009 +0900 @@ -40,6 +40,7 @@ #include <xen/interface/xenoprof.h> #include <xen/interface/vcpu.h> #include <xen/interface/kexec.h> +#include <xen/interface/tmem.h> #include <asm/hypervisor.h> #include <asm/page.h> #include <asm/uaccess.h> @@ -739,3 +740,15 @@ xencomm_hypercall_kexec_op(int cmd, void return xencomm_arch_hypercall_kexec_op(cmd, desc); } + +int +xencomm_hypercall_tmem_op(struct tmem_op *op) +{ + struct xencomm_handle *desc; + + desc = xencomm_map_no_alloc(op, sizeof(*op)); + if (desc == NULL) + return -EINVAL; + + return xencomm_arch_hypercall_tmem_op(desc); +} diff -r 5bb4e5dd1abc -r 92a119f247f7 arch/ia64/xen/xcom_privcmd.c --- a/arch/ia64/xen/xcom_privcmd.c Mon Jun 29 11:22:41 2009 +0900 +++ b/arch/ia64/xen/xcom_privcmd.c Mon Jun 29 11:23:16 2009 +0900 @@ -32,6 +32,7 @@ #include <xen/interface/xsm/acm_ops.h> #include <xen/interface/hvm/params.h> #include <xen/interface/arch-ia64/debug_op.h> +#include <xen/interface/tmem.h> #include <xen/public/privcmd.h> #include <asm/hypercall.h> #include <asm/page.h> @@ -892,6 +893,22 @@ xencomm_privcmd_ia64_physdev_op(privcmd_ return -ENOMEM; ret = xencomm_arch_hypercall_physdev_op(cmd, desc); + + xencomm_free(desc); + return ret; +} + +static int +xencomm_privcmd_tmem_op(privcmd_hypercall_t *hypercall) +{ + struct xencomm_handle *desc; + int ret; + + desc = xencomm_map((void *)hypercall->arg[0], sizeof(struct tmem_op)); + if (desc == NULL) + return -ENOMEM; + + ret = xencomm_arch_hypercall_tmem_op(desc); xencomm_free(desc); return ret; @@ -925,6 +942,8 @@ privcmd_hypercall(privcmd_hypercall_t *h return xencomm_privcmd_ia64_debug_op(hypercall); case __HYPERVISOR_physdev_op: return xencomm_privcmd_ia64_physdev_op(hypercall); + case __HYPERVISOR_tmem_op: + return xencomm_privcmd_tmem_op(hypercall); default: printk("%s: unknown hcall (%ld)\n", __func__, hypercall->op); return -ENOSYS; diff -r 5bb4e5dd1abc -r 92a119f247f7 include/asm-ia64/hypercall.h --- a/include/asm-ia64/hypercall.h Mon Jun 29 11:22:41 2009 +0900 +++ b/include/asm-ia64/hypercall.h Mon Jun 29 11:23:16 2009 +0900 @@ -433,6 +433,12 @@ xencomm_arch_hypercall_kexec_op(int cmd, xencomm_arch_hypercall_kexec_op(int cmd, struct xencomm_handle *arg) { return _hypercall2(int, kexec_op, cmd, arg); +} + +static inline int +xencomm_arch_hypercall_tmem_op(struct xencomm_handle *arg) +{ + return _hypercall1(int, tmem_op, arg); } // for balloon driver @@ -455,6 +461,7 @@ xencomm_arch_hypercall_kexec_op(int cmd, #define HYPERVISOR_vcpu_op xencomm_hypercall_vcpu_op #define HYPERVISOR_opt_feature xencomm_hypercall_opt_feature #define HYPERVISOR_kexec_op xencomm_hypercall_kexec_op +#define HYPERVISOR_tmem_op xencomm_hypercall_tmem_op /* to compile gnttab_copy_grant_page() in drivers/xen/core/gnttab.c */ #define HYPERVISOR_mmu_update(req, count, success_count, domid) ({BUG();0;}) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |