As a matter of fact, the mach-virt platform needs some definitions of the generic_pci device.
Note: Including the device header file in the mach-virt platform can be avoided extending properly the idea present in "[PATCH 4/7] hw/arm/virt: Support dynamically spawned sysbus devices". Signed-off-by: Alvise Rigo <a.r...@virtualopensystems.com> --- hw/pci-host/generic-pci.c | 31 +------------------------------ include/hw/pci-host/pci_generic.h | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 30 deletions(-) create mode 100644 include/hw/pci-host/pci_generic.h diff --git a/hw/pci-host/generic-pci.c b/hw/pci-host/generic-pci.c index 1632e46..8733c67 100644 --- a/hw/pci-host/generic-pci.c +++ b/hw/pci-host/generic-pci.c @@ -12,44 +12,15 @@ */ #include "hw/sysbus.h" -#include "hw/pci/pci.h" -#include "hw/pci/pci_bus.h" -#include "hw/pci/pci_host.h" +#include "hw/pci-host/pci_generic.h" #include "exec/address-spaces.h" -typedef struct { - PCIHostState parent_obj; - - qemu_irq irq[4]; - MemoryRegion mem_config; - /* Containers representing the PCI address spaces */ - MemoryRegion pci_io_space; - MemoryRegion pci_mem_space; - /* Alias regions into PCI address spaces which we expose as sysbus regions. - * The offsets into pci_mem_space are controlled by the imap registers. - */ - MemoryRegion pci_io_window; - MemoryRegion pci_mem_window; - PCIBus pci_bus; - PCIDevice pci_dev; -} PCIVPBState; - - static const VMStateDescription pci_generic_host_vmstate = { .name = "generic-host-pci", .version_id = 1, .minimum_version_id = 1, }; -#define TYPE_GENERIC_PCI "generic_pci" -#define PCI_GEN(obj) \ - OBJECT_CHECK(PCIVPBState, (obj), TYPE_GENERIC_PCI) - -#define TYPE_GENERIC_PCI_HOST "generic_pci_host" -#define PCI_GEN_HOST(obj) \ - OBJECT_CHECK(PCIDevice, (obj), TYPE_GENERIC_PCIHOST) - - static void pci_cam_config_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { diff --git a/include/hw/pci-host/pci_generic.h b/include/hw/pci-host/pci_generic.h new file mode 100644 index 0000000..46e4cb8 --- /dev/null +++ b/include/hw/pci-host/pci_generic.h @@ -0,0 +1,33 @@ +#ifndef QEMU_GENERIC_PCI_H +#define QEMU_GENERIC_PCI_H + +#include "hw/pci/pci.h" +#include "hw/pci/pci_bus.h" +#include "hw/pci/pci_host.h" + +typedef struct { + PCIHostState parent_obj; + + qemu_irq irq[4]; + MemoryRegion mem_config; + /* Containers representing the PCI address spaces */ + MemoryRegion pci_io_space; + MemoryRegion pci_mem_space; + /* Alias regions into PCI address spaces which we expose as sysbus regions. + * The offsets into pci_mem_space are controlled by the imap registers. + */ + MemoryRegion pci_io_window; + MemoryRegion pci_mem_window; + PCIBus pci_bus; + PCIDevice pci_dev; +} PCIVPBState; + +#define TYPE_GENERIC_PCI "generic_pci" +#define PCI_GEN(obj) \ + OBJECT_CHECK(PCIVPBState, (obj), TYPE_GENERIC_PCI) + +#define TYPE_GENERIC_PCI_HOST "generic_pci_host" +#define PCI_GEN_HOST(obj) \ + OBJECT_CHECK(PCIDevice, (obj), TYPE_GENERIC_PCIHOST) + +#endif -- 1.9.1