From: Markus Armbruster <arm...@redhat.com> Drop it when there's no obvious reason why device_add could not work. Else keep and document why.
* isa-fdc, port92, i8042, m48t59_isa, mc146818rtc, isa-pit, kvm-pit: drop (the last two by dropping it from their abstract base pit-common) * pcspk: keep because of pointer property pit, and because realize sets global pcspk_state * vmmouse: keep because of pointer property ps2_mouse * vmport: keep because realize sets global port_state * pic-common, isa-i8259, kvm-i8259: move from abstract base pic-common to its subtypes, keep in isa-i8259 because init sets global isa_pic and slave_pic, keep in kvm-i8259 with /* FIXME explain why */ Perhaps I should split this patch. Signed-off-by: Markus Armbruster <arm...@redhat.com> --- hw/audio/pcspk.c | 3 ++- hw/block/fdc.c | 1 - hw/i386/kvm/i8259.c | 1 + hw/i386/pc.c | 1 - hw/input/pckbd.c | 1 - hw/input/vmmouse.c | 3 ++- hw/intc/i8259.c | 2 ++ hw/intc/i8259_common.c | 1 - hw/misc/vmport.c | 3 ++- hw/timer/i8254_common.c | 1 - hw/timer/m48t59.c | 1 - hw/timer/mc146818rtc.c | 1 - 12 files changed, 9 insertions(+), 10 deletions(-) diff --git a/hw/audio/pcspk.c b/hw/audio/pcspk.c index 8e3e178..f980d66 100644 --- a/hw/audio/pcspk.c +++ b/hw/audio/pcspk.c @@ -192,8 +192,9 @@ static void pcspk_class_initfn(ObjectClass *klass, void *data) dc->realize = pcspk_realizefn; set_bit(DEVICE_CATEGORY_SOUND, dc->categories); - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->props = pcspk_properties; + /* Reason: pointer property "pit", realize sets global pcspk_state */ + dc->cannot_instantiate_with_device_add_yet = true; } static const TypeInfo pcspk_info = { diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 86f4920..592b58f 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -2234,7 +2234,6 @@ static void isabus_fdc_class_init(ObjectClass *klass, void *data) dc->realize = isabus_fdc_realize; dc->fw_name = "fdc"; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->reset = fdctrl_external_reset_isa; dc->vmsd = &vmstate_isa_fdc; dc->props = isa_fdc_properties; diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c index 53e3ca8..6aa343a 100644 --- a/hw/i386/kvm/i8259.c +++ b/hw/i386/kvm/i8259.c @@ -144,6 +144,7 @@ static void kvm_i8259_class_init(ObjectClass *klass, void *data) dc->realize = kvm_pic_realize; k->pre_save = kvm_pic_get; k->post_load = kvm_pic_put; + dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ } static const TypeInfo kvm_i8259_info = { diff --git a/hw/i386/pc.c b/hw/i386/pc.c index fe33843..bebda79 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -544,7 +544,6 @@ static void port92_class_initfn(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->realize = port92_realizefn; dc->reset = port92_reset; dc->vmsd = &vmstate_port92_isa; diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c index dee31a6..655b8c5 100644 --- a/hw/input/pckbd.c +++ b/hw/input/pckbd.c @@ -522,7 +522,6 @@ static void i8042_class_initfn(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); dc->realize = i8042_realizefn; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->vmsd = &vmstate_kbd_isa; } diff --git a/hw/input/vmmouse.c b/hw/input/vmmouse.c index 600e4a2..6a50533 100644 --- a/hw/input/vmmouse.c +++ b/hw/input/vmmouse.c @@ -282,10 +282,11 @@ static void vmmouse_class_initfn(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); dc->realize = vmmouse_realizefn; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->reset = vmmouse_reset; dc->vmsd = &vmstate_vmmouse; dc->props = vmmouse_properties; + /* Reason: pointer property "ps2_mouse" */ + dc->cannot_instantiate_with_device_add_yet = true; } static const TypeInfo vmmouse_info = { diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c index c6f248b..3321d10 100644 --- a/hw/intc/i8259.c +++ b/hw/intc/i8259.c @@ -504,6 +504,8 @@ static void i8259_class_init(ObjectClass *klass, void *data) k->parent_realize = dc->realize; dc->realize = pic_realize; dc->reset = pic_reset; + /* Reason: init sets global isa_pic, slave_pic */ + dc->cannot_instantiate_with_device_add_yet = true; } static const TypeInfo i8259_info = { diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c index 2acdbfe..0e35c14 100644 --- a/hw/intc/i8259_common.c +++ b/hw/intc/i8259_common.c @@ -135,7 +135,6 @@ static void pic_common_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); dc->vmsd = &vmstate_pic_common; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->props = pic_properties_common; dc->realize = pic_common_realize; } diff --git a/hw/misc/vmport.c b/hw/misc/vmport.c index 94ae6ae..cd5716a 100644 --- a/hw/misc/vmport.c +++ b/hw/misc/vmport.c @@ -162,7 +162,8 @@ static void vmport_class_initfn(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); dc->realize = vmport_realizefn; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ + /* Reason: realize sets global port_state */ + dc->cannot_instantiate_with_device_add_yet = true; } static const TypeInfo vmport_info = { diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c index dc2196c..2236369 100644 --- a/hw/timer/i8254_common.c +++ b/hw/timer/i8254_common.c @@ -282,7 +282,6 @@ static void pit_common_class_init(ObjectClass *klass, void *data) dc->realize = pit_common_realize; dc->vmsd = &vmstate_pit_common; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ } static const TypeInfo pit_common_type = { diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index f81cf48..c0dfb51 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -750,7 +750,6 @@ static void m48t59_isa_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); dc->realize = m48t59_isa_realize; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->reset = m48t59_reset_isa; dc->props = m48t59_isa_properties; } diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c index 2f58220..2faef13 100644 --- a/hw/timer/mc146818rtc.c +++ b/hw/timer/mc146818rtc.c @@ -906,7 +906,6 @@ static void rtc_class_initfn(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); dc->realize = rtc_realizefn; - dc->cannot_instantiate_with_device_add_yet = true; /* FIXME explain why */ dc->vmsd = &vmstate_rtc; dc->props = mc146818rtc_properties; } -- 1.8.1.4