mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-07 05:25:25 +00:00
qemu: Implement new QMP command for cpu hotplug
This patch implements support for the "cpu-add" QMP command that plugs
CPUs into a live guest. The "cpu-add" command was introduced in QEMU
1.5. For the hotplug to work machine type "pc-i440fx-1.5" is required.
(cherry picked from commit c12b2be516
)
This commit is contained in:
parent
ad02b24871
commit
6cdff51fb3
@ -2086,9 +2086,42 @@ cleanup:
|
||||
int qemuMonitorJSONSetCPU(qemuMonitorPtr mon,
|
||||
int cpu, int online)
|
||||
{
|
||||
/* XXX Update to use QMP, if QMP ever adds support for cpu hotplug */
|
||||
int ret = -1;
|
||||
virJSONValuePtr cmd = NULL;
|
||||
virJSONValuePtr reply = NULL;
|
||||
|
||||
if (online) {
|
||||
cmd = qemuMonitorJSONMakeCommand("cpu-add",
|
||||
"i:id", cpu,
|
||||
NULL);
|
||||
} else {
|
||||
/* offlining is not yet implemented in qmp */
|
||||
goto fallback;
|
||||
}
|
||||
if (!cmd)
|
||||
goto cleanup;
|
||||
|
||||
if ((ret = qemuMonitorJSONCommand(mon, cmd, &reply)) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (qemuMonitorJSONHasError(reply, "CommandNotFound"))
|
||||
goto fallback;
|
||||
else
|
||||
ret = qemuMonitorJSONCheckError(cmd, reply);
|
||||
|
||||
/* this function has non-standard return values, so adapt it */
|
||||
if (ret == 0)
|
||||
ret = 1;
|
||||
|
||||
cleanup:
|
||||
virJSONValueFree(cmd);
|
||||
virJSONValueFree(reply);
|
||||
return ret;
|
||||
|
||||
fallback:
|
||||
VIR_DEBUG("no QMP support for cpu_set, trying HMP");
|
||||
return qemuMonitorTextSetCPU(mon, cpu, online);
|
||||
ret = qemuMonitorTextSetCPU(mon, cpu, online);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user