From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53076) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aaCtB-0006GA-93 for qemu-devel@nongnu.org; Sun, 28 Feb 2016 20:44:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aaCt7-0003fX-2v for qemu-devel@nongnu.org; Sun, 28 Feb 2016 20:44:45 -0500 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:33447) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aaCt6-0003eO-Oe for qemu-devel@nongnu.org; Sun, 28 Feb 2016 20:44:41 -0500 Received: by mail-pf0-x243.google.com with SMTP id t66so3851710pfb.0 for ; Sun, 28 Feb 2016 17:44:40 -0800 (PST) References: <1456486323-8047-1-git-send-email-david@gibson.dropbear.id.au> <1456486323-8047-12-git-send-email-david@gibson.dropbear.id.au> From: Alexey Kardashevskiy Message-ID: <56D3A281.7070404@ozlabs.ru> Date: Mon, 29 Feb 2016 12:44:33 +1100 MIME-Version: 1.0 In-Reply-To: <1456486323-8047-12-git-send-email-david@gibson.dropbear.id.au> Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 11/12] spapr_pci: Remove finish_realize hook List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson , benh@kernel.crashing.org Cc: agraf@suse.de, qemu-devel@nongnu.org, gwshan@au1.ibm.com, mdroth@linux.vnet.ibm.com, alex.williamson@redhat.com, qemu-ppc@nongnu.org On 02/26/2016 10:32 PM, David Gibson wrote: > Now that spapr-pci-vfio-host-bridge is reduced to just a stub, there is > only one implementation of the finish_realize hook in sPAPRPHBClass. So, > we can fold that implementation into its (single) caller, and remove the > hook. That's the last thing left in sPAPRPHBClass, so that can go away as > well. > > Signed-off-by: David Gibson Reviewed-by: Alexey Kardashevskiy > --- > hw/ppc/spapr_pci.c | 25 +++++-------------------- > include/hw/pci-host/spapr.h | 12 ------------ > 2 files changed, 5 insertions(+), 32 deletions(-) > > diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c > index 336ffd2..2faaa03 100644 > --- a/hw/ppc/spapr_pci.c > +++ b/hw/ppc/spapr_pci.c > @@ -1335,11 +1335,12 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp) > SysBusDevice *s = SYS_BUS_DEVICE(dev); > sPAPRPHBState *sphb = SPAPR_PCI_HOST_BRIDGE(s); > PCIHostState *phb = PCI_HOST_BRIDGE(s); > - sPAPRPHBClass *info = SPAPR_PCI_HOST_BRIDGE_GET_CLASS(s); > char *namebuf; > int i; > PCIBus *bus; > uint64_t msi_window_size = 4096; > + sPAPRTCETable *tcet; > + uint32_t nb_table; > > if (sphb->index != (uint32_t)-1) { > hwaddr windows_base; > @@ -1489,33 +1490,20 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp) > } > } > > - if (!info->finish_realize) { > - error_setg(errp, "finish_realize not defined"); > - return; > - } > - > - info->finish_realize(sphb, errp); > - > - sphb->msi = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free); > -} > - > -static void spapr_phb_finish_realize(sPAPRPHBState *sphb, Error **errp) > -{ > - sPAPRTCETable *tcet; > - uint32_t nb_table; > - > nb_table = sphb->dma_win_size >> SPAPR_TCE_PAGE_SHIFT; > tcet = spapr_tce_new_table(DEVICE(sphb), sphb->dma_liobn, > 0, SPAPR_TCE_PAGE_SHIFT, nb_table, false); > if (!tcet) { > error_setg(errp, "Unable to create TCE table for %s", > sphb->dtbusname); > - return ; > + return; > } > > /* Register default 32bit DMA window */ > memory_region_add_subregion(&sphb->iommu_root, sphb->dma_win_addr, > spapr_tce_get_iommu(tcet)); > + > + sphb->msi = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, g_free); > } > > static int spapr_phb_children_reset(Object *child, void *opaque) > @@ -1667,7 +1655,6 @@ static void spapr_phb_class_init(ObjectClass *klass, void *data) > { > PCIHostBridgeClass *hc = PCI_HOST_BRIDGE_CLASS(klass); > DeviceClass *dc = DEVICE_CLASS(klass); > - sPAPRPHBClass *spc = SPAPR_PCI_HOST_BRIDGE_CLASS(klass); > HotplugHandlerClass *hp = HOTPLUG_HANDLER_CLASS(klass); > > hc->root_bus_path = spapr_phb_root_bus_path; > @@ -1677,7 +1664,6 @@ static void spapr_phb_class_init(ObjectClass *klass, void *data) > dc->vmsd = &vmstate_spapr_pci; > set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); > dc->cannot_instantiate_with_device_add_yet = false; > - spc->finish_realize = spapr_phb_finish_realize; > hp->plug = spapr_phb_hot_plug_child; > hp->unplug = spapr_phb_hot_unplug_child; > } > @@ -1687,7 +1673,6 @@ static const TypeInfo spapr_phb_info = { > .parent = TYPE_PCI_HOST_BRIDGE, > .instance_size = sizeof(sPAPRPHBState), > .class_init = spapr_phb_class_init, > - .class_size = sizeof(sPAPRPHBClass), > .interfaces = (InterfaceInfo[]) { > { TYPE_HOTPLUG_HANDLER }, > { } > diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h > index 7110222..a603feb 100644 > --- a/include/hw/pci-host/spapr.h > +++ b/include/hw/pci-host/spapr.h > @@ -32,20 +32,8 @@ > #define SPAPR_PCI_HOST_BRIDGE(obj) \ > OBJECT_CHECK(sPAPRPHBState, (obj), TYPE_SPAPR_PCI_HOST_BRIDGE) > > -#define SPAPR_PCI_HOST_BRIDGE_CLASS(klass) \ > - OBJECT_CLASS_CHECK(sPAPRPHBClass, (klass), TYPE_SPAPR_PCI_HOST_BRIDGE) > -#define SPAPR_PCI_HOST_BRIDGE_GET_CLASS(obj) \ > - OBJECT_GET_CLASS(sPAPRPHBClass, (obj), TYPE_SPAPR_PCI_HOST_BRIDGE) > - > -typedef struct sPAPRPHBClass sPAPRPHBClass; > typedef struct sPAPRPHBState sPAPRPHBState; > > -struct sPAPRPHBClass { > - PCIHostBridgeClass parent_class; > - > - void (*finish_realize)(sPAPRPHBState *sphb, Error **errp); > -}; > - > typedef struct spapr_pci_msi { > uint32_t first_irq; > uint32_t num; > -- Alexey