mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
qemu: add virtio-gpu virgl support
Check if virtio-gpu provides virgl option, and add qemu command line formatter. It is enabled with the existing accel3d attribute: <model type='virtio' heads='1'> <acceleration accel3d='yes'/> </model> Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
21373feb4e
commit
06198b9c73
@ -302,6 +302,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
|
|||||||
|
|
||||||
"incoming-defer", /* 200 */
|
"incoming-defer", /* 200 */
|
||||||
"virtio-gpu",
|
"virtio-gpu",
|
||||||
|
"virtio-gpu.virgl",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -1631,6 +1632,10 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsQxlVga[] = {
|
|||||||
{ "vgamem_mb", QEMU_CAPS_QXL_VGA_VGAMEM },
|
{ "vgamem_mb", QEMU_CAPS_QXL_VGA_VGAMEM },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioGpu[] = {
|
||||||
|
{ "virgl", QEMU_CAPS_DEVICE_VIRTIO_GPU_VIRGL },
|
||||||
|
};
|
||||||
|
|
||||||
struct virQEMUCapsObjectTypeProps {
|
struct virQEMUCapsObjectTypeProps {
|
||||||
const char *type;
|
const char *type;
|
||||||
struct virQEMUCapsStringFlags *props;
|
struct virQEMUCapsStringFlags *props;
|
||||||
@ -1684,6 +1689,8 @@ static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
|
|||||||
ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxl) },
|
ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxl) },
|
||||||
{ "qxl-vga", virQEMUCapsObjectPropsQxlVga,
|
{ "qxl-vga", virQEMUCapsObjectPropsQxlVga,
|
||||||
ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxlVga) },
|
ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxlVga) },
|
||||||
|
{ "virtio-gpu-pci", virQEMUCapsObjectPropsVirtioGpu,
|
||||||
|
ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu) },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -328,6 +328,7 @@ typedef enum {
|
|||||||
/* 200 */
|
/* 200 */
|
||||||
QEMU_CAPS_INCOMING_DEFER, /* -incoming defer and migrate_incoming */
|
QEMU_CAPS_INCOMING_DEFER, /* -incoming defer and migrate_incoming */
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_GPU, /* -device virtio-gpu-* & virtio-vga */
|
QEMU_CAPS_DEVICE_VIRTIO_GPU, /* -device virtio-gpu-* & virtio-vga */
|
||||||
|
QEMU_CAPS_DEVICE_VIRTIO_GPU_VIRGL, /* -device virtio-gpu-*.virgl */
|
||||||
|
|
||||||
QEMU_CAPS_LAST /* this must always be the last item */
|
QEMU_CAPS_LAST /* this must always be the last item */
|
||||||
} virQEMUCapsFlags;
|
} virQEMUCapsFlags;
|
||||||
|
@ -5896,7 +5896,18 @@ qemuBuildDeviceVideoStr(virDomainDefPtr def,
|
|||||||
|
|
||||||
virBufferAsprintf(&buf, "%s,id=%s", model, video->info.alias);
|
virBufferAsprintf(&buf, "%s,id=%s", model, video->info.alias);
|
||||||
|
|
||||||
if (video->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
|
if (video->type == VIR_DOMAIN_VIDEO_TYPE_VIRTIO) {
|
||||||
|
if (video->accel && video->accel->accel3d) {
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_GPU_VIRGL)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
"%s", _("virtio-gpu 3d acceleration is not supported"));
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
virBufferAsprintf(&buf, ",virgl=%s",
|
||||||
|
virTristateSwitchTypeToString(video->accel->accel3d));
|
||||||
|
}
|
||||||
|
} else if (video->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
|
||||||
if (video->vram > (UINT_MAX / 1024)) {
|
if (video->vram > (UINT_MAX / 1024)) {
|
||||||
virReportError(VIR_ERR_OVERFLOW,
|
virReportError(VIR_ERR_OVERFLOW,
|
||||||
_("value for 'vram' must be less than '%u'"),
|
_("value for 'vram' must be less than '%u'"),
|
||||||
|
@ -1597,6 +1597,14 @@
|
|||||||
"id": "libvirt-30"
|
"id": "libvirt-30"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "libvirt-31",
|
||||||
|
"error": {
|
||||||
|
"class": "DeviceNotFound",
|
||||||
|
"desc": "Device 'virtio-gpu-pci' not found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -1641,7 +1649,7 @@
|
|||||||
"name": "none"
|
"name": "none"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-31"
|
"id": "libvirt-32"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1713,7 +1721,7 @@
|
|||||||
"name": "Opteron_G4"
|
"name": "Opteron_G4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1721,11 +1729,11 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-34",
|
"id": "libvirt-35",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-tpm-models has not been found"
|
"desc": "The command query-tpm-models has not been found"
|
||||||
@ -1733,7 +1741,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-35",
|
"id": "libvirt-36",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-tpm-types has not been found"
|
"desc": "The command query-tpm-types has not been found"
|
||||||
@ -1741,7 +1749,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-36",
|
"id": "libvirt-37",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-command-line-options has not been found"
|
"desc": "The command query-command-line-options has not been found"
|
||||||
@ -1755,5 +1763,5 @@
|
|||||||
"state": false
|
"state": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-37"
|
"id": "libvirt-38"
|
||||||
}
|
}
|
||||||
|
@ -1776,6 +1776,14 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "libvirt-32",
|
||||||
|
"error": {
|
||||||
|
"class": "DeviceNotFound",
|
||||||
|
"desc": "Device 'virtio-gpu-pci' not found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -1827,7 +1835,7 @@
|
|||||||
"name": "none"
|
"name": "none"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1905,7 +1913,7 @@
|
|||||||
"name": "Opteron_G5"
|
"name": "Opteron_G5"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1913,11 +1921,11 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-35",
|
"id": "libvirt-36",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-tpm-models has not been found"
|
"desc": "The command query-tpm-models has not been found"
|
||||||
@ -1925,7 +1933,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-36",
|
"id": "libvirt-37",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-tpm-types has not been found"
|
"desc": "The command query-tpm-types has not been found"
|
||||||
@ -1933,7 +1941,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-37",
|
"id": "libvirt-38",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-command-line-options has not been found"
|
"desc": "The command query-command-line-options has not been found"
|
||||||
@ -1947,5 +1955,5 @@
|
|||||||
"state": false
|
"state": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -1823,6 +1823,14 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "libvirt-32",
|
||||||
|
"error": {
|
||||||
|
"class": "DeviceNotFound",
|
||||||
|
"desc": "Device 'virtio-gpu-pci' not found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -1877,7 +1885,7 @@
|
|||||||
"name": "none"
|
"name": "none"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1955,7 +1963,7 @@
|
|||||||
"name": "qemu64"
|
"name": "qemu64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1963,11 +1971,11 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-35",
|
"id": "libvirt-36",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-tpm-models has not been found"
|
"desc": "The command query-tpm-models has not been found"
|
||||||
@ -1975,7 +1983,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-36",
|
"id": "libvirt-37",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-tpm-types has not been found"
|
"desc": "The command query-tpm-types has not been found"
|
||||||
@ -1983,7 +1991,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"id": "libvirt-37",
|
"id": "libvirt-38",
|
||||||
"error": {
|
"error": {
|
||||||
"class": "CommandNotFound",
|
"class": "CommandNotFound",
|
||||||
"desc": "The command query-command-line-options has not been found"
|
"desc": "The command query-command-line-options has not been found"
|
||||||
@ -1997,5 +2005,5 @@
|
|||||||
"state": false
|
"state": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -1897,6 +1897,14 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "libvirt-32",
|
||||||
|
"error": {
|
||||||
|
"class": "DeviceNotFound",
|
||||||
|
"desc": "Device 'virtio-gpu-pci' not found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -1967,7 +1975,7 @@
|
|||||||
"cpu-max": 1
|
"cpu-max": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2045,7 +2053,7 @@
|
|||||||
"name": "qemu64"
|
"name": "qemu64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2053,12 +2061,6 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"return": [
|
|
||||||
],
|
|
||||||
"id": "libvirt-35"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2068,6 +2070,12 @@
|
|||||||
"id": "libvirt-36"
|
"id": "libvirt-36"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
],
|
||||||
|
"id": "libvirt-37"
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2741,7 +2749,7 @@
|
|||||||
"option": "drive"
|
"option": "drive"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-37"
|
"id": "libvirt-38"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2751,5 +2759,5 @@
|
|||||||
"state": false
|
"state": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -1959,6 +1959,14 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "libvirt-32",
|
||||||
|
"error": {
|
||||||
|
"class": "DeviceNotFound",
|
||||||
|
"desc": "Device 'virtio-gpu-pci' not found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2045,7 +2053,7 @@
|
|||||||
"cpu-max": 1
|
"cpu-max": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2123,7 +2131,7 @@
|
|||||||
"name": "qemu64"
|
"name": "qemu64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2131,12 +2139,6 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"return": [
|
|
||||||
],
|
|
||||||
"id": "libvirt-35"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2146,6 +2148,12 @@
|
|||||||
"id": "libvirt-36"
|
"id": "libvirt-36"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
],
|
||||||
|
"id": "libvirt-37"
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2721,7 +2729,7 @@
|
|||||||
"option": "drive"
|
"option": "drive"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-37"
|
"id": "libvirt-38"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2743,5 +2751,5 @@
|
|||||||
"state": false
|
"state": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -1923,6 +1923,14 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "libvirt-32",
|
||||||
|
"error": {
|
||||||
|
"class": "DeviceNotFound",
|
||||||
|
"desc": "Device 'virtio-gpu-pci' not found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2017,7 +2025,7 @@
|
|||||||
"cpu-max": 1
|
"cpu-max": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2095,7 +2103,7 @@
|
|||||||
"name": "qemu64"
|
"name": "qemu64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2103,12 +2111,6 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"return": [
|
|
||||||
],
|
|
||||||
"id": "libvirt-35"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2118,6 +2120,12 @@
|
|||||||
"id": "libvirt-36"
|
"id": "libvirt-36"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
],
|
||||||
|
"id": "libvirt-37"
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2703,7 +2711,7 @@
|
|||||||
"option": "drive"
|
"option": "drive"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-37"
|
"id": "libvirt-38"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2725,5 +2733,5 @@
|
|||||||
"state": false
|
"state": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -2369,6 +2369,14 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "libvirt-32",
|
||||||
|
"error": {
|
||||||
|
"class": "DeviceNotFound",
|
||||||
|
"desc": "Device 'virtio-gpu-pci' not found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2479,7 +2487,7 @@
|
|||||||
"cpu-max": 255
|
"cpu-max": 255
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2560,7 +2568,7 @@
|
|||||||
"name": "qemu64"
|
"name": "qemu64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2568,21 +2576,21 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
"tpm-tis"
|
"tpm-tis"
|
||||||
],
|
],
|
||||||
"id": "libvirt-35"
|
"id": "libvirt-36"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
"passthrough"
|
"passthrough"
|
||||||
],
|
],
|
||||||
"id": "libvirt-36"
|
"id": "libvirt-37"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -3442,7 +3450,7 @@
|
|||||||
"option": "drive"
|
"option": "drive"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-37"
|
"id": "libvirt-38"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -3464,5 +3472,5 @@
|
|||||||
"capability": "zero-blocks"
|
"capability": "zero-blocks"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -2677,6 +2677,87 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"name": "any_layout",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "notify_on_empty",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "event_idx",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "indirect_desc",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "max_outputs",
|
||||||
|
"type": "uint32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "virtio-backend",
|
||||||
|
"type": "child<virtio-gpu-device>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "command_serr_enable",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "multifunction",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rombar",
|
||||||
|
"type": "uint32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "romfile",
|
||||||
|
"type": "str"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "addr",
|
||||||
|
"description": "Slot and optional function number, example: 06.0 or 06",
|
||||||
|
"type": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "disable-modern",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "disable-legacy",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "virtio-pci-bus-master-bug-migration",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vectors",
|
||||||
|
"type": "uint32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ioeventfd",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-32"
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2803,7 +2884,7 @@
|
|||||||
"cpu-max": 255
|
"cpu-max": 255
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2893,7 +2974,7 @@
|
|||||||
"name": "qemu64"
|
"name": "qemu64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2901,21 +2982,21 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
"tpm-tis"
|
"tpm-tis"
|
||||||
],
|
],
|
||||||
"id": "libvirt-35"
|
"id": "libvirt-36"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
"passthrough"
|
"passthrough"
|
||||||
],
|
],
|
||||||
"id": "libvirt-36"
|
"id": "libvirt-37"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -3919,7 +4000,7 @@
|
|||||||
"option": "drive"
|
"option": "drive"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-37"
|
"id": "libvirt-38"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -3949,5 +4030,5 @@
|
|||||||
"capability": "events"
|
"capability": "events"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -163,4 +163,5 @@
|
|||||||
<flag name='virtio-net'/>
|
<flag name='virtio-net'/>
|
||||||
<flag name='incoming-defer'/>
|
<flag name='incoming-defer'/>
|
||||||
<flag name='virtio-gpu'/>
|
<flag name='virtio-gpu'/>
|
||||||
|
<flag name='virtio-gpu.virgl'/>
|
||||||
</qemuCaps>
|
</qemuCaps>
|
||||||
|
@ -2677,6 +2677,92 @@
|
|||||||
"id": "libvirt-31"
|
"id": "libvirt-31"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"return": [
|
||||||
|
{
|
||||||
|
"name": "any_layout",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "notify_on_empty",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "event_idx",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "indirect_desc",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "virgl",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "max_outputs",
|
||||||
|
"type": "uint32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "virtio-backend",
|
||||||
|
"type": "child<virtio-gpu-device>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "command_serr_enable",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "multifunction",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rombar",
|
||||||
|
"type": "uint32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "romfile",
|
||||||
|
"type": "str"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "addr",
|
||||||
|
"description": "Slot and optional function number, example: 06.0 or 06",
|
||||||
|
"type": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "disable-modern",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "disable-legacy",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "virtio-pci-bus-master-bug-migration",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vectors",
|
||||||
|
"type": "uint32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ioeventfd",
|
||||||
|
"description": "on/off",
|
||||||
|
"type": "bool"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "libvirt-32"
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
{
|
{
|
||||||
@ -2803,7 +2889,7 @@
|
|||||||
"cpu-max": 255
|
"cpu-max": 255
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-32"
|
"id": "libvirt-33"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2893,7 +2979,7 @@
|
|||||||
"name": "qemu64"
|
"name": "qemu64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-33"
|
"id": "libvirt-34"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2901,21 +2987,21 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"present": true
|
"present": true
|
||||||
},
|
},
|
||||||
"id": "libvirt-34"
|
"id": "libvirt-35"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
"tpm-tis"
|
"tpm-tis"
|
||||||
],
|
],
|
||||||
"id": "libvirt-35"
|
"id": "libvirt-36"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
"return": [
|
"return": [
|
||||||
"passthrough"
|
"passthrough"
|
||||||
],
|
],
|
||||||
"id": "libvirt-36"
|
"id": "libvirt-37"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -3919,7 +4005,7 @@
|
|||||||
"option": "drive"
|
"option": "drive"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-37"
|
"id": "libvirt-38"
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -3949,5 +4035,5 @@
|
|||||||
"capability": "events"
|
"capability": "events"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "libvirt-38"
|
"id": "libvirt-39"
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
LC_ALL=C \
|
||||||
|
PATH=/bin \
|
||||||
|
HOME=/home/test \
|
||||||
|
USER=test \
|
||||||
|
LOGNAME=test \
|
||||||
|
QEMU_AUDIO_DRV=none \
|
||||||
|
/usr/bin/qemu \
|
||||||
|
-name QEMUGuest1 \
|
||||||
|
-S \
|
||||||
|
-M pc \
|
||||||
|
-m 1024 \
|
||||||
|
-smp 1 \
|
||||||
|
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
|
||||||
|
-nographic \
|
||||||
|
-nodefaults \
|
||||||
|
-monitor unix:/tmp/test-monitor,server,nowait \
|
||||||
|
-no-acpi \
|
||||||
|
-boot c \
|
||||||
|
-usb \
|
||||||
|
-drive file=/var/lib/libvirt/images/QEMUGuest1,if=none,id=drive-ide0-0-0,\
|
||||||
|
format=qcow2,cache=none \
|
||||||
|
-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \
|
||||||
|
-device virtio-vga,id=video0,virgl=on,bus=pci.0,addr=0x2 \
|
||||||
|
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
|
@ -0,0 +1,33 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory unit='KiB'>1048576</memory>
|
||||||
|
<currentMemory unit='KiB'>1048576</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</emulator>
|
||||||
|
<disk type='file' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='none'/>
|
||||||
|
<source file='/var/lib/libvirt/images/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||||
|
</disk>
|
||||||
|
<controller type='ide' index='0'/>
|
||||||
|
<controller type='usb' index='0'/>
|
||||||
|
<controller type='pci' index='0' model='pci-root'/>
|
||||||
|
<video>
|
||||||
|
<model type='virtio' heads='1'>
|
||||||
|
<acceleration accel3d='yes'/>
|
||||||
|
</model>
|
||||||
|
</video>
|
||||||
|
<memballoon model='virtio'/>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -1428,6 +1428,10 @@ mymain(void)
|
|||||||
DO_TEST("video-virtio-gpu-device",
|
DO_TEST("video-virtio-gpu-device",
|
||||||
QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_VIRTIO_GPU,
|
QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_VIRTIO_GPU,
|
||||||
QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
|
QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
|
||||||
|
DO_TEST("video-virtio-gpu-virgl",
|
||||||
|
QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_VIRTIO_GPU,
|
||||||
|
QEMU_CAPS_DEVICE_VIRTIO_GPU_VIRGL,
|
||||||
|
QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
|
||||||
DO_TEST_PARSE_ERROR("video-invalid", NONE);
|
DO_TEST_PARSE_ERROR("video-invalid", NONE);
|
||||||
|
|
||||||
DO_TEST("virtio-rng-default", QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_VIRTIO_RNG,
|
DO_TEST("virtio-rng-default", QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_VIRTIO_RNG,
|
||||||
|
@ -631,6 +631,7 @@ mymain(void)
|
|||||||
DO_TEST("net-udp");
|
DO_TEST("net-udp");
|
||||||
|
|
||||||
DO_TEST("video-virtio-gpu-device");
|
DO_TEST("video-virtio-gpu-device");
|
||||||
|
DO_TEST("video-virtio-gpu-virgl");
|
||||||
|
|
||||||
qemuTestDriverFree(&driver);
|
qemuTestDriverFree(&driver);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user