On 2012-01-17 14:17, Igor Mammedov wrote: > 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 */
This shouldn't go upstream. We rather need qdev'ified CPUs that can be added and removed as any other device. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux