On Mon, Jun 20, 2016 at 04:34:21PM +0200, Peter Krempa wrote:
Allow modification of specific vCPU states via the guest agent.
---
src/qemu/qemu_driver.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 5b96ad8..4bd8c92 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -19837,6 +19837,88 @@ qemuDomainGetGuestVcpus(virDomainPtr dom,
}
+static int
+qemuDomainSetGuestVcpus(virDomainPtr dom,
+ const char *cpumap,
+ int state,
+ unsigned int flags)
+{
+ virQEMUDriverPtr driver = dom->conn->privateData;
+ virDomainObjPtr vm = NULL;
+ virBitmapPtr map = NULL;
+ qemuAgentCPUInfoPtr info = NULL;
+ int ninfo = 0;
+ size_t i;
+ int ret = -1;
+
+ virCheckFlags(0, -1);
+
+ if (state != 0 && state != 1) {
+ virReportInvalidArg(state, "%s", _("unsupported state
value"));
+ return -1;
+ }
+
+ if (virBitmapParse(cpumap, &map, 4096) < 0)
+ goto cleanup;
s/4096/QEMU_GUEST_VCPU_MAX_ID/
+
+ if (!(vm = qemuDomObjFromDomain(dom)))
+ goto cleanup;
+
+ if (virDomainSetGuestVcpusEnsureACL(dom->conn, vm->def) < 0)
+ goto cleanup;
+
+ if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
+ goto cleanup;
+
+ if (!qemuDomainAgentAvailable(vm, true))
+ goto endjob;
[...]
ACK