[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxc: pass an xc_interface handle to page locking functions
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1287416638 -3600 # Node ID 490b7420deba4de382559d2bee3b881caa4c4f21 # Parent 86cf01f3d737445f274b579e7bc0fa647b017e65 libxc: pass an xc_interface handle to page locking functions Not actually used here but useful to confirm that a handle is passed down to each location where it will be required once we switch to hypercall buffers. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- tools/libxc/xc_acm.c | 4 - tools/libxc/xc_cpupool.c | 8 +-- tools/libxc/xc_domain.c | 62 ++++++++++++------------- tools/libxc/xc_domain_restore.c | 6 +- tools/libxc/xc_domain_save.c | 6 +- tools/libxc/xc_evtchn.c | 4 - tools/libxc/xc_flask.c | 4 - tools/libxc/xc_linux.c | 8 +-- tools/libxc/xc_misc.c | 96 ++++++++++++++++++++-------------------- tools/libxc/xc_offline_page.c | 16 +++--- tools/libxc/xc_pm.c | 38 +++++++-------- tools/libxc/xc_private.c | 90 +++++++++++++++++++------------------ tools/libxc/xc_private.h | 22 ++++----- tools/libxc/xc_resume.c | 4 - tools/libxc/xc_tbuf.c | 4 - tools/libxc/xc_tmem.c | 12 ++--- 16 files changed, 193 insertions(+), 191 deletions(-) diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_acm.c --- a/tools/libxc/xc_acm.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_acm.c Mon Oct 18 16:43:58 2010 +0100 @@ -92,7 +92,7 @@ int xc_acm_op(xc_interface *xch, int cmd hypercall.op = __HYPERVISOR_xsm_op; hypercall.arg[0] = (unsigned long)&acmctl; - if ( lock_pages(&acmctl, sizeof(acmctl)) != 0) + if ( lock_pages(xch, &acmctl, sizeof(acmctl)) != 0) { PERROR("Could not lock memory for Xen hypercall"); return -EFAULT; @@ -103,7 +103,7 @@ int xc_acm_op(xc_interface *xch, int cmd DPRINTF("acmctl operation failed -- need to" " rebuild the user-space tool set?\n"); } - unlock_pages(&acmctl, sizeof(acmctl)); + unlock_pages(xch, &acmctl, sizeof(acmctl)); switch (cmd) { case ACMOP_getdecision: { diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_cpupool.c --- a/tools/libxc/xc_cpupool.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_cpupool.c Mon Oct 18 16:43:58 2010 +0100 @@ -85,13 +85,13 @@ int xc_cpupool_getinfo(xc_interface *xch set_xen_guest_handle(sysctl.u.cpupool_op.cpumap.bitmap, local); sysctl.u.cpupool_op.cpumap.nr_cpus = sizeof(info->cpumap) * 8; - if ( (err = lock_pages(local, sizeof(local))) != 0 ) + if ( (err = lock_pages(xch, local, sizeof(local))) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); break; } err = do_sysctl_save(xch, &sysctl); - unlock_pages(local, sizeof (local)); + unlock_pages(xch, local, sizeof (local)); if ( err < 0 ) break; @@ -161,14 +161,14 @@ int xc_cpupool_freeinfo(xc_interface *xc set_xen_guest_handle(sysctl.u.cpupool_op.cpumap.bitmap, local); sysctl.u.cpupool_op.cpumap.nr_cpus = sizeof(*cpumap) * 8; - if ( (err = lock_pages(local, sizeof(local))) != 0 ) + if ( (err = lock_pages(xch, local, sizeof(local))) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); return err; } err = do_sysctl_save(xch, &sysctl); - unlock_pages(local, sizeof (local)); + unlock_pages(xch, local, sizeof (local)); if (err < 0) return err; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_domain.c --- a/tools/libxc/xc_domain.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_domain.c Mon Oct 18 16:43:58 2010 +0100 @@ -94,7 +94,7 @@ int xc_domain_shutdown(xc_interface *xch arg.domain_id = domid; arg.reason = reason; - if ( lock_pages(&arg, sizeof(arg)) != 0 ) + if ( lock_pages(xch, &arg, sizeof(arg)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out1; @@ -102,7 +102,7 @@ int xc_domain_shutdown(xc_interface *xch ret = do_xen_hypercall(xch, &hypercall); - unlock_pages(&arg, sizeof(arg)); + unlock_pages(xch, &arg, sizeof(arg)); out1: return ret; @@ -133,7 +133,7 @@ int xc_vcpu_setaffinity(xc_interface *xc domctl.u.vcpuaffinity.cpumap.nr_cpus = cpusize * 8; - if ( lock_pages(local, cpusize) != 0 ) + if ( lock_pages(xch, local, cpusize) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out; @@ -141,7 +141,7 @@ int xc_vcpu_setaffinity(xc_interface *xc ret = do_domctl(xch, &domctl); - unlock_pages(local, cpusize); + unlock_pages(xch, local, cpusize); out: free(local); @@ -172,7 +172,7 @@ int xc_vcpu_getaffinity(xc_interface *xc set_xen_guest_handle(domctl.u.vcpuaffinity.cpumap.bitmap, local); domctl.u.vcpuaffinity.cpumap.nr_cpus = cpusize * 8; - if ( lock_pages(local, sizeof(local)) != 0 ) + if ( lock_pages(xch, local, sizeof(local)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out; @@ -180,7 +180,7 @@ int xc_vcpu_getaffinity(xc_interface *xc ret = do_domctl(xch, &domctl); - unlock_pages(local, sizeof (local)); + unlock_pages(xch, local, sizeof (local)); bitmap_byte_to_64(cpumap, local, cpusize * 8); out: free(local); @@ -257,7 +257,7 @@ int xc_domain_getinfolist(xc_interface * int ret = 0; DECLARE_SYSCTL; - if ( lock_pages(info, max_domains*sizeof(xc_domaininfo_t)) != 0 ) + if ( lock_pages(xch, info, max_domains*sizeof(xc_domaininfo_t)) != 0 ) return -1; sysctl.cmd = XEN_SYSCTL_getdomaininfolist; @@ -270,7 +270,7 @@ int xc_domain_getinfolist(xc_interface * else ret = sysctl.u.getdomaininfolist.num_domains; - unlock_pages(info, max_domains*sizeof(xc_domaininfo_t)); + unlock_pages(xch, info, max_domains*sizeof(xc_domaininfo_t)); return ret; } @@ -290,13 +290,13 @@ int xc_domain_hvm_getcontext(xc_interfac set_xen_guest_handle(domctl.u.hvmcontext.buffer, ctxt_buf); if ( ctxt_buf ) - if ( (ret = lock_pages(ctxt_buf, size)) != 0 ) + if ( (ret = lock_pages(xch, ctxt_buf, size)) != 0 ) return ret; ret = do_domctl(xch, &domctl); if ( ctxt_buf ) - unlock_pages(ctxt_buf, size); + unlock_pages(xch, ctxt_buf, size); return (ret < 0 ? -1 : domctl.u.hvmcontext.size); } @@ -322,13 +322,13 @@ int xc_domain_hvm_getcontext_partial(xc_ domctl.u.hvmcontext_partial.instance = instance; set_xen_guest_handle(domctl.u.hvmcontext_partial.buffer, ctxt_buf); - if ( (ret = lock_pages(ctxt_buf, size)) != 0 ) + if ( (ret = lock_pages(xch, ctxt_buf, size)) != 0 ) return ret; ret = do_domctl(xch, &domctl); if ( ctxt_buf ) - unlock_pages(ctxt_buf, size); + unlock_pages(xch, ctxt_buf, size); return ret ? -1 : 0; } @@ -347,12 +347,12 @@ int xc_domain_hvm_setcontext(xc_interfac domctl.u.hvmcontext.size = size; set_xen_guest_handle(domctl.u.hvmcontext.buffer, ctxt_buf); - if ( (ret = lock_pages(ctxt_buf, size)) != 0 ) + if ( (ret = lock_pages(xch, ctxt_buf, size)) != 0 ) return ret; ret = do_domctl(xch, &domctl); - unlock_pages(ctxt_buf, size); + unlock_pages(xch, ctxt_buf, size); return ret; } @@ -372,10 +372,10 @@ int xc_vcpu_getcontext(xc_interface *xch set_xen_guest_handle(domctl.u.vcpucontext.ctxt, &ctxt->c); - if ( (rc = lock_pages(ctxt, sz)) != 0 ) + if ( (rc = lock_pages(xch, ctxt, sz)) != 0 ) return rc; rc = do_domctl(xch, &domctl); - unlock_pages(ctxt, sz); + unlock_pages(xch, ctxt, sz); return rc; } @@ -394,7 +394,7 @@ int xc_watchdog(xc_interface *xch, arg.id = id; arg.timeout = timeout; - if ( lock_pages(&arg, sizeof(arg)) != 0 ) + if ( lock_pages(xch, &arg, sizeof(arg)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out1; @@ -402,7 +402,7 @@ int xc_watchdog(xc_interface *xch, ret = do_xen_hypercall(xch, &hypercall); - unlock_pages(&arg, sizeof(arg)); + unlock_pages(xch, &arg, sizeof(arg)); out1: return ret; @@ -488,7 +488,7 @@ int xc_domain_set_memmap_limit(xc_interf set_xen_guest_handle(fmap.map.buffer, &e820); - if ( lock_pages(&fmap, sizeof(fmap)) || lock_pages(&e820, sizeof(e820)) ) + if ( lock_pages(xch, &fmap, sizeof(fmap)) || lock_pages(xch, &e820, sizeof(e820)) ) { PERROR("Could not lock memory for Xen hypercall"); rc = -1; @@ -498,8 +498,8 @@ int xc_domain_set_memmap_limit(xc_interf rc = xc_memory_op(xch, XENMEM_set_memory_map, &fmap); out: - unlock_pages(&fmap, sizeof(fmap)); - unlock_pages(&e820, sizeof(e820)); + unlock_pages(xch, &fmap, sizeof(fmap)); + unlock_pages(xch, &e820, sizeof(e820)); return rc; } #else @@ -564,7 +564,7 @@ int xc_domain_get_tsc_info(xc_interface domctl.cmd = XEN_DOMCTL_gettscinfo; domctl.domain = (domid_t)domid; set_xen_guest_handle(domctl.u.tsc_info.out_info, &info); - if ( (rc = lock_pages(&info, sizeof(info))) != 0 ) + if ( (rc = lock_pages(xch, &info, sizeof(info))) != 0 ) return rc; rc = do_domctl(xch, &domctl); if ( rc == 0 ) @@ -574,7 +574,7 @@ int xc_domain_get_tsc_info(xc_interface *gtsc_khz = info.gtsc_khz; *incarnation = info.incarnation; } - unlock_pages(&info,sizeof(info)); + unlock_pages(xch, &info,sizeof(info)); return rc; } @@ -849,11 +849,11 @@ int xc_vcpu_setcontext(xc_interface *xch domctl.u.vcpucontext.vcpu = vcpu; set_xen_guest_handle(domctl.u.vcpucontext.ctxt, &ctxt->c); - if ( (rc = lock_pages(ctxt, sz)) != 0 ) + if ( (rc = lock_pages(xch, ctxt, sz)) != 0 ) return rc; rc = do_domctl(xch, &domctl); - unlock_pages(ctxt, sz); + unlock_pages(xch, ctxt, sz); return rc; } @@ -917,10 +917,10 @@ int xc_set_hvm_param(xc_interface *handl arg.domid = dom; arg.index = param; arg.value = value; - if ( lock_pages(&arg, sizeof(arg)) != 0 ) + if ( lock_pages(handle, &arg, sizeof(arg)) != 0 ) return -1; rc = do_xen_hypercall(handle, &hypercall); - unlock_pages(&arg, sizeof(arg)); + unlock_pages(handle, &arg, sizeof(arg)); return rc; } @@ -935,10 +935,10 @@ int xc_get_hvm_param(xc_interface *handl hypercall.arg[1] = (unsigned long)&arg; arg.domid = dom; arg.index = param; - if ( lock_pages(&arg, sizeof(arg)) != 0 ) + if ( lock_pages(handle, &arg, sizeof(arg)) != 0 ) return -1; rc = do_xen_hypercall(handle, &hypercall); - unlock_pages(&arg, sizeof(arg)); + unlock_pages(handle, &arg, sizeof(arg)); *value = arg.value; return rc; } @@ -988,13 +988,13 @@ int xc_get_device_group( set_xen_guest_handle(domctl.u.get_device_group.sdev_array, sdev_array); - if ( lock_pages(sdev_array, max_sdevs * sizeof(*sdev_array)) != 0 ) + if ( lock_pages(xch, sdev_array, max_sdevs * sizeof(*sdev_array)) != 0 ) { PERROR("Could not lock memory for xc_get_device_group"); return -ENOMEM; } rc = do_domctl(xch, &domctl); - unlock_pages(sdev_array, max_sdevs * sizeof(*sdev_array)); + unlock_pages(xch, sdev_array, max_sdevs * sizeof(*sdev_array)); *num_sdevs = domctl.u.get_device_group.num_sdevs; return rc; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_domain_restore.c --- a/tools/libxc/xc_domain_restore.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_domain_restore.c Mon Oct 18 16:43:58 2010 +0100 @@ -1181,13 +1181,13 @@ int xc_domain_restore(xc_interface *xch, memset(ctx->p2m_batch, 0, ROUNDUP(MAX_BATCH_SIZE * sizeof(xen_pfn_t), PAGE_SHIFT)); - if ( lock_pages(region_mfn, sizeof(xen_pfn_t) * MAX_BATCH_SIZE) ) + if ( lock_pages(xch, region_mfn, sizeof(xen_pfn_t) * MAX_BATCH_SIZE) ) { PERROR("Could not lock region_mfn"); goto out; } - if ( lock_pages(ctx->p2m_batch, sizeof(xen_pfn_t) * MAX_BATCH_SIZE) ) + if ( lock_pages(xch, ctx->p2m_batch, sizeof(xen_pfn_t) * MAX_BATCH_SIZE) ) { ERROR("Could not lock p2m_batch"); goto out; @@ -1547,7 +1547,7 @@ int xc_domain_restore(xc_interface *xch, } } - if ( lock_pages(&ctxt, sizeof(ctxt)) ) + if ( lock_pages(xch, &ctxt, sizeof(ctxt)) ) { PERROR("Unable to lock ctxt"); return 1; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_domain_save.c --- a/tools/libxc/xc_domain_save.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_domain_save.c Mon Oct 18 16:43:58 2010 +0100 @@ -1046,14 +1046,14 @@ int xc_domain_save(xc_interface *xch, in memset(to_send, 0xff, BITMAP_SIZE); - if ( lock_pages(to_send, BITMAP_SIZE) ) + if ( lock_pages(xch, to_send, BITMAP_SIZE) ) { PERROR("Unable to lock to_send"); return 1; } /* (to fix is local only) */ - if ( lock_pages(to_skip, BITMAP_SIZE) ) + if ( lock_pages(xch, to_skip, BITMAP_SIZE) ) { PERROR("Unable to lock to_skip"); return 1; @@ -1091,7 +1091,7 @@ int xc_domain_save(xc_interface *xch, in memset(pfn_type, 0, ROUNDUP(MAX_BATCH_SIZE * sizeof(*pfn_type), PAGE_SHIFT)); - if ( lock_pages(pfn_type, MAX_BATCH_SIZE * sizeof(*pfn_type)) ) + if ( lock_pages(xch, pfn_type, MAX_BATCH_SIZE * sizeof(*pfn_type)) ) { PERROR("Unable to lock pfn_type array"); goto out; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_evtchn.c --- a/tools/libxc/xc_evtchn.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_evtchn.c Mon Oct 18 16:43:58 2010 +0100 @@ -33,7 +33,7 @@ static int do_evtchn_op(xc_interface *xc hypercall.arg[0] = cmd; hypercall.arg[1] = (unsigned long)arg; - if ( lock_pages(arg, arg_size) != 0 ) + if ( lock_pages(xch, arg, arg_size) != 0 ) { PERROR("do_evtchn_op: arg lock failed"); goto out; @@ -42,7 +42,7 @@ static int do_evtchn_op(xc_interface *xc if ((ret = do_xen_hypercall(xch, &hypercall)) < 0 && !silently_fail) ERROR("do_evtchn_op: HYPERVISOR_event_channel_op failed: %d", ret); - unlock_pages(arg, arg_size); + unlock_pages(xch, arg, arg_size); out: return ret; } diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_flask.c --- a/tools/libxc/xc_flask.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_flask.c Mon Oct 18 16:43:58 2010 +0100 @@ -44,7 +44,7 @@ int xc_flask_op(xc_interface *xch, flask hypercall.op = __HYPERVISOR_xsm_op; hypercall.arg[0] = (unsigned long)op; - if ( lock_pages(op, sizeof(*op)) != 0 ) + if ( lock_pages(xch, op, sizeof(*op)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out; @@ -56,7 +56,7 @@ int xc_flask_op(xc_interface *xch, flask fprintf(stderr, "XSM operation failed!\n"); } - unlock_pages(op, sizeof(*op)); + unlock_pages(xch, op, sizeof(*op)); out: return ret; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_linux.c --- a/tools/libxc/xc_linux.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_linux.c Mon Oct 18 16:43:58 2010 +0100 @@ -618,7 +618,7 @@ int xc_gnttab_op(xc_interface *xch, int hypercall.arg[1] = (unsigned long)op; hypercall.arg[2] = count; - if ( lock_pages(op, count* op_size) != 0 ) + if ( lock_pages(xch, op, count* op_size) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out1; @@ -626,7 +626,7 @@ int xc_gnttab_op(xc_interface *xch, int ret = do_xen_hypercall(xch, &hypercall); - unlock_pages(op, count * op_size); + unlock_pages(xch, op, count * op_size); out1: return ret; @@ -670,7 +670,7 @@ static void *_gnttab_map_table(xc_interf *gnt_num = query.nr_frames * (PAGE_SIZE / sizeof(grant_entry_v1_t) ); frame_list = malloc(query.nr_frames * sizeof(unsigned long)); - if ( !frame_list || lock_pages(frame_list, + if ( !frame_list || lock_pages(xch, frame_list, query.nr_frames * sizeof(unsigned long)) ) { ERROR("Alloc/lock frame_list in xc_gnttab_map_table\n"); @@ -714,7 +714,7 @@ err: err: if ( frame_list ) { - unlock_pages(frame_list, query.nr_frames * sizeof(unsigned long)); + unlock_pages(xch, frame_list, query.nr_frames * sizeof(unsigned long)); free(frame_list); } if ( pfn_list ) diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_misc.c --- a/tools/libxc/xc_misc.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_misc.c Mon Oct 18 16:43:58 2010 +0100 @@ -42,7 +42,7 @@ int xc_readconsolering(xc_interface *xch sysctl.u.readconsole.incremental = incremental; } - if ( (ret = lock_pages(buffer, nr_chars)) != 0 ) + if ( (ret = lock_pages(xch, buffer, nr_chars)) != 0 ) return ret; if ( (ret = do_sysctl(xch, &sysctl)) == 0 ) @@ -52,7 +52,7 @@ int xc_readconsolering(xc_interface *xch *pindex = sysctl.u.readconsole.index; } - unlock_pages(buffer, nr_chars); + unlock_pages(xch, buffer, nr_chars); return ret; } @@ -66,12 +66,12 @@ int xc_send_debug_keys(xc_interface *xch set_xen_guest_handle(sysctl.u.debug_keys.keys, keys); sysctl.u.debug_keys.nr_keys = len; - if ( (ret = lock_pages(keys, len)) != 0 ) + if ( (ret = lock_pages(xch, keys, len)) != 0 ) return ret; ret = do_sysctl(xch, &sysctl); - unlock_pages(keys, len); + unlock_pages(xch, keys, len); return ret; } @@ -154,7 +154,7 @@ int xc_mca_op(xc_interface *xch, struct DECLARE_HYPERCALL; mc->interface_version = XEN_MCA_INTERFACE_VERSION; - if ( lock_pages(mc, sizeof(mc)) ) + if ( lock_pages(xch, mc, sizeof(mc)) ) { PERROR("Could not lock xen_mc memory"); return -EINVAL; @@ -163,7 +163,7 @@ int xc_mca_op(xc_interface *xch, struct hypercall.op = __HYPERVISOR_mca; hypercall.arg[0] = (unsigned long)mc; ret = do_xen_hypercall(xch, &hypercall); - unlock_pages(mc, sizeof(mc)); + unlock_pages(xch, mc, sizeof(mc)); return ret; } #endif @@ -227,12 +227,12 @@ int xc_getcpuinfo(xc_interface *xch, int sysctl.u.getcpuinfo.max_cpus = max_cpus; set_xen_guest_handle(sysctl.u.getcpuinfo.info, info); - if ( (rc = lock_pages(info, max_cpus*sizeof(*info))) != 0 ) + if ( (rc = lock_pages(xch, info, max_cpus*sizeof(*info))) != 0 ) return rc; rc = do_sysctl(xch, &sysctl); - unlock_pages(info, max_cpus*sizeof(*info)); + unlock_pages(xch, info, max_cpus*sizeof(*info)); if ( nr_cpus ) *nr_cpus = sysctl.u.getcpuinfo.nr_cpus; @@ -250,7 +250,7 @@ int xc_hvm_set_pci_intx_level( struct xen_hvm_set_pci_intx_level _arg, *arg = &_arg; int rc; - if ( (rc = hcall_buf_prep((void **)&arg, sizeof(*arg))) != 0 ) + if ( (rc = hcall_buf_prep(xch, (void **)&arg, sizeof(*arg))) != 0 ) { PERROR("Could not lock memory"); return rc; @@ -269,7 +269,7 @@ int xc_hvm_set_pci_intx_level( rc = do_xen_hypercall(xch, &hypercall); - hcall_buf_release((void **)&arg, sizeof(*arg)); + hcall_buf_release(xch, (void **)&arg, sizeof(*arg)); return rc; } @@ -283,7 +283,7 @@ int xc_hvm_set_isa_irq_level( struct xen_hvm_set_isa_irq_level _arg, *arg = &_arg; int rc; - if ( (rc = hcall_buf_prep((void **)&arg, sizeof(*arg))) != 0 ) + if ( (rc = hcall_buf_prep(xch, (void **)&arg, sizeof(*arg))) != 0 ) { PERROR("Could not lock memory"); return rc; @@ -299,7 +299,7 @@ int xc_hvm_set_isa_irq_level( rc = do_xen_hypercall(xch, &hypercall); - hcall_buf_release((void **)&arg, sizeof(*arg)); + hcall_buf_release(xch, (void **)&arg, sizeof(*arg)); return rc; } @@ -319,15 +319,15 @@ int xc_hvm_set_pci_link_route( arg.link = link; arg.isa_irq = isa_irq; - if ( (rc = lock_pages(&arg, sizeof(arg))) != 0 ) - { - PERROR("Could not lock memory"); - return rc; - } - - rc = do_xen_hypercall(xch, &hypercall); - - unlock_pages(&arg, sizeof(arg)); + if ( (rc = lock_pages(xch, &arg, sizeof(arg))) != 0 ) + { + PERROR("Could not lock memory"); + return rc; + } + + rc = do_xen_hypercall(xch, &hypercall); + + unlock_pages(xch, &arg, sizeof(arg)); return rc; } @@ -350,15 +350,15 @@ int xc_hvm_track_dirty_vram( arg.nr = nr; set_xen_guest_handle(arg.dirty_bitmap, (uint8_t *)dirty_bitmap); - if ( (rc = lock_pages(&arg, sizeof(arg))) != 0 ) - { - PERROR("Could not lock memory"); - return rc; - } - - rc = do_xen_hypercall(xch, &hypercall); - - unlock_pages(&arg, sizeof(arg)); + if ( (rc = lock_pages(xch, &arg, sizeof(arg))) != 0 ) + { + PERROR("Could not lock memory"); + return rc; + } + + rc = do_xen_hypercall(xch, &hypercall); + + unlock_pages(xch, &arg, sizeof(arg)); return rc; } @@ -378,15 +378,15 @@ int xc_hvm_modified_memory( arg.first_pfn = first_pfn; arg.nr = nr; - if ( (rc = lock_pages(&arg, sizeof(arg))) != 0 ) - { - PERROR("Could not lock memory"); - return rc; - } - - rc = do_xen_hypercall(xch, &hypercall); - - unlock_pages(&arg, sizeof(arg)); + if ( (rc = lock_pages(xch, &arg, sizeof(arg))) != 0 ) + { + PERROR("Could not lock memory"); + return rc; + } + + rc = do_xen_hypercall(xch, &hypercall); + + unlock_pages(xch, &arg, sizeof(arg)); return rc; } @@ -407,15 +407,15 @@ int xc_hvm_set_mem_type( arg.first_pfn = first_pfn; arg.nr = nr; - if ( (rc = lock_pages(&arg, sizeof(arg))) != 0 ) - { - PERROR("Could not lock memory"); - return rc; - } - - rc = do_xen_hypercall(xch, &hypercall); - - unlock_pages(&arg, sizeof(arg)); + if ( (rc = lock_pages(xch, &arg, sizeof(arg))) != 0 ) + { + PERROR("Could not lock memory"); + return rc; + } + + rc = do_xen_hypercall(xch, &hypercall); + + unlock_pages(xch, &arg, sizeof(arg)); return rc; } diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_offline_page.c --- a/tools/libxc/xc_offline_page.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_offline_page.c Mon Oct 18 16:43:58 2010 +0100 @@ -71,7 +71,7 @@ int xc_mark_page_online(xc_interface *xc if ( !status || (end < start) ) return -EINVAL; - if (lock_pages(status, sizeof(uint32_t)*(end - start + 1))) + if (lock_pages(xch, status, sizeof(uint32_t)*(end - start + 1))) { ERROR("Could not lock memory for xc_mark_page_online\n"); return -EINVAL; @@ -84,7 +84,7 @@ int xc_mark_page_online(xc_interface *xc set_xen_guest_handle(sysctl.u.page_offline.status, status); ret = xc_sysctl(xch, &sysctl); - unlock_pages(status, sizeof(uint32_t)*(end - start + 1)); + unlock_pages(xch, status, sizeof(uint32_t)*(end - start + 1)); return ret; } @@ -98,7 +98,7 @@ int xc_mark_page_offline(xc_interface *x if ( !status || (end < start) ) return -EINVAL; - if (lock_pages(status, sizeof(uint32_t)*(end - start + 1))) + if (lock_pages(xch, status, sizeof(uint32_t)*(end - start + 1))) { ERROR("Could not lock memory for xc_mark_page_offline"); return -EINVAL; @@ -111,7 +111,7 @@ int xc_mark_page_offline(xc_interface *x set_xen_guest_handle(sysctl.u.page_offline.status, status); ret = xc_sysctl(xch, &sysctl); - unlock_pages(status, sizeof(uint32_t)*(end - start + 1)); + unlock_pages(xch, status, sizeof(uint32_t)*(end - start + 1)); return ret; } @@ -125,7 +125,7 @@ int xc_query_page_offline_status(xc_inte if ( !status || (end < start) ) return -EINVAL; - if (lock_pages(status, sizeof(uint32_t)*(end - start + 1))) + if (lock_pages(xch, status, sizeof(uint32_t)*(end - start + 1))) { ERROR("Could not lock memory for xc_query_page_offline_status\n"); return -EINVAL; @@ -138,7 +138,7 @@ int xc_query_page_offline_status(xc_inte set_xen_guest_handle(sysctl.u.page_offline.status, status); ret = xc_sysctl(xch, &sysctl); - unlock_pages(status, sizeof(uint32_t)*(end - start + 1)); + unlock_pages(xch, status, sizeof(uint32_t)*(end - start + 1)); return ret; } @@ -291,7 +291,7 @@ static int init_mem_info(xc_interface *x minfo->pfn_type[i] = pfn_to_mfn(i, minfo->p2m_table, minfo->guest_width); - if ( lock_pages(minfo->pfn_type, minfo->p2m_size * sizeof(*minfo->pfn_type)) ) + if ( lock_pages(xch, minfo->pfn_type, minfo->p2m_size * sizeof(*minfo->pfn_type)) ) { ERROR("Unable to lock pfn_type array"); goto failed; @@ -310,7 +310,7 @@ static int init_mem_info(xc_interface *x return 0; unlock: - unlock_pages(minfo->pfn_type, minfo->p2m_size * sizeof(*minfo->pfn_type)); + unlock_pages(xch, minfo->pfn_type, minfo->p2m_size * sizeof(*minfo->pfn_type)); failed: if (minfo->pfn_type) { diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_pm.c --- a/tools/libxc/xc_pm.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_pm.c Mon Oct 18 16:43:58 2010 +0100 @@ -53,14 +53,14 @@ int xc_pm_get_pxstat(xc_interface *xch, if ( (ret = xc_pm_get_max_px(xch, cpuid, &max_px)) != 0) return ret; - if ( (ret = lock_pages(pxpt->trans_pt, + if ( (ret = lock_pages(xch, pxpt->trans_pt, max_px * max_px * sizeof(uint64_t))) != 0 ) return ret; - if ( (ret = lock_pages(pxpt->pt, + if ( (ret = lock_pages(xch, pxpt->pt, max_px * sizeof(struct xc_px_val))) != 0 ) { - unlock_pages(pxpt->trans_pt, max_px * max_px * sizeof(uint64_t)); + unlock_pages(xch, pxpt->trans_pt, max_px * max_px * sizeof(uint64_t)); return ret; } @@ -75,8 +75,8 @@ int xc_pm_get_pxstat(xc_interface *xch, ret = xc_sysctl(xch, &sysctl); if ( ret ) { - unlock_pages(pxpt->trans_pt, max_px * max_px * sizeof(uint64_t)); - unlock_pages(pxpt->pt, max_px * sizeof(struct xc_px_val)); + unlock_pages(xch, pxpt->trans_pt, max_px * max_px * sizeof(uint64_t)); + unlock_pages(xch, pxpt->pt, max_px * sizeof(struct xc_px_val)); return ret; } @@ -85,8 +85,8 @@ int xc_pm_get_pxstat(xc_interface *xch, pxpt->last = sysctl.u.get_pmstat.u.getpx.last; pxpt->cur = sysctl.u.get_pmstat.u.getpx.cur; - unlock_pages(pxpt->trans_pt, max_px * max_px * sizeof(uint64_t)); - unlock_pages(pxpt->pt, max_px * sizeof(struct xc_px_val)); + unlock_pages(xch, pxpt->trans_pt, max_px * max_px * sizeof(uint64_t)); + unlock_pages(xch, pxpt->pt, max_px * sizeof(struct xc_px_val)); return ret; } @@ -128,11 +128,11 @@ int xc_pm_get_cxstat(xc_interface *xch, if ( (ret = xc_pm_get_max_cx(xch, cpuid, &max_cx)) ) goto unlock_0; - if ( (ret = lock_pages(cxpt, sizeof(struct xc_cx_stat))) ) + if ( (ret = lock_pages(xch, cxpt, sizeof(struct xc_cx_stat))) ) goto unlock_0; - if ( (ret = lock_pages(cxpt->triggers, max_cx * sizeof(uint64_t))) ) + if ( (ret = lock_pages(xch, cxpt->triggers, max_cx * sizeof(uint64_t))) ) goto unlock_1; - if ( (ret = lock_pages(cxpt->residencies, max_cx * sizeof(uint64_t))) ) + if ( (ret = lock_pages(xch, cxpt->residencies, max_cx * sizeof(uint64_t))) ) goto unlock_2; sysctl.cmd = XEN_SYSCTL_get_pmstat; @@ -155,11 +155,11 @@ int xc_pm_get_cxstat(xc_interface *xch, cxpt->cc6 = sysctl.u.get_pmstat.u.getcx.cc6; unlock_3: - unlock_pages(cxpt->residencies, max_cx * sizeof(uint64_t)); + unlock_pages(xch, cxpt->residencies, max_cx * sizeof(uint64_t)); unlock_2: - unlock_pages(cxpt->triggers, max_cx * sizeof(uint64_t)); + unlock_pages(xch, cxpt->triggers, max_cx * sizeof(uint64_t)); unlock_1: - unlock_pages(cxpt, sizeof(struct xc_cx_stat)); + unlock_pages(xch, cxpt, sizeof(struct xc_cx_stat)); unlock_0: return ret; } @@ -200,13 +200,13 @@ int xc_get_cpufreq_para(xc_interface *xc (!user_para->scaling_available_governors) ) return -EINVAL; - if ( (ret = lock_pages(user_para->affected_cpus, + if ( (ret = lock_pages(xch, user_para->affected_cpus, user_para->cpu_num * sizeof(uint32_t))) ) goto unlock_1; - if ( (ret = lock_pages(user_para->scaling_available_frequencies, + if ( (ret = lock_pages(xch, user_para->scaling_available_frequencies, user_para->freq_num * sizeof(uint32_t))) ) goto unlock_2; - if ( (ret = lock_pages(user_para->scaling_available_governors, + if ( (ret = lock_pages(xch, user_para->scaling_available_governors, user_para->gov_num * CPUFREQ_NAME_LEN * sizeof(char))) ) goto unlock_3; @@ -263,13 +263,13 @@ int xc_get_cpufreq_para(xc_interface *xc } unlock_4: - unlock_pages(user_para->scaling_available_governors, + unlock_pages(xch, user_para->scaling_available_governors, user_para->gov_num * CPUFREQ_NAME_LEN * sizeof(char)); unlock_3: - unlock_pages(user_para->scaling_available_frequencies, + unlock_pages(xch, user_para->scaling_available_frequencies, user_para->freq_num * sizeof(uint32_t)); unlock_2: - unlock_pages(user_para->affected_cpus, + unlock_pages(xch, user_para->affected_cpus, user_para->cpu_num * sizeof(uint32_t)); unlock_1: return ret; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_private.c --- a/tools/libxc/xc_private.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_private.c Mon Oct 18 16:43:58 2010 +0100 @@ -71,7 +71,7 @@ xc_interface *xc_interface_open(xentooll return 0; } -static void xc_clean_hcall_buf(void); +static void xc_clean_hcall_buf(xc_interface *xch); int xc_interface_close(xc_interface *xch) { @@ -85,7 +85,7 @@ int xc_interface_close(xc_interface *xch if (rc) PERROR("Could not close hypervisor interface"); } - xc_clean_hcall_buf(); + xc_clean_hcall_buf(xch); free(xch); return rc; @@ -193,17 +193,17 @@ void xc_report_progress_step(xc_interfac #ifdef __sun__ -int lock_pages(void *addr, size_t len) { return 0; } -void unlock_pages(void *addr, size_t len) { } - -int hcall_buf_prep(void **addr, size_t len) { return 0; } -void hcall_buf_release(void **addr, size_t len) { } - -static void xc_clean_hcall_buf(void) { } +int lock_pages(xc_interface *xch, void *addr, size_t len) { return 0; } +void unlock_pages(xc_interface *xch, void *addr, size_t len) { } + +int hcall_buf_prep(xc_interface *xch, void **addr, size_t len) { return 0; } +void hcall_buf_release(xc_interface *xch, void **addr, size_t len) { } + +static void xc_clean_hcall_buf(xc_interface *xch) { } #else /* !__sun__ */ -int lock_pages(void *addr, size_t len) +int lock_pages(xc_interface *xch, void *addr, size_t len) { int e; void *laddr = (void *)((unsigned long)addr & PAGE_MASK); @@ -213,7 +213,7 @@ int lock_pages(void *addr, size_t len) return e; } -void unlock_pages(void *addr, size_t len) +void unlock_pages(xc_interface *xch, void *addr, size_t len) { void *laddr = (void *)((unsigned long)addr & PAGE_MASK); size_t llen = (len + ((unsigned long)addr - (unsigned long)laddr) + @@ -226,6 +226,7 @@ static pthread_key_t hcall_buf_pkey; static pthread_key_t hcall_buf_pkey; static pthread_once_t hcall_buf_pkey_once = PTHREAD_ONCE_INIT; struct hcall_buf { + xc_interface *xch; void *buf; void *oldbuf; }; @@ -238,7 +239,7 @@ static void _xc_clean_hcall_buf(void *m) { if ( hcall_buf->buf ) { - unlock_pages(hcall_buf->buf, PAGE_SIZE); + unlock_pages(hcall_buf->xch, hcall_buf->buf, PAGE_SIZE); free(hcall_buf->buf); } @@ -253,14 +254,14 @@ static void _xc_init_hcall_buf(void) pthread_key_create(&hcall_buf_pkey, _xc_clean_hcall_buf); } -static void xc_clean_hcall_buf(void) +static void xc_clean_hcall_buf(xc_interface *xch) { pthread_once(&hcall_buf_pkey_once, _xc_init_hcall_buf); _xc_clean_hcall_buf(pthread_getspecific(hcall_buf_pkey)); } -int hcall_buf_prep(void **addr, size_t len) +int hcall_buf_prep(xc_interface *xch, void **addr, size_t len) { struct hcall_buf *hcall_buf; @@ -272,13 +273,14 @@ int hcall_buf_prep(void **addr, size_t l hcall_buf = calloc(1, sizeof(*hcall_buf)); if ( !hcall_buf ) goto out; + hcall_buf->xch = xch; pthread_setspecific(hcall_buf_pkey, hcall_buf); } if ( !hcall_buf->buf ) { hcall_buf->buf = xc_memalign(PAGE_SIZE, PAGE_SIZE); - if ( !hcall_buf->buf || lock_pages(hcall_buf->buf, PAGE_SIZE) ) + if ( !hcall_buf->buf || lock_pages(xch, hcall_buf->buf, PAGE_SIZE) ) { free(hcall_buf->buf); hcall_buf->buf = NULL; @@ -295,10 +297,10 @@ int hcall_buf_prep(void **addr, size_t l } out: - return lock_pages(*addr, len); -} - -void hcall_buf_release(void **addr, size_t len) + return lock_pages(xch, *addr, len); +} + +void hcall_buf_release(xc_interface *xch, void **addr, size_t len) { struct hcall_buf *hcall_buf = pthread_getspecific(hcall_buf_pkey); @@ -310,7 +312,7 @@ void hcall_buf_release(void **addr, size } else { - unlock_pages(*addr, len); + unlock_pages(xch, *addr, len); } } @@ -337,7 +339,7 @@ int xc_mmuext_op( DECLARE_HYPERCALL; long ret = -EINVAL; - if ( hcall_buf_prep((void **)&op, nr_ops*sizeof(*op)) != 0 ) + if ( hcall_buf_prep(xch, (void **)&op, nr_ops*sizeof(*op)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out1; @@ -351,7 +353,7 @@ int xc_mmuext_op( ret = do_xen_hypercall(xch, &hypercall); - hcall_buf_release((void **)&op, nr_ops*sizeof(*op)); + hcall_buf_release(xch, (void **)&op, nr_ops*sizeof(*op)); out1: return ret; @@ -371,7 +373,7 @@ static int flush_mmu_updates(xc_interfac hypercall.arg[2] = 0; hypercall.arg[3] = mmu->subject; - if ( lock_pages(mmu->updates, sizeof(mmu->updates)) != 0 ) + if ( lock_pages(xch, mmu->updates, sizeof(mmu->updates)) != 0 ) { PERROR("flush_mmu_updates: mmu updates lock_pages failed"); err = 1; @@ -386,7 +388,7 @@ static int flush_mmu_updates(xc_interfac mmu->idx = 0; - unlock_pages(mmu->updates, sizeof(mmu->updates)); + unlock_pages(xch, mmu->updates, sizeof(mmu->updates)); out: return err; @@ -438,38 +440,38 @@ int xc_memory_op(xc_interface *xch, case XENMEM_increase_reservation: case XENMEM_decrease_reservation: case XENMEM_populate_physmap: - if ( lock_pages(reservation, sizeof(*reservation)) != 0 ) + if ( lock_pages(xch, reservation, sizeof(*reservation)) != 0 ) { PERROR("Could not lock"); goto out1; } get_xen_guest_handle(extent_start, reservation->extent_start); if ( (extent_start != NULL) && - (lock_pages(extent_start, + (lock_pages(xch, extent_start, reservation->nr_extents * sizeof(xen_pfn_t)) != 0) ) { PERROR("Could not lock"); - unlock_pages(reservation, sizeof(*reservation)); + unlock_pages(xch, reservation, sizeof(*reservation)); goto out1; } break; case XENMEM_machphys_mfn_list: - if ( lock_pages(xmml, sizeof(*xmml)) != 0 ) + if ( lock_pages(xch, xmml, sizeof(*xmml)) != 0 ) { PERROR("Could not lock"); goto out1; } get_xen_guest_handle(extent_start, xmml->extent_start); - if ( lock_pages(extent_start, + if ( lock_pages(xch, extent_start, xmml->max_extents * sizeof(xen_pfn_t)) != 0 ) { PERROR("Could not lock"); - unlock_pages(xmml, sizeof(*xmml)); + unlock_pages(xch, xmml, sizeof(*xmml)); goto out1; } break; case XENMEM_add_to_physmap: - if ( lock_pages(arg, sizeof(struct xen_add_to_physmap)) ) + if ( lock_pages(xch, arg, sizeof(struct xen_add_to_physmap)) ) { PERROR("Could not lock"); goto out1; @@ -478,7 +480,7 @@ int xc_memory_op(xc_interface *xch, case XENMEM_current_reservation: case XENMEM_maximum_reservation: case XENMEM_maximum_gpfn: - if ( lock_pages(arg, sizeof(domid_t)) ) + if ( lock_pages(xch, arg, sizeof(domid_t)) ) { PERROR("Could not lock"); goto out1; @@ -486,7 +488,7 @@ int xc_memory_op(xc_interface *xch, break; case XENMEM_set_pod_target: case XENMEM_get_pod_target: - if ( lock_pages(arg, sizeof(struct xen_pod_target)) ) + if ( lock_pages(xch, arg, sizeof(struct xen_pod_target)) ) { PERROR("Could not lock"); goto out1; @@ -501,29 +503,29 @@ int xc_memory_op(xc_interface *xch, case XENMEM_increase_reservation: case XENMEM_decrease_reservation: case XENMEM_populate_physmap: - unlock_pages(reservation, sizeof(*reservation)); + unlock_pages(xch, reservation, sizeof(*reservation)); get_xen_guest_handle(extent_start, reservation->extent_start); if ( extent_start != NULL ) - unlock_pages(extent_start, + unlock_pages(xch, extent_start, reservation->nr_extents * sizeof(xen_pfn_t)); break; case XENMEM_machphys_mfn_list: - unlock_pages(xmml, sizeof(*xmml)); + unlock_pages(xch, xmml, sizeof(*xmml)); get_xen_guest_handle(extent_start, xmml->extent_start); - unlock_pages(extent_start, + unlock_pages(xch, extent_start, xmml->max_extents * sizeof(xen_pfn_t)); break; case XENMEM_add_to_physmap: - unlock_pages(arg, sizeof(struct xen_add_to_physmap)); + unlock_pages(xch, arg, sizeof(struct xen_add_to_physmap)); break; case XENMEM_current_reservation: case XENMEM_maximum_reservation: case XENMEM_maximum_gpfn: - unlock_pages(arg, sizeof(domid_t)); + unlock_pages(xch, arg, sizeof(domid_t)); break; case XENMEM_set_pod_target: case XENMEM_get_pod_target: - unlock_pages(arg, sizeof(struct xen_pod_target)); + unlock_pages(xch, arg, sizeof(struct xen_pod_target)); break; } @@ -565,7 +567,7 @@ int xc_get_pfn_list(xc_interface *xch, memset(pfn_buf, 0, max_pfns * sizeof(*pfn_buf)); #endif - if ( lock_pages(pfn_buf, max_pfns * sizeof(*pfn_buf)) != 0 ) + if ( lock_pages(xch, pfn_buf, max_pfns * sizeof(*pfn_buf)) != 0 ) { PERROR("xc_get_pfn_list: pfn_buf lock failed"); return -1; @@ -573,7 +575,7 @@ int xc_get_pfn_list(xc_interface *xch, ret = do_domctl(xch, &domctl); - unlock_pages(pfn_buf, max_pfns * sizeof(*pfn_buf)); + unlock_pages(xch, pfn_buf, max_pfns * sizeof(*pfn_buf)); return (ret < 0) ? -1 : domctl.u.getmemlist.num_pfns; } @@ -648,7 +650,7 @@ int xc_version(xc_interface *xch, int cm break; } - if ( (argsize != 0) && (lock_pages(arg, argsize) != 0) ) + if ( (argsize != 0) && (lock_pages(xch, arg, argsize) != 0) ) { PERROR("Could not lock memory for version hypercall"); return -ENOMEM; @@ -662,7 +664,7 @@ int xc_version(xc_interface *xch, int cm rc = do_xen_version(xch, cmd, arg); if ( argsize != 0 ) - unlock_pages(arg, argsize); + unlock_pages(xch, arg, argsize); return rc; } diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_private.h --- a/tools/libxc/xc_private.h Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_private.h Mon Oct 18 16:43:58 2010 +0100 @@ -100,11 +100,11 @@ void xc_report_progress_step(xc_interfac void *xc_memalign(size_t alignment, size_t size); -int lock_pages(void *addr, size_t len); -void unlock_pages(void *addr, size_t len); - -int hcall_buf_prep(void **addr, size_t len); -void hcall_buf_release(void **addr, size_t len); +int lock_pages(xc_interface *xch, void *addr, size_t len); +void unlock_pages(xc_interface *xch, void *addr, size_t len); + +int hcall_buf_prep(xc_interface *xch, void **addr, size_t len); +void hcall_buf_release(xc_interface *xch, void **addr, size_t len); int do_xen_hypercall(xc_interface *xch, privcmd_hypercall_t *hypercall); @@ -125,7 +125,7 @@ static inline int do_physdev_op(xc_inter DECLARE_HYPERCALL; - if ( hcall_buf_prep(&op, len) != 0 ) + if ( hcall_buf_prep(xch, &op, len) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out1; @@ -142,7 +142,7 @@ static inline int do_physdev_op(xc_inter " rebuild the user-space tool set?\n"); } - hcall_buf_release(&op, len); + hcall_buf_release(xch, &op, len); out1: return ret; @@ -153,7 +153,7 @@ static inline int do_domctl(xc_interface int ret = -1; DECLARE_HYPERCALL; - if ( hcall_buf_prep((void **)&domctl, sizeof(*domctl)) != 0 ) + if ( hcall_buf_prep(xch, (void **)&domctl, sizeof(*domctl)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out1; @@ -171,7 +171,7 @@ static inline int do_domctl(xc_interface " rebuild the user-space tool set?\n"); } - hcall_buf_release((void **)&domctl, sizeof(*domctl)); + hcall_buf_release(xch, (void **)&domctl, sizeof(*domctl)); out1: return ret; @@ -182,7 +182,7 @@ static inline int do_sysctl(xc_interface int ret = -1; DECLARE_HYPERCALL; - if ( hcall_buf_prep((void **)&sysctl, sizeof(*sysctl)) != 0 ) + if ( hcall_buf_prep(xch, (void **)&sysctl, sizeof(*sysctl)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out1; @@ -200,7 +200,7 @@ static inline int do_sysctl(xc_interface " rebuild the user-space tool set?\n"); } - hcall_buf_release((void **)&sysctl, sizeof(*sysctl)); + hcall_buf_release(xch, (void **)&sysctl, sizeof(*sysctl)); out1: return ret; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_resume.c --- a/tools/libxc/xc_resume.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_resume.c Mon Oct 18 16:43:58 2010 +0100 @@ -196,7 +196,7 @@ static int xc_domain_resume_any(xc_inter goto out; } - if ( lock_pages(&ctxt, sizeof(ctxt)) ) + if ( lock_pages(xch, &ctxt, sizeof(ctxt)) ) { ERROR("Unable to lock ctxt"); goto out; @@ -235,7 +235,7 @@ static int xc_domain_resume_any(xc_inter #if defined(__i386__) || defined(__x86_64__) out: - unlock_pages((void *)&ctxt, sizeof ctxt); + unlock_pages(xch, (void *)&ctxt, sizeof ctxt); if (p2m) munmap(p2m, P2M_FL_ENTRIES*PAGE_SIZE); if (p2m_frame_list) diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_tbuf.c --- a/tools/libxc/xc_tbuf.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_tbuf.c Mon Oct 18 16:43:58 2010 +0100 @@ -129,7 +129,7 @@ int xc_tbuf_set_cpu_mask(xc_interface *x set_xen_guest_handle(sysctl.u.tbuf_op.cpu_mask.bitmap, bytemap); sysctl.u.tbuf_op.cpu_mask.nr_cpus = sizeof(bytemap) * 8; - if ( lock_pages(&bytemap, sizeof(bytemap)) != 0 ) + if ( lock_pages(xch, &bytemap, sizeof(bytemap)) != 0 ) { PERROR("Could not lock memory for Xen hypercall"); goto out; @@ -137,7 +137,7 @@ int xc_tbuf_set_cpu_mask(xc_interface *x ret = do_sysctl(xch, &sysctl); - unlock_pages(&bytemap, sizeof(bytemap)); + unlock_pages(xch, &bytemap, sizeof(bytemap)); out: return ret; diff -r 86cf01f3d737 -r 490b7420deba tools/libxc/xc_tmem.c --- a/tools/libxc/xc_tmem.c Mon Oct 18 16:43:15 2010 +0100 +++ b/tools/libxc/xc_tmem.c Mon Oct 18 16:43:58 2010 +0100 @@ -28,7 +28,7 @@ static int do_tmem_op(xc_interface *xch, hypercall.op = __HYPERVISOR_tmem_op; hypercall.arg[0] = (unsigned long)op; - if (lock_pages(op, sizeof(*op)) != 0) + if (lock_pages(xch, op, sizeof(*op)) != 0) { PERROR("Could not lock memory for Xen hypercall"); return -EFAULT; @@ -39,7 +39,7 @@ static int do_tmem_op(xc_interface *xch, DPRINTF("tmem operation failed -- need to" " rebuild the user-space tool set?\n"); } - unlock_pages(op, sizeof(*op)); + unlock_pages(xch, op, sizeof(*op)); return ret; } @@ -69,7 +69,7 @@ int xc_tmem_control(xc_interface *xch, op.u.ctrl.oid[2] = 0; if (subop == TMEMC_LIST) { - if ((arg1 != 0) && (lock_pages(buf, arg1) != 0)) + if ((arg1 != 0) && (lock_pages(xch, buf, arg1) != 0)) { PERROR("Could not lock memory for Xen hypercall"); return -ENOMEM; @@ -85,7 +85,7 @@ int xc_tmem_control(xc_interface *xch, if (subop == TMEMC_LIST) { if (arg1 != 0) - unlock_pages(buf, arg1); + unlock_pages(xch, buf, arg1); } return rc; @@ -115,7 +115,7 @@ int xc_tmem_control_oid(xc_interface *xc op.u.ctrl.oid[2] = oid.oid[2]; if (subop == TMEMC_LIST) { - if ((arg1 != 0) && (lock_pages(buf, arg1) != 0)) + if ((arg1 != 0) && (lock_pages(xch, buf, arg1) != 0)) { PERROR("Could not lock memory for Xen hypercall"); return -ENOMEM; @@ -131,7 +131,7 @@ int xc_tmem_control_oid(xc_interface *xc if (subop == TMEMC_LIST) { if (arg1 != 0) - unlock_pages(buf, arg1); + unlock_pages(xch, buf, arg1); } return rc; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |