[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.