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

Re: [Xen-devel] [PATCH] libxl/arm: fix guest type conversion



On Wed, Oct 31, 2018 at 08:16:52PM +0000, Julien Grall wrote:
> Hi Wei,
> 
> On 10/31/18 2:25 PM, Wei Liu wrote:
> > Commit 359970fd8b ("tools/libxl: Switch Arm guest type to PVH") missed
> > changing the type field in c_info. This issue didn't surface until
> > ef72c93df9 which made creating PV guest on Arm unusable.
> > 
> > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> > ---
> > Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> > Cc: Julien Grall <julien.grall@xxxxxxx>
> > 
> > Julien, can you give this a quick test? Put type='pv' in your Arm
> > guest xl cfg and note the difference before and after this patch.
> 
> I tested on arm64 with and without the patch:
> 
> Tested-by: Julien Grall <julien.grall@xxxxxxx>
> 
> > 
> > This should fix libvirt breakage.
> > ---
> >   tools/libxl/libxl_create.c | 10 ++++++++++
> >   1 file changed, 10 insertions(+)
> > 
> > diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> > index 4bb750e951..311957f87c 100644
> > --- a/tools/libxl/libxl_create.c
> > +++ b/tools/libxl/libxl_create.c
> > @@ -35,6 +35,16 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc,
> >           return ERROR_INVAL;
> >       }
> > +#if defined(__arm__) || defined(__aarch64__)
> > +    if (c_info->type == LIBXL_DOMAIN_TYPE_PV) {
> > +        LOG(WARN, "Converting PV guest to PVH.");
> > +        LOG(WARN, "Arm guest are now PVH.");
> > +        LOG(WARN, "Please fix your configuration file/toolstack.");
> 
> We now end up to have this message printed twice.

I thought we need some logging so I copied them here.

> Do you see a use case
> where c_info->type is different from b_info->type? Do we need a check for
> that somewhere in the code?

No, I don't think there will be cases where c_info->type is different
from b_info->type. The type in b_info is used as a key to the keyed
union. The normal way of using it is to call
libxl_domain_build_info_init_type with c_info->type (see
xl_parse.c:L1316).  I tried to follow that path as well, but the
plumbing became unwieldy.

Regarding adding a check, that's probably a good idea, but it is out of
scope of this patch.

Wei.

> 
> > +
> > +        c_info->type = LIBXL_DOMAIN_TYPE_PVH;
> > +    }
> > +#endif
> > +
> >       if (c_info->type != LIBXL_DOMAIN_TYPE_PV) {
> >           libxl_defbool_setdefault(&c_info->hap, true);
> >           libxl_defbool_setdefault(&c_info->oos, true);
> > 
> 
> Cheers,
> 
> -- 
> Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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