From: Marc-André Lureau <marcandre.lureau@redhat.com>
Accept a new attribute to specify usage of helper process, ex:
<video>
<model type='virtio' vhostuser='yes'/>
</video>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
---
docs/formatdomain.html.in | 6 ++++++
docs/schemas/domaincommon.rng | 11 ++++++++++-
src/conf/domain_conf.c | 14 ++++++++++++++
src/conf/domain_conf.h | 1 +
4 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index fcb7c59c00..ec650fbe17 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -7039,6 +7039,12 @@ qemu-kvm -net nic,model=? /dev/null
Attribute <code>vram64</code> (<span class="since">since 1.3.3</span>)
extends secondary bar and makes it addressable as 64bit memory.
</p>
+ <p>
+ For guest type "kvm" and model type "virtio" there are
+ optional attributes. Attribute <code>vhost-user</code>
+ (<span class="since">since 5.5.0</span>) specify that a
+ vhost-user helper process should be associated with the GPU.
+ </p>
</dd>
<dt><code>acceleration</code></dt>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index c48f8c4f56..bac566855d 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -3581,7 +3581,6 @@
<value>vmvga</value>
<value>xen</value>
<value>vbox</value>
- <value>virtio</value>
<value>gop</value>
<value>none</value>
<value>bochs</value>
@@ -3607,6 +3606,16 @@
</attribute>
</optional>
</group>
+ <group>
+ <attribute name="type">
+ <value>virtio</value>
+ </attribute>
+ <optional>
+ <attribute name="vhostuser">
+ <ref name="virYesNo"/>
+ </attribute>
+ </optional>
+ </group>
</choice>
<optional>
<attribute name="vram">
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b7a342bb91..f51575d57d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -15358,6 +15358,7 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlNodePtr cur;
VIR_XPATH_NODE_AUTORESTORE(ctxt);
VIR_AUTOFREE(char *) type = NULL;
+ VIR_AUTOFREE(char *) vhostuser = NULL;
VIR_AUTOFREE(char *) heads = NULL;
VIR_AUTOFREE(char *) vram = NULL;
VIR_AUTOFREE(char *) vram64 = NULL;
@@ -15376,6 +15377,7 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
if (!type && !vram && !ram && !heads &&
virXMLNodeNameEqual(cur, "model")) {
type = virXMLPropString(cur, "type");
+ vhostuser = virXMLPropString(cur, "vhostuser");
ram = virXMLPropString(cur, "ram");
vram = virXMLPropString(cur, "vram");
vram64 = virXMLPropString(cur, "vram64");
@@ -15408,6 +15410,16 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
def->type = virDomainVideoDefaultType(dom);
}
+ if (vhostuser != NULL) {
+ if (virStringParseYesNo(vhostuser, &def->vhostuser) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unknown vhostuser value '%s'"), vhostuser);
+ goto cleanup;
+ }
+ } else {
+ def->vhostuser = false;
+ }
+
if (ram) {
if (def->type != VIR_DOMAIN_VIDEO_TYPE_QXL) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -26486,6 +26498,8 @@ virDomainVideoDefFormat(virBufferPtr buf,
virBufferAsprintf(buf, " heads='%u'", def->heads);
if (def->primary)
virBufferAddLit(buf, " primary='yes'");
+ if (def->vhostuser)
+ virBufferAddLit(buf, " vhostuser='yes'");
if (def->accel) {
virBufferAddLit(buf, ">\n");
virBufferAdjustIndent(buf, 2);
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 33cef5b75c..bc2450f25e 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1424,6 +1424,7 @@ struct _virDomainVideoDef {
virDomainVideoDriverDefPtr driver;
virDomainDeviceInfo info;
virDomainVirtioOptionsPtr virtio;
+ bool vhostuser;
};
/* graphics console modes */
--
2.21.0
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On 8/23/19 12:21 PM, Cole Robinson wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Accept a new attribute to specify usage of helper process, ex:
>
> <video>
> <model type='virtio' vhostuser='yes'/>
> </video>
>
For other devices, we have
<interface type='vhostuser'>
<interface><driver name='vhost'/>
<hostdev type='scsi_host'><source protocol='vhost'>
Which is an attempt to make this more generic. IMO using vhostuser='yes'
and is the simplest match to qemu terminology but maybe other people
have stronger opinions.
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> Signed-off-by: Cole Robinson <crobinso@redhat.com>
> ---
> docs/formatdomain.html.in | 6 ++++++
> docs/schemas/domaincommon.rng | 11 ++++++++++-
> src/conf/domain_conf.c | 14 ++++++++++++++
> src/conf/domain_conf.h | 1 +
> 4 files changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index fcb7c59c00..ec650fbe17 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -7039,6 +7039,12 @@ qemu-kvm -net nic,model=? /dev/null
> Attribute <code>vram64</code> (<span class="since">since 1.3.3</span>)
> extends secondary bar and makes it addressable as 64bit memory.
> </p>
> + <p>
> + For guest type "kvm" and model type "virtio" there are
> + optional attributes. Attribute <code>vhost-user</code>
> + (<span class="since">since 5.5.0</span>) specify that a
> + vhost-user helper process should be associated with the GPU.
> + </p>
> </dd>
>
> <dt><code>acceleration</code></dt>
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index c48f8c4f56..bac566855d 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -3581,7 +3581,6 @@
> <value>vmvga</value>
> <value>xen</value>
> <value>vbox</value>
> - <value>virtio</value>
> <value>gop</value>
> <value>none</value>
> <value>bochs</value>
> @@ -3607,6 +3606,16 @@
> </attribute>
> </optional>
> </group>
> + <group>
> + <attribute name="type">
> + <value>virtio</value>
> + </attribute>
> + <optional>
> + <attribute name="vhostuser">
> + <ref name="virYesNo"/>
> + </attribute>
> + </optional>
> + </group>
> </choice>
> <optional>
> <attribute name="vram">
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index b7a342bb91..f51575d57d 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -15358,6 +15358,7 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
> xmlNodePtr cur;
> VIR_XPATH_NODE_AUTORESTORE(ctxt);
> VIR_AUTOFREE(char *) type = NULL;
> + VIR_AUTOFREE(char *) vhostuser = NULL;
> VIR_AUTOFREE(char *) heads = NULL;
> VIR_AUTOFREE(char *) vram = NULL;
> VIR_AUTOFREE(char *) vram64 = NULL;
> @@ -15376,6 +15377,7 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
> if (!type && !vram && !ram && !heads &&
> virXMLNodeNameEqual(cur, "model")) {
> type = virXMLPropString(cur, "type");
> + vhostuser = virXMLPropString(cur, "vhostuser");
> ram = virXMLPropString(cur, "ram");
> vram = virXMLPropString(cur, "vram");
> vram64 = virXMLPropString(cur, "vram64");
> @@ -15408,6 +15410,16 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xmlopt,
> def->type = virDomainVideoDefaultType(dom);
> }
>
> + if (vhostuser != NULL) {
> + if (virStringParseYesNo(vhostuser, &def->vhostuser) < 0) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("unknown vhostuser value '%s'"), vhostuser);
> + goto cleanup;
> + }
> + } else {
> + def->vhostuser = false;
> + }
> +
> if (ram) {
> if (def->type != VIR_DOMAIN_VIDEO_TYPE_QXL) {
> virReportError(VIR_ERR_XML_ERROR, "%s",
> @@ -26486,6 +26498,8 @@ virDomainVideoDefFormat(virBufferPtr buf,
> virBufferAsprintf(buf, " heads='%u'", def->heads);
> if (def->primary)
> virBufferAddLit(buf, " primary='yes'");
> + if (def->vhostuser)
> + virBufferAddLit(buf, " vhostuser='yes'");
> if (def->accel) {
> virBufferAddLit(buf, ">\n");
> virBufferAdjustIndent(buf, 2);
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 33cef5b75c..bc2450f25e 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -1424,6 +1424,7 @@ struct _virDomainVideoDef {
> virDomainVideoDriverDefPtr driver;
> virDomainDeviceInfo info;
> virDomainVirtioOptionsPtr virtio;
> + bool vhostuser;
I assume you followed the example of 'primary', but this should be a
virTristateBool. Follow 'accel3d' parsing/formatting as an example
Thanks,
Cole
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Fri, Aug 23, 2019 at 12:51:56PM -0400, Cole Robinson wrote: >On 8/23/19 12:21 PM, Cole Robinson wrote: >> From: Marc-André Lureau <marcandre.lureau@redhat.com> >> >> Accept a new attribute to specify usage of helper process, ex: >> >> <video> >> <model type='virtio' vhostuser='yes'/> >> </video> >> > >For other devices, we have > ><interface type='vhostuser'> ><interface><driver name='vhost'/> ><hostdev type='scsi_host'><source protocol='vhost'> > >Which is an attempt to make this more generic. >IMO using vhostuser='yes' missing verb? >and is the simplest match to qemu terminology but maybe other people >have stronger opinions. Yes. This does not belong in the model - it's a backend thing. <driver name='vhost'/> sounds best to me (and similarly to what commit 175077fd707db6ad87d6e2a079e82bc290ac2421 did, we can also expose <driver name='qemu'/>) Jano > >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> >> Signed-off-by: Cole Robinson <crobinso@redhat.com> >> --- >> docs/formatdomain.html.in | 6 ++++++ >> docs/schemas/domaincommon.rng | 11 ++++++++++- >> src/conf/domain_conf.c | 14 ++++++++++++++ >> src/conf/domain_conf.h | 1 + >> 4 files changed, 31 insertions(+), 1 deletion(-) >> -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Hi
On Tue, Aug 27, 2019 at 11:19 AM Ján Tomko <jtomko@redhat.com> wrote:
>
> On Fri, Aug 23, 2019 at 12:51:56PM -0400, Cole Robinson wrote:
> >On 8/23/19 12:21 PM, Cole Robinson wrote:
> >> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >>
> >> Accept a new attribute to specify usage of helper process, ex:
> >>
> >> <video>
> >> <model type='virtio' vhostuser='yes'/>
> >> </video>
> >>
> >
> >For other devices, we have
> >
> ><interface type='vhostuser'>
> ><interface><driver name='vhost'/>
> ><hostdev type='scsi_host'><source protocol='vhost'>
> >
> >Which is an attempt to make this more generic.
>
> >IMO using vhostuser='yes'
>
> missing verb?
>
> >and is the simplest match to qemu terminology but maybe other people
> >have stronger opinions.
>
> Yes.
>
> This does not belong in the model - it's a backend thing.
>
> <driver name='vhost'/> sounds best to me (and similarly to
> what commit 175077fd707db6ad87d6e2a079e82bc290ac2421 did,
> we can also expose <driver name='qemu'/>)
Shouldn't it be <driver name='vhost-user'/>?
('vhost' would be for a kernel backend)
>
> Jano
>
> >
> >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> >> Signed-off-by: Cole Robinson <crobinso@redhat.com>
> >> ---
> >> docs/formatdomain.html.in | 6 ++++++
> >> docs/schemas/domaincommon.rng | 11 ++++++++++-
> >> src/conf/domain_conf.c | 14 ++++++++++++++
> >> src/conf/domain_conf.h | 1 +
> >> 4 files changed, 31 insertions(+), 1 deletion(-)
> >>
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
--
Marc-André Lureau
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Thu, Aug 29, 2019 at 04:30:29PM +0400, Marc-André Lureau wrote:
>Hi
>
>On Tue, Aug 27, 2019 at 11:19 AM Ján Tomko <jtomko@redhat.com> wrote:
>>
>> On Fri, Aug 23, 2019 at 12:51:56PM -0400, Cole Robinson wrote:
>> >On 8/23/19 12:21 PM, Cole Robinson wrote:
>> >> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>> >>
>> >> Accept a new attribute to specify usage of helper process, ex:
>> >>
>> >> <video>
>> >> <model type='virtio' vhostuser='yes'/>
>> >> </video>
>> >>
>> >
>> >For other devices, we have
>> >
>> ><interface type='vhostuser'>
>> ><interface><driver name='vhost'/>
>> ><hostdev type='scsi_host'><source protocol='vhost'>
>> >
>> >Which is an attempt to make this more generic.
>>
>> >IMO using vhostuser='yes'
>>
>> missing verb?
>>
>> >and is the simplest match to qemu terminology but maybe other people
>> >have stronger opinions.
>>
>> Yes.
>>
>> This does not belong in the model - it's a backend thing.
>>
>> <driver name='vhost'/> sounds best to me (and similarly to
>> what commit 175077fd707db6ad87d6e2a079e82bc290ac2421 did,
>> we can also expose <driver name='qemu'/>)
>
>Shouldn't it be <driver name='vhost-user'/>?
>
Even better :)
Jano
>('vhost' would be for a kernel backend)
>
>>
>> Jano
>>
>> >
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Fri, Aug 23, 2019 at 12:21:46PM -0400, Cole Robinson wrote: >From: Marc-André Lureau <marcandre.lureau@redhat.com> > >Accept a new attribute to specify usage of helper process, ex: > > <video> > <model type='virtio' vhostuser='yes'/> > </video> > >Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> >Signed-off-by: Cole Robinson <crobinso@redhat.com> >--- > docs/formatdomain.html.in | 6 ++++++ > docs/schemas/domaincommon.rng | 11 ++++++++++- Also, parser additions should include an addition to the XML test cases (virschematest will automatically pick them up and test them against the schema) and either genericxml2xmltest or qemuxml2xmltest. Jano > src/conf/domain_conf.c | 14 ++++++++++++++ > src/conf/domain_conf.h | 1 + > 4 files changed, 31 insertions(+), 1 deletion(-) > -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2026 Red Hat, Inc.