|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |