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

Re: [Xen-devel] [PATCH v1 3/6] libxl: add backend type and id to vkb



On Wed, Nov 01, 2017 at 05:05:04PM +0200, Oleksandr Grytsov wrote:
> From: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx>
> 
> New field backend_type is added to vkb device
> in order to have QEMU and user space backend
> simultaneously. Each vkb backend shall read
> appropriate XS entry and service only own
> frontends.
> Id is a string field which used by the backend
> to indentify the frontend.
> 
> Signed-off-by: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx>
> ---
>  tools/libxl/libxl_create.c  |  3 +++
>  tools/libxl/libxl_dm.c      |  1 +
>  tools/libxl/libxl_types.idl |  8 ++++++++
>  tools/libxl/libxl_vkb.c     | 33 ++++++++++++++++++++++++++++++++-
>  4 files changed, 44 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> index f813114..60d8686 100644
> --- a/tools/libxl/libxl_create.c
> +++ b/tools/libxl/libxl_create.c
> @@ -1376,6 +1376,9 @@ static void domcreate_launch_dm(libxl__egc *egc, 
> libxl__multidev *multidev,
>          for (i = 0; i < d_config->num_vfbs; i++) {
>              libxl__device_add(gc, domid, &libxl__vfb_devtype,
>                                &d_config->vfbs[i]);
> +        }
> +
> +        for (i = 0; i < d_config->num_vkbs; i++) {
>              libxl__device_add(gc, domid, &libxl__vkb_devtype,
>                                &d_config->vkbs[i]);
>          }
> diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
> index 98f89a9..f07de35 100644
> --- a/tools/libxl/libxl_dm.c
> +++ b/tools/libxl/libxl_dm.c
> @@ -1728,6 +1728,7 @@ static int 
> libxl__vfb_and_vkb_from_hvm_guest_config(libxl__gc *gc,
>  
>      vkb->backend_domid = 0;
>      vkb->devid = 0;
> +

Stray change. I don't have objection though.

>      return 0;
>  }
>  
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index cd0c06f..c3876a2 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -240,6 +240,12 @@ libxl_checkpointed_stream = 
> Enumeration("checkpointed_stream", [
>      (2, "COLO"),
>      ])
>  
> +libxl_vkb_backend = Enumeration("vkb_backend", [
> +    (0, "UNKNOWN"),
> +    (1, "QEMU"),
> +    (2, "LINUX")
> +    ])
> +
>  #
>  # Complex libxl types
>  #
> @@ -603,6 +609,8 @@ libxl_device_vkb = Struct("device_vkb", [
>      ("backend_domid", libxl_domid),
>      ("backend_domname", string),
>      ("devid", libxl_devid),
> +    ("backend_type", libxl_vkb_backend),
> +    ("id", string)
>      ])
>  
>  libxl_device_disk = Struct("device_disk", [
> diff --git a/tools/libxl/libxl_vkb.c b/tools/libxl/libxl_vkb.c
> index ea6fca8..88ab186 100644
> --- a/tools/libxl/libxl_vkb.c
> +++ b/tools/libxl/libxl_vkb.c
> @@ -17,6 +17,10 @@
>  static int libxl__device_vkb_setdefault(libxl__gc *gc, uint32_t domid,
>                                          libxl_device_vkb *vkb, bool hotplug)
>  {
> +    if (vkb->backend_type == LIBXL_VKB_BACKEND_UNKNOWN) {
> +        vkb->backend_type = LIBXL_VKB_BACKEND_QEMU;
> +    }
> +
>      return libxl__resolve_domid(gc, vkb->backend_domname, 
> &vkb->backend_domid);
>  }
>  
> @@ -34,6 +38,30 @@ static int libxl__device_from_vkb(libxl__gc *gc, uint32_t 
> domid,
>      return 0;
>  }
>  
> +static int libxl__device_vkb_dm_needed(libxl_device_vkb *vkb, uint32_t domid)
> +{
> +   if (vkb->backend_type == LIBXL_VKB_BACKEND_QEMU) {
> +        return 1;
> +   }

No need to have {} for a single statement here.

> +
> +    return 0;
> +}
> +
> +static int libxl__set_xenstore_vkb(libxl__gc *gc, uint32_t domid,
> +                                   libxl_device_vkb *vkb,
> +                                   flexarray_t *back, flexarray_t *front,
> +                                   flexarray_t *ro_front)
> +{
> +    if (vkb->id) {
> +        flexarray_append_pair(front, "id", vkb->id);
> +    }
> +

Ditto.

And, isn't 0 a valid device id?

Wei.

_______________________________________________
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®.