From nobody Wed Nov 5 17:41:35 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496806008611168.91002399586785; Tue, 6 Jun 2017 20:26:48 -0700 (PDT) Received: from localhost ([::1]:41054 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIRcN-0000n9-8m for importer@patchew.org; Tue, 06 Jun 2017 23:26:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIRWI-0003Zw-PJ for qemu-devel@nongnu.org; Tue, 06 Jun 2017 23:20:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIRWH-0002TR-Jt for qemu-devel@nongnu.org; Tue, 06 Jun 2017 23:20:30 -0400 Received: from ozlabs.org ([103.22.144.67]:36313) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dIRWH-0002SS-8m; Tue, 06 Jun 2017 23:20:29 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wjDMW0W5Mz9sNR; Wed, 7 Jun 2017 13:20:22 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1496805623; bh=J8CawP/3DngtB3DbyVe8rkLu8QRkzIxHZWaI4iBKY60=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XxDP9EGv+eNSpBcRZkdfzzS5GfJzGDXa1EVM/q9c8m2YxO2yUge+ENb8wSIAePi2k Oavip+C3h9wYwHIGoO38CRUklvLbWls8qwuteHYpFa5nbKy9wcOvbdwKdESW2wo10C MKG+XgHWMHBbcX9LfRz1T9R2Ksd1oTvF5UTNmB4Y= From: David Gibson To: mdroth@linux.vnet.ibm.com Date: Wed, 7 Jun 2017 13:20:17 +1000 Message-Id: <20170607032018.19588-7-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607032018.19588-1-david@gibson.dropbear.id.au> References: <20170607032018.19588-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PATCHv2 6/7] spapr: Fold spapr_phb_{add, remove}_pci_device() into their only callers X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: sursingh@redhat.com, qemu-devel@nongnu.org, groug@kaod.org, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Both functions are fairly short, and so are their callers. There's no particular logical distinction between them, so fold them together. Signed-off-by: David Gibson --- hw/ppc/spapr_pci.c | 63 ++++++++++++++++++++------------------------------= ---- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 56cb4b8..0b447f2 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1344,30 +1344,6 @@ static int spapr_create_pci_child_dt(sPAPRPHBState *= phb, PCIDevice *dev, return offset; } =20 -static void spapr_phb_add_pci_device(sPAPRDRConnector *drc, - sPAPRPHBState *phb, - PCIDevice *pdev, - Error **errp) -{ - DeviceState *dev =3D DEVICE(pdev); - void *fdt =3D NULL; - int fdt_start_offset =3D 0, fdt_size; - - fdt =3D create_device_tree(&fdt_size); - fdt_start_offset =3D spapr_create_pci_child_dt(phb, pdev, fdt, 0); - if (!fdt_start_offset) { - error_setg(errp, "Failed to create pci child device tree node"); - goto out; - } - - spapr_drc_attach(drc, DEVICE(pdev), - fdt, fdt_start_offset, !dev->hotplugged, errp); -out: - if (*errp) { - g_free(fdt); - } -} - /* Callback to be called during DRC release. */ void spapr_phb_remove_pci_device_cb(DeviceState *dev) { @@ -1385,14 +1361,6 @@ void spapr_phb_remove_pci_device_cb(DeviceState *dev) object_unparent(OBJECT(dev)); } =20 -static void spapr_phb_remove_pci_device(sPAPRDRConnector *drc, - sPAPRPHBState *phb, - PCIDevice *pdev, - Error **errp) -{ - spapr_drc_detach(drc, DEVICE(pdev), errp); -} - static sPAPRDRConnector *spapr_phb_get_pci_func_drc(sPAPRPHBState *phb, uint32_t busnr, int32_t devfn) @@ -1429,6 +1397,8 @@ static void spapr_phb_hot_plug_child(HotplugHandler *= plug_handler, Error *local_err =3D NULL; PCIBus *bus =3D PCI_BUS(qdev_get_parent_bus(DEVICE(pdev))); uint32_t slotnr =3D PCI_SLOT(pdev->devfn); + void *fdt =3D NULL; + int fdt_start_offset, fdt_size; =20 /* if DR is disabled we don't need to do anything in the case of * hotplug or coldplug callbacks @@ -1438,10 +1408,10 @@ static void spapr_phb_hot_plug_child(HotplugHandler= *plug_handler, * we need to let them know it's not enabled */ if (plugged_dev->hotplugged) { - error_setg(errp, QERR_BUS_NO_HOTPLUG, + error_setg(&local_err, QERR_BUS_NO_HOTPLUG, object_get_typename(OBJECT(phb))); } - return; + goto out; } =20 g_assert(drc); @@ -1452,16 +1422,23 @@ static void spapr_phb_hot_plug_child(HotplugHandler= *plug_handler, */ if (plugged_dev->hotplugged && bus->devices[PCI_DEVFN(slotnr, 0)] && PCI_FUNC(pdev->devfn) !=3D 0) { - error_setg(errp, "PCI: slot %d function 0 already ocuppied by %s," + error_setg(&local_err, "PCI: slot %d function 0 already ocuppied b= y %s," " additional functions can no longer be exposed to gues= t.", slotnr, bus->devices[PCI_DEVFN(slotnr, 0)]->name); - return; + goto out; + } + + fdt =3D create_device_tree(&fdt_size); + fdt_start_offset =3D spapr_create_pci_child_dt(phb, pdev, fdt, 0); + if (!fdt_start_offset) { + error_setg(&local_err, "Failed to create pci child device tree nod= e"); + goto out; } =20 - spapr_phb_add_pci_device(drc, phb, pdev, &local_err); + spapr_drc_attach(drc, DEVICE(pdev), fdt, fdt_start_offset, + !plugged_dev->hotplugged, &local_err); if (local_err) { - error_propagate(errp, local_err); - return; + goto out; } =20 /* If this is function 0, signal hotplug for all the device functions. @@ -1485,6 +1462,12 @@ static void spapr_phb_hot_plug_child(HotplugHandler = *plug_handler, } } } + +out: + if (local_err) { + error_propagate(errp, local_err); + g_free(fdt); + } } =20 static void spapr_phb_hot_unplug_child(HotplugHandler *plug_handler, @@ -1531,7 +1514,7 @@ static void spapr_phb_hot_unplug_child(HotplugHandler= *plug_handler, } } =20 - spapr_phb_remove_pci_device(drc, phb, pdev, &local_err); + spapr_drc_detach(drc, DEVICE(pdev), &local_err); if (local_err) { error_propagate(errp, local_err); return; --=20 2.9.4