ioapic: Use QOM realize for ioapic

Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
[AF: Tweaked error message]
Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
Hu Tao 2013-07-01 18:18:41 +08:00 committed by Andreas Färber
parent c118d44b6a
commit f5ba752371

View file

@ -57,23 +57,22 @@ static int ioapic_dispatch_post_load(void *opaque, int version_id)
return 0; return 0;
} }
static int ioapic_init_common(SysBusDevice *dev) static void ioapic_common_realize(DeviceState *dev, Error **errp)
{ {
IOAPICCommonState *s = IOAPIC_COMMON(dev); IOAPICCommonState *s = IOAPIC_COMMON(dev);
IOAPICCommonClass *info; IOAPICCommonClass *info;
static int ioapic_no; static int ioapic_no;
if (ioapic_no >= MAX_IOAPICS) { if (ioapic_no >= MAX_IOAPICS) {
return -1; error_setg(errp, "Only %d ioapics allowed", MAX_IOAPICS);
return;
} }
info = IOAPIC_COMMON_GET_CLASS(s); info = IOAPIC_COMMON_GET_CLASS(s);
info->init(s, ioapic_no); info->init(s, ioapic_no);
sysbus_init_mmio(&s->busdev, &s->io_memory); sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->io_memory);
ioapic_no++; ioapic_no++;
return 0;
} }
static const VMStateDescription vmstate_ioapic_common = { static const VMStateDescription vmstate_ioapic_common = {
@ -95,10 +94,9 @@ static const VMStateDescription vmstate_ioapic_common = {
static void ioapic_common_class_init(ObjectClass *klass, void *data) static void ioapic_common_class_init(ObjectClass *klass, void *data)
{ {
SysBusDeviceClass *sc = SYS_BUS_DEVICE_CLASS(klass);
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
sc->init = ioapic_init_common; dc->realize = ioapic_common_realize;
dc->vmsd = &vmstate_ioapic_common; dc->vmsd = &vmstate_ioapic_common;
dc->no_user = 1; dc->no_user = 1;
} }