From: Alexander Graf <agraf@suse.de>
To: qemu-ppc Mailing List <qemu-ppc@nongnu.org>
Cc: Blue Swirl <blauwirbel@gmail.com>,
Alexey Kardashevskiy <aik@ozlabs.ru>,
qemu-devel qemu-devel <qemu-devel@nongnu.org>,
Aurelien Jarno <aurelien@aurel32.net>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH 19/24] pseries: Export find_phb() utility function for PCI code
Date: Wed, 15 Aug 2012 11:58:57 +0200 [thread overview]
Message-ID: <1345024742-18394-20-git-send-email-agraf@suse.de> (raw)
In-Reply-To: <1345024742-18394-1-git-send-email-agraf@suse.de>
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>
[agraf: drop trace.h inclusion]
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/spapr_pci.c | 31 +++++++++++++++++++++----------
1 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index fcc358e..2e38fee 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -32,24 +32,35 @@
#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.6.0.2
next prev parent reply other threads:[~2012-08-15 9:59 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-15 9:58 [Qemu-devel] [PULL 00/24] ppc patch queue 2012-08-15 Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 01/24] pseries pci: removed redundant busdev Alexander Graf
2012-08-15 10:17 ` Andreas Färber
2012-08-15 9:58 ` [Qemu-devel] [PATCH 02/24] pseries pci: spapr_populate_pci_devices renamed to spapr_populate_pci_dt Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 03/24] PPC: e500: rename mpc8544ds into generic file Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 04/24] PPC: e500: change internal references away from mpc8544ds Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 05/24] PPC: e500: split mpc8544ds machine from generic e500 code Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 06/24] PPC: e500: add generic e500 platform Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 07/24] ppc: Fix bug in handling of PAPR hypercall exits Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 08/24] Revert "PPC: e500: Use new MPIC dt format" Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 09/24] Add one new file vga-pci.h and cleanup on all platforms Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 10/24] spapr: Add support for -vga option Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 11/24] xbzrle: fix compilation on ppc32 Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 12/24] PPC: spapr: Rework VGA select logic Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 13/24] PPC: spapr: Remove global variable Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 14/24] pseries: Update SLOF Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 15/24] pseries: Remove extraneous prints Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 16/24] pseries: Rework irq assignment to avoid carrying qemu_irqs around Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 17/24] pseries: Separate PCI RTAS setup from common from emulation specific PCI setup Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 18/24] pseries: added allocator for a block of IRQs Alexander Graf
2012-08-15 9:58 ` Alexander Graf [this message]
2012-08-15 9:58 ` [Qemu-devel] [PATCH 20/24] pseries: Add trace event for PCI irqs Alexander Graf
2012-08-15 9:58 ` [Qemu-devel] [PATCH 21/24] pseries: Add PCI MSI/MSI-X support Alexander Graf
2012-08-15 17:19 ` Andreas Färber
2012-08-15 17:46 ` Alexander Graf
2012-08-15 9:59 ` [Qemu-devel] [PATCH 22/24] pseries dma: DMA window params added to PHB and DT population changed Alexander Graf
2012-08-15 9:59 ` [Qemu-devel] [PATCH 23/24] pseries: Update SLOF firmware image Alexander Graf
2012-08-15 9:59 ` [Qemu-devel] [PATCH 24/24] openpic: Added BRR1 register Alexander Graf
2012-08-15 21:14 ` [Qemu-devel] [PULL 00/24] ppc patch queue 2012-08-15 Anthony Liguori
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=1345024742-18394-20-git-send-email-agraf@suse.de \
--to=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=aurelien@aurel32.net \
--cc=blauwirbel@gmail.com \
--cc=david@gibson.dropbear.id.au \
--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).