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

RE: [PATCH v9 2/8] xen/common/domctl: introduce XEN_DOMCTL_get/setdomaincontext



> -----Original Message-----
> From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Sent: 02 October 2020 22:58
> To: Paul Durrant <paul@xxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Durrant, Paul <pdurrant@xxxxxxxxxxxx>; Julien Grall <julien@xxxxxxx>; 
> Daniel De Graaf
> <dgdegra@xxxxxxxxxxxxx>; Ian Jackson <ian.jackson@xxxxxxxxxxxxx>; Wei Liu 
> <wl@xxxxxxx>; George Dunlap
> <george.dunlap@xxxxxxxxxx>; Jan Beulich <jbeulich@xxxxxxxx>; Stefano 
> Stabellini
> <sstabellini@xxxxxxxxxx>
> Subject: RE: [EXTERNAL] [PATCH v9 2/8] xen/common/domctl: introduce 
> XEN_DOMCTL_get/setdomaincontext
> 
> CAUTION: This email originated from outside of the organization. Do not click 
> links or open
> attachments unless you can confirm the sender and know the content is safe.
> 
> 
> 
> On 24/09/2020 14:10, Paul Durrant wrote:
> > diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
> > index 791f0a2592..743105181f 100644
> > --- a/xen/include/public/domctl.h
> > +++ b/xen/include/public/domctl.h
> > @@ -1130,6 +1130,43 @@ struct xen_domctl_vuart_op {
> >                                   */
> >  };
> >
> > +/*
> > + * XEN_DOMCTL_getdomaincontext
> > + * ---------------------------
> > + *
> > + * buffer (IN):   The buffer into which the context data should be
> > + *                copied, or NULL to query the buffer size that should
> > + *                be allocated.
> > + * size (IN/OUT): If 'buffer' is NULL then the value passed in must be
> > + *                zero, and the value passed out will be the size of the
> > + *                buffer to allocate.
> > + *                If 'buffer' is non-NULL then the value passed in must
> > + *                be the size of the buffer into which data may be copied.
> > + *                The value passed out will be the size of data written.
> > + */
> > +struct xen_domctl_getdomaincontext {
> > +    uint32_t size;
> 
> This series is full of mismatched 32/64bit sizes, with several
> truncation bugs in the previous patch.
> 
> Just use a 64bit size here.  Life is too short to go searching for all
> the other truncation bug when this stream tips over 4G, and its not like
> there is a shortage of space in this structure.
> 

Ok.

> > +    uint32_t pad;
> > +    XEN_GUEST_HANDLE_64(void) buffer;
> > +};
> > +
> > +/* XEN_DOMCTL_setdomaincontext
> > + * ---------------------------
> > + *
> > + * buffer (IN):   The buffer from which the context data should be
> > + *                copied.
> > + * size (IN):     The size of the buffer from which data may be copied.
> > + *                This data must include DOMAIN_SAVE_CODE_HEADER at the
> > + *                start and terminate with a DOMAIN_SAVE_CODE_END record.
> > + *                Any data beyond the DOMAIN_SAVE_CODE_END record will be
> > + *                ignored.
> > + */
> > +struct xen_domctl_setdomaincontext {
> > +    uint32_t size;
> > +    uint32_t pad;
> > +    XEN_GUEST_HANDLE_64(const_void) buffer;
> > +};
> > +
> >  struct xen_domctl {
> >      uint32_t cmd;
> >  #define XEN_DOMCTL_createdomain                   1
> > @@ -1214,6 +1251,8 @@ struct xen_domctl {
> >  #define XEN_DOMCTL_vuart_op                      81
> >  #define XEN_DOMCTL_get_cpu_policy                82
> >  #define XEN_DOMCTL_set_cpu_policy                83
> > +#define XEN_DOMCTL_getdomaincontext              84
> > +#define XEN_DOMCTL_setdomaincontext              85
> 
> So, we've currently got:
> 
> #define XEN_DOMCTL_setvcpucontext                12
> #define XEN_DOMCTL_getvcpucontext                13
> #define XEN_DOMCTL_gethvmcontext                 33
> #define XEN_DOMCTL_sethvmcontext                 34
> #define XEN_DOMCTL_set_ext_vcpucontext           42
> #define XEN_DOMCTL_get_ext_vcpucontext           43
> #define XEN_DOMCTL_gethvmcontext_partial         55
> #define XEN_DOMCTL_setvcpuextstate               62
> #define XEN_DOMCTL_getvcpuextstate               63
> 
> which are doing alarmingly related things for vcpus.  (As an amusing
> exercise to the reader, figure out which are PV specific and which are
> HVM specific.  Hint: they're not disjoint sets.)
> 

Yes, hence the desire to come up with something common.

> 
> I know breaking with tradition is sacrilege, but at the very minimum,
> can we get some underscores in that name so you can at least read the
> words which make it up more easily.
> 

Sure.

  Paul

> ~Andrew

 


Rackspace

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