mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 09:55:18 +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 c12b2be5169298708cf727ed9ccd42e9d89a9737)
This commit is contained in:
parent
ad02b24871
commit
6cdff51fb3
@ -2086,9 +2086,42 @@ cleanup:
|
|||||||
int qemuMonitorJSONSetCPU(qemuMonitorPtr mon,
|
int qemuMonitorJSONSetCPU(qemuMonitorPtr mon,
|
||||||
int cpu, int online)
|
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");
|
VIR_DEBUG("no QMP support for cpu_set, trying HMP");
|
||||||
return qemuMonitorTextSetCPU(mon, cpu, online);
|
ret = qemuMonitorTextSetCPU(mon, cpu, online);
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user