[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/19] introduce CPU hot-plug notifier
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH 06/19] introduce CPU hot-plug notifier |
Date: |
Mon, 15 Apr 2013 17:08:07 -0300 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Fri, Apr 12, 2013 at 01:00:57PM +0200, Igor Mammedov wrote:
> On Thu, 11 Apr 2013 15:46:47 -0300
> Eduardo Habkost <address@hidden> wrote:
>
> > On Thu, Apr 11, 2013 at 04:51:45PM +0200, Igor Mammedov wrote:
> > > hot-added CPU will be distributed to acpi_piix4, rtc_cmos and icc_bridge
> > >
> > > Signed-off-by: Igor Mammedov <address@hidden>
> > > Reviewed-by: Paolo Bonzini <address@hidden>
> >
> > Have you considered making a generic device creation/realization
> > notification mechanism, that could work with any device class?
> Not really, that would make notification handler a bit more complicated,
> since they will have to decide if event belong to them.
I don't think it would be complicated. It should be as simple as:
void qdev_register_realize_notifier(DeviceClass *dc, Notifier *notifier)
{
notifier_list_add(&dc->realize_notifiers, notifier);
}
static void notify_device_realized(ObjectClass *klass, void *opaque)
{
DeviceState *dev = (DeviceState *)opaque;
DeviceClass *dc = DEVICE_CLASS(klass);
notifier_list_notify(&dc->realize_notifiers, dev);
}
static void device_realize(DeviceState *dev, Error **err)
{
[...]
object_class_foreach(notify_device_realized, TYPE_DEVICE, true, dev);
}
> We could add it in future if there will be need for it.
OK.
Reviewed-by: Eduardo Habkost <address@hidden>
>
> >
> > > ---
> > > v2:
> > > * move notifier to qom/cpu.c and call it from CPUClass.realize() on
> > > hotplug
> > > * remove get_firmware_id() since it belong to other patch
> > > ---
> > > include/sysemu/sysemu.h | 3 +++
> > > qom/cpu.c | 12 ++++++++++++
> > > 2 files changed, 15 insertions(+)
> > >
> > > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> > > index 6578782..a8c3de1 100644
> > > --- a/include/sysemu/sysemu.h
> > > +++ b/include/sysemu/sysemu.h
> > > @@ -152,6 +152,9 @@ void do_pci_device_hot_remove(Monitor *mon, const
> > > QDict *qdict);
> > > /* generic hotplug */
> > > void drive_hot_add(Monitor *mon, const QDict *qdict);
> > >
> > > +/* CPU hotplug */
> > > +void qemu_register_cpu_added_notifier(Notifier *notifier);
> > > +
> > > /* pcie aer error injection */
> > > void pcie_aer_inject_error_print(Monitor *mon, const QObject *data);
> > > int do_pcie_aer_inject_error(Monitor *mon,
> > > diff --git a/qom/cpu.c b/qom/cpu.c
> > > index 2869cfe..fe85960 100644
> > > --- a/qom/cpu.c
> > > +++ b/qom/cpu.c
> > > @@ -22,6 +22,17 @@
> > > #include "qemu-common.h"
> > > #include "sysemu/kvm.h"
> > > #include "sysemu/cpus.h"
> > > +#include "qemu/notify.h"
> > > +#include "sysemu/sysemu.h"
> > > +
> > > +/* CPU hot-plug notifiers */
> > > +static NotifierList cpu_added_notifiers =
> > > + NOTIFIER_LIST_INITIALIZER(cpu_add_notifiers);
> > > +
> > > +void qemu_register_cpu_added_notifier(Notifier *notifier)
> > > +{
> > > + notifier_list_add(&cpu_added_notifiers, notifier);
> > > +}
> > >
> > > void cpu_reset_interrupt(CPUState *cpu, int mask)
> > > {
> > > @@ -62,6 +73,7 @@ static void cpu_common_realizefn(DeviceState *dev,
> > > Error **errp)
> > > if (dev->hotplugged) {
> > > cpu_synchronize_post_init(CPU(dev));
> > > resume_vcpu(CPU(dev));
> > > + notifier_list_notify(&cpu_added_notifiers, dev);
> > > }
> > > }
> > >
> > > --
> > > 1.8.2
> > >
> >
> > --
> > Eduardo
>
>
> --
> Regards,
> Igor
>
--
Eduardo
- [Qemu-devel] [PATCH 02/19] cpu: Pass CPUState to *cpu_synchronize_post*(), (continued)
[Qemu-devel] [PATCH 06/19] introduce CPU hot-plug notifier, Igor Mammedov, 2013/04/11
[Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Igor Mammedov, 2013/04/11
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Eduardo Habkost, 2013/04/11
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Igor Mammedov, 2013/04/12
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Eduardo Habkost, 2013/04/12
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Igor Mammedov, 2013/04/12
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Eduardo Habkost, 2013/04/12
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Igor Mammedov, 2013/04/12
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Igor Mammedov, 2013/04/15
- Re: [Qemu-devel] [PATCH 07/19] rtc: update rtc_cmos on CPU hot-plug, Eduardo Habkost, 2013/04/15
[Qemu-devel] [PATCH 09/19] cpu: add helper cpu_exists(), to check if CPU with specified id exists, Igor Mammedov, 2013/04/11