[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] [IA64] implement xencomm routine for HVMOP_track_dirty_vram.
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |