|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [linux-2.6.18-xen] [IA64] implement xencomm routine for
# HG changeset patch
# User Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
# Date 1210642929 -32400
# Node ID e5933404dadad1fb144b8cc29caad044cc54a491
# Parent f6fcc65413aee0da4b6b1df03a876342fd526667
[IA64] implement xencomm routine for HVMOP_track_dirty_vram.
This patches implement xencomm routine for HVMOP_track_dirty_vram hypercall.
Without this, using vfb results in annoying messages in dom0 as
> xencomm_privcmd_hvm_op: unknown HVMOP 6
xen/ia64 doesn't implement the hypercall at this moment so that
it simply returns -ENOSYS. So the xencomm routine returns -ENOSYS
directly without issuing the useless hypercall.
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
arch/ia64/xen/xcom_privcmd.c | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+)
diff -r f6fcc65413ae -r e5933404dada arch/ia64/xen/xcom_privcmd.c
--- a/arch/ia64/xen/xcom_privcmd.c Tue May 13 10:38:04 2008 +0900
+++ b/arch/ia64/xen/xcom_privcmd.c Tue May 13 10:42:09 2008 +0900
@@ -661,6 +661,41 @@ xencomm_privcmd_event_channel_op(privcmd
}
static int
+xencomm_privcmd_hvm_op_track_dirty_vram(privcmd_hypercall_t *hypercall)
+{
+#if 1
+ /*
+ * At this moment HVMOP_track_dirty_vram isn't implemented
+ * on xen/ia64 so that it just returns -ENOSYS.
+ * Don't issue hypercall to get -ENOSYS.
+ * When the hypercall is implemented, enable the following codes.
+ */
+ return -ENOSYS;
+#else
+ int cmd = hypercall->arg[0];
+ struct xen_hvm_track_dirty_vram *user_op = (void*)hypercall->arg[1];
+ struct xen_hvm_track_dirty_vram kern_op;
+ struct xencomm_handle *desc;
+ struct xencomm_handle *bitmap_desc;
+ int ret;
+
+ BUG_ON(cmd != HVMOP_track_dirty_vram);
+ if (copy_from_user(&kern_op, user_op, sizeof(kern_op)))
+ return -EFAULT;
+ desc = xencomm_map_no_alloc(&kern_op, sizeof(kern_op));
+ bitmap_desc = xencomm_map(xen_guest_handle(kern_op.dirty_bitmap),
+ kern_op.nr * sizeof(uint8_t));
+ if (bitmap_desc == NULL)
+ return -ENOMEM;
+ set_xen_guest_handle(kern_op.dirty_bitmap, (void*)bitmap_desc);
+ ret = xencomm_arch_hypercall_hvm_op(cmd, desc);
+ xencomm_free(bitmap_desc);
+
+ return ret;
+#endif
+}
+
+static int
xencomm_privcmd_hvm_op(privcmd_hypercall_t *hypercall)
{
int cmd = hypercall->arg[0];
@@ -682,6 +717,9 @@ xencomm_privcmd_hvm_op(privcmd_hypercall
case HVMOP_set_pci_link_route:
argsize = sizeof(xen_hvm_set_pci_link_route_t);
break;
+
+ case HVMOP_track_dirty_vram:
+ return xencomm_privcmd_hvm_op_track_dirty_vram(hypercall);
default:
printk("%s: unknown HVMOP %d\n", __func__, cmd);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [linux-2.6.18-xen] [IA64] implement xencomm routine for HVMOP_track_dirty_vram.,
Xen patchbot-linux-2.6.18-xen <=
|
|
|
|
|