On Tue, 20 Nov 2018 12:04:25 +0100 David Hildenbrand <da...@redhat.com> wrote:
> These functions are essentially the same, we only have to use > object_get_typename() for reporting errors. So let's share the > implementation of hotplug handler callbacks. > > Suggested-by: Igor Mammedov <imamm...@redhat.com> > Signed-off-by: David Hildenbrand <da...@redhat.com> Reviewed-by: Igor Mammedov <imamm...@redhat.com> > --- > hw/pci-bridge/pci_bridge_dev.c | 12 ++++++------ > hw/pci-bridge/pcie_pci_bridge.c | 30 ++---------------------------- > include/hw/pci/pci_bridge.h | 4 ++++ > 3 files changed, 12 insertions(+), 34 deletions(-) > > diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c > index e1df9a52ac..fa0be13ac4 100644 > --- a/hw/pci-bridge/pci_bridge_dev.c > +++ b/hw/pci-bridge/pci_bridge_dev.c > @@ -206,27 +206,27 @@ static const VMStateDescription pci_bridge_dev_vmstate > = { > } > }; > > -static void pci_bridge_dev_plug_cb(HotplugHandler *hotplug_dev, > - DeviceState *dev, Error **errp) > +void pci_bridge_dev_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, > + Error **errp) > { > PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev); > > if (!shpc_present(pci_hotplug_dev)) { > error_setg(errp, "standard hotplug controller has been disabled for " > - "this %s", TYPE_PCI_BRIDGE_DEV); > + "this %s", object_get_typename(OBJECT(hotplug_dev))); > return; > } > shpc_device_plug_cb(hotplug_dev, dev, errp); > } > > -static void pci_bridge_dev_unplug_request_cb(HotplugHandler *hotplug_dev, > - DeviceState *dev, Error **errp) > +void pci_bridge_dev_unplug_request_cb(HotplugHandler *hotplug_dev, > + DeviceState *dev, Error **errp) > { > PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev); > > if (!shpc_present(pci_hotplug_dev)) { > error_setg(errp, "standard hotplug controller has been disabled for " > - "this %s", TYPE_PCI_BRIDGE_DEV); > + "this %s", object_get_typename(OBJECT(hotplug_dev))); > return; > } > shpc_device_unplug_request_cb(hotplug_dev, dev, errp); > diff --git a/hw/pci-bridge/pcie_pci_bridge.c b/hw/pci-bridge/pcie_pci_bridge.c > index c634353b06..0ffea680d5 100644 > --- a/hw/pci-bridge/pcie_pci_bridge.c > +++ b/hw/pci-bridge/pcie_pci_bridge.c > @@ -137,32 +137,6 @@ static const VMStateDescription > pcie_pci_bridge_dev_vmstate = { > } > }; > > -static void pcie_pci_bridge_plug_cb(HotplugHandler *hotplug_dev, > - DeviceState *dev, Error **errp) > -{ > - PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev); > - > - if (!shpc_present(pci_hotplug_dev)) { > - error_setg(errp, "standard hotplug controller has been disabled for " > - "this %s", TYPE_PCIE_PCI_BRIDGE_DEV); > - return; > - } > - shpc_device_plug_cb(hotplug_dev, dev, errp); > -} > - > -static void pcie_pci_bridge_unplug_request_cb(HotplugHandler *hotplug_dev, > - DeviceState *dev, Error **errp) > -{ > - PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev); > - > - if (!shpc_present(pci_hotplug_dev)) { > - error_setg(errp, "standard hotplug controller has been disabled for " > - "this %s", TYPE_PCIE_PCI_BRIDGE_DEV); > - return; > - } > - shpc_device_unplug_request_cb(hotplug_dev, dev, errp); > -} > - > static void pcie_pci_bridge_class_init(ObjectClass *klass, void *data) > { > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > @@ -179,8 +153,8 @@ static void pcie_pci_bridge_class_init(ObjectClass > *klass, void *data) > dc->props = pcie_pci_bridge_dev_properties; > dc->reset = &pcie_pci_bridge_reset; > set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); > - hc->plug = pcie_pci_bridge_plug_cb; > - hc->unplug_request = pcie_pci_bridge_unplug_request_cb; > + hc->plug = pci_bridge_dev_plug_cb; > + hc->unplug_request = pci_bridge_dev_unplug_request_cb; > } > > static const TypeInfo pcie_pci_bridge_info = { > diff --git a/include/hw/pci/pci_bridge.h b/include/hw/pci/pci_bridge.h > index cdff7edfd1..6e37c7551a 100644 > --- a/include/hw/pci/pci_bridge.h > +++ b/include/hw/pci/pci_bridge.h > @@ -99,6 +99,10 @@ void pci_bridge_reset(DeviceState *qdev); > void pci_bridge_initfn(PCIDevice *pci_dev, const char *typename); > void pci_bridge_exitfn(PCIDevice *pci_dev); > > +void pci_bridge_dev_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, > + Error **errp); > +void pci_bridge_dev_unplug_request_cb(HotplugHandler *hotplug_dev, > + DeviceState *dev, Error **errp); > > /* > * before qdev initialization(qdev_init()), this function sets bus_name and