qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/3] add cpu_set qmp command


From: Jan Kiszka
Subject: Re: [Qemu-devel] [PATCH 3/3] add cpu_set qmp command
Date: Thu, 19 Jan 2012 11:24:47 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

On 2012-01-19 10:38, Igor Mammedov wrote:
> On 01/17/2012 03:18 PM, Jan Kiszka wrote:
>> On 2012-01-17 14:17, Igor Mammedov wrote:
>>> Signed-off-by: Igor Mammedov<address@hidden>
>>> ---
>>>   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,
> 
> Thanks for review!
> Then I'll drop this patch and re-post the other ones after fixing them.

Well, you will still need the control logic of this patch, thus need to
think about converting x86 CPUs to qdev. Otherwise, testing will only be
possible over qemu-kvm.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



reply via email to

[Prev in Thread] Current Thread [Next in Thread]