[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 08/33] spapr_pci: Make find_phb()/find_dev() public
From: |
David Gibson |
Subject: |
[Qemu-ppc] [PATCH 08/33] spapr_pci: Make find_phb()/find_dev() public |
Date: |
Thu, 7 May 2015 15:33:34 +1000 |
From: Alexey Kardashevskiy <address@hidden>
This makes find_phb()/find_dev() public and changed its names
to spapr_pci_find_phb()/spapr_pci_find_dev() as they are going to
be used from other parts of QEMU such as VFIO DDW (dynamic DMA window)
or VFIO PCI error injection or VFIO EEH handling - in all these
cases there are RTAS calls which are addressed to BUID+config_addr
in IEEE1275 format.
Signed-off-by: Alexey Kardashevskiy <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Signed-off-by: David Gibson <address@hidden>
---
hw/ppc/spapr_pci.c | 36 ++++++++++++++++++------------------
include/hw/pci-host/spapr.h | 4 ++++
2 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 312f0d9..79b6d3d 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -47,7 +47,7 @@
#define RTAS_TYPE_MSI 1
#define RTAS_TYPE_MSIX 2
-static sPAPRPHBState *find_phb(sPAPREnvironment *spapr, uint64_t buid)
+sPAPRPHBState *spapr_pci_find_phb(sPAPREnvironment *spapr, uint64_t buid)
{
sPAPRPHBState *sphb;
@@ -61,10 +61,10 @@ static sPAPRPHBState *find_phb(sPAPREnvironment *spapr,
uint64_t buid)
return NULL;
}
-static PCIDevice *find_dev(sPAPREnvironment *spapr, uint64_t buid,
- uint32_t config_addr)
+PCIDevice *spapr_pci_find_dev(sPAPREnvironment *spapr, uint64_t buid,
+ uint32_t config_addr)
{
- sPAPRPHBState *sphb = find_phb(spapr, buid);
+ sPAPRPHBState *sphb = spapr_pci_find_phb(spapr, buid);
PCIHostState *phb = PCI_HOST_BRIDGE(sphb);
int bus_num = (config_addr >> 16) & 0xFF;
int devfn = (config_addr >> 8) & 0xFF;
@@ -95,7 +95,7 @@ static void finish_read_pci_config(sPAPREnvironment *spapr,
uint64_t buid,
return;
}
- pci_dev = find_dev(spapr, buid, addr);
+ pci_dev = spapr_pci_find_dev(spapr, buid, addr);
addr = rtas_pci_cfgaddr(addr);
if (!pci_dev || (addr % size) || (addr >= pci_config_size(pci_dev))) {
@@ -162,7 +162,7 @@ static void finish_write_pci_config(sPAPREnvironment
*spapr, uint64_t buid,
return;
}
- pci_dev = find_dev(spapr, buid, addr);
+ pci_dev = spapr_pci_find_dev(spapr, buid, addr);
addr = rtas_pci_cfgaddr(addr);
if (!pci_dev || (addr % size) || (addr >= pci_config_size(pci_dev))) {
@@ -280,9 +280,9 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu,
sPAPREnvironment *spapr,
}
/* Fins sPAPRPHBState */
- phb = find_phb(spapr, buid);
+ phb = spapr_pci_find_phb(spapr, buid);
if (phb) {
- pdev = find_dev(spapr, buid, config_addr);
+ pdev = spapr_pci_find_dev(spapr, buid, config_addr);
}
if (!phb || !pdev) {
rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR);
@@ -381,9 +381,9 @@ static void
rtas_ibm_query_interrupt_source_number(PowerPCCPU *cpu,
spapr_pci_msi *msi;
/* Find sPAPRPHBState */
- phb = find_phb(spapr, buid);
+ phb = spapr_pci_find_phb(spapr, buid);
if (phb) {
- pdev = find_dev(spapr, buid, config_addr);
+ pdev = spapr_pci_find_dev(spapr, buid, config_addr);
}
if (!phb || !pdev) {
rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR);
@@ -426,7 +426,7 @@ static void rtas_ibm_set_eeh_option(PowerPCCPU *cpu,
addr = rtas_ld(args, 0);
option = rtas_ld(args, 3);
- sphb = find_phb(spapr, buid);
+ sphb = spapr_pci_find_phb(spapr, buid);
if (!sphb) {
goto param_error_exit;
}
@@ -461,7 +461,7 @@ static void rtas_ibm_get_config_addr_info2(PowerPCCPU *cpu,
}
buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2);
- sphb = find_phb(spapr, buid);
+ sphb = spapr_pci_find_phb(spapr, buid);
if (!sphb) {
goto param_error_exit;
}
@@ -479,7 +479,7 @@ static void rtas_ibm_get_config_addr_info2(PowerPCCPU *cpu,
switch (option) {
case RTAS_GET_PE_ADDR:
addr = rtas_ld(args, 0);
- pdev = find_dev(spapr, buid, addr);
+ pdev = spapr_pci_find_dev(spapr, buid, addr);
if (!pdev) {
goto param_error_exit;
}
@@ -516,7 +516,7 @@ static void rtas_ibm_read_slot_reset_state2(PowerPCCPU *cpu,
}
buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2);
- sphb = find_phb(spapr, buid);
+ sphb = spapr_pci_find_phb(spapr, buid);
if (!sphb) {
goto param_error_exit;
}
@@ -562,7 +562,7 @@ static void rtas_ibm_set_slot_reset(PowerPCCPU *cpu,
buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2);
option = rtas_ld(args, 3);
- sphb = find_phb(spapr, buid);
+ sphb = spapr_pci_find_phb(spapr, buid);
if (!sphb) {
goto param_error_exit;
}
@@ -596,7 +596,7 @@ static void rtas_ibm_configure_pe(PowerPCCPU *cpu,
}
buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2);
- sphb = find_phb(spapr, buid);
+ sphb = spapr_pci_find_phb(spapr, buid);
if (!sphb) {
goto param_error_exit;
}
@@ -631,7 +631,7 @@ static void rtas_ibm_slot_error_detail(PowerPCCPU *cpu,
}
buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2);
- sphb = find_phb(spapr, buid);
+ sphb = spapr_pci_find_phb(spapr, buid);
if (!sphb) {
goto param_error_exit;
}
@@ -788,7 +788,7 @@ static void spapr_phb_realize(DeviceState *dev, Error
**errp)
return;
}
- if (find_phb(spapr, sphb->buid)) {
+ if (spapr_pci_find_phb(spapr, sphb->buid)) {
error_setg(errp, "PCI host bridges must have unique BUIDs");
return;
}
diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
index d7b521d..5b497ce 100644
--- a/include/hw/pci-host/spapr.h
+++ b/include/hw/pci-host/spapr.h
@@ -131,4 +131,8 @@ void spapr_pci_msi_init(sPAPREnvironment *spapr, hwaddr
addr);
void spapr_pci_rtas_init(void);
+sPAPRPHBState *spapr_pci_find_phb(sPAPREnvironment *spapr, uint64_t buid);
+PCIDevice *spapr_pci_find_dev(sPAPREnvironment *spapr, uint64_t buid,
+ uint32_t config_addr);
+
#endif /* __HW_SPAPR_PCI_H__ */
--
2.1.0
- [Qemu-ppc] [PATCH 05/33] spapr_vio: Introduce a liobn number generating macros, (continued)
- [Qemu-ppc] [PATCH 05/33] spapr_vio: Introduce a liobn number generating macros, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 07/33] spapr_iommu: Add separate trace points for PCI DMA operations, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 04/33] spapr_pci: Introduce a liobn number generating macros, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 06/33] spapr_pci: Define default DMA window size as a macro, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 01/33] spapr_pci: Fix unsafe signed/unsigned comparisons, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 09/33] spapr_iommu: Make spapr_tce_find_by_liobn() public, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 14/33] hw/ppc/spapr: Fix error message when firmware could not be loaded, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 10/33] spapr_pci: Rework device-tree rendering, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 13/33] pseries: Add pseries-2.4 machine type, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 11/33] spapr_iommu: Give unique QOM name to TCE table, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 08/33] spapr_pci: Make find_phb()/find_dev() public,
David Gibson <=
- [Qemu-ppc] [PATCH 15/33] hw/ppc/spapr: Use error_report() instead of hw_error(), David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 32/33] spapr: override default ram size to 512MB, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 12/33] hw/ppc/spapr_iommu: Fix the check for invalid upper bits in liobn, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 18/33] spapr_rtas: add get/set-power-level RTAS interfaces, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 21/33] spapr: add rtas_st_buffer_direct() helper, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 27/33] spapr_pci: create DRConnectors for each PCI slot during PHB realize, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 33/33] pseries: Enable in-kernel H_LOGICAL_CI_{LOAD, STORE} implementations, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 19/33] spapr_rtas: add set-indicator RTAS interface, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 30/33] spapr_pci: emit hotplug add/remove events during hotplug, David Gibson, 2015/05/07
- [Qemu-ppc] [PATCH 24/33] spapr_events: event-scan RTAS interface, David Gibson, 2015/05/07