[libvirt] [PATCH] libxl: fix framebuffer port setting for HVM domains

Daniel P. Berrange berrange at redhat.com
Tue Mar 18 19:24:58 UTC 2014


On Tue, Mar 18, 2014 at 12:19:47PM -0600, Jim Fehlig wrote:
> libxl uses the libxl_vnc_info and libxl_sdl_info fields from the
> hvm union in libxl_domain_build_info struct when generating QEMU
> args for VNC or SDL.  These fields were left unset by the libxl
> driver, causing libxl to ignore any user settings.  E.g. with
> 
>   <graphics type='vnc' port='5950'/>
> 
> port would be ignored and QEMU would instead be invoked with
> 
>   -vnc 127.0.0.1:0,to=99
> 
> Unlike the libxl_domain_config struct, the libxl_domain_build_info
> contains only a single libxl_vnc_info and libxl_sdl_info, so
> populate these fields from the first vfb in
> libxl_domain_config->vfbs.
> 
> Signed-off-by: Jim Fehlig <jfehlig at suse.com>
> Signed-off-by: David Kiarie <davidkiarie4 at gmail.com>
> ---
>  src/libxl/libxl_conf.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
> index aa5d958..cfac847 100644
> --- a/src/libxl/libxl_conf.c
> +++ b/src/libxl/libxl_conf.c
> @@ -1022,6 +1022,20 @@ libxlMakeVfbList(libxlDriverPrivatePtr driver,
>      d_config->vkbs = x_vkbs;
>      d_config->num_vfbs = d_config->num_vkbs = nvfbs;
>  
> +    /*
> +     * VNC or SDL info must also be set in libxl_domain_build_info
> +     * for HVM domains.  Use the first vfb device.
> +     */
> +    if (STREQ(def->os.type, "hvm")) {
> +        libxl_domain_build_info *b_info = &d_config->b_info;
> +        libxl_device_vfb vfb = d_config->vfbs[0];
> +
> +        if (libxl_defbool_val(vfb.vnc.enable))
> +            memcpy(&b_info->u.hvm.vnc, &vfb.vnc, sizeof(libxl_vnc_info));
> +        else if (libxl_defbool_val(vfb.sdl.enable))
> +            memcpy(&b_info->u.hvm.sdl, &vfb.sdl, sizeof(libxl_sdl_info));
> +    }
> +
>      return 0;
>  
>  error:

ACK.

It sure would be nice if there were some kind of API in libxl which
took a 'libxl_domain_config*' and returned a char **argv string for
the QEMU command line args that it would later invoke. That would let
us create a test suite for the XML -> libxl_domain_config conversion
to spot these kind of problems.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list