Signed-off-by: Igor Mammedov <imamm...@redhat.com> --- qapi-schema.json | 9 +++++++++ qmp-commands.hx | 26 ++++++++++++++++++++++++++ qmp.c | 15 +++++++++++++++ 3 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/qapi-schema.json b/qapi-schema.json index 44cf764..05cc582 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -903,6 +903,15 @@ { 'command': 'cpu', 'data': {'index': 'int'} } ## +# @cpu_set +# +# Sets specified cpu to online/ofline mode +# +# Notes: semantics is : cpu_set x online|offline +## +{ 'command': 'cpu_set', 'data': {'cpu_index': 'int', 'status': 'str'} } + +## # @memsave: # # Save a portion of guest memory to a file. diff --git a/qmp-commands.hx b/qmp-commands.hx index 7e3f4b9..ef1ac1e 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -348,6 +348,32 @@ Note: CPUs' indexes are obtained with the 'query-cpus' command. EQMP { + .name = "cpu_set", + .args_type = "cpu_index:i,status:s", + .mhandler.cmd_new = qmp_marshal_input_cpu_set, + }, + +SQMP +cpu_set +------- + +Sets virtual cpu to online/ofline state + +Arguments: + +- "cpu_index": virtual cpu index (json-int) +- "status": desired state of cpu, online/offline (json-string) + +Example: + +-> { "execute": "cpu_set", + "arguments": { "cpu_index": 2, + "status": "online" } } +<- { "return": {} } + +EQMP + + { .name = "memsave", .args_type = "val:l,size:i,filename:s,cpu:i?", .mhandler.cmd_new = qmp_marshal_input_memsave, diff --git a/qmp.c b/qmp.c index c74dde6..e2b268d 100644 --- a/qmp.c +++ b/qmp.c @@ -101,6 +101,21 @@ void qmp_cpu(int64_t index, Error **errp) /* Just do nothing */ } +void qmp_cpu_set(int64_t cpu_index, const char *status, Error **errp) +{ + int state; + + if (!strcmp(status, "online")) { + state = 1; + } else if (!strcmp(status, "offline")) { + state = 0; + } else { + error_set(errp, QERR_INVALID_PARAMETER, status); + return; + } + qemu_system_cpu_hot_add(cpu_index, state); +} + #ifndef CONFIG_VNC /* If VNC support is enabled, the "true" query-vnc command is defined in the VNC subsystem */ -- 1.7.7.5