On 12/10/2017 03:38 AM, Peter Xu wrote: > Now both classes (i8259, i8259-kvm) support this. Move this upper to > the common class code. > > Signed-off-by: Peter Xu <pet...@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > hw/i386/kvm/i8259.c | 7 ------- > hw/intc/i8259.c | 7 ------- > hw/intc/i8259_common.c | 7 +++++++ > 3 files changed, 7 insertions(+), 14 deletions(-) > > diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c > index 57abe091b0..b91e98074e 100644 > --- a/hw/i386/kvm/i8259.c > +++ b/hw/i386/kvm/i8259.c > @@ -140,15 +140,12 @@ static void kvm_i8259_class_init(ObjectClass *klass, > void *data) > KVMPICClass *kpc = KVM_PIC_CLASS(klass); > PICCommonClass *k = PIC_COMMON_CLASS(klass); > DeviceClass *dc = DEVICE_CLASS(klass); > - InterruptStatsProviderClass *ic = INTERRUPT_STATS_PROVIDER_CLASS(klass); > > dc->reset = kvm_pic_reset; > kpc->parent_realize = dc->realize; > dc->realize = kvm_pic_realize; > k->pre_save = kvm_pic_get; > k->post_load = kvm_pic_put; > - ic->get_statistics = pic_get_statistics; > - ic->print_info = pic_print_info; > } > > static const TypeInfo kvm_i8259_info = { > @@ -157,10 +154,6 @@ static const TypeInfo kvm_i8259_info = { > .instance_size = sizeof(PICCommonState), > .class_init = kvm_i8259_class_init, > .class_size = sizeof(KVMPICClass), > - .interfaces = (InterfaceInfo[]) { > - { TYPE_INTERRUPT_STATS_PROVIDER }, > - { } > - }, > }; > > static void kvm_pic_register_types(void) > diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c > index d9b9666aff..1602255a87 100644 > --- a/hw/intc/i8259.c > +++ b/hw/intc/i8259.c > @@ -442,13 +442,10 @@ static void i8259_class_init(ObjectClass *klass, void > *data) > { > PICClass *k = PIC_CLASS(klass); > DeviceClass *dc = DEVICE_CLASS(klass); > - InterruptStatsProviderClass *ic = INTERRUPT_STATS_PROVIDER_CLASS(klass); > > k->parent_realize = dc->realize; > dc->realize = pic_realize; > dc->reset = pic_reset; > - ic->get_statistics = pic_get_statistics; > - ic->print_info = pic_print_info; > } > > static const TypeInfo i8259_info = { > @@ -457,10 +454,6 @@ static const TypeInfo i8259_info = { > .parent = TYPE_PIC_COMMON, > .class_init = i8259_class_init, > .class_size = sizeof(PICClass), > - .interfaces = (InterfaceInfo[]) { > - { TYPE_INTERRUPT_STATS_PROVIDER }, > - { } > - }, > }; > > static void pic_register_types(void) > diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c > index 7efd2e8012..c75c880157 100644 > --- a/hw/intc/i8259_common.c > +++ b/hw/intc/i8259_common.c > @@ -178,6 +178,7 @@ static Property pic_properties_common[] = { > static void pic_common_class_init(ObjectClass *klass, void *data) > { > DeviceClass *dc = DEVICE_CLASS(klass); > + InterruptStatsProviderClass *ic = INTERRUPT_STATS_PROVIDER_CLASS(klass); > > dc->vmsd = &vmstate_pic_common; > dc->props = pic_properties_common; > @@ -189,6 +190,8 @@ static void pic_common_class_init(ObjectClass *klass, > void *data) > * code. > */ > dc->user_creatable = false; > + ic->get_statistics = pic_get_statistics; > + ic->print_info = pic_print_info; > } > > static const TypeInfo pic_common_type = { > @@ -198,6 +201,10 @@ static const TypeInfo pic_common_type = { > .class_size = sizeof(PICCommonClass), > .class_init = pic_common_class_init, > .abstract = true, > + .interfaces = (InterfaceInfo[]) { > + { TYPE_INTERRUPT_STATS_PROVIDER }, > + { } > + }, > }; > > static void pic_common_register_types(void) >