mirror of https://gitee.com/openkylin/qemu.git
sysbus: Set cannot_instantiate_with_device_add_yet
device_add plugs devices into suitable bus. For "real" buses, that actually connects the device. For sysbus, the connections need to be made separately, and device_add can't do that. The device would be left unconnected, and could not possibly work. Quite a few, but not all sysbus devices already set cannot_instantiate_with_device_add_yet in their class init function. Set it in their abstract base's class init function sysbus_device_class_init(), and remove the now redundant assignments from device class init functions. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Marcel Apfelbaum <marcel.a@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
efec3dd631
commit
837d37167d
|
@ -934,11 +934,9 @@ static int typhoon_pcihost_init(SysBusDevice *dev)
|
|||
|
||||
static void typhoon_pcihost_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = typhoon_pcihost_init;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo typhoon_pcihost_info = {
|
||||
|
|
|
@ -390,7 +390,6 @@ static void vpb_sic_class_init(ObjectClass *klass, void *data)
|
|||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = vpb_sic_init;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->vmsd = &vmstate_vpb_sic;
|
||||
}
|
||||
|
||||
|
|
|
@ -632,7 +632,6 @@ static void pl041_device_class_init(ObjectClass *klass, void *data)
|
|||
|
||||
k->init = pl041_init;
|
||||
set_bit(DEVICE_CATEGORY_SOUND, dc->categories);
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->reset = pl041_device_reset;
|
||||
dc->vmsd = &vmstate_pl041;
|
||||
dc->props = pl041_device_properties;
|
||||
|
|
|
@ -257,6 +257,13 @@ static void sysbus_device_class_init(ObjectClass *klass, void *data)
|
|||
DeviceClass *k = DEVICE_CLASS(klass);
|
||||
k->init = sysbus_device_init;
|
||||
k->bus_type = TYPE_SYSTEM_BUS;
|
||||
/*
|
||||
* device_add plugs devices into suitable bus. For "real" buses,
|
||||
* that actually connects the device. For sysbus, the connections
|
||||
* need to be made separately, and device_add can't do that. The
|
||||
* device would be left unconnected, and could not possibly work.
|
||||
*/
|
||||
k->cannot_instantiate_with_device_add_yet = true;
|
||||
}
|
||||
|
||||
static const TypeInfo sysbus_device_type_info = {
|
||||
|
|
|
@ -496,7 +496,6 @@ static void pl110_class_init(ObjectClass *klass, void *data)
|
|||
|
||||
k->init = pl110_initfn;
|
||||
set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->vmsd = &vmstate_pl110;
|
||||
}
|
||||
|
||||
|
|
|
@ -381,7 +381,6 @@ static void pl080_class_init(ObjectClass *oc, void *data)
|
|||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->vmsd = &vmstate_pl080;
|
||||
}
|
||||
|
||||
|
|
|
@ -114,7 +114,6 @@ static void kvmclock_class_init(ObjectClass *klass, void *data)
|
|||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
dc->realize = kvmclock_realize;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->vmsd = &kvmclock_vmsd;
|
||||
}
|
||||
|
||||
|
|
|
@ -827,7 +827,6 @@ static void vapic_class_init(ObjectClass *klass, void *data)
|
|||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->reset = vapic_reset;
|
||||
dc->vmsd = &vmstate_vapic;
|
||||
dc->realize = vapic_realize;
|
||||
|
|
|
@ -704,7 +704,6 @@ static void arm_gic_class_init(ObjectClass *klass, void *data)
|
|||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
ARMGICClass *agc = ARM_GIC_CLASS(klass);
|
||||
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
agc->parent_realize = dc->realize;
|
||||
dc->realize = arm_gic_realize;
|
||||
}
|
||||
|
|
|
@ -156,7 +156,6 @@ static void arm_gic_common_class_init(ObjectClass *klass, void *data)
|
|||
dc->realize = arm_gic_common_realize;
|
||||
dc->props = arm_gic_common_properties;
|
||||
dc->vmsd = &vmstate_gic;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo arm_gic_common_type = {
|
||||
|
|
|
@ -150,7 +150,6 @@ static void kvm_arm_gic_class_init(ObjectClass *klass, void *data)
|
|||
kgc->parent_reset = dc->reset;
|
||||
dc->realize = kvm_arm_gic_realize;
|
||||
dc->reset = kvm_arm_gic_reset;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo kvm_arm_gic_info = {
|
||||
|
|
|
@ -98,7 +98,6 @@ static void ioapic_common_class_init(ObjectClass *klass, void *data)
|
|||
|
||||
dc->realize = ioapic_common_realize;
|
||||
dc->vmsd = &vmstate_ioapic_common;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo ioapic_common_type = {
|
||||
|
|
|
@ -273,7 +273,6 @@ static void pl190_class_init(ObjectClass *klass, void *data)
|
|||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = pl190_init;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->reset = pl190_reset;
|
||||
dc->vmsd = &vmstate_pl190;
|
||||
}
|
||||
|
|
|
@ -197,7 +197,6 @@ static void isabus_bridge_class_init(ObjectClass *klass, void *data)
|
|||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
dc->fw_name = "isa";
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo isabus_bridge_info = {
|
||||
|
|
|
@ -179,7 +179,6 @@ static void l2x0_class_init(ObjectClass *klass, void *data)
|
|||
|
||||
k->init = l2x0_priv_init;
|
||||
dc->vmsd = &vmstate_l2x0;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->props = l2x0_properties;
|
||||
dc->reset = l2x0_priv_reset;
|
||||
}
|
||||
|
|
|
@ -599,7 +599,6 @@ static void fw_cfg_class_init(ObjectClass *klass, void *data)
|
|||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
dc->realize = fw_cfg_realize;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->reset = fw_cfg_reset;
|
||||
dc->vmsd = &vmstate_fw_cfg;
|
||||
dc->props = fw_cfg_properties;
|
||||
|
|
|
@ -819,11 +819,9 @@ static const TypeInfo bonito_info = {
|
|||
|
||||
static void bonito_pcihost_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = bonito_pcihost_initfn;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo bonito_pcihost_info = {
|
||||
|
|
|
@ -143,10 +143,8 @@ static const TypeInfo grackle_pci_info = {
|
|||
static void pci_grackle_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
k->init = pci_grackle_init_device;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo grackle_pci_host_info = {
|
||||
|
|
|
@ -727,7 +727,6 @@ static void i440fx_pcihost_class_init(ObjectClass *klass, void *data)
|
|||
hc->root_bus_path = i440fx_pcihost_root_bus_path;
|
||||
dc->realize = i440fx_pcihost_realize;
|
||||
dc->fw_name = "pci";
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->props = i440fx_props;
|
||||
}
|
||||
|
||||
|
|
|
@ -215,7 +215,6 @@ static void raven_pcihost_class_init(ObjectClass *klass, void *data)
|
|||
set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
|
||||
dc->realize = raven_pcihost_realizefn;
|
||||
dc->fw_name = "pci";
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo raven_pcihost_info = {
|
||||
|
|
|
@ -528,11 +528,9 @@ static int spapr_vio_bridge_init(SysBusDevice *dev)
|
|||
|
||||
static void spapr_vio_bridge_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = spapr_vio_bridge_init;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo spapr_vio_bridge_info = {
|
||||
|
|
|
@ -182,7 +182,6 @@ static void s390_ipl_class_init(ObjectClass *klass, void *data)
|
|||
k->init = s390_ipl_init;
|
||||
dc->props = s390_ipl_properties;
|
||||
dc->reset = s390_ipl_reset;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo s390_ipl_info = {
|
||||
|
|
|
@ -676,11 +676,9 @@ static int s390_virtio_bridge_init(SysBusDevice *dev)
|
|||
|
||||
static void s390_virtio_bridge_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = s390_virtio_bridge_init;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo s390_virtio_bridge_info = {
|
||||
|
|
|
@ -1283,11 +1283,9 @@ static int virtual_css_bridge_init(SysBusDevice *dev)
|
|||
|
||||
static void virtual_css_bridge_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = virtual_css_bridge_init;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo virtual_css_bridge_info = {
|
||||
|
|
|
@ -506,7 +506,6 @@ static void pl181_class_init(ObjectClass *klass, void *data)
|
|||
sdc->init = pl181_init;
|
||||
k->vmsd = &vmstate_pl181;
|
||||
k->reset = pl181_reset;
|
||||
k->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
}
|
||||
|
||||
static const TypeInfo pl181_info = {
|
||||
|
|
|
@ -274,7 +274,6 @@ static void arm_mptimer_class_init(ObjectClass *klass, void *data)
|
|||
dc->realize = arm_mptimer_realize;
|
||||
dc->vmsd = &vmstate_arm_mptimer;
|
||||
dc->reset = arm_mptimer_reset;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->props = arm_mptimer_properties;
|
||||
}
|
||||
|
||||
|
|
|
@ -765,7 +765,6 @@ static void hpet_device_class_init(ObjectClass *klass, void *data)
|
|||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
dc->realize = hpet_realize;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->reset = hpet_reset;
|
||||
dc->vmsd = &vmstate_hpet;
|
||||
dc->props = hpet_device_properties;
|
||||
|
|
|
@ -251,7 +251,6 @@ static void pl031_class_init(ObjectClass *klass, void *data)
|
|||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = pl031_init;
|
||||
dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */
|
||||
dc->vmsd = &vmstate_pl031;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue