qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: agraf@suse.de, qemu-ppc@nongnu.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
	aliguori@us.ibm.com, qemu-devel@nongnu.org,
	David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH 06/10] pseries: Export find_phb() utility function for PCI code
Date: Wed,  8 Aug 2012 12:10:35 +1000	[thread overview]
Message-ID: <1344391839-2006-7-git-send-email-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <1344391839-2006-1-git-send-email-david@gibson.dropbear.id.au>

From: Alexey Kardashevskiy <aik@ozlabs.ru>

The pseries PCI code makes use of an internal find_dev() function which
locates a PCIDevice * given a (platform specific) bus ID and device
address.  Internally this needs to first locate the host bridge on which
the device resides based on the bus ID.  This patch exposes that host
bridge lookup as a separate function, which we will need later in the MSI
and VFIO code.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/spapr_pci.c |   32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index fcc358e..842068f 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -29,27 +29,39 @@
 #include "hw/spapr_pci.h"
 #include "exec-memory.h"
 #include <libfdt.h>
+#include "trace.h"
 
 #include "hw/pci_internals.h"
 
-static PCIDevice *find_dev(sPAPREnvironment *spapr,
-                           uint64_t buid, uint32_t config_addr)
+static sPAPRPHBState *find_phb(sPAPREnvironment *spapr, uint64_t buid)
 {
-    int devfn = (config_addr >> 8) & 0xFF;
     sPAPRPHBState *phb;
 
     QLIST_FOREACH(phb, &spapr->phbs, list) {
-        BusChild *kid;
-
         if (phb->buid != buid) {
             continue;
         }
+        return phb;
+    }
+
+    return NULL;
+}
+
+static PCIDevice *find_dev(sPAPREnvironment *spapr, uint64_t buid,
+                           uint32_t config_addr)
+{
+    sPAPRPHBState *phb = find_phb(spapr, buid);
+    BusChild *kid;
+    int devfn = (config_addr >> 8) & 0xFF;
+
+    if (!phb) {
+        return NULL;
+    }
 
-        QTAILQ_FOREACH(kid, &phb->host_state.bus->qbus.children, sibling) {
-            PCIDevice *dev = (PCIDevice *)kid->child;
-            if (dev->devfn == devfn) {
-                return dev;
-            }
+    QTAILQ_FOREACH(kid, &phb->host_state.bus->qbus.children, sibling) {
+        PCIDevice *dev = (PCIDevice *)kid->child;
+        if (dev->devfn == devfn) {
+            return dev;
         }
     }
 
-- 
1.7.10.4

  parent reply	other threads:[~2012-08-08  2:10 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-08  2:10 [Qemu-devel] [0/10] pseries updates and cleanups David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 01/10] pseries: Update SLOF David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 02/10] pseries: Remove extraneous prints David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 03/10] pseries: Rework irq assignment to avoid carrying qemu_irqs around David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 04/10] pseries: Separate PCI RTAS setup from common from emulation specific PCI setup David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 05/10] pseries: added allocator for a block of IRQs David Gibson
2012-08-08  2:10 ` David Gibson [this message]
2012-08-14 11:45   ` [Qemu-devel] [PATCH 06/10] pseries: Export find_phb() utility function for PCI code Alexander Graf
2012-08-15  1:03     ` [Qemu-devel] [Qemu-ppc] " David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 07/10] pseries: Add trace event for PCI irqs David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 08/10] pseries: Add PCI MSI/MSI-X support David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 09/10] pseries dma: DMA window params added to PHB and DT population changed David Gibson
2012-08-08  2:10 ` [Qemu-devel] [PATCH 10/10] pseries: Update SLOF firmware image David Gibson
2012-08-14 12:34 ` [Qemu-devel] [0/10] pseries updates and cleanups Alexander Graf
2012-08-14 12:56   ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2012-08-15  1:05     ` David Gibson
2012-08-15  9:30       ` Alexander Graf

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=1344391839-2006-7-git-send-email-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=aliguori@us.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /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).