[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] libxc: add xc_domain_add_to_physmap_batch to wrap XENMEM_add_to_physmap_batch
On Wed, Jun 21, 2017 at 01:29:26AM +0800, Zhongze Liu wrote: > This is a preparation for the proposal "allow setting up shared memory areas > between VMs from xl config file". See: > V2: https://lists.xen.org/archives/html/xen-devel/2017-06/msg02256.html > V1: https://lists.xen.org/archives/html/xen-devel/2017-05/msg01288.html > > The plan is to use XENMEM_add_to_physmap_batch in xl to map foregin pages from > one DomU to another so that the page could be shared. But currently there is > no > wrapper for XENMEM_add_to_physmap_batch in libxc, so we just add a wrapper for > it. > > Signed-off-by: Zhongze Liu <blackskygg@xxxxxxxxx> > --- > +int xc_domain_add_to_physmap_batch(xc_interface *xch, > + domid_t domid, > + domid_t foreign_domid, > + unsigned int space, > + unsigned int size, > + xen_ulong_t *idxs, > + xen_pfn_t *gpfns, > + int *errs) > +{ > + int rc; > + DECLARE_HYPERCALL_BOUNCE(idxs, size * sizeof(*idxs), > XC_HYPERCALL_BUFFER_BOUNCE_IN); > + DECLARE_HYPERCALL_BOUNCE(gpfns, size * sizeof(*gpfns), > XC_HYPERCALL_BUFFER_BOUNCE_IN); > + DECLARE_HYPERCALL_BOUNCE(errs, size * sizeof(*errs), > XC_HYPERCALL_BUFFER_BOUNCE_OUT); > + > + struct xen_add_to_physmap_batch xatp_batch = { > + .domid = domid, > + .space = space, > + .size = size, > + .u = {.foreign_domid = foreign_domid} Coding style issue. Just a note, the struct is different for pre-4.7 and post-4.7 Xen. You don't need to implement a version of this function for pre-4.7 Xen. > + }; > + > + if ( xc_hypercall_bounce_pre(xch, idxs) || > + xc_hypercall_bounce_pre(xch, gpfns) || > + xc_hypercall_bounce_pre(xch, errs) ) > + { > + PERROR("Could not bounce memory for XENMEM_add_to_physmap_batch"); > + goto out; rc will be uninitialised in this exit path. > + } > + > + set_xen_guest_handle(xatp_batch.idxs, idxs); > + set_xen_guest_handle(xatp_batch.gpfns, gpfns); > + set_xen_guest_handle(xatp_batch.errs, errs); > + > + rc = do_memory_op(xch, XENMEM_add_to_physmap_batch, > + &xatp_batch, sizeof(xatp_batch)); > + > +out: > + xc_hypercall_bounce_post(xch, idxs); > + xc_hypercall_bounce_post(xch, gpfns); > + xc_hypercall_bounce_post(xch, errs); > + > + return rc; > +} > + > int xc_domain_claim_pages(xc_interface *xch, > uint32_t domid, > unsigned long nr_pages) > -- > 2.13.1 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |