attribute of the device's ``<source>`` element can be used to disable the
filtering and allow all guest writes to the configuration space.
+ * bhyve: Support setting the framebuffer resolution
+
+ Libvirt can now set the framebuffer's "w" and "h" parameters
+ using the ``resolution`` element.
+
* **Improvements**
* qemu: Allow migration over UNIX sockets
:since:`Since 5.9.0` , the ``model`` element may also have an optional
``resolution`` sub-element. The ``resolution`` element has attributes ``x``
and ``y`` to set the minimum resolution for the video device. This
- sub-element is valid for model types "vga", "qxl", "bochs", and "virtio".
+ sub-element is valid for model types "vga", "qxl", "bochs", "gop",
+ and "virtio".
``acceleration``
Configure if video acceleration should be enabled.
return -1;
}
+ if (video->res)
+ virBufferAsprintf(&opt, ",w=%d,h=%d", video->res->x, video->res->y);
+
if (video->driver)
virBufferAsprintf(&opt, ",vga=%s",
virDomainVideoVGAConfTypeToString(video->driver->vgaconf));
if (virStrToLong_i(param, NULL, 10, &graphics->data.vnc.port))
goto error;
}
+
+ if (STRPREFIX(param, "w=")) {
+ param += strlen("w=");
+
+ if (video->res == NULL)
+ video->res = g_new0(virDomainVideoResolutionDef, 1);
+
+ if (virStrToLong_uip(param, NULL, 10, &video->res->x))
+ goto error;
+ }
+
+ if (STRPREFIX(param, "h=")) {
+ param += strlen("h=");
+
+ if (video->res == NULL)
+ video->res = g_new0(virDomainVideoResolutionDef, 1);
+
+ if (virStrToLong_uip(param, NULL, 10, &video->res->y))
+ goto error;
+ }
}
cleanup:
--- /dev/null
+/usr/sbin/bhyve \
+-c 1 \
+-m 214 \
+-u \
+-H \
+-P \
+-s 0:0,hostbridge \
+-l bootrom,/path/to/test.fd \
+-s 2:0,fbuf,tcp=127.0.0.1:5904,w=1920,h=1080 \
+-s 1,lpc bhyve
--- /dev/null
+<domain type='bhyve'>
+ <name>bhyve</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>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>destroy</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <graphics type='vnc' port='5904' autoport='no' listen='127.0.0.1'>
+ <listen type='address' address='127.0.0.1'/>
+ </graphics>
+ <video>
+ <model type='default' heads='1'>
+ <resolution x='1920' y='1080'/>
+ </model>
+ </video>
+ </devices>
+</domain>
DO_TEST("vnc-vga-on");
DO_TEST("vnc-vga-off");
DO_TEST("vnc-vga-io");
+ DO_TEST("vnc-resolution");
virObjectUnref(driver.caps);
virObjectUnref(driver.xmlopt);
--- /dev/null
+/usr/sbin/bhyve \
+-c 1 \
+-m 214 \
+-u \
+-H \
+-P \
+-s 0:0,hostbridge \
+-l bootrom,/path/to/test.fd \
+-s 1:0,lpc \
+-s 2:0,fbuf,tcp=127.0.0.1:5904,w=1920,h=1080 bhyve
--- /dev/null
+<domain type='bhyve'>
+ <name>bhyve</name>
+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
+ <memory>219136</memory>
+ <vcpu>1</vcpu>
+ <os>
+ <type>hvm</type>
+ <loader readonly="yes" type="pflash">/path/to/test.fd</loader>
+ </os>
+ <devices>
+ <video>
+ <model type='gop' heads='1' primary='yes'>
+ <resolution x="1920" y="1080"/>
+ </model>
+ </video>
+ <graphics type='vnc' port='5904'>
+ <listen type='address' address='127.0.0.1'/>
+ </graphics>
+ </devices>
+</domain>
DO_TEST("vnc-vgaconf-off");
DO_TEST("vnc-vgaconf-io");
DO_TEST("vnc-autoport");
+ DO_TEST("vnc-resolution");
DO_TEST("cputopology");
DO_TEST_FAILURE("cputopology-nvcpu-mismatch");
DO_TEST("commandline");
--- /dev/null
+<domain type='bhyve'>
+ <name>bhyve</name>
+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64'>hvm</type>
+ <loader readonly='yes' type='pflash'>/path/to/test.fd</loader>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <controller type='pci' index='0' model='pci-root'/>
+ <controller type='isa' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
+ </controller>
+ <graphics type='vnc' port='5904' autoport='no' listen='127.0.0.1'>
+ <listen type='address' address='127.0.0.1'/>
+ </graphics>
+ <video>
+ <model type='gop' heads='1' primary='yes'>
+ <resolution x='1920' y='1080'/>
+ </model>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </video>
+ </devices>
+</domain>
DO_TEST_DIFFERENT("vnc-vgaconf-off");
DO_TEST_DIFFERENT("vnc-vgaconf-io");
DO_TEST_DIFFERENT("vnc-autoport");
+ DO_TEST_DIFFERENT("vnc-resolution");
DO_TEST_DIFFERENT("commandline");
DO_TEST_DIFFERENT("msrs");
DO_TEST_DIFFERENT("sound");