From nobody Wed Nov 5 17:40:54 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 1496754448209367.4975870940616; Tue, 6 Jun 2017 06:07:28 -0700 (PDT) Received: from localhost ([::1]:38345 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIECf-0006yF-Lr for importer@patchew.org; Tue, 06 Jun 2017 09:07:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41575) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIEB4-0005xg-8I for qemu-devel@nongnu.org; Tue, 06 Jun 2017 09:05:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIEB3-0000ri-4P for qemu-devel@nongnu.org; Tue, 06 Jun 2017 09:05:42 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:43407) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dIEB2-0000qT-Nu; Tue, 06 Jun 2017 09:05:41 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3whsPF3zKlz9rxm; Tue, 6 Jun 2017 23:05:37 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1496754337; bh=k7Z8IRUC4PJufV0LXeSxZicWZ1ZlSzASFhW4QvvEy7Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HxL2gL9BnrJpRoX50FBnzhVJaIOSdjhMwfBjcVV/u+NA1A2r8AIQLP9gyArQmuKkT uqnRdB9vaJi3BeiDT4XO9eCM27bOLvd+ca/yTgm1Iqf5O8Z0qdAKZStXR9Re41VUIS fDrJI4GKay2ypDqWYWPGRuLjduZtgI7U7gThdOgo= From: David Gibson To: mdroth@linux.vnet.ibm.com Date: Tue, 6 Jun 2017 23:05:32 +1000 Message-Id: <20170606130534.11019-2-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170606130534.11019-1-david@gibson.dropbear.id.au> References: <20170606130534.11019-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [RFC 1/3] spapr: Fold spapr_phb_add_pci_device() into its only caller 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" This function is fairly short, and so is its only caller. There's no particular logical distinction between them, so fold them together. Signed-off-by: David Gibson --- hw/ppc/spapr_pci.c | 53 ++++++++++++++++++++++----------------------------= --- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 46e736d..a216f61 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) { @@ -1429,6 +1405,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 +1416,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 +1430,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; } =20 - spapr_phb_add_pci_device(drc, phb, pdev, &local_err); + 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; + } + + 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 +1470,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, --=20 2.9.4