mirror of https://gitee.com/openkylin/qemu.git
s390x/pci: introduce S390PCIBus
To enable S390PCIBusDevice as qdev, there should be a new bus to plug and manage all instances of S390PCIBusDevice. Due to this, S390PCIBus is introduced. Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com> Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
5d1abf2344
commit
90a0f9afec
|
@ -527,6 +527,9 @@ static int s390_pcihost_init(SysBusDevice *dev)
|
||||||
bus = BUS(b);
|
bus = BUS(b);
|
||||||
qbus_set_hotplug_handler(bus, DEVICE(dev), NULL);
|
qbus_set_hotplug_handler(bus, DEVICE(dev), NULL);
|
||||||
phb->bus = b;
|
phb->bus = b;
|
||||||
|
|
||||||
|
s->bus = S390_PCI_BUS(qbus_create(TYPE_S390_PCI_BUS, DEVICE(s), NULL));
|
||||||
|
|
||||||
QTAILQ_INIT(&s->pending_sei);
|
QTAILQ_INIT(&s->pending_sei);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -636,9 +639,16 @@ static const TypeInfo s390_pcihost_info = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const TypeInfo s390_pcibus_info = {
|
||||||
|
.name = TYPE_S390_PCI_BUS,
|
||||||
|
.parent = TYPE_BUS,
|
||||||
|
.instance_size = sizeof(S390PCIBus),
|
||||||
|
};
|
||||||
|
|
||||||
static void s390_pci_register_types(void)
|
static void s390_pci_register_types(void)
|
||||||
{
|
{
|
||||||
type_register_static(&s390_pcihost_info);
|
type_register_static(&s390_pcihost_info);
|
||||||
|
type_register_static(&s390_pcibus_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
type_init(s390_pci_register_types)
|
type_init(s390_pci_register_types)
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "hw/s390x/css.h"
|
#include "hw/s390x/css.h"
|
||||||
|
|
||||||
#define TYPE_S390_PCI_HOST_BRIDGE "s390-pcihost"
|
#define TYPE_S390_PCI_HOST_BRIDGE "s390-pcihost"
|
||||||
|
#define TYPE_S390_PCI_BUS "s390-pcibus"
|
||||||
#define FH_MASK_ENABLE 0x80000000
|
#define FH_MASK_ENABLE 0x80000000
|
||||||
#define FH_MASK_INSTANCE 0x7f000000
|
#define FH_MASK_INSTANCE 0x7f000000
|
||||||
#define FH_MASK_SHM 0x00ff0000
|
#define FH_MASK_SHM 0x00ff0000
|
||||||
|
@ -31,6 +32,8 @@
|
||||||
|
|
||||||
#define S390_PCI_HOST_BRIDGE(obj) \
|
#define S390_PCI_HOST_BRIDGE(obj) \
|
||||||
OBJECT_CHECK(S390pciState, (obj), TYPE_S390_PCI_HOST_BRIDGE)
|
OBJECT_CHECK(S390pciState, (obj), TYPE_S390_PCI_HOST_BRIDGE)
|
||||||
|
#define S390_PCI_BUS(obj) \
|
||||||
|
OBJECT_CHECK(S390PCIBus, (obj), TYPE_S390_PCI_BUS)
|
||||||
|
|
||||||
#define HP_EVENT_TO_CONFIGURED 0x0301
|
#define HP_EVENT_TO_CONFIGURED 0x0301
|
||||||
#define HP_EVENT_RESERVED_TO_STANDBY 0x0302
|
#define HP_EVENT_RESERVED_TO_STANDBY 0x0302
|
||||||
|
@ -267,8 +270,13 @@ typedef struct S390PCIBusDevice {
|
||||||
IndAddr *indicator;
|
IndAddr *indicator;
|
||||||
} S390PCIBusDevice;
|
} S390PCIBusDevice;
|
||||||
|
|
||||||
|
typedef struct S390PCIBus {
|
||||||
|
BusState qbus;
|
||||||
|
} S390PCIBus;
|
||||||
|
|
||||||
typedef struct S390pciState {
|
typedef struct S390pciState {
|
||||||
PCIHostState parent_obj;
|
PCIHostState parent_obj;
|
||||||
|
S390PCIBus *bus;
|
||||||
S390PCIBusDevice pbdev[PCI_SLOT_MAX];
|
S390PCIBusDevice pbdev[PCI_SLOT_MAX];
|
||||||
AddressSpace msix_notify_as;
|
AddressSpace msix_notify_as;
|
||||||
MemoryRegion msix_notify_mr;
|
MemoryRegion msix_notify_mr;
|
||||||
|
|
Loading…
Reference in New Issue