[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 4/6] libxl: allow creation of domains with a specified or random domid
> -----Original Message----- > From: Julien Grall <julien@xxxxxxx> > Sent: 13 January 2020 22:24 > To: Durrant, Paul <pdurrant@xxxxxxxxxxxx>; jandryuk@xxxxxxxxx > Cc: Anthony PERARD <anthony.perard@xxxxxxxxxx>; xen-devel <xen- > devel@xxxxxxxxxxxxxxxxxxxx>; Ian Jackson <ian.jackson@xxxxxxxxxxxxx>; Wei > Liu <wl@xxxxxxx> > Subject: Re: [Xen-devel] [PATCH v2 4/6] libxl: allow creation of domains > with a specified or random domid > > Hi Paul, > > On 13/01/2020 16:54, Durrant, Paul wrote: > >> -----Original Message----- > >> From: jandryuk@xxxxxxxxx <jandryuk@xxxxxxxxx> > >> Sent: 13 January 2020 16:16 > >> To: Durrant, Paul <pdurrant@xxxxxxxxxxxx> > >> Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>; Anthony PERARD > >> <anthony.perard@xxxxxxxxxx>; Ian Jackson <ian.jackson@xxxxxxxxxxxxx>; > Wei > >> Liu <wl@xxxxxxx> > >> Subject: Re: [Xen-devel] [PATCH v2 4/6] libxl: allow creation of > domains > >> with a specified or random domid > >> > >> On Thu, Jan 9, 2020 at 6:50 AM Paul Durrant <pdurrant@xxxxxxxxxx> > wrote: > >>> > >>> This patch adds a 'domid' field to libxl_domain_create_info and then > >>> modifies do_domain_create() to use that value if it is valid. Any > valid > >>> domid will be checked against the retired domid list before being > passed > >>> to libxl__domain_make(). > >>> If the domid value is invalid then Xen will choose the domid, as > before, > >>> unless the value is the new special RANDOM_DOMID value added to the > API. > >>> This value instructs libxl__domain_make() to select a random domid > >> value, > >>> check it for validity, verify it does not match a retired domain, and > >> then > >>> pass it to Xen's XEN_DOMCTL_createdomain operation. If Xen determines > >> that > >>> it co-incides with an existing domain, a new random value will be > >>> selected and the operation will be re-tried. > >>> > >>> NOTE: libxl__logv() is also modified to only log valid domid values in > >>> messages rather than any domid, valid or otherwise, that is not > >>> INVALID_DOMID. > >>> > >>> Signed-off-by: Paul Durrant <pdurrant@xxxxxxxxxx> > >>> --- > >>> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > >>> Cc: Wei Liu <wl@xxxxxxx> > >>> Cc: Anthony PERARD <anthony.perard@xxxxxxxxxx> > >>> > >>> v2: > >>> - Re-worked to use a value from libxl_domain_create_info > >>> --- > >>> tools/libxl/libxl.h | 9 +++++++++ > >>> tools/libxl/libxl_create.c | 32 +++++++++++++++++++++++++++++++- > >>> tools/libxl/libxl_internal.c | 2 +- > >>> tools/libxl/libxl_types.idl | 1 + > >>> 4 files changed, 42 insertions(+), 2 deletions(-) > >>> > >> > >> <snip> > >> > >>> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c > >>> index 1835a5502c..ee76dee364 100644 > >>> --- a/tools/libxl/libxl_create.c > >>> +++ b/tools/libxl/libxl_create.c > >>> @@ -600,9 +600,39 @@ int libxl__domain_make(libxl__gc *gc, > >> libxl_domain_config *d_config, > >>> goto out; > >>> } > >>> > >>> - ret = xc_domain_create(ctx->xch, domid, &create); > >>> + if (libxl_domid_valid_guest(info->domid)) { > >>> + *domid = info->domid; > >>> + > >>> + if (libxl__is_retired_domid(gc, *domid)) { > >>> + LOGED(ERROR, *domid, "domain id is retired"); > >>> + rc = ERROR_FAIL; > >>> + goto out; > >>> + } > >>> + } else if (info->domid == RANDOM_DOMID) { > >>> + *domid = 0; /* Zero-out initial value */ > >>> + } > >>> + > >>> + for (;;) { > >>> + if (info->domid == RANDOM_DOMID) { > >>> + /* Randomize lower order bytes */ > >>> + ret = libxl__random_bytes(gc, (void *)domid, > >>> + sizeof(uint16_t)); > >> > >> Casting to void * assumes little endian. > > > > I think that's a fairly safe assumption as far as Xen goes... > > Not really, there are technically nothing (other than bug fixes) > preventing us to use a big endian guest on Xen on Arm. > Ok. > I actually did play with big endian on Xen in the past and managed to > get a guest running. The main annoying part is Linux as it is assuming > to use the same endian as the hypervisor. But other OS may not have this > issues... > > The hypervisor itself is likely going to stay little endian, so does the > interface. For the tools, we should aim to not introduce more assumption > that the software will be little endian. > Fair enough. If there's a realistic possibility of running a BE tools domain then I'll code accordingly. Paul > Cheers, > > -- > Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |