diff mbox

[Part1,1/5] acpi, pc: Add hotunplug request cb for pc machine.

Message ID 1416200597-11925-2-git-send-email-tangchen@cn.fujitsu.com
State New
Headers show

Commit Message

Tang Chen Nov. 17, 2014, 5:03 a.m. UTC
Memory and CPU hot unplug are both asynchronize procedures.
They both need unplug request cb when the unplug operation happens.

This patch adds hotunplug request cb for pc machine, and memory and CPU
hot unplug will base on it.

Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
---
 hw/i386/pc.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Igor Mammedov Nov. 18, 2014, 12:44 p.m. UTC | #1
On Mon, 17 Nov 2014 13:03:13 +0800
Tang Chen <tangchen@cn.fujitsu.com> wrote:

in subj s/cb/callback|handler/

> Memory and CPU hot unplug are both asynchronize procedures.
s/asynchronize/asynchronous/
> They both need unplug request cb when the unplug operation happens.
s/cb when the unplug operation happens/callback to initiate unplug operation/

> 
> This patch adds hotunplug request cb for pc machine, and memory and CPU
> hot unplug will base on it.
Add unplug handler to pc machine that will be used by following
CPU and memory unplug patches.


> 
> Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
> ---
>  hw/i386/pc.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 1205db8..5c48435 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1647,6 +1647,13 @@ static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev,
>      }
>  }
>  
> +static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
> +                                                DeviceState *dev, Error **errp)
> +{
> +    error_setg(errp, "acpi: device unplug request for not supported device"
> +               " type: %s", object_get_typename(OBJECT(dev)));
it's not necessarily acpi related in general so maybe drop 'acpi:' prefix.
Also it would be nice to add device's ID or use it instead of type name.

> +}
> +
>  static HotplugHandler *pc_get_hotpug_handler(MachineState *machine,
>                                               DeviceState *dev)
>  {
> @@ -1753,6 +1760,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
>      pcmc->get_hotplug_handler = mc->get_hotplug_handler;
>      mc->get_hotplug_handler = pc_get_hotpug_handler;
>      hc->plug = pc_machine_device_plug_cb;
> +    hc->unplug_request = pc_machine_device_unplug_request_cb;
>  }
>  
>  static const TypeInfo pc_machine_info = {
Tang Chen Dec. 10, 2014, 7:02 a.m. UTC | #2
Hi Igor,

On 11/18/2014 08:44 PM, Igor Mammedov wrote:
> On Mon, 17 Nov 2014 13:03:13 +0800
> Tang Chen <tangchen@cn.fujitsu.com> wrote:
>
> in subj s/cb/callback|handler/
>
>> Memory and CPU hot unplug are both asynchronize procedures.
> s/asynchronize/asynchronous/
>> They both need unplug request cb when the unplug operation happens.
> s/cb when the unplug operation happens/callback to initiate unplug operation/
>
>> This patch adds hotunplug request cb for pc machine, and memory and CPU
>> hot unplug will base on it.
> Add unplug handler to pc machine that will be used by following
> CPU and memory unplug patches.
>
>
>> Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
>> ---
>>   hw/i386/pc.c | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index 1205db8..5c48435 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -1647,6 +1647,13 @@ static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev,
>>       }
>>   }
>>   
>> +static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
>> +                                                DeviceState *dev, Error **errp)
>> +{
>> +    error_setg(errp, "acpi: device unplug request for not supported device"
>> +               " type: %s", object_get_typename(OBJECT(dev)));
> it's not necessarily acpi related in general so maybe drop 'acpi:' prefix.
> Also it would be nice to add device's ID or use it instead of type name.

Since QEmu 2.2 has been released, I'm now rebasing this patch-set.

Here, you suggested to use device id instead device type name.
But all existing plug handles are using device type name.

Should I send patches to change them all ?

Thanks.

>
>> +}
>> +
>>   static HotplugHandler *pc_get_hotpug_handler(MachineState *machine,
>>                                                DeviceState *dev)
>>   {
>> @@ -1753,6 +1760,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
>>       pcmc->get_hotplug_handler = mc->get_hotplug_handler;
>>       mc->get_hotplug_handler = pc_get_hotpug_handler;
>>       hc->plug = pc_machine_device_plug_cb;
>> +    hc->unplug_request = pc_machine_device_unplug_request_cb;
>>   }
>>   
>>   static const TypeInfo pc_machine_info = {
> .
>
Igor Mammedov Dec. 10, 2014, 10:36 a.m. UTC | #3
On Wed, 10 Dec 2014 15:02:44 +0800
Tang Chen <tangchen@cn.fujitsu.com> wrote:

> Hi Igor,
> 
> On 11/18/2014 08:44 PM, Igor Mammedov wrote:
> > On Mon, 17 Nov 2014 13:03:13 +0800
> > Tang Chen <tangchen@cn.fujitsu.com> wrote:
> >
> > in subj s/cb/callback|handler/
> >
> >> Memory and CPU hot unplug are both asynchronize procedures.
> > s/asynchronize/asynchronous/
> >> They both need unplug request cb when the unplug operation happens.
> > s/cb when the unplug operation happens/callback to initiate unplug operation/
> >
> >> This patch adds hotunplug request cb for pc machine, and memory and CPU
> >> hot unplug will base on it.
> > Add unplug handler to pc machine that will be used by following
> > CPU and memory unplug patches.
> >
> >
> >> Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
> >> ---
> >>   hw/i386/pc.c | 8 ++++++++
> >>   1 file changed, 8 insertions(+)
> >>
> >> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> >> index 1205db8..5c48435 100644
> >> --- a/hw/i386/pc.c
> >> +++ b/hw/i386/pc.c
> >> @@ -1647,6 +1647,13 @@ static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev,
> >>       }
> >>   }
> >>   
> >> +static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
> >> +                                                DeviceState *dev, Error **errp)
> >> +{
> >> +    error_setg(errp, "acpi: device unplug request for not supported device"
> >> +               " type: %s", object_get_typename(OBJECT(dev)));
> > it's not necessarily acpi related in general so maybe drop 'acpi:' prefix.
> > Also it would be nice to add device's ID or use it instead of type name.
> 
> Since QEmu 2.2 has been released, I'm now rebasing this patch-set.
> 
> Here, you suggested to use device id instead device type name.
> But all existing plug handles are using device type name.
> 
> Should I send patches to change them all ?
May be better would be to just leave it as is for now (i.e. out of this series).

> 
> Thanks.
> 
> >
> >> +}
> >> +
> >>   static HotplugHandler *pc_get_hotpug_handler(MachineState *machine,
> >>                                                DeviceState *dev)
> >>   {
> >> @@ -1753,6 +1760,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
> >>       pcmc->get_hotplug_handler = mc->get_hotplug_handler;
> >>       mc->get_hotplug_handler = pc_get_hotpug_handler;
> >>       hc->plug = pc_machine_device_plug_cb;
> >> +    hc->unplug_request = pc_machine_device_unplug_request_cb;
> >>   }
> >>   
> >>   static const TypeInfo pc_machine_info = {
> > .
> >
>
diff mbox

Patch

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 1205db8..5c48435 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1647,6 +1647,13 @@  static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev,
     }
 }
 
+static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
+                                                DeviceState *dev, Error **errp)
+{
+    error_setg(errp, "acpi: device unplug request for not supported device"
+               " type: %s", object_get_typename(OBJECT(dev)));
+}
+
 static HotplugHandler *pc_get_hotpug_handler(MachineState *machine,
                                              DeviceState *dev)
 {
@@ -1753,6 +1760,7 @@  static void pc_machine_class_init(ObjectClass *oc, void *data)
     pcmc->get_hotplug_handler = mc->get_hotplug_handler;
     mc->get_hotplug_handler = pc_get_hotpug_handler;
     hc->plug = pc_machine_device_plug_cb;
+    hc->unplug_request = pc_machine_device_unplug_request_cb;
 }
 
 static const TypeInfo pc_machine_info = {