[libvirt] [PATCH v3] qemu: agent: Avoid agentError when closing the QEMU agent
by Wang Yechao
The commit 89563efc0209b854d2b2e554423423d7602acdbd fix the
monitor error when closing the QEMU monitor. The QEMU agent
has a problem similar to QEMU monitor. So fix the QEMU agent
with the same method.
Signed-off-by: Wang Yechao <wang.yechao255(a)zte.com.cn>
---
Changes in v3:
- change the commit messages
---
src/qemu/qemu_agent.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 97ad0e7..d842b0e 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -530,6 +530,9 @@ static void qemuAgentUpdateWatch(qemuAgentPtr mon)
VIR_EVENT_HANDLE_HANGUP |
VIR_EVENT_HANDLE_ERROR;
+ if (!mon->watch)
+ return;
+
if (mon->lastError.code == VIR_ERR_OK) {
events |= VIR_EVENT_HANDLE_READABLE;
@@ -555,6 +558,12 @@ qemuAgentIO(int watch, int fd, int events, void *opaque)
VIR_DEBUG("Agent %p I/O on watch %d fd %d events %d", mon, watch, fd, events);
#endif
+ if (mon->fd == -1 || mon->watch == 0) {
+ virObjectUnlock(mon);
+ virObjectUnref(mon);
+ return;
+ }
+
if (mon->fd != fd || mon->watch != watch) {
if (events & (VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR))
eof = true;
@@ -788,8 +797,10 @@ void qemuAgentClose(qemuAgentPtr mon)
virObjectLock(mon);
if (mon->fd >= 0) {
- if (mon->watch)
+ if (mon->watch) {
virEventRemoveHandle(mon->watch);
+ mon->watch = 0;
+ }
VIR_FORCE_CLOSE(mon->fd);
}
--
1.8.3.1
6 years, 1 month
[libvirt] [PATCH v3 00/10] Cold(un)plug and hot(un)plug support for hub
by Han Han
Changes from v2:
- Add codes to check if hub is busy before hotunplug. (I am not sure if
I covered all the usb devices in qemuDomainHubIsBusy. Please help to
review it :) )
- Remove wrongly pasted codes
- Update titles of commit msgs
- Update news.xml
v2: https://www.redhat.com/archives/libvir-list/2018-October/msg00719.html
Han Han (10):
qemu: Allow coldplugging of hub device
qemu: Allow coldunplugging of hub device
qemu: Refactor hub alias assignment for hotplug
qemu: Make qemuBuildHubDevStr global
conf: Add virDomainHubDefFree to libvirt_private.syms
qemu: Implement usb hub device hotplug
conf: Add function virDomainUSBAddressIsAttachedToHub
qemu: Check whether hub device is busy
qemu: Implement usb hub device hotunplug
news: Cold(un)plug and hot(un)plug support for usb hub
docs/news.xml | 10 ++
src/conf/domain_addr.c | 22 +++++
src/conf/domain_addr.h | 5 +
src/conf/domain_conf.c | 30 ++++++
src/conf/domain_conf.h | 3 +
src/libvirt_private.syms | 3 +
src/qemu/qemu_alias.c | 22 ++++-
src/qemu/qemu_alias.h | 4 +
src/qemu/qemu_command.c | 2 +-
src/qemu/qemu_command.h | 4 +
src/qemu/qemu_driver.c | 30 +++++-
src/qemu/qemu_hotplug.c | 203 ++++++++++++++++++++++++++++++++++++++-
src/qemu/qemu_hotplug.h | 8 ++
13 files changed, 336 insertions(+), 10 deletions(-)
--
2.19.1
6 years, 1 month
[libvirt] [PATCH] util: Fix virpci compilation on non-Linux
by Andrea Bolognani
We were mistakenly skipping virZPCIDeviceAddressIsEmpty() and
virZPCIDeviceAddressIsValid() when compiling on non-Linux,
which unsurprisingly ended up causing linking failures later
in the build process.
Clue-stick-by: Peter Krempa <pkrempa(a)redhat.com>
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
Pushed as build fix.
src/util/virpci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/util/virpci.c b/src/util/virpci.c
index efa2d1662a..66aae60baa 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -2561,7 +2561,6 @@ virPCIDeviceAddressParse(char *address,
return ret;
}
-#ifdef __linux__
bool
virZPCIDeviceAddressIsValid(virZPCIDeviceAddressPtr zpci)
@@ -2588,6 +2587,7 @@ virZPCIDeviceAddressIsEmpty(const virZPCIDeviceAddress *addr)
return !(addr->uid || addr->fid);
}
+#ifdef __linux__
/*
* returns true if equal
--
2.19.1
6 years, 1 month
[libvirt] [PATCH] docs: remove redundant word
by luzhipeng@uniudc.com
From: ZhiPeng Lu <luzhipeng(a)uniudc.com>
Signed-off-by: ZhiPeng Lu <luzhipeng(a)uniudc.com>
---
docs/formatdomain.html.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 8a23b78..fa5fa19 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -2835,7 +2835,6 @@
</source>
<target dev='sdb' bus='scsi'/>
</disk>
- </disk>
<disk type='network' device='lun'>
<driver name='qemu' type='raw'/>
<source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/0'>
--
1.8.3.1
6 years, 1 month
[libvirt] [PATCHv8 1/2] qemu: Report cache occupancy (CMT) with domstats
by Wang Huaqiang
Adding the interface in qemu to report CMT statistic information
through command 'virsh domstats --cpu-total'.
Below is a typical output:
# virsh domstats 1 --cpu-total
Domain: 'ubuntu16.04-base'
...
cpu.cache.monitor.count=2
cpu.cache.monitor.0.name=vcpus_1
cpu.cache.monitor.0.vcpus=1
cpu.cache.monitor.0.bank.count=2
cpu.cache.monitor.0.bank.0.id=0
cpu.cache.monitor.0.bank.0.bytes=4505600
cpu.cache.monitor.0.bank.1.id=1
cpu.cache.monitor.0.bank.1.bytes=5586944
cpu.cache.monitor.1.name=vcpus_4-6
cpu.cache.monitor.1.vcpus=4,5,6
cpu.cache.monitor.1.bank.count=2
cpu.cache.monitor.1.bank.0.id=0
cpu.cache.monitor.1.bank.0.bytes=17571840
cpu.cache.monitor.1.bank.1.id=1
cpu.cache.monitor.1.bank.1.bytes=29106176
Signed-off-by: Wang Huaqiang <huaqiang.wang(a)intel.com>
---
src/libvirt-domain.c | 9 +++
src/qemu/qemu_driver.c | 198 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 207 insertions(+)
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 7690339..4895f9f 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -11345,6 +11345,15 @@ virConnectGetDomainCapabilities(virConnectPtr conn,
* "cpu.user" - user cpu time spent in nanoseconds as unsigned long long.
* "cpu.system" - system cpu time spent in nanoseconds as unsigned long
* long.
+ * "cpu.cache.monitor.count" - tocal cache monitoring groups
+ * "cpu.cache.monitor.M.name" - name of cache monitoring group 'M'
+ * "cpu.cache.monitor.M.vcpus" - vcpus for cache monitoring group 'M'
+ * "cpu.cache.monitor.M.bank.count" - total bank number of cache monitoring
+ * group 'M'
+ * "cpu.cache.monitor.M.bank.N.id" - OS assigned cache bank id for cache
+ * 'N' in cache monitoring group 'M'
+ * "cpu.cache.monitor.M.bank.N.bytes" - monitor's cache occupancy of cache
+ * bank 'N' in cache monitoring group 'M'
*
* VIR_DOMAIN_STATS_BALLOON:
* Return memory balloon device information.
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 89d46ee..d41ae66 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -19698,6 +19698,199 @@ typedef enum {
#define HAVE_JOB(flags) ((flags) & QEMU_DOMAIN_STATS_HAVE_JOB)
+typedef struct _virQEMUCpuResMonitorData virQEMUCpuResMonitorData;
+typedef virQEMUCpuResMonitorData *virQEMUCpuResMonitorDataPtr;
+struct _virQEMUCpuResMonitorData{
+ const char *name;
+ char *vcpus;
+ virResctrlMonitorType tag;
+ virResctrlMonitorStatsPtr stats;
+ size_t nstats;
+};
+
+
+static int
+qemuDomainGetCpuResMonitorData(virDomainObjPtr dom,
+ virQEMUCpuResMonitorDataPtr mondata)
+{
+ virDomainResctrlDefPtr resctrl = NULL;
+ size_t i = 0;
+ size_t j = 0;
+ size_t l = 0;
+
+ for (i = 0; i < dom->def->nresctrls; i++) {
+ resctrl = dom->def->resctrls[i];
+
+ for (j = 0; j < resctrl->nmonitors; j++) {
+ virDomainResctrlMonDefPtr domresmon = NULL;
+ virResctrlMonitorPtr monitor = resctrl->monitors[j]->instance;
+
+ domresmon = resctrl->monitors[j];
+ mondata[l].tag = domresmon->tag;
+
+ /* If virBitmapFormat successfully returns an vcpu string, then
+ * mondata[l].vcpus is assigned with an memory space holding it,
+ * let this newly allocated memory buffer to be freed along with
+ * the free of 'mondata' */
+ if (!(mondata[l].vcpus = virBitmapFormat(domresmon->vcpus)))
+ return -1;
+
+ if (!(mondata[l].name = virResctrlMonitorGetID(monitor))) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Could not get monitor ID"));
+ return -1;
+ }
+
+ if (domresmon->tag == VIR_RESCTRL_MONITOR_TYPE_CACHE) {
+ if (virResctrlMonitorGetCacheOccupancy(monitor,
+ &mondata[l].stats,
+ &mondata[l].nstats) < 0)
+ return -1;
+ } else {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Invalid CPU resource type"));
+ return -1;
+ }
+
+ l++;
+ }
+ }
+
+ return 0;
+}
+
+
+static int
+qemuDomainGetStatsCpuResMonitorPerTag(virQEMUCpuResMonitorDataPtr mondata,
+ size_t nmondata,
+ virResctrlMonitorType tag,
+ virDomainStatsRecordPtr record,
+ int *maxparams)
+{
+ char param_name[VIR_TYPED_PARAM_FIELD_LENGTH];
+ unsigned int nmonitors = 0;
+ const char *resname = NULL;
+ const char *resnodename = NULL;
+ size_t i = 0;
+
+ for (i = 0; i < nmondata; i++) {
+ if (mondata[i].tag == tag)
+ nmonitors++;
+ }
+
+ if (!nmonitors)
+ return 0;
+
+ if (tag == VIR_RESCTRL_MONITOR_TYPE_CACHE) {
+ resname = "cache";
+ resnodename = "bank";
+ } else if (tag == VIR_RESCTRL_MONITOR_TYPE_MEMBW) {
+ resname = "memBW";
+ resnodename = "node";
+ } else {
+ return 0;
+ }
+
+ snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH,
+ "cpu.%s.monitor.count", resname);
+ if (virTypedParamsAddUInt(&record->params, &record->nparams,
+ maxparams, param_name, nmonitors) < 0)
+ return -1;
+
+ for (i = 0; i < nmonitors; i++) {
+ size_t l = 0;
+
+ snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH,
+ "cpu.%s.monitor.%zd.name", resname, i);
+ if (virTypedParamsAddString(&record->params,
+ &record->nparams,
+ maxparams,
+ param_name,
+ mondata[i].name) < 0)
+ return -1;
+
+ snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH,
+ "cpu.%s.monitor.%zd.vcpus", resname, i);
+ if (virTypedParamsAddString(&record->params, &record->nparams,
+ maxparams, param_name,
+ mondata[i].vcpus) < 0)
+ return -1;
+
+ snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH,
+ "cpu.%s.monitor.%zd.%s.count", resname, i, resnodename);
+ if (virTypedParamsAddUInt(&record->params, &record->nparams,
+ maxparams, param_name,
+ mondata[i].nstats) < 0)
+ return -1;
+
+ for (l = 0; l < mondata[i].nstats; l++) {
+ snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH,
+ "cpu.%s.monitor.%zd.%s.%zd.id",
+ resname, i, resnodename, l);
+ if (virTypedParamsAddUInt(&record->params, &record->nparams,
+ maxparams, param_name,
+ mondata[i].stats[l].id) < 0)
+ return -1;
+
+ snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH,
+ "cpu.%s.monitor.%zd.%s.%zd.bytes",
+ resname, i, resnodename, l);
+ if (virTypedParamsAddUInt(&record->params, &record->nparams,
+ maxparams, param_name,
+ mondata[i].stats[l].val) < 0)
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+
+static int
+qemuDomainGetStatsCpuResMonitor(virDomainObjPtr dom,
+ virDomainStatsRecordPtr record,
+ int *maxparams)
+{
+ virDomainResctrlDefPtr resctrl = NULL;
+ virQEMUCpuResMonitorDataPtr mondata = NULL;
+ unsigned int nmonitors = 0;
+ size_t i = 0;
+ int ret = -1;
+
+ if (!virDomainObjIsActive(dom))
+ return 0;
+
+ for (i = 0; i < dom->def->nresctrls; i++) {
+ resctrl = dom->def->resctrls[i];
+ nmonitors += resctrl->nmonitors;
+ }
+
+ if (!nmonitors)
+ return 0;
+
+ if (VIR_ALLOC_N(mondata, nmonitors) < 0)
+ return -1;
+
+ if (qemuDomainGetCpuResMonitorData(dom, mondata) < 0)
+ goto cleanup;
+
+ for (i = VIR_RESCTRL_MONITOR_TYPE_UNSUPPORT + 1;
+ i < VIR_RESCTRL_MONITOR_TYPE_LAST; i++) {
+ if (qemuDomainGetStatsCpuResMonitorPerTag(mondata, nmonitors, i,
+ record, maxparams) < 0)
+ goto cleanup;
+ }
+
+ ret = 0;
+ cleanup:
+ for (i = 0; i < nmonitors; i++)
+ VIR_FREE(mondata[i].vcpus);
+ VIR_FREE(mondata);
+
+ return ret;
+}
+
+
static int
qemuDomainGetStatsCpuCgroup(virDomainObjPtr dom,
virDomainStatsRecordPtr record,
@@ -19747,6 +19940,11 @@ qemuDomainGetStatsCpu(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
{
if (qemuDomainGetStatsCpuCgroup(dom, record, maxparams) < 0)
return -1;
+
+ if (qemuDomainGetStatsCpuResMonitor(dom, record, maxparams) < 0)
+ return -1;
+
+ return 0;
}
--
2.7.4
6 years, 1 month
[libvirt] [PATCH v3 0/6] Add authorization support to all network services
by Daniel P. Berrangé
v1: https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg04482.html
v2: https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg05727.html
This series builds on the core authorization framework:
v5: https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg01613.html
enabling its use with the VNC, chardev, NBD and migration network servers.
In combination with TLS x509 client certificates, this allows these
services to whitelist specific clients, which avoids the need to setup
restricted child certificate authorities.
In VNC it also allows whitelisting based on SASL user names.
Changed in v3:
- Rebased to latest git master
Changed in v2:
- Document that authz objects are resolved at time of use, not
time of network service activation
- Improve docs for tls-authz parameters on services
- Fix 2.13 -> 3.0 version tags
- Remove redundant conditionals around g_strdup
- Fix arg syntax for qemu-nbd s/-/--/
- Remove QAPI (optional) annotation
- Fix some outdated usage example
Based-on: <20181009130442.26296-1-berrange(a)redhat.com>
Daniel P. Berrangé (6):
qemu-nbd: add support for authorization of TLS clients
nbd: allow authorization with nbd-server-start QMP command
migration: add support for a "tls-authz" migration parameter
chardev: add support for authorization for TLS clients
vnc: allow specifying a custom authorization object name
monitor: deprecate acl_show, acl_reset, acl_policy, acl_add,
acl_remove
blockdev-nbd.c | 11 +++++---
chardev/char-socket.c | 11 +++++++-
chardev/char.c | 3 +++
hmp.c | 11 +++++++-
include/block/nbd.h | 4 +--
migration/migration.c | 8 ++++++
migration/tls.c | 2 +-
monitor.c | 23 +++++++++++++++++
nbd/server.c | 10 ++++----
qapi/block.json | 8 +++++-
qapi/char.json | 6 +++++
qapi/migration.json | 14 ++++++++++-
qemu-deprecated.texi | 11 ++++++++
qemu-nbd.c | 13 +++++++++-
qemu-nbd.texi | 4 +++
qemu-options.hx | 44 +++++++++++++++++++++++---------
ui/vnc.c | 58 ++++++++++++++++++++++++++++++++++++-------
17 files changed, 204 insertions(+), 37 deletions(-)
--
2.17.1
6 years, 1 month
[libvirt] [libvirt-perl PATCH] Add daemon to list of shutdown reasons
by John Ferlan
Add the support to work with libvirt commit 66a85cb13.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
Although it's a build breaker and this does fix the problem - I'll wait
to push just to make sure the text used for the message passes muster.
Changes | 2 +-
lib/Sys/Virt.xs | 1 +
lib/Sys/Virt/Domain.pm | 4 ++++
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/Changes b/Changes
index b85ac91..11eb906 100644
--- a/Changes
+++ b/Changes
@@ -2,7 +2,7 @@ Revision history for perl module Sys::Virt
4.10.0 2018-00-00
- - XXX
+ - Add new domain shutdown reason
4.8.0 2018-10-05
diff --git a/lib/Sys/Virt.xs b/lib/Sys/Virt.xs
index d27dd74..3398971 100644
--- a/lib/Sys/Virt.xs
+++ b/lib/Sys/Virt.xs
@@ -8717,6 +8717,7 @@ BOOT:
REGISTER_CONSTANT(VIR_DOMAIN_SHUTOFF_SAVED, STATE_SHUTOFF_SAVED);
REGISTER_CONSTANT(VIR_DOMAIN_SHUTOFF_FAILED, STATE_SHUTOFF_FAILED);
REGISTER_CONSTANT(VIR_DOMAIN_SHUTOFF_FROM_SNAPSHOT, STATE_SHUTOFF_FROM_SNAPSHOT);
+ REGISTER_CONSTANT(VIR_DOMAIN_SHUTOFF_DAEMON, STATE_SHUTOFF_DAEMON);
REGISTER_CONSTANT(VIR_DOMAIN_CRASHED_UNKNOWN, STATE_CRASHED_UNKNOWN);
REGISTER_CONSTANT(VIR_DOMAIN_CRASHED_PANICKED, STATE_CRASHED_PANICKED);
diff --git a/lib/Sys/Virt/Domain.pm b/lib/Sys/Virt/Domain.pm
index 481b4b5..afaf71c 100644
--- a/lib/Sys/Virt/Domain.pm
+++ b/lib/Sys/Virt/Domain.pm
@@ -438,6 +438,10 @@ The guest is shutdown due to admin request
The guest is shutoff after a crash
+=item Sys::Virt::Domain::STATE_SHUTOFF_DAEMON
+
+The guest is shutoff during restart after reconnect due to daemon issue
+
=item Sys::Virt::Domain::STATE_SHUTOFF_DESTROYED
The guest is shutoff after being destroyed
--
2.17.2
6 years, 1 month
[libvirt] [libvirt-go PATCH] build: Fix the go build caused by a missing commentary end sequence
by Erik Skultety
Commit 20ab0c4d added a new constant to reflect recent libvirt upstream
changes. However, it also introduced a tiny typo which caused the build
to fail.
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
Pushed both under trivial and build-breaker rules.
domain_compat.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/domain_compat.h b/domain_compat.h
index 5069ea2..371bcc4 100644
--- a/domain_compat.h
+++ b/domain_compat.h
@@ -911,7 +911,7 @@ struct _virDomainInterface {
#define VIR_DOMAIN_MEMORY_STAT_DISK_CACHES 10
#endif
-/* 4.10.0
+/* 4.10.0 */
#ifndef VIR_DOMAIN_SHUTOFF_DAEMON
#define VIR_DOMAIN_SHUTOFF_DAEMON 8
--
2.19.1
6 years, 1 month
[libvirt] [PATCH RFC 0/3] Add mechanisms to force QEMU capabilities refetches
by John Ferlan
Sending as an RFC primarily because I'm looking for whether either
or both mechanisms in the series is more or less desired. Likewise,
if it's felt that the current process of telling customers to just
delete the cache is acceptible, then so be it. If there's other ideas
I'm willing to give them a go too. I did consider adding a virsh
option to "virsh capabilities" (still possible) and/or a virt-admin
option to force the refresh. These just were "easier" and didn't
require an API adjustment to implement.
Patch1 is essentially a means to determine if the kernel config
was changed to allow nested virtualization and to force a refresh
of the capabilities in that case. Without doing so the CPU settings
for a guest may not add the vmx=on depending on configuration and
for the user that doesn't make sense. There is a private bz on this
so I won't bother posting it.
Patch2 and Patch3 make use of the 'service libvirtd reload' function
in order to invalidate all the entries in the internal QEMU capabilities
hash table and then to force a reread. This perhaps has downsides related
to guest usage and previous means to use reload and not refresh if a guest
was running. On the other hand, we tell people to just clear the QEMU
capabilities cache (e.g. rm /var/cache/libvirt/qemu/capabilities/*.xml)
and restart libvirtd, so in essence, the same result. It's not clear
how frequently this is used (it's essentially a SIGHUP to libvirtd).
BTW: I did try deleting the files in the cache in one iteration, but
for some reason (and I didn't investigate too long), the files wouldn't
be recreated even though the cache was repopulated. They were recreated
after a libvirt restart...
John Ferlan (3):
qemu: Add check for whether nesting was enabled
util: Introduce virFileCacheForEach
qemu: Add ability to invalidate the capabilities cache
src/libvirt_private.syms | 1 +
src/qemu/qemu_capabilities.c | 78 ++++++++++++++++++++++++++++++++++++
src/qemu/qemu_capabilities.h | 2 +
src/qemu/qemu_capspriv.h | 2 +
src/qemu/qemu_driver.c | 4 +-
src/util/virfilecache.c | 24 +++++++++++
src/util/virfilecache.h | 5 +++
tests/qemucapabilitiestest.c | 3 ++
8 files changed, 118 insertions(+), 1 deletion(-)
--
2.17.2
6 years, 1 month
[libvirt] [PATCH v3 0/6] conf: qemu: support new Hyper-V enlightenments in QEMU 3.1
by Vitaly Kuznetsov
The upcoming QEMU 3.1 release will bring us two new Hyper-V enlightenments:
hv_ipi and hv_evmcs. Support these in libvirt.
Changes since v2:
- Separate docs/news.xml hunks in their own PATCH6, squash both
changes together [Andrea Bolognani]
- s/Qemu/QEMU/g + 'whitespate' typo [Andrea Bolognani]
Vitaly Kuznetsov (6):
docs: remove extra whitespace from Hyper-V enlightenments options
conf: add support for Hyper-V PV IPIs
qemu: add support for Hyper-V PV IPIs
conf: add support for Hyper-V Enlightened VMCS
qemu: add support for Hyper-V Enlightened VMCS
news: mention Hyper-V PV IPI and Enlightened VMCS support
docs/formatdomain.html.in | 32 ++++++++++++++++++-------
docs/news.xml | 9 +++++++
docs/schemas/domaincommon.rng | 10 ++++++++
src/conf/domain_conf.c | 11 ++++++++-
src/conf/domain_conf.h | 2 ++
src/cpu/cpu_x86.c | 6 +++++
src/cpu/cpu_x86_data.h | 2 ++
src/qemu/qemu_command.c | 2 ++
src/qemu/qemu_parse_command.c | 2 ++
src/qemu/qemu_process.c | 2 ++
tests/qemuxml2argvdata/hyperv-off.xml | 2 ++
tests/qemuxml2argvdata/hyperv.args | 2 +-
tests/qemuxml2argvdata/hyperv.xml | 2 ++
tests/qemuxml2xmloutdata/hyperv-off.xml | 2 ++
tests/qemuxml2xmloutdata/hyperv.xml | 2 ++
15 files changed, 77 insertions(+), 11 deletions(-)
--
2.17.2
6 years, 1 month