[libvirt PATCH] qemu: format 'ramfb' attribute for mediated devices

Jonathon Jongsma posted 1 patch 2 weeks ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20200622214321.7026-1-jjongsma@redhat.com
src/conf/domain_conf.c                        |  3 ++
...stdev-mdev-display-ramfb.x86_64-latest.xml | 44 +++++++++++++++++++
.../hostdev-mdev-display-ramfb.xml            | 33 ++++++++++++++
tests/qemuxml2xmltest.c                       |  1 +
4 files changed, 81 insertions(+)
create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.x86_64-latest.xml
create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml

[libvirt PATCH] qemu: format 'ramfb' attribute for mediated devices

Posted by Jonathon Jongsma 2 weeks ago
It's possible to use ramfb as the boot display of an assigned vgpu
device. This was introduced in 4b95738c, but unfortunately the attribute
was not formatted into the xml output for such a device. This patch
fixes that oversight and adds a xml2xml test to verify proper behavior.

https://bugzilla.redhat.com/show_bug.cgi?id=1847791

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
---
 src/conf/domain_conf.c                        |  3 ++
 ...stdev-mdev-display-ramfb.x86_64-latest.xml | 44 +++++++++++++++++++
 .../hostdev-mdev-display-ramfb.xml            | 33 ++++++++++++++
 tests/qemuxml2xmltest.c                       |  1 +
 4 files changed, 81 insertions(+)
 create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.x86_64-latest.xml
 create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index e9336fd72d..e942dc41ae 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -28312,6 +28312,9 @@ virDomainHostdevDefFormat(virBufferPtr buf,
             if (mdevsrc->display != VIR_TRISTATE_SWITCH_ABSENT)
                 virBufferAsprintf(buf, " display='%s'",
                                   virTristateSwitchTypeToString(mdevsrc->display));
+            if (mdevsrc->ramfb != VIR_TRISTATE_SWITCH_ABSENT)
+                virBufferAsprintf(buf, " ramfb='%s'",
+                                  virTristateSwitchTypeToString(mdevsrc->display));
         }
 
     }
diff --git a/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.x86_64-latest.xml b/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.x86_64-latest.xml
new file mode 100644
index 0000000000..c134400486
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.x86_64-latest.xml
@@ -0,0 +1,44 @@
+<domain type='qemu'>
+  <name>QEMUGuest2</name>
+  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+  <memory unit='KiB'>219136</memory>
+  <currentMemory unit='KiB'>219136</currentMemory>
+  <vcpu placement='static'>1</vcpu>
+  <os>
+    <type arch='i686' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-i386</emulator>
+    <controller type='usb' index='0' model='piix3-uhci'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <controller type='ide' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+    </controller>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <graphics type='vnc' port='-1' autoport='yes'>
+      <listen type='address'/>
+    </graphics>
+    <video>
+      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+    </video>
+    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on' ramfb='on'>
+      <source>
+        <address uuid='53764d0e-85a0-42b4-af5c-2046b460b1dc'/>
+      </source>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </hostdev>
+    <memballoon model='none'/>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml b/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml
new file mode 100644
index 0000000000..6fdc477ca2
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml
@@ -0,0 +1,33 @@
+<domain type='qemu'>
+  <name>QEMUGuest2</name>
+  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+  <memory unit='KiB'>219136</memory>
+  <currentMemory unit='KiB'>219136</currentMemory>
+  <vcpu placement='static'>1</vcpu>
+  <os>
+    <type arch='i686' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-i386</emulator>
+    <controller type='usb' index='0'>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <controller type='ide' index='0'>
+    </controller>
+    <graphics type='vnc'/>
+    <hostdev mode='subsystem' type='mdev' model='vfio-pci' display='on' ramfb='on'>
+      <source>
+        <address uuid='53764d0e-85a0-42b4-af5c-2046b460b1dc'/>
+      </source>
+    </hostdev>
+    <video>
+      <model type='qxl' heads='1'/>
+    </video>
+    <memballoon model='none'/>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 022f6786b9..e3919821af 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -529,6 +529,7 @@ mymain(void)
             QEMU_CAPS_VFIO_PCI_DISPLAY,
             QEMU_CAPS_DEVICE_VFIO_PCI,
             QEMU_CAPS_VNC);
+    DO_TEST_CAPS_LATEST("hostdev-mdev-display-ramfb");
     DO_TEST("pci-rom", NONE);
     DO_TEST("pci-rom-disabled", NONE);
     DO_TEST("pci-rom-disabled-invalid", NONE);
-- 
2.21.3

Re: [libvirt PATCH] qemu: format 'ramfb' attribute for mediated devices

Posted by Erik Skultety 2 weeks ago
On Mon, Jun 22, 2020 at 04:43:21PM -0500, Jonathon Jongsma wrote:
> It's possible to use ramfb as the boot display of an assigned vgpu
> device. This was introduced in 4b95738c, but unfortunately the attribute
> was not formatted into the xml output for such a device. This patch
> fixes that oversight and adds a xml2xml test to verify proper behavior.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1847791
>
> Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
> ---
...

> diff --git a/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml b/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml
> new file mode 100644
> index 0000000000..6fdc477ca2
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/hostdev-mdev-display-ramfb.xml

You don't need this one since you only test with the latest capabilities, so
you?

With that file dropped:
Reviewed-by: Erik Skultety <eskultet@redhat.com>

> @@ -0,0 +1,33 @@
> +<domain type='qemu'>
> +  <name>QEMUGuest2</name>
> +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>219136</memory>
> +  <currentMemory unit='KiB'>219136</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='i686' machine='pc'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>destroy</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu-system-i386</emulator>
> +    <controller type='usb' index='0'>
> +    </controller>
> +    <controller type='pci' index='0' model='pci-root'/>
> +    <controller type='ide' index='0'>
> +    </controller>
> +    <graphics type='vnc'/>
> +    <hostdev mode='subsystem' type='mdev' model='vfio-pci' display='on' ramfb='on'>
> +      <source>
> +        <address uuid='53764d0e-85a0-42b4-af5c-2046b460b1dc'/>
> +      </source>
> +    </hostdev>
> +    <video>
> +      <model type='qxl' heads='1'/>
> +    </video>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>