[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH-for-4.9 v1 6/8] dm_op: convert HVMOP_set_mem_type



> -----Original Message-----
> From: Jan Beulich [mailto:JBeulich@xxxxxxxx]
> Sent: 25 November 2016 14:16
> To: Paul Durrant <Paul.Durrant@xxxxxxxxxx>
> Cc: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>; Ian Jackson
> <Ian.Jackson@xxxxxxxxxx>; Wei Liu <wei.liu2@xxxxxxxxxx>; xen-
> devel@xxxxxxxxxxxxxxxxxxxx; Daniel De Graaf <dgdegra@xxxxxxxxxxxxx>
> Subject: RE: [Xen-devel] [PATCH-for-4.9 v1 6/8] dm_op: convert
> HVMOP_set_mem_type
> 
> >>> On 25.11.16 at 15:00, <Paul.Durrant@xxxxxxxxxx> wrote:
> >> From: Jan Beulich [mailto:JBeulich@xxxxxxxx]
> >> Sent: 25 November 2016 13:51
> >> >>> On 18.11.16 at 18:14, <paul.durrant@xxxxxxxxxx> wrote:
> >> > --- a/tools/libxc/xc_misc.c
> >> > +++ b/tools/libxc/xc_misc.c
> >> > @@ -584,28 +584,18 @@ int xc_hvm_modified_memory( int
> >> xc_hvm_set_mem_type(
> >> >      xc_interface *xch, domid_t dom, hvmmem_type_t mem_type,
> uint64_t
> >> first_pfn, uint64_t nr)
> >> >  {
> >> > -    DECLARE_HYPERCALL_BUFFER(struct xen_hvm_set_mem_type,
> arg);
> >> > -    int rc;
> >> > -
> >> > -    arg = xc_hypercall_buffer_alloc(xch, arg, sizeof(*arg));
> >> > -    if ( arg == NULL )
> >> > -    {
> >> > -        PERROR("Could not allocate memory for xc_hvm_set_mem_type
> >> hypercall");
> >> > -        return -1;
> >> > -    }
> >> > +    struct xen_dm_op op;
> >> > +    struct xen_dm_op_set_mem_type *data;
> >> >
> >> > -    arg->domid        = dom;
> >> > -    arg->hvmmem_type  = mem_type;
> >> > -    arg->first_pfn    = first_pfn;
> >> > -    arg->nr           = nr;
> >> > +    op.op = DMOP_set_mem_type;
> >> > +    data = &op.u.set_mem_type;
> >> >
> >> > -    rc = xencall2(xch->xcall, __HYPERVISOR_hvm_op,
> >> > -                  HVMOP_set_mem_type,
> >> > -                  HYPERCALL_BUFFER_AS_ARG(arg));
> >> > -
> >> > -    xc_hypercall_buffer_free(xch, arg);
> >> > +    data->mem_type = mem_type;
> >> > +    data->first_pfn = first_pfn;
> >> > +    /* NOTE: The following assignment truncates nr to 32-bits */
> >> > +    data->nr = nr;
> >>
> >> What strange a comment. Why don't you - again as done in the
> >> hvmctl series - simply correct the function's parameter type?
> >> (Same for xc_hvm_track_dirty_vram() and
> >> xc_hvm_modified_memory() then.)
> >
> > Because that may cause compiler warnings in clients when they grab the
> new
> > version of the header. I didn't want to have any adverse effect so just
> > commenting that the value was being truncated (as it always has been)
> seemed
> > like the best thing to do.
> 
> Well, maybe the tool stack maintainers think differently now, but
> for those libxc interface changes I had Wei's R-b already back then.
> In any case the present choice of types is plain wrong, and I
> think it's better if consumers of the API get warned about the
> possible truncation by compilers than silently truncating inside the
> library.
> 

Ok, if you already had agreement from a toolstack maintainer then I'll change 
the header.

  Paul

> Jan


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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.