qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: aik@ozlabs.ru, agraf@suse.de, ncmike@ncultra.org,
	qemu-ppc@nongnu.org, tyreld@linux.vnet.ibm.com,
	bharata.rao@gmail.com, nfont@linux.vnet.ibm.com,
	david@gibson.dropbear.id.au
Subject: [Qemu-devel] [PATCH v7 12/15] spapr_pci: create DRConnectors for each PCI slot during PHB realize
Date: Wed,  4 Mar 2015 22:17:53 -0600	[thread overview]
Message-ID: <1425529076-15340-13-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
In-Reply-To: <1425529076-15340-1-git-send-email-mdroth@linux.vnet.ibm.com>

These will be used to support hotplug/unplug of PCI devices to the PCI
bus associated with a particular PHB.

We also set up device-tree properties in each PHBs initial FDT to
describe the DRCs associated with them. This advertises to guests that
each PHB is DR-capable device with physical hotpluggable slots, each
managed by the corresponding DRC. This is necessary for allowing
hotplugging of devices to it later via bus rescan or guest rpaphp
hotplug module.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_pci.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 8b76017..6e6a9ca 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -47,6 +47,8 @@
 #define RTAS_TYPE_MSI           1
 #define RTAS_TYPE_MSIX          2
 
+#include "hw/ppc/spapr_drc.h"
+
 static sPAPRPHBState *find_phb(sPAPREnvironment *spapr, uint64_t buid)
 {
     sPAPRPHBState *sphb;
@@ -880,6 +882,15 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp)
         sphb->lsi_table[i].irq = irq;
     }
 
+    /* allocate connectors for child PCI devices */
+    if (sphb->dr_enabled) {
+        for (i = 0; i < PCI_SLOT_MAX * 8; i++) {
+            spapr_dr_connector_new(OBJECT(phb),
+                                   SPAPR_DR_CONNECTOR_TYPE_PCI,
+                                   (sphb->index << 16) | i);
+        }
+    }
+
     if (!info->finish_realize) {
         error_setg(errp, "finish_realize not defined");
         return;
@@ -1119,7 +1130,7 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
                           uint32_t xics_phandle,
                           void *fdt)
 {
-    int bus_off, i, j;
+    int bus_off, i, j, ret;
     char nodename[256];
     uint32_t bus_range[] = { cpu_to_be32(0), cpu_to_be32(0xff) };
     const uint64_t mmiosize = memory_region_size(&phb->memwindow);
@@ -1208,6 +1219,12 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
     object_child_foreach(OBJECT(phb), spapr_phb_children_dt,
                          &((sPAPRTCEDT){ .fdt = fdt, .node_off = bus_off }));
 
+    ret = spapr_drc_populate_dt(fdt, bus_off, OBJECT(phb),
+                                SPAPR_DR_CONNECTOR_TYPE_PCI);
+    if (ret) {
+        return ret;
+    }
+
     return 0;
 }
 
-- 
1.9.1

  parent reply	other threads:[~2015-03-05  4:21 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-05  4:17 [Qemu-devel] [PATCH v7 00/15] spapr: add support for pci hotplug Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 01/15] docs: add sPAPR hotplug/dynamic-reconfiguration documentation Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 02/15] spapr_drc: initial implementation of sPAPRDRConnector device Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 03/15] spapr_rtas: add get/set-power-level RTAS interfaces Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 04/15] spapr_rtas: add set-indicator RTAS interface Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 05/15] spapr_rtas: add get-sensor-state " Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 06/15] spapr: add rtas_st_buffer_direct() helper Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 07/15] spapr_rtas: add ibm, configure-connector RTAS interface Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 08/15] spapr_events: re-use EPOW event infrastructure for hotplug events Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 09/15] spapr_events: event-scan RTAS interface Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 10/15] spapr_drc: add spapr_drc_populate_dt() Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 11/15] spapr_pci: add dynamic-reconfiguration option for spapr-pci-host-bridge Michael Roth
2015-03-05  4:17 ` Michael Roth [this message]
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 13/15] pci: make pci_bar useable outside pci.c Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 14/15] spapr_pci: enable basic hotplug operations Michael Roth
2015-03-05  4:17 ` [Qemu-devel] [PATCH v7 15/15] spapr_pci: emit hotplug add/remove events during hotplug Michael Roth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1425529076-15340-13-git-send-email-mdroth@linux.vnet.ibm.com \
    --to=mdroth@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=bharata.rao@gmail.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=ncmike@ncultra.org \
    --cc=nfont@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=tyreld@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).