Re: [Xen-devel] [PATCH v2] libxc: add xc_domain_add_to_physmap_batch to wrap XENMEM_add_to_physmap_batch

2017-06-22 Thread Zhongze Liu
Hi Wei,

2017-06-21 23:44 GMT+08:00 Wei Liu :
> 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 
>> ---
>> +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.

Do you mean that I should add a space between '{' and '.' near ".u =
{.foreign" in this line?

>
> 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,
>> +  _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
>>


Cheers,

Zhongze Liu

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v2] libxc: add xc_domain_add_to_physmap_batch to wrap XENMEM_add_to_physmap_batch

2017-06-21 Thread Wei Liu
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 
> ---
> +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,
> +  _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@lists.xen.org
https://lists.xen.org/xen-devel


[Xen-devel] [PATCH v2] libxc: add xc_domain_add_to_physmap_batch to wrap XENMEM_add_to_physmap_batch

2017-06-20 Thread Zhongze Liu
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 
---
Changed Since v1:
  * explain why such a sudden wrapper
  * change the parameters' types

Cc: Ian Jackson ,
Cc: Wei Liu ,
Cc: Stefano Stabellini 
Cc: Julien Grall 
Cc: Jan Beulich