From a39e356458335418973ca7d388c02712145cd177 Mon Sep 17 00:00:00 2001 From: Jason Baron Date: Wed, 14 Nov 2012 15:54:01 -0500 Subject: pc: Move ioapic_init() from pc_piix.c to pc.c Move ioapic_init() from pc_piix.c to pc.c, to make it a common function. Rename ioapic_init() -> ioapic_init_gsi(). Move to pc.h so q35 can use them as well. Reviewed-by: Paolo Bonzini Signed-off-by: Jason Baron Signed-off-by: Anthony Liguori --- hw/pc.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'hw/pc.c') diff --git a/hw/pc.c b/hw/pc.c index 04553f8..2b5bbbf 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1083,3 +1083,27 @@ void pc_pci_device_init(PCIBus *pci_bus) pci_create_simple(pci_bus, -1, "lsi53c895a"); } } + +void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name) +{ + DeviceState *dev; + SysBusDevice *d; + unsigned int i; + + if (kvm_irqchip_in_kernel()) { + dev = qdev_create(NULL, "kvm-ioapic"); + } else { + dev = qdev_create(NULL, "ioapic"); + } + if (parent_name) { + object_property_add_child(object_resolve_path(parent_name, NULL), + "ioapic", OBJECT(dev), NULL); + } + qdev_init_nofail(dev); + d = sysbus_from_qdev(dev); + sysbus_mmio_map(d, 0, 0xfec00000); + + for (i = 0; i < IOAPIC_NUM_PINS; i++) { + gsi_state->ioapic_irq[i] = qdev_get_gpio_in(dev, i); + } +} -- cgit v1.1