Message ID | 20190116113523.9213-4-david@redhat.com |
---|---|
State | New |
Headers | show |
Series | qdev: Hotplug handler chaining + virtio-pmem | expand |
Hi, David. On Wed, Jan 16, 2019 at 12:35:16PM +0100, David Hildenbrand wrote: > Let's use a wrapper instead of looking it up manually. This function can > than be reused when we explicitly want to have the bus hotplug handler > (e.g. when the bus hotplug handler was overwritten by the machine > hotplug handler). > > Signed-off-by: David Hildenbrand <david@redhat.com> > --- > hw/core/qdev.c | 10 +++++++++- > include/hw/qdev-core.h | 1 + > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index 7ad45c0bd6..e2207d77a4 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -233,12 +233,20 @@ HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev) > return NULL; > } > > +HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev) > +{ > + if (dev->parent_bus) { > + return dev->parent_bus->hotplug_handler; > + } > + return NULL; > +} > + > HotplugHandler *qdev_get_hotplug_handler(DeviceState *dev) > { > HotplugHandler *hotplug_ctrl = qdev_get_machine_hotplug_handler(dev); > > if (hotplug_ctrl == NULL && dev->parent_bus) { Perhaps we don't need to check dev->parent_bus here since qdev_get_bus_hotplug_handler() is already checking it. > - hotplug_ctrl = dev->parent_bus->hotplug_handler; > + hotplug_ctrl = qdev_get_bus_hotplug_handler(dev); > } > return hotplug_ctrl; > } > diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h > index 0632057fd6..893acc19b9 100644 > --- a/include/hw/qdev-core.h > +++ b/include/hw/qdev-core.h > @@ -277,6 +277,7 @@ DeviceState *qdev_try_create(BusState *bus, const char *name); > void qdev_init_nofail(DeviceState *dev); > void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id, > int required_for_version); > +HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev); > HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev); > /** > * qdev_get_hotplug_handler: Get handler responsible for device wiring > -- > 2.17.2 > > -- Murilo
On 16.01.19 19:41, Murilo Opsfelder Araujo wrote: > Hi, David. > > On Wed, Jan 16, 2019 at 12:35:16PM +0100, David Hildenbrand wrote: >> Let's use a wrapper instead of looking it up manually. This function can >> than be reused when we explicitly want to have the bus hotplug handler >> (e.g. when the bus hotplug handler was overwritten by the machine >> hotplug handler). >> >> Signed-off-by: David Hildenbrand <david@redhat.com> >> --- >> hw/core/qdev.c | 10 +++++++++- >> include/hw/qdev-core.h | 1 + >> 2 files changed, 10 insertions(+), 1 deletion(-) >> >> diff --git a/hw/core/qdev.c b/hw/core/qdev.c >> index 7ad45c0bd6..e2207d77a4 100644 >> --- a/hw/core/qdev.c >> +++ b/hw/core/qdev.c >> @@ -233,12 +233,20 @@ HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev) >> return NULL; >> } >> >> +HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev) >> +{ >> + if (dev->parent_bus) { >> + return dev->parent_bus->hotplug_handler; >> + } >> + return NULL; >> +} >> + >> HotplugHandler *qdev_get_hotplug_handler(DeviceState *dev) >> { >> HotplugHandler *hotplug_ctrl = qdev_get_machine_hotplug_handler(dev); >> >> if (hotplug_ctrl == NULL && dev->parent_bus) { > > Perhaps we don't need to check dev->parent_bus here since > qdev_get_bus_hotplug_handler() is already checking it. This function will also be called from other places (see patch #9), thanks!
On Wed, 16 Jan 2019 12:35:16 +0100 David Hildenbrand <david@redhat.com> wrote: > Let's use a wrapper instead of looking it up manually. This function can > than be reused when we explicitly want to have the bus hotplug handler > (e.g. when the bus hotplug handler was overwritten by the machine > hotplug handler). > > Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> > --- > hw/core/qdev.c | 10 +++++++++- > include/hw/qdev-core.h | 1 + > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index 7ad45c0bd6..e2207d77a4 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -233,12 +233,20 @@ HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev) > return NULL; > } > > +HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev) > +{ > + if (dev->parent_bus) { > + return dev->parent_bus->hotplug_handler; > + } > + return NULL; > +} > + > HotplugHandler *qdev_get_hotplug_handler(DeviceState *dev) > { > HotplugHandler *hotplug_ctrl = qdev_get_machine_hotplug_handler(dev); > > if (hotplug_ctrl == NULL && dev->parent_bus) { > - hotplug_ctrl = dev->parent_bus->hotplug_handler; > + hotplug_ctrl = qdev_get_bus_hotplug_handler(dev); > } > return hotplug_ctrl; > } > diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h > index 0632057fd6..893acc19b9 100644 > --- a/include/hw/qdev-core.h > +++ b/include/hw/qdev-core.h > @@ -277,6 +277,7 @@ DeviceState *qdev_try_create(BusState *bus, const char *name); > void qdev_init_nofail(DeviceState *dev); > void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id, > int required_for_version); > +HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev); > HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev); > /** > * qdev_get_hotplug_handler: Get handler responsible for device wiring
diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 7ad45c0bd6..e2207d77a4 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -233,12 +233,20 @@ HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev) return NULL; } +HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev) +{ + if (dev->parent_bus) { + return dev->parent_bus->hotplug_handler; + } + return NULL; +} + HotplugHandler *qdev_get_hotplug_handler(DeviceState *dev) { HotplugHandler *hotplug_ctrl = qdev_get_machine_hotplug_handler(dev); if (hotplug_ctrl == NULL && dev->parent_bus) { - hotplug_ctrl = dev->parent_bus->hotplug_handler; + hotplug_ctrl = qdev_get_bus_hotplug_handler(dev); } return hotplug_ctrl; } diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 0632057fd6..893acc19b9 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -277,6 +277,7 @@ DeviceState *qdev_try_create(BusState *bus, const char *name); void qdev_init_nofail(DeviceState *dev); void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id, int required_for_version); +HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev); HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev); /** * qdev_get_hotplug_handler: Get handler responsible for device wiring
Let's use a wrapper instead of looking it up manually. This function can than be reused when we explicitly want to have the bus hotplug handler (e.g. when the bus hotplug handler was overwritten by the machine hotplug handler). Signed-off-by: David Hildenbrand <david@redhat.com> --- hw/core/qdev.c | 10 +++++++++- include/hw/qdev-core.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-)