[PATCH v2 1/4] bhyve: support parsing fbuf PCI device
Roman Bogorodskiy
bogorodskiy at gmail.com
Tue Sep 22 13:23:08 UTC 2020
Roman Bogorodskiy wrote:
> From: Fabian Freyer <fabian.freyer at physik.tu-berlin.de>
>
> Add a new helper function, bhyveParsePCIFbuf, to parse the bhyve-argv
> parameters for a frame-buffer device to <graphics/> and <video/>
> definitions.
>
> For now, only the listen address, port, and vga mode are detected.
> Unsupported parameters are silently skipped.
>
> This involves upgrading the private API to expose the
> virDomainGraphicsDefNew helper function, which is used by
> bhyveParsePCIFbuf.
>
> Signed-off-by: Fabian Freyer <fabian.freyer at physik.tu-berlin.de>
> Signed-off-by: Roman Bogorodskiy <bogorodskiy at gmail.com>
> ---
> src/bhyve/bhyve_parse_command.c | 91 ++++++++++++++++++-
> src/libvirt_private.syms | 1 +
> .../bhyveargv2xml-vnc-listen.args | 10 ++
> .../bhyveargv2xml-vnc-listen.xml | 22 +++++
> .../bhyveargv2xml-vnc-vga-io.args | 10 ++
> .../bhyveargv2xml-vnc-vga-io.xml | 22 +++++
> .../bhyveargv2xml-vnc-vga-off.args | 10 ++
> .../bhyveargv2xml-vnc-vga-off.xml | 23 +++++
> .../bhyveargv2xml-vnc-vga-on.args | 10 ++
> .../bhyveargv2xml-vnc-vga-on.xml | 23 +++++
> .../bhyveargv2xmldata/bhyveargv2xml-vnc.args | 10 ++
> tests/bhyveargv2xmldata/bhyveargv2xml-vnc.xml | 22 +++++
> tests/bhyveargv2xmltest.c | 5 +
> 13 files changed, 258 insertions(+), 1 deletion(-)
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-listen.args
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-listen.xml
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-io.args
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-io.xml
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-off.args
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-off.xml
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-on.args
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-on.xml
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc.args
> create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc.xml
>
> diff --git a/src/bhyve/bhyve_parse_command.c b/src/bhyve/bhyve_parse_command.c
> index 50a5e88408..388c565317 100644
> --- a/src/bhyve/bhyve_parse_command.c
> +++ b/src/bhyve/bhyve_parse_command.c
> @@ -4,7 +4,7 @@
> * Copyright (C) 2006-2016 Red Hat, Inc.
> * Copyright (C) 2006 Daniel P. Berrange
> * Copyright (c) 2011 NetApp, Inc.
> - * Copyright (C) 2016 Fabian Freyer
> + * Copyright (C) 2020 Fabian Freyer
> *
> * This library is free software; you can redistribute it and/or
> * modify it under the terms of the GNU Lesser General Public
> @@ -553,6 +553,93 @@ bhyveParsePCINet(virDomainDefPtr def,
> return -1;
> }
>
> +static int
> +bhyveParsePCIFbuf(virDomainDefPtr def,
> + virDomainXMLOptionPtr xmlopt,
> + unsigned caps G_GNUC_UNUSED,
> + unsigned bus,
> + unsigned slot,
> + unsigned function,
> + const char *config)
> +{
> + /* -s slot,fbuf,wait,vga=on|io|off,rfb=<ip>:port,w=width,h=height */
> +
> + virDomainVideoDefPtr video = NULL;
> + virDomainGraphicsDefPtr graphics = NULL;
> + char **params = NULL;
> + char *param = NULL, *separator = NULL;
> + size_t nparams = 0;
> + unsigned int i = 0;
Interesting, some of the CI jobs complain that this should be "size_t"
(which I'll fix before merging), and some don't (including my local
environment). Wondering if that's caused by different sed versions or
something else.
> +
> + if (!(video = virDomainVideoDefNew(xmlopt)))
> + goto cleanup;
> +
> + if (!(graphics = virDomainGraphicsDefNew(xmlopt)))
> + goto cleanup;
> +
> + graphics->type = VIR_DOMAIN_GRAPHICS_TYPE_VNC;
> + video->info.addr.pci.bus = bus;
> + video->info.addr.pci.slot = slot;
> + video->info.addr.pci.function = function;
Roman Bogorodskiy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200922/066c6c8b/attachment-0001.sig>
More information about the libvir-list
mailing list