[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC 08/17] hw/pci: made pci_bus_num a PCIBusClass me
From: |
Marcel Apfelbaum |
Subject: |
[Qemu-devel] [PATCH RFC 08/17] hw/pci: made pci_bus_num a PCIBusClass method |
Date: |
Thu, 22 Jan 2015 21:52:34 +0200 |
From: Marcel Apfelbaum <address@hidden>
Refactoring it as a method of PCIBusClass will allow
different implementations for subclasses.
Signed-off-by: Marcel Apfelbaum <address@hidden>
---
hw/i386/kvm/pci-assign.c | 1 +
hw/pci/pci-hotplug-old.c | 1 +
hw/pci/pci.c | 7 -------
hw/pci/pci_bus.c | 10 ++++++++++
hw/scsi/megasas.c | 1 +
hw/xen/xen_pt.c | 1 +
include/hw/pci/pci.h | 1 -
include/hw/pci/pci_bus.h | 6 ++++++
8 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c
index bb206da..fa67b1d 100644
--- a/hw/i386/kvm/pci-assign.c
+++ b/hw/i386/kvm/pci-assign.c
@@ -35,6 +35,7 @@
#include "qemu/range.h"
#include "sysemu/sysemu.h"
#include "hw/pci/pci.h"
+#include "hw/pci/pci_bus.h"
#include "hw/pci/msi.h"
#include "kvm_i386.h"
diff --git a/hw/pci/pci-hotplug-old.c b/hw/pci/pci-hotplug-old.c
index 0c09c72..6f208d8 100644
--- a/hw/pci/pci-hotplug-old.c
+++ b/hw/pci/pci-hotplug-old.c
@@ -27,6 +27,7 @@
#include "hw/hw.h"
#include "hw/boards.h"
#include "hw/pci/pci.h"
+#include "hw/pci/pci_bus.h"
#include "net/net.h"
#include "hw/i386/pc.h"
#include "monitor/monitor.h"
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 0b4e138..dccb3d1 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -300,13 +300,6 @@ PCIBus *pci_register_bus(DeviceState *parent, const char
*name,
return bus;
}
-int pci_bus_num(PCIBus *s)
-{
- if (pci_bus_is_root(s))
- return 0; /* pci host bridge */
- return s->parent_dev->config[PCI_SECONDARY_BUS];
-}
-
static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
{
PCIDevice *s = container_of(pv, PCIDevice, config);
diff --git a/hw/pci/pci_bus.c b/hw/pci/pci_bus.c
index 0922a75..ed99208 100644
--- a/hw/pci/pci_bus.c
+++ b/hw/pci/pci_bus.c
@@ -469,6 +469,15 @@ static bool pcibus_is_root(PCIBus *bus)
return !bus->parent_dev;
}
+static int pcibus_num(PCIBus *bus)
+{
+ if (pcibus_is_root(bus)) {
+ return 0; /* pci host bridge */
+ }
+
+ return bus->parent_dev->config[PCI_SECONDARY_BUS];
+}
+
static void pci_bus_class_init(ObjectClass *klass, void *data)
{
BusClass *k = BUS_CLASS(klass);
@@ -482,6 +491,7 @@ static void pci_bus_class_init(ObjectClass *klass, void
*data)
k->reset = pcibus_reset;
pbc->is_root = pcibus_is_root;
+ pbc->bus_num = pcibus_num;
}
static const TypeInfo pci_bus_info = {
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 4852237..fa4e3d0 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -20,6 +20,7 @@
#include "hw/hw.h"
#include "hw/pci/pci.h"
+#include "hw/pci/pci_bus.h"
#include "sysemu/dma.h"
#include "sysemu/block-backend.h"
#include "hw/pci/msi.h"
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index f2893b2..cf56a48 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -55,6 +55,7 @@
#include <sys/ioctl.h>
#include "hw/pci/pci.h"
+#include "hw/pci/pci_bus.h"
#include "hw/xen/xen.h"
#include "hw/xen/xen_backend.h"
#include "xen_pt.h"
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index 7b2567a..b7e24d4 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -376,7 +376,6 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
PCIDevice *pci_vga_init(PCIBus *bus);
-int pci_bus_num(PCIBus *s);
void pci_for_each_device(PCIBus *bus, int bus_num,
void (*fn)(PCIBus *bus, PCIDevice *d, void *opaque),
void *opaque);
diff --git a/include/hw/pci/pci_bus.h b/include/hw/pci/pci_bus.h
index 306ef10..553814e 100644
--- a/include/hw/pci/pci_bus.h
+++ b/include/hw/pci/pci_bus.h
@@ -24,6 +24,7 @@ typedef struct PCIBusClass {
/*< public >*/
bool (*is_root)(PCIBus *bus);
+ int (*bus_num)(PCIBus *bus);
} PCIBusClass;
struct PCIBus {
@@ -54,6 +55,11 @@ static inline bool pci_bus_is_root(PCIBus *bus)
return PCI_BUS_GET_CLASS(bus)->is_root(bus);
}
+static inline int pci_bus_num(PCIBus *bus)
+{
+ return PCI_BUS_GET_CLASS(bus)->bus_num(bus);
+}
+
typedef struct PCIBridgeWindows PCIBridgeWindows;
/*
--
2.1.0
- [Qemu-devel] [PATCH RFC 03/17] hw/apci: add _PRT method for extra root busses, (continued)
- [Qemu-devel] [PATCH RFC 03/17] hw/apci: add _PRT method for extra root busses, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 04/17] hw/acpi: add _CRS method for extra root busses, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 05/17] hw/acpi: remove from root bus 0 the crs resources used by other busses., Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 07/17] hw/pci: made pci_bus_is_root a PCIBusClass method, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 06/17] hw/pci: move pci bus related code to separate files, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 09/17] hw/pci: introduce TYPE_PCI_MAIN_HOST_BRIDGE interface, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 10/17] hw/pci: removed 'rootbus nr is 0' assumption from qmp_pci_query, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 08/17] hw/pci: made pci_bus_num a PCIBusClass method,
Marcel Apfelbaum <=
- [Qemu-devel] [PATCH RFC 12/17] hw/pci: introduce PCI Expander Bridge (PXB), Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 11/17] hw/pci: implement iteration over multiple host bridges, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 13/17] hw/pci: inform bios if the system has more than one pci bridge, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 14/17] hw/pci: piix - suport multiple host bridges, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 15/17] hw/pxb: add map_irq func, Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 16/17] hw/pci-bridge: hack - disable shpc bar (will be removed from the series), Marcel Apfelbaum, 2015/01/22
- [Qemu-devel] [PATCH RFC 17/17] hw/acpi: hack - generate dummy region ranges for first acpi-build (will be removed from the series), Marcel Apfelbaum, 2015/01/22