[PATCH] hw/nvme: deprecate the use-intel-id compatibility parameter
by Klaus Jensen
From: Klaus Jensen <k.jensen(a)samsung.com>
Since version 5.2 commit 6eb7a071292a ("hw/block/nvme: change controller
pci id"), the emulated NVMe controller has defaulted to a non-Intel PCI
identifier.
Deprecate the compatibility parameter so we can get rid of it once and
for all.
Signed-off-by: Klaus Jensen <k.jensen(a)samsung.com>
---
docs/about/deprecated.rst | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 896e5a97abbd..450f945ac25f 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -356,6 +356,14 @@ contains native support for this feature and thus use of the option
ROM approach is obsolete. The native SeaBIOS support can be activated
by using ``-machine graphics=off``.
+``-device nvme,use-intel-id=on|off`` (since 7.1)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``nvme`` device originally used a PCI Vendor/Device Identifier combination
+from Intel that was not properly allocated. Since version 5.2, the controller
+has used a properly allocated identifier. Deprecate the ``use-intel-id``
+machine compatibility parameter.
+
Block device options
''''''''''''''''''''
--
2.35.1
2 years, 5 months
[PATCH] remote_daemon: Don't run virStateCleanup() if virStateReload() is still running
by Michal Privoznik
When a SIGHUP is received a thread is spawned that runs
virStateReload(). However, if SIGINT is received while the former
thread is still running then we may get into problematic
situation: the cleanup code in main() sees drivers initialized
and thus calls virStateCleanup(). So now we have two threads, one
running virStateReload() the other virStateCleanup(). In this
situation it's very likely that a race condition occurs and
either of threads causes SIGSEGV.
To fix this, unmark drivers as initialized in the
virStateReload() thread for the time the function runs.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2075837
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/remote/remote_daemon.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c
index 26469e0d9f..37d27f93f4 100644
--- a/src/remote/remote_daemon.c
+++ b/src/remote/remote_daemon.c
@@ -77,7 +77,7 @@ virNetSASLContext *saslCtxt = NULL;
virNetServerProgram *remoteProgram = NULL;
virNetServerProgram *qemuProgram = NULL;
-volatile bool driversInitialized = false;
+volatile gint driversInitialized = 0;
static void daemonErrorHandler(void *opaque G_GNUC_UNUSED,
virErrorPtr err G_GNUC_UNUSED)
@@ -453,8 +453,13 @@ static void daemonReloadHandlerThread(void *opaque G_GNUC_UNUSED)
VIR_INFO("Reloading configuration on SIGHUP");
virHookCall(VIR_HOOK_DRIVER_DAEMON, "-",
VIR_HOOK_DAEMON_OP_RELOAD, SIGHUP, "SIGHUP", NULL, NULL);
- if (virStateReload() < 0)
+
+ g_atomic_int_set(&driversInitialized, 0);
+ if (virStateReload() < 0) {
VIR_WARN("Error while reloading drivers");
+ } else {
+ g_atomic_int_inc(&driversInitialized);
+ }
}
static void daemonReloadHandler(virNetDaemon *dmn G_GNUC_UNUSED,
@@ -463,7 +468,7 @@ static void daemonReloadHandler(virNetDaemon *dmn G_GNUC_UNUSED,
{
virThread thr;
- if (!driversInitialized) {
+ if (g_atomic_int_get(&driversInitialized) == 0) {
VIR_WARN("Drivers are not initialized, reload ignored");
return;
}
@@ -607,7 +612,7 @@ static void daemonRunStateInit(void *opaque)
goto cleanup;
}
- driversInitialized = true;
+ g_atomic_int_inc(&driversInitialized);
virNetDaemonSetShutdownCallbacks(dmn,
virStateShutdownPrepare,
@@ -1212,10 +1217,10 @@ int main(int argc, char **argv) {
cleanup:
virNetlinkEventServiceStopAll();
- if (driversInitialized) {
+ if (g_atomic_int_get(&driversInitialized) != 0) {
/* NB: Possible issue with timing window between driversInitialized
* setting if virNetlinkEventServerStart fails */
- driversInitialized = false;
+ g_atomic_int_set(&driversInitialized, 0);
virStateCleanup();
}
--
2.35.1
2 years, 6 months
[libvirt PATCH v2 0/4] Enable copy/paste for vnc displays
by Jonathon Jongsma
This patch series enables support for the qemu-vdagent character device which
enables copy/paste support between guest and client when using vnc graphics.
The guest must be configured with something like the following:
<channel type='qemu-vdagent'>
<source>
<clipboard copypaste='yes'/>
<mouse mode='client'/>
</source>
<target type='virtio' name='com.redhat.spice.0'/>
</channel>
Copy/paste sync requires a vnc client that has support for copy/paste commands.
Currently virt-viewer does not work, but the version of tigervnc provided by
fedora (executable name 'vncviewer') does work.
More details about this device on Gerd's blog:
https://www.kraxel.org/blog/2021/05/qemu-cut-paste/
For now I have left the target to be configurable to match the spicevmc
channel, although Marc-Andre has suggested to simply hard-code it to the virtio
name com.redhat.spice.0
Changes in v2:
- change xml syntax to use <clipboard> and <mouse> sub-elements of <source>
defined in the same way as they are for the spice display.
- fix a build failure when apparmor was enabled
- Add another test for when features are turned off
Jonathon Jongsma (4):
qemu: add capability for qemu-vdagent chardev
Rename virDomainGraphicsSpiceMouseMode to virDomainMouseMode
conf: add qemu-vdagent channel
qemu: add support for qemu-vdagent channel
docs/formatdomain.rst | 23 ++++++
src/conf/domain_conf.c | 70 +++++++++++++++++--
src/conf/domain_conf.h | 24 ++++---
src/conf/domain_validate.c | 1 +
src/conf/schemas/domaincommon.rng | 51 +++++++++-----
src/libvirt_private.syms | 4 +-
src/libxl/libxl_conf.c | 8 +--
src/libxl/xen_xl.c | 16 ++---
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 32 +++++++--
src/qemu/qemu_monitor_json.c | 27 +++++++
src/qemu/qemu_process.c | 1 +
src/qemu/qemu_validate.c | 9 +++
src/security/security_apparmor.c | 2 +
src/security/security_dac.c | 2 +
.../caps_6.1.0.x86_64.xml | 1 +
.../caps_6.2.0.aarch64.xml | 1 +
.../caps_6.2.0.x86_64.xml | 1 +
.../caps_7.0.0.x86_64.xml | 1 +
...l-qemu-vdagent-features.x86_64-latest.args | 41 +++++++++++
.../channel-qemu-vdagent-features.xml | 37 ++++++++++
.../channel-qemu-vdagent.x86_64-latest.args | 41 +++++++++++
.../qemuxml2argvdata/channel-qemu-vdagent.xml | 37 ++++++++++
tests/qemuxml2argvtest.c | 2 +
...el-qemu-vdagent-features.x86_64-latest.xml | 58 +++++++++++++++
.../channel-qemu-vdagent.x86_64-latest.xml | 58 +++++++++++++++
tests/qemuxml2xmltest.c | 2 +
tests/testutilsqemu.c | 1 +
29 files changed, 500 insertions(+), 54 deletions(-)
create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent-features.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent-features.xml
create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/channel-qemu-vdagent.xml
create mode 100644 tests/qemuxml2xmloutdata/channel-qemu-vdagent-features.x86_64-latest.xml
create mode 100644 tests/qemuxml2xmloutdata/channel-qemu-vdagent.x86_64-latest.xml
--
2.35.1
2 years, 6 months
[PATCH] Support cpu0-id of Qemu QMP query-sev-capabilities
by Niteesh Dubey
It allows libvirt to provide the value of cpu0-id retuned by the Qemu QMP
command query-sev-capabilities as implemented by the Qemu Patch [1] which
is merged to Qemu master branch and should be available with Qemu 7.1.
This is used to get the signed Chip Endorsement Key (CEK) of the CPU of AMD
system from AMD's Key Distribution Service (KDS).
Similar to cbitpos, reducedPhysBits, maxGuests & maxESGuests;
the value of cpu0-id is also provided using 'virsh domcapability'.
[1] https://lore.kernel.org/all/20220228093014.882288-1-dovmurik@linux.ibm.com/
Signed-off-by: Niteesh Dubey <niteesh(a)linux.ibm.com>
---
include/libvirt/libvirt-host.h | 11 +++++++++++
src/conf/domain_capabilities.c | 4 ++++
src/conf/domain_capabilities.h | 1 +
src/qemu/qemu_capabilities.c | 12 ++++++++++++
src/qemu/qemu_driver.c | 5 +++++
src/qemu/qemu_monitor_json.c | 6 ++++++
6 files changed, 39 insertions(+)
diff --git a/include/libvirt/libvirt-host.h b/include/libvirt/libvirt-host.h
index b5cf8a4a4a..d35abbd9aa 100644
--- a/include/libvirt/libvirt-host.h
+++ b/include/libvirt/libvirt-host.h
@@ -537,6 +537,17 @@ typedef virNodeMemoryStats *virNodeMemoryStatsPtr;
*/
# define VIR_NODE_SEV_CERT_CHAIN "cert-chain"
+/**
+ * VIR_NODE_SEV_CPU0_ID:
+ *
+ * Macro represents the unique ID of CPU0 (socket 0) needed to retrieve
+ * the signed CEK of the CPU from AMD's Key Distribution Service (KDS),
+ * as VIR_TYPED_PARAMS_STRING.
+ *
+ * Since: v8.3.1
+ */
+# define VIR_NODE_SEV_CPU0_ID "cpu0-id"
+
/**
* VIR_NODE_SEV_CBITPOS:
*
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index c394a7a390..2a888da1a9 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -601,6 +601,10 @@ virDomainCapsFeatureSEVFormat(virBuffer *buf,
sev->max_guests);
virBufferAsprintf(buf, "<maxESGuests>%d</maxESGuests>\n",
sev->max_es_guests);
+ if (sev->cpu0_id != NULL) {
+ virBufferAsprintf(buf, "<cpu0Id>%s</cpu0Id>\n",
+ sev->cpu0_id);
+ }
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</sev>\n");
}
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index 1d2f4ac7a5..f2eed80b15 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -185,6 +185,7 @@ typedef struct _virSEVCapability virSEVCapability;
struct _virSEVCapability {
char *pdh;
char *cert_chain;
+ char *cpu0_id;
unsigned int cbitpos;
unsigned int reduced_phys_bits;
unsigned int max_guests;
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index b91db851bb..2d3165e74a 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -1957,6 +1957,9 @@ virQEMUCapsSEVInfoCopy(virSEVCapability **dst,
tmp->pdh = g_strdup(src->pdh);
tmp->cert_chain = g_strdup(src->cert_chain);
+ if (src->cpu0_id != NULL) {
+ tmp->cpu0_id = g_strdup(src->cpu0_id);
+ }
tmp->cbitpos = src->cbitpos;
tmp->reduced_phys_bits = src->reduced_phys_bits;
@@ -4693,6 +4696,11 @@ virQEMUCapsFormatSEVInfo(virQEMUCaps *qemuCaps, virBuffer *buf)
virBufferEscapeString(buf, "<pdh>%s</pdh>\n", sev->pdh);
virBufferEscapeString(buf, "<certChain>%s</certChain>\n",
sev->cert_chain);
+ if (sev->cpu0_id != NULL) {
+ virBufferEscapeString(buf, "<cpu0Id>%s</cpu0Id>\n",
+ sev->cpu0_id);
+ }
+
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</sev>\n");
}
@@ -6478,6 +6486,10 @@ virQEMUCapsFillDomainFeatureSEVCaps(virQEMUCaps *qemuCaps,
domCaps->sev->pdh = g_strdup(cap->pdh);
domCaps->sev->cert_chain = g_strdup(cap->cert_chain);
+ if (cap->cpu0_id != NULL) {
+ domCaps->sev->cpu0_id = g_strdup(cap->cpu0_id);
+ }
+
domCaps->sev->cbitpos = cap->cbitpos;
domCaps->sev->reduced_phys_bits = cap->reduced_phys_bits;
domCaps->sev->max_guests = cap->max_guests;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index ee0963c30d..464c080409 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -19861,6 +19861,11 @@ qemuGetSEVInfoToParams(virQEMUCaps *qemuCaps,
VIR_NODE_SEV_CERT_CHAIN, sev->cert_chain) < 0)
goto cleanup;
+ if ((sev->cpu0_id != NULL) &&
+ (virTypedParamsAddString(&sevParams, &n, &maxpar,
+ VIR_NODE_SEV_CPU0_ID, sev->cpu0_id) < 0))
+ goto cleanup;
+
if (virTypedParamsAddUInt(&sevParams, &n, &maxpar,
VIR_NODE_SEV_CBITPOS, sev->cbitpos) < 0)
goto cleanup;
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 776f4ab2ea..9e611e93e8 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -6400,6 +6400,7 @@ qemuMonitorJSONGetSEVCapabilities(qemuMonitor *mon,
virJSONValue *caps;
const char *pdh = NULL;
const char *cert_chain = NULL;
+ const char *cpu0_id = NULL;
unsigned int cbitpos;
unsigned int reduced_phys_bits;
g_autoptr(virSEVCapability) capability = NULL;
@@ -6457,6 +6458,11 @@ qemuMonitorJSONGetSEVCapabilities(qemuMonitor *mon,
capability->cert_chain = g_strdup(cert_chain);
+ cpu0_id = virJSONValueObjectGetString(caps, "cpu0-id");
+ if (cpu0_id != NULL) {
+ capability->cpu0_id = g_strdup(cpu0_id);
+ }
+
capability->cbitpos = cbitpos;
capability->reduced_phys_bits = reduced_phys_bits;
*capabilities = g_steal_pointer(&capability);
--
2.25.1
2 years, 6 months
[PATCH 0/2] virnetdev: Fix regression in setting VLAN tag
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (2):
virNetDevSetVfMac: Fix error message on invalid args
virnetdev: Fix regression in setting VLAN tag
src/util/virnetdev.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
--
2.35.1
2 years, 6 months
[PATCH v4 00/19] Add 'version' to other exported types
by Victor Toso
Hi,
The 4th is coming!
v3: https://listman.redhat.com/archives/libvir-list/2022-April/230200.html
v2: https://listman.redhat.com/archives/libvir-list/2022-April/230097.html
v1: https://listman.redhat.com/archives/libvir-list/2022-April/229881.html
I tried to be more careful this time in regards to the patch flow.
- The first 4 patches are related to wrong versions introduced in
https://gitlab.com/libvirt/libvirt/-/commit/034432e47b
Each commit log points out the error I did in v3 and fixes it. If you
rather squash them, feel free.
- 05/19 "remove comments between enum values" are following Andrea and
Peter's suggestion that this should be fixed before adding the version
tags:
https://listman.redhat.com/archives/libvir-list/2022-April/230304.html
- 06/19 "avoid sc_prohibit_nonreentrant in a comment" is the workaround
proposed by Peter to avoid syntax-check failure
https://listman.redhat.com/archives/libvir-list/2022-April/230238.html
- I have set the virAdm exported types to be minimum = v2.0.0. This is
for all related types of libvirt-admin:
* 08/19 for enums;
* 09/19 for macros;
* 10/19 for typedefs;
* 12/19 for functions;
- For exported version of functions, the syms file are the source of
truth apart from 4 functions (Peter)
https://listman.redhat.com/archives/libvir-list/2022-April/230236.html
- Variable's comments are now properly sanitized (Andrea)
https://listman.redhat.com/archives/libvir-list/2022-April/230352.html
- Removed an extra line in the block of comments (Andrea)
https://listman.redhat.com/archives/libvir-list/2022-April/230291.html
The CI run for this series:
https://gitlab.com/victortoso/libvirt/-/pipelines/522757286
Have a great weekend,
Victor
Victor Toso (19):
docstring: typedef: fix version of virConnectListAllStoragePoolsFlags
docstring: typedef: fix version of virDomainDeviceModifyFlags
docstring: typedef: fix version of virDomainMemoryModFlags
docstring: typedef: fix version of virDomainVcpuFlags
docstring: remove comments between enum values
docstring: avoid sc_prohibit_nonreentrant in a comment
docstring: enums: libvirt: Add 'Since version' metadata
docstring: enums: admin: Add 'Since version' metadata
docstring: macros: admin: Add 'Since version' metadata
docstring: typedef: admin:: Add 'Since version' metadata
docstring: function: libvirt: Add 'Since version' metadata
docstring: function: admin: Add 'Since version' metadata
scripts: apibuild: parse 'Since' version for enums
scripts: apibuild: fix parsing block comments from typedef enum
scripts: apibuild: parse 'Since' for typedefs
scripts: apibuild: parse 'Since' for macros
scripts: apibuild: parse 'Since' for functions
scripts: apibuild: factor out comment cleaning
scripts: apibuild: add parsing variable's comments
include/libvirt/libvirt-admin.h | 67 +-
include/libvirt/libvirt-domain-checkpoint.h | 28 +-
include/libvirt/libvirt-domain-snapshot.h | 60 +-
include/libvirt/libvirt-domain.h | 1260 +++++++++++--------
include/libvirt/libvirt-event.h | 24 +-
include/libvirt/libvirt-host.h | 62 +-
include/libvirt/libvirt-interface.h | 8 +-
include/libvirt/libvirt-network.h | 92 +-
include/libvirt/libvirt-nodedev.h | 70 +-
include/libvirt/libvirt-nwfilter.h | 4 +-
include/libvirt/libvirt-secret.h | 40 +-
include/libvirt/libvirt-storage.h | 173 +--
include/libvirt/libvirt-stream.h | 24 +-
include/libvirt/virterror.h | 408 +++---
scripts/apibuild.py | 163 ++-
src/admin/libvirt-admin.c | 62 +
src/libvirt-domain-checkpoint.c | 24 +
src/libvirt-domain-snapshot.c | 42 +
src/libvirt-domain.c | 371 +++++-
src/libvirt-host.c | 68 +
src/libvirt-interface.c | 42 +
src/libvirt-network.c | 89 ++
src/libvirt-nodedev.c | 54 +
src/libvirt-nwfilter.c | 48 +
src/libvirt-secret.c | 40 +
src/libvirt-storage.c | 114 ++
src/libvirt-stream.c | 34 +
src/libvirt.c | 12 +
src/util/virerror.c | 30 +
src/util/virevent.c | 18 +
30 files changed, 2497 insertions(+), 1034 deletions(-)
--
2.35.1
2 years, 6 months
[PATCH v2] conf: virDomainGraphicsDefValidate: validate attribute 'network' for listen type 'network'
by Amneesh Singh
Related: https://gitlab.com/libvirt/libvirt/-/issues/93
Signed-off-by: Amneesh Singh <natto(a)weirdnatto.in>
---
v1 PATCH: https://listman.redhat.com/archives/libvir-list/2022-April/230021.html
src/conf/domain_validate.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c
index 68190fc..e58b84e 100644
--- a/src/conf/domain_validate.c
+++ b/src/conf/domain_validate.c
@@ -2347,10 +2347,35 @@ virDomainAudioDefValidate(const virDomainDef *def,
return 0;
}
+static int
+virDomainGraphicsDefListensValidate(const virDomainGraphicsDef *def)
+{
+ size_t i;
+
+ for (i = 0; i < def->nListens; i++) {
+ if (def->listens[i].type == VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK &&
+ !def->listens[i].network) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("'network' attribute is required for "
+ "listen type 'network'"));
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
static int
virDomainGraphicsDefValidate(const virDomainDef *def,
const virDomainGraphicsDef *graphics)
{
+ if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC ||
+ graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE ||
+ graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_RDP) {
+ if (virDomainGraphicsDefListensValidate(graphics) < 0)
+ return -1;
+ }
+
if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC)
return virDomainEnsureAudioID(def, graphics->data.vnc.audioId);
--
2.35.1
2 years, 6 months
[RFC PATCH 0/2] Introduce 'absolute' clock offset
by Peter Krempa
Based on
https://listman.redhat.com/archives/libvirt-users/2022-April/013537.html
Looked as a very simple addition.
Peter Krempa (2):
conf: Introduce 'absolute' clock offset
qemu: Implement 'absolute' clock offset mode
docs/formatdomain.rst | 4 ++
src/conf/domain_conf.c | 13 +++++++
src/conf/domain_conf.h | 4 ++
src/conf/schemas/domaincommon.rng | 8 ++++
src/libxl/libxl_conf.c | 1 +
src/qemu/qemu_command.c | 10 ++++-
.../clock-absolute.x86_64-latest.args | 36 ++++++++++++++++++
tests/qemuxml2argvdata/clock-absolute.xml | 30 +++++++++++++++
tests/qemuxml2argvtest.c | 1 +
.../clock-absolute.x86_64-latest.xml | 38 +++++++++++++++++++
tests/qemuxml2xmltest.c | 1 +
11 files changed, 145 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/clock-absolute.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/clock-absolute.xml
create mode 100644 tests/qemuxml2xmloutdata/clock-absolute.x86_64-latest.xml
--
2.35.1
2 years, 6 months
[PATCH] qemu: do not use domain virt type to get default version
by Liang Yan
We do not need VIR_DOMAIN_VIRT_QEMU to get qemu default
version. With the 'os_type' and 'arch'in capabilities,
we could identify 'emulator' which is enough to get the version.
Actually VIR_DOMAIN_VIRT_QEMU is not the only domain virt type for
qemu driver, there are VIR_DOMAIN_VIRT_KVM and VIR_DOMAIN_VIRT_HVF.
If TCG is disabled in qemu, it will cause the error that could not
find suitable emulater when access version.
Signed-off-by: Liang Yan <lyan(a)digtalocean.com>
---
src/qemu/qemu_capabilities.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index b91db851bb..9a0b7ebeb4 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -1857,7 +1857,7 @@ int virQEMUCapsGetDefaultVersion(virCaps *caps,
hostarch = virArchFromHost();
if (!(capsdata = virCapabilitiesDomainDataLookup(caps,
- VIR_DOMAIN_OSTYPE_HVM, hostarch, VIR_DOMAIN_VIRT_QEMU,
+ VIR_DOMAIN_OSTYPE_HVM, hostarch, VIR_DOMAIN_VIRT_NONE,
NULL, NULL))) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Cannot find suitable emulator for %s"),
--
2.34.1
2 years, 6 months