qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 3/4] vga: make Cirrus ISA device optional
@ 2012-01-08 21:11 Blue Swirl
  2012-01-13 20:09 ` Jan Kiszka
  0 siblings, 1 reply; 4+ messages in thread
From: Blue Swirl @ 2012-01-08 21:11 UTC (permalink / raw)
  To: qemu-devel, Jan Kiszka

[-- Attachment #1: Type: text/plain, Size: 10957 bytes --]

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
 Makefile.target                      |   13 +++-------
 default-configs/alpha-softmmu.mak    |    2 +
 default-configs/arm-softmmu.mak      |    1 +
 default-configs/i386-softmmu.mak     |    2 +
 default-configs/mips-softmmu.mak     |    2 +
 default-configs/mips64-softmmu.mak   |    2 +
 default-configs/mips64el-softmmu.mak |    2 +
 default-configs/mipsel-softmmu.mak   |    2 +
 default-configs/ppc-softmmu.mak      |    1 +
 default-configs/ppc64-softmmu.mak    |    1 +
 default-configs/ppcemb-softmmu.mak   |    1 +
 default-configs/sparc64-softmmu.mak  |    2 +
 default-configs/x86_64-softmmu.mak   |    2 +
 hw/cirrus_vga.c                      |   41 ++++++++++++++++++++++++----------
 hw/pc.c                              |    2 +-
 hw/pc.h                              |    1 -
 16 files changed, 54 insertions(+), 23 deletions(-)

diff --git a/Makefile.target b/Makefile.target
index ed4c3bf..03fe7b0 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -202,6 +202,8 @@ obj-$(CONFIG_VHOST_NET) += vhost.o
 obj-$(CONFIG_REALLY_VIRTFS) += 9pfs/virtio-9p-device.o
 obj-$(CONFIG_KVM) += kvm.o kvm-all.o
 obj-$(CONFIG_NO_KVM) += kvm-stub.o
+obj-$(CONFIG_VGA) += vga.o
+obj-$(CONFIG_VGA_CIRRUS) += cirrus_vga.o
 obj-y += memory.o savevm.o
 LIBS+=-lz

@@ -227,9 +229,8 @@ endif
 obj-$(CONFIG_IVSHMEM) += ivshmem.o

 # Hardware support
-obj-i386-y += vga.o
 obj-i386-y += mc146818rtc.o pc.o
-obj-i386-y += cirrus_vga.o sga.o apic.o ioapic.o piix_pci.o
+obj-i386-y += sga.o apic.o ioapic.o piix_pci.o
 obj-i386-y += vmport.o
 obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
 obj-i386-y += debugcon.o multiboot.o
@@ -239,7 +240,6 @@ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o

 # shared objects
 obj-ppc-y = ppc.o ppc_booke.o
-obj-ppc-y += vga.o
 # PREP target
 obj-ppc-y += mc146818rtc.o
 obj-ppc-y += ppc_prep.o
@@ -293,10 +293,8 @@ obj-lm32-y += framebuffer.o

 obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
 obj-mips-y += mips_addr.o mips_timer.o mips_int.o
-obj-mips-y += vga.o
 obj-mips-y += jazz_led.o
 obj-mips-y += gt64xxx.o mc146818rtc.o
-obj-mips-y += cirrus_vga.o
 obj-mips-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o

 obj-microblaze-y = petalogix_s3adsp1800_mmu.o
@@ -326,9 +324,7 @@ obj-cris-y += etraxfs_ser.o

 ifeq ($(TARGET_ARCH), sparc64)
 obj-sparc-y = sun4u.o apb_pci.o
-obj-sparc-y += vga.o
 obj-sparc-y += mc146818rtc.o
-obj-sparc-y += cirrus_vga.o
 else
 obj-sparc-y = sun4m.o lance.o tcx.o sun4m_iommu.o slavio_intctl.o
 obj-sparc-y += slavio_timer.o slavio_misc.o sparc32_dma.o
@@ -356,7 +352,7 @@ obj-arm-y += omap1.o omap_lcdc.o omap_dma.o
omap_clk.o omap_mmc.o omap_i2c.o \
 obj-arm-y += omap2.o omap_dss.o soc_dma.o omap_gptimer.o omap_synctimer.o \
 		omap_gpmc.o omap_sdrc.o omap_spi.o omap_tap.o omap_l4.o
 obj-arm-y += omap_sx1.o palm.o tsc210x.o
-obj-arm-y += nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
+obj-arm-y += nseries.o blizzard.o onenand.o cbus.o tusb6010.o usb-musb.o
 obj-arm-y += mst_fpga.o mainstone.o
 obj-arm-y += z2.o
 obj-arm-y += musicpal.o bitbang_i2c.o marvell_88w8618_audio.o
@@ -376,7 +372,6 @@ obj-m68k-y += m68k-semi.o dummy_m68k.o
 obj-s390x-y = s390-virtio-bus.o s390-virtio.o

 obj-alpha-y = mc146818rtc.o
-obj-alpha-y += vga.o cirrus_vga.o
 obj-alpha-y += alpha_pci.o alpha_dp264.o alpha_typhoon.o

 obj-xtensa-y += xtensa_pic.o
diff --git a/default-configs/alpha-softmmu.mak
b/default-configs/alpha-softmmu.mak
index bd1dd95..501dd41 100644
--- a/default-configs/alpha-softmmu.mak
+++ b/default-configs/alpha-softmmu.mak
@@ -4,7 +4,9 @@ include pci.mak
 CONFIG_SERIAL=y
 CONFIG_I8254=y
 CONFIG_PCKBD=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_IDE_CORE=y
 CONFIG_IDE_QDEV=y
 CONFIG_VMWARE_VGA=y
diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
index 8d1174f1..e542b4f 100644
--- a/default-configs/arm-softmmu.mak
+++ b/default-configs/arm-softmmu.mak
@@ -2,6 +2,7 @@

 include pci.mak
 CONFIG_GDBSTUB_XML=y
+CONFIG_VGA=y
 CONFIG_ISA_MMIO=y
 CONFIG_NAND=y
 CONFIG_ECC=y
diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak
index e67ebb3..662348e 100644
--- a/default-configs/i386-softmmu.mak
+++ b/default-configs/i386-softmmu.mak
@@ -1,8 +1,10 @@
 # Default configuration for i386-softmmu

 include pci.mak
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_VMMOUSE=y
 CONFIG_SERIAL=y
diff --git a/default-configs/mips-softmmu.mak b/default-configs/mips-softmmu.mak
index 94a3486..308d04a 100644
--- a/default-configs/mips-softmmu.mak
+++ b/default-configs/mips-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/mips64-softmmu.mak
b/default-configs/mips64-softmmu.mak
index b5d3108..f1b92da 100644
--- a/default-configs/mips64-softmmu.mak
+++ b/default-configs/mips64-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/mips64el-softmmu.mak
b/default-configs/mips64el-softmmu.mak
index 2831f44..567396c 100644
--- a/default-configs/mips64el-softmmu.mak
+++ b/default-configs/mips64el-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/mipsel-softmmu.mak
b/default-configs/mipsel-softmmu.mak
index 14c949d..a8e421b 100644
--- a/default-configs/mipsel-softmmu.mak
+++ b/default-configs/mipsel-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak
index c85cdce..3277291 100644
--- a/default-configs/ppc-softmmu.mak
+++ b/default-configs/ppc-softmmu.mak
@@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
 CONFIG_ISA_MMIO=y
 CONFIG_ESCC=y
 CONFIG_M48T59=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_SERIAL=y
 CONFIG_I8254=y
diff --git a/default-configs/ppc64-softmmu.mak
b/default-configs/ppc64-softmmu.mak
index 8874115..f490368 100644
--- a/default-configs/ppc64-softmmu.mak
+++ b/default-configs/ppc64-softmmu.mak
@@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
 CONFIG_ISA_MMIO=y
 CONFIG_ESCC=y
 CONFIG_M48T59=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_SERIAL=y
 CONFIG_I8254=y
diff --git a/default-configs/ppcemb-softmmu.mak
b/default-configs/ppcemb-softmmu.mak
index 5db7205..829f462 100644
--- a/default-configs/ppcemb-softmmu.mak
+++ b/default-configs/ppcemb-softmmu.mak
@@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
 CONFIG_ISA_MMIO=y
 CONFIG_ESCC=y
 CONFIG_M48T59=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_SERIAL=y
 CONFIG_I8254=y
diff --git a/default-configs/sparc64-softmmu.mak
b/default-configs/sparc64-softmmu.mak
index d8f17e7..c9a36c1 100644
--- a/default-configs/sparc64-softmmu.mak
+++ b/default-configs/sparc64-softmmu.mak
@@ -4,7 +4,9 @@ include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_M48T59=y
 CONFIG_PTIMER=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
 CONFIG_PCKBD=y
diff --git a/default-configs/x86_64-softmmu.mak
b/default-configs/x86_64-softmmu.mak
index b75757e..b445be2 100644
--- a/default-configs/x86_64-softmmu.mak
+++ b/default-configs/x86_64-softmmu.mak
@@ -1,8 +1,10 @@
 # Default configuration for x86_64-softmmu

 include pci.mak
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_VMMOUSE=y
 CONFIG_SERIAL=y
diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c
index 4a7de84..a031079 100644
--- a/hw/cirrus_vga.c
+++ b/hw/cirrus_vga.c
@@ -250,6 +250,11 @@ typedef struct PCICirrusVGAState {
     CirrusVGAState cirrus_vga;
 } PCICirrusVGAState;

+typedef struct ISACirrusVGAState {
+    ISADevice dev;
+    CirrusVGAState cirrus_vga;
+} ISACirrusVGAState;
+
 static uint8_t rop_to_index[256];

 /***************************************
@@ -2879,23 +2884,35 @@ static void cirrus_init_common(CirrusVGAState
* s, int device_id, int is_pci,
  *
  ***************************************/

-DeviceState *isa_cirrus_vga_init(MemoryRegion *system_memory)
+static int vga_initfn(ISADevice *dev)
 {
-    CirrusVGAState *s;
-
-    s = g_malloc0(sizeof(CirrusVGAState));
-
-    vga_common_init(&s->vga, VGA_RAM_SIZE);
-    cirrus_init_common(s, CIRRUS_ID_CLGD5430, 0, system_memory);
-    s->vga.ds = graphic_console_init(s->vga.update, s->vga.invalidate,
-                                     s->vga.screen_dump, s->vga.text_update,
-                                     &s->vga);
-    vmstate_register(NULL, 0, &vmstate_cirrus_vga, s);
+    ISACirrusVGAState *d = DO_UPCAST(ISACirrusVGAState, dev, dev);
+    VGACommonState *s = &d->cirrus_vga.vga;
+
+    vga_common_init(s, VGA_RAM_SIZE);
+    cirrus_init_common(&d->cirrus_vga, CIRRUS_ID_CLGD5430, 0,
+                       isa_address_space(dev));
+    s->ds = graphic_console_init(s->update, s->invalidate,
+                                 s->screen_dump, s->text_update,
+                                 s);
     rom_add_vga(VGABIOS_CIRRUS_FILENAME);
     /* XXX ISA-LFB support */
     /* FIXME not qdev yet */
-    return NULL;
+    return 0;
+}
+
+static ISADeviceInfo isa_cirrus_vga_info = {
+    .qdev.name     = "isa-cirrus-vga",
+    .qdev.size     = sizeof(ISACirrusVGAState),
+    .qdev.vmsd     = &vmstate_cirrus_vga,
+    .init          = vga_initfn,
+};
+
+static void isa_cirrus_vga_register(void)
+{
+    isa_qdev_register(&isa_cirrus_vga_info);
 }
+device_init(isa_cirrus_vga_register)

 /***************************************
  *
diff --git a/hw/pc.c b/hw/pc.c
index 8cb78d9..b1fd4b0 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -1080,7 +1080,7 @@ DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus)
         if (pci_bus) {
             dev = pci_cirrus_vga_init(pci_bus);
         } else {
-            dev = isa_cirrus_vga_init(get_system_memory());
+            dev = &isa_create_simple(isa_bus, "isa-cirrus-vga")->qdev;
         }
     } else if (vmsvga_enabled) {
         if (pci_bus) {
diff --git a/hw/pc.h b/hw/pc.h
index 13e41f1..58a7ea9 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -226,7 +226,6 @@ int isa_vga_mm_init(target_phys_addr_t vram_base,

 /* cirrus_vga.c */
 DeviceState *pci_cirrus_vga_init(PCIBus *bus);
-DeviceState *isa_cirrus_vga_init(MemoryRegion *address_space);

 /* ne2000.c */
 static inline bool isa_ne2000_init(ISABus *bus, int base, int irq, NICInfo *nd)
-- 
1.7.9.rc0

[-- Attachment #2: 0003-vga-make-Cirrus-ISA-device-optional.patch --]
[-- Type: text/x-diff, Size: 11454 bytes --]

From 72ba8e34e6936c818dde35b6b4b0a3df723bb7bc Mon Sep 17 00:00:00 2001
Message-Id: <72ba8e34e6936c818dde35b6b4b0a3df723bb7bc.1326056648.git.blauwirbel@gmail.com>
In-Reply-To: <44deac8ff21ed0b05757a03f3b558db7c71e29ab.1326056648.git.blauwirbel@gmail.com>
References: <44deac8ff21ed0b05757a03f3b558db7c71e29ab.1326056648.git.blauwirbel@gmail.com>
From: Blue Swirl <blauwirbel@gmail.com>
Date: Sat, 1 Oct 2011 16:33:43 +0000
Subject: [PATCH 3/4] vga: make Cirrus ISA device optional

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
 Makefile.target                      |   13 +++-------
 default-configs/alpha-softmmu.mak    |    2 +
 default-configs/arm-softmmu.mak      |    1 +
 default-configs/i386-softmmu.mak     |    2 +
 default-configs/mips-softmmu.mak     |    2 +
 default-configs/mips64-softmmu.mak   |    2 +
 default-configs/mips64el-softmmu.mak |    2 +
 default-configs/mipsel-softmmu.mak   |    2 +
 default-configs/ppc-softmmu.mak      |    1 +
 default-configs/ppc64-softmmu.mak    |    1 +
 default-configs/ppcemb-softmmu.mak   |    1 +
 default-configs/sparc64-softmmu.mak  |    2 +
 default-configs/x86_64-softmmu.mak   |    2 +
 hw/cirrus_vga.c                      |   41 ++++++++++++++++++++++++----------
 hw/pc.c                              |    2 +-
 hw/pc.h                              |    1 -
 16 files changed, 54 insertions(+), 23 deletions(-)

diff --git a/Makefile.target b/Makefile.target
index ed4c3bf..03fe7b0 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -202,6 +202,8 @@ obj-$(CONFIG_VHOST_NET) += vhost.o
 obj-$(CONFIG_REALLY_VIRTFS) += 9pfs/virtio-9p-device.o
 obj-$(CONFIG_KVM) += kvm.o kvm-all.o
 obj-$(CONFIG_NO_KVM) += kvm-stub.o
+obj-$(CONFIG_VGA) += vga.o
+obj-$(CONFIG_VGA_CIRRUS) += cirrus_vga.o
 obj-y += memory.o savevm.o
 LIBS+=-lz
 
@@ -227,9 +229,8 @@ endif
 obj-$(CONFIG_IVSHMEM) += ivshmem.o
 
 # Hardware support
-obj-i386-y += vga.o
 obj-i386-y += mc146818rtc.o pc.o
-obj-i386-y += cirrus_vga.o sga.o apic.o ioapic.o piix_pci.o
+obj-i386-y += sga.o apic.o ioapic.o piix_pci.o
 obj-i386-y += vmport.o
 obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
 obj-i386-y += debugcon.o multiboot.o
@@ -239,7 +240,6 @@ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
 
 # shared objects
 obj-ppc-y = ppc.o ppc_booke.o
-obj-ppc-y += vga.o
 # PREP target
 obj-ppc-y += mc146818rtc.o
 obj-ppc-y += ppc_prep.o
@@ -293,10 +293,8 @@ obj-lm32-y += framebuffer.o
 
 obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
 obj-mips-y += mips_addr.o mips_timer.o mips_int.o
-obj-mips-y += vga.o
 obj-mips-y += jazz_led.o
 obj-mips-y += gt64xxx.o mc146818rtc.o
-obj-mips-y += cirrus_vga.o
 obj-mips-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o
 
 obj-microblaze-y = petalogix_s3adsp1800_mmu.o
@@ -326,9 +324,7 @@ obj-cris-y += etraxfs_ser.o
 
 ifeq ($(TARGET_ARCH), sparc64)
 obj-sparc-y = sun4u.o apb_pci.o
-obj-sparc-y += vga.o
 obj-sparc-y += mc146818rtc.o
-obj-sparc-y += cirrus_vga.o
 else
 obj-sparc-y = sun4m.o lance.o tcx.o sun4m_iommu.o slavio_intctl.o
 obj-sparc-y += slavio_timer.o slavio_misc.o sparc32_dma.o
@@ -356,7 +352,7 @@ obj-arm-y += omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o \
 obj-arm-y += omap2.o omap_dss.o soc_dma.o omap_gptimer.o omap_synctimer.o \
 		omap_gpmc.o omap_sdrc.o omap_spi.o omap_tap.o omap_l4.o
 obj-arm-y += omap_sx1.o palm.o tsc210x.o
-obj-arm-y += nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
+obj-arm-y += nseries.o blizzard.o onenand.o cbus.o tusb6010.o usb-musb.o
 obj-arm-y += mst_fpga.o mainstone.o
 obj-arm-y += z2.o
 obj-arm-y += musicpal.o bitbang_i2c.o marvell_88w8618_audio.o
@@ -376,7 +372,6 @@ obj-m68k-y += m68k-semi.o dummy_m68k.o
 obj-s390x-y = s390-virtio-bus.o s390-virtio.o
 
 obj-alpha-y = mc146818rtc.o
-obj-alpha-y += vga.o cirrus_vga.o
 obj-alpha-y += alpha_pci.o alpha_dp264.o alpha_typhoon.o
 
 obj-xtensa-y += xtensa_pic.o
diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak
index bd1dd95..501dd41 100644
--- a/default-configs/alpha-softmmu.mak
+++ b/default-configs/alpha-softmmu.mak
@@ -4,7 +4,9 @@ include pci.mak
 CONFIG_SERIAL=y
 CONFIG_I8254=y
 CONFIG_PCKBD=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_IDE_CORE=y
 CONFIG_IDE_QDEV=y
 CONFIG_VMWARE_VGA=y
diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
index 8d1174f1..e542b4f 100644
--- a/default-configs/arm-softmmu.mak
+++ b/default-configs/arm-softmmu.mak
@@ -2,6 +2,7 @@
 
 include pci.mak
 CONFIG_GDBSTUB_XML=y
+CONFIG_VGA=y
 CONFIG_ISA_MMIO=y
 CONFIG_NAND=y
 CONFIG_ECC=y
diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak
index e67ebb3..662348e 100644
--- a/default-configs/i386-softmmu.mak
+++ b/default-configs/i386-softmmu.mak
@@ -1,8 +1,10 @@
 # Default configuration for i386-softmmu
 
 include pci.mak
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_VMMOUSE=y
 CONFIG_SERIAL=y
diff --git a/default-configs/mips-softmmu.mak b/default-configs/mips-softmmu.mak
index 94a3486..308d04a 100644
--- a/default-configs/mips-softmmu.mak
+++ b/default-configs/mips-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/mips64-softmmu.mak b/default-configs/mips64-softmmu.mak
index b5d3108..f1b92da 100644
--- a/default-configs/mips64-softmmu.mak
+++ b/default-configs/mips64-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/mips64el-softmmu.mak b/default-configs/mips64el-softmmu.mak
index 2831f44..567396c 100644
--- a/default-configs/mips64el-softmmu.mak
+++ b/default-configs/mips64el-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/mipsel-softmmu.mak b/default-configs/mipsel-softmmu.mak
index 14c949d..a8e421b 100644
--- a/default-configs/mipsel-softmmu.mak
+++ b/default-configs/mipsel-softmmu.mak
@@ -3,9 +3,11 @@
 include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_ESP=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
 CONFIG_VGA_ISA_MM=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak
index c85cdce..3277291 100644
--- a/default-configs/ppc-softmmu.mak
+++ b/default-configs/ppc-softmmu.mak
@@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
 CONFIG_ISA_MMIO=y
 CONFIG_ESCC=y
 CONFIG_M48T59=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_SERIAL=y
 CONFIG_I8254=y
diff --git a/default-configs/ppc64-softmmu.mak b/default-configs/ppc64-softmmu.mak
index 8874115..f490368 100644
--- a/default-configs/ppc64-softmmu.mak
+++ b/default-configs/ppc64-softmmu.mak
@@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
 CONFIG_ISA_MMIO=y
 CONFIG_ESCC=y
 CONFIG_M48T59=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_SERIAL=y
 CONFIG_I8254=y
diff --git a/default-configs/ppcemb-softmmu.mak b/default-configs/ppcemb-softmmu.mak
index 5db7205..829f462 100644
--- a/default-configs/ppcemb-softmmu.mak
+++ b/default-configs/ppcemb-softmmu.mak
@@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
 CONFIG_ISA_MMIO=y
 CONFIG_ESCC=y
 CONFIG_M48T59=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_SERIAL=y
 CONFIG_I8254=y
diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak
index d8f17e7..c9a36c1 100644
--- a/default-configs/sparc64-softmmu.mak
+++ b/default-configs/sparc64-softmmu.mak
@@ -4,7 +4,9 @@ include pci.mak
 CONFIG_ISA_MMIO=y
 CONFIG_M48T59=y
 CONFIG_PTIMER=y
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_SERIAL=y
 CONFIG_PARALLEL=y
 CONFIG_PCKBD=y
diff --git a/default-configs/x86_64-softmmu.mak b/default-configs/x86_64-softmmu.mak
index b75757e..b445be2 100644
--- a/default-configs/x86_64-softmmu.mak
+++ b/default-configs/x86_64-softmmu.mak
@@ -1,8 +1,10 @@
 # Default configuration for x86_64-softmmu
 
 include pci.mak
+CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_ISA=y
+CONFIG_VGA_CIRRUS=y
 CONFIG_VMWARE_VGA=y
 CONFIG_VMMOUSE=y
 CONFIG_SERIAL=y
diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c
index 4a7de84..a031079 100644
--- a/hw/cirrus_vga.c
+++ b/hw/cirrus_vga.c
@@ -250,6 +250,11 @@ typedef struct PCICirrusVGAState {
     CirrusVGAState cirrus_vga;
 } PCICirrusVGAState;
 
+typedef struct ISACirrusVGAState {
+    ISADevice dev;
+    CirrusVGAState cirrus_vga;
+} ISACirrusVGAState;
+
 static uint8_t rop_to_index[256];
 
 /***************************************
@@ -2879,23 +2884,35 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci,
  *
  ***************************************/
 
-DeviceState *isa_cirrus_vga_init(MemoryRegion *system_memory)
+static int vga_initfn(ISADevice *dev)
 {
-    CirrusVGAState *s;
-
-    s = g_malloc0(sizeof(CirrusVGAState));
-
-    vga_common_init(&s->vga, VGA_RAM_SIZE);
-    cirrus_init_common(s, CIRRUS_ID_CLGD5430, 0, system_memory);
-    s->vga.ds = graphic_console_init(s->vga.update, s->vga.invalidate,
-                                     s->vga.screen_dump, s->vga.text_update,
-                                     &s->vga);
-    vmstate_register(NULL, 0, &vmstate_cirrus_vga, s);
+    ISACirrusVGAState *d = DO_UPCAST(ISACirrusVGAState, dev, dev);
+    VGACommonState *s = &d->cirrus_vga.vga;
+
+    vga_common_init(s, VGA_RAM_SIZE);
+    cirrus_init_common(&d->cirrus_vga, CIRRUS_ID_CLGD5430, 0,
+                       isa_address_space(dev));
+    s->ds = graphic_console_init(s->update, s->invalidate,
+                                 s->screen_dump, s->text_update,
+                                 s);
     rom_add_vga(VGABIOS_CIRRUS_FILENAME);
     /* XXX ISA-LFB support */
     /* FIXME not qdev yet */
-    return NULL;
+    return 0;
+}
+
+static ISADeviceInfo isa_cirrus_vga_info = {
+    .qdev.name     = "isa-cirrus-vga",
+    .qdev.size     = sizeof(ISACirrusVGAState),
+    .qdev.vmsd     = &vmstate_cirrus_vga,
+    .init          = vga_initfn,
+};
+
+static void isa_cirrus_vga_register(void)
+{
+    isa_qdev_register(&isa_cirrus_vga_info);
 }
+device_init(isa_cirrus_vga_register)
 
 /***************************************
  *
diff --git a/hw/pc.c b/hw/pc.c
index 8cb78d9..b1fd4b0 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -1080,7 +1080,7 @@ DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus)
         if (pci_bus) {
             dev = pci_cirrus_vga_init(pci_bus);
         } else {
-            dev = isa_cirrus_vga_init(get_system_memory());
+            dev = &isa_create_simple(isa_bus, "isa-cirrus-vga")->qdev;
         }
     } else if (vmsvga_enabled) {
         if (pci_bus) {
diff --git a/hw/pc.h b/hw/pc.h
index 13e41f1..58a7ea9 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -226,7 +226,6 @@ int isa_vga_mm_init(target_phys_addr_t vram_base,
 
 /* cirrus_vga.c */
 DeviceState *pci_cirrus_vga_init(PCIBus *bus);
-DeviceState *isa_cirrus_vga_init(MemoryRegion *address_space);
 
 /* ne2000.c */
 static inline bool isa_ne2000_init(ISABus *bus, int base, int irq, NICInfo *nd)
-- 
1.7.2.5


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] vga: make Cirrus ISA device optional
  2012-01-08 21:11 [Qemu-devel] [PATCH 3/4] vga: make Cirrus ISA device optional Blue Swirl
@ 2012-01-13 20:09 ` Jan Kiszka
  2012-01-13 22:16   ` Andreas Färber
  0 siblings, 1 reply; 4+ messages in thread
From: Jan Kiszka @ 2012-01-13 20:09 UTC (permalink / raw)
  To: Blue Swirl; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 12194 bytes --]

This actually also converts it to a proper ISADevice - a value of its own.

On 2012-01-08 22:11, Blue Swirl wrote:
> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
> ---
>  Makefile.target                      |   13 +++-------
>  default-configs/alpha-softmmu.mak    |    2 +
>  default-configs/arm-softmmu.mak      |    1 +
>  default-configs/i386-softmmu.mak     |    2 +
>  default-configs/mips-softmmu.mak     |    2 +
>  default-configs/mips64-softmmu.mak   |    2 +
>  default-configs/mips64el-softmmu.mak |    2 +
>  default-configs/mipsel-softmmu.mak   |    2 +
>  default-configs/ppc-softmmu.mak      |    1 +
>  default-configs/ppc64-softmmu.mak    |    1 +
>  default-configs/ppcemb-softmmu.mak   |    1 +
>  default-configs/sparc64-softmmu.mak  |    2 +
>  default-configs/x86_64-softmmu.mak   |    2 +
>  hw/cirrus_vga.c                      |   41 ++++++++++++++++++++++++----------
>  hw/pc.c                              |    2 +-
>  hw/pc.h                              |    1 -
>  16 files changed, 54 insertions(+), 23 deletions(-)
> 
> diff --git a/Makefile.target b/Makefile.target
> index ed4c3bf..03fe7b0 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -202,6 +202,8 @@ obj-$(CONFIG_VHOST_NET) += vhost.o
>  obj-$(CONFIG_REALLY_VIRTFS) += 9pfs/virtio-9p-device.o
>  obj-$(CONFIG_KVM) += kvm.o kvm-all.o
>  obj-$(CONFIG_NO_KVM) += kvm-stub.o
> +obj-$(CONFIG_VGA) += vga.o
> +obj-$(CONFIG_VGA_CIRRUS) += cirrus_vga.o
>  obj-y += memory.o savevm.o
>  LIBS+=-lz
> 
> @@ -227,9 +229,8 @@ endif
>  obj-$(CONFIG_IVSHMEM) += ivshmem.o
> 
>  # Hardware support
> -obj-i386-y += vga.o
>  obj-i386-y += mc146818rtc.o pc.o
> -obj-i386-y += cirrus_vga.o sga.o apic.o ioapic.o piix_pci.o
> +obj-i386-y += sga.o apic.o ioapic.o piix_pci.o
>  obj-i386-y += vmport.o
>  obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
>  obj-i386-y += debugcon.o multiboot.o
> @@ -239,7 +240,6 @@ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
> 
>  # shared objects
>  obj-ppc-y = ppc.o ppc_booke.o
> -obj-ppc-y += vga.o
>  # PREP target
>  obj-ppc-y += mc146818rtc.o
>  obj-ppc-y += ppc_prep.o
> @@ -293,10 +293,8 @@ obj-lm32-y += framebuffer.o
> 
>  obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
>  obj-mips-y += mips_addr.o mips_timer.o mips_int.o
> -obj-mips-y += vga.o
>  obj-mips-y += jazz_led.o
>  obj-mips-y += gt64xxx.o mc146818rtc.o
> -obj-mips-y += cirrus_vga.o
>  obj-mips-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o
> 
>  obj-microblaze-y = petalogix_s3adsp1800_mmu.o
> @@ -326,9 +324,7 @@ obj-cris-y += etraxfs_ser.o
> 
>  ifeq ($(TARGET_ARCH), sparc64)
>  obj-sparc-y = sun4u.o apb_pci.o
> -obj-sparc-y += vga.o
>  obj-sparc-y += mc146818rtc.o
> -obj-sparc-y += cirrus_vga.o
>  else
>  obj-sparc-y = sun4m.o lance.o tcx.o sun4m_iommu.o slavio_intctl.o
>  obj-sparc-y += slavio_timer.o slavio_misc.o sparc32_dma.o
> @@ -356,7 +352,7 @@ obj-arm-y += omap1.o omap_lcdc.o omap_dma.o
> omap_clk.o omap_mmc.o omap_i2c.o \
>  obj-arm-y += omap2.o omap_dss.o soc_dma.o omap_gptimer.o omap_synctimer.o \
>  		omap_gpmc.o omap_sdrc.o omap_spi.o omap_tap.o omap_l4.o
>  obj-arm-y += omap_sx1.o palm.o tsc210x.o
> -obj-arm-y += nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
> +obj-arm-y += nseries.o blizzard.o onenand.o cbus.o tusb6010.o usb-musb.o
>  obj-arm-y += mst_fpga.o mainstone.o
>  obj-arm-y += z2.o
>  obj-arm-y += musicpal.o bitbang_i2c.o marvell_88w8618_audio.o
> @@ -376,7 +372,6 @@ obj-m68k-y += m68k-semi.o dummy_m68k.o
>  obj-s390x-y = s390-virtio-bus.o s390-virtio.o
> 
>  obj-alpha-y = mc146818rtc.o
> -obj-alpha-y += vga.o cirrus_vga.o
>  obj-alpha-y += alpha_pci.o alpha_dp264.o alpha_typhoon.o
> 
>  obj-xtensa-y += xtensa_pic.o
> diff --git a/default-configs/alpha-softmmu.mak
> b/default-configs/alpha-softmmu.mak
> index bd1dd95..501dd41 100644
> --- a/default-configs/alpha-softmmu.mak
> +++ b/default-configs/alpha-softmmu.mak
> @@ -4,7 +4,9 @@ include pci.mak
>  CONFIG_SERIAL=y
>  CONFIG_I8254=y
>  CONFIG_PCKBD=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_IDE_CORE=y
>  CONFIG_IDE_QDEV=y
>  CONFIG_VMWARE_VGA=y
> diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
> index 8d1174f1..e542b4f 100644
> --- a/default-configs/arm-softmmu.mak
> +++ b/default-configs/arm-softmmu.mak
> @@ -2,6 +2,7 @@
> 
>  include pci.mak
>  CONFIG_GDBSTUB_XML=y
> +CONFIG_VGA=y
>  CONFIG_ISA_MMIO=y
>  CONFIG_NAND=y
>  CONFIG_ECC=y
> diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak
> index e67ebb3..662348e 100644
> --- a/default-configs/i386-softmmu.mak
> +++ b/default-configs/i386-softmmu.mak
> @@ -1,8 +1,10 @@
>  # Default configuration for i386-softmmu
> 
>  include pci.mak
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_VGA_ISA=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_VMMOUSE=y
>  CONFIG_SERIAL=y
> diff --git a/default-configs/mips-softmmu.mak b/default-configs/mips-softmmu.mak
> index 94a3486..308d04a 100644
> --- a/default-configs/mips-softmmu.mak
> +++ b/default-configs/mips-softmmu.mak
> @@ -3,9 +3,11 @@
>  include pci.mak
>  CONFIG_ISA_MMIO=y
>  CONFIG_ESP=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_VGA_ISA=y
>  CONFIG_VGA_ISA_MM=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_SERIAL=y
>  CONFIG_PARALLEL=y
> diff --git a/default-configs/mips64-softmmu.mak
> b/default-configs/mips64-softmmu.mak
> index b5d3108..f1b92da 100644
> --- a/default-configs/mips64-softmmu.mak
> +++ b/default-configs/mips64-softmmu.mak
> @@ -3,9 +3,11 @@
>  include pci.mak
>  CONFIG_ISA_MMIO=y
>  CONFIG_ESP=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_VGA_ISA=y
>  CONFIG_VGA_ISA_MM=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_SERIAL=y
>  CONFIG_PARALLEL=y
> diff --git a/default-configs/mips64el-softmmu.mak
> b/default-configs/mips64el-softmmu.mak
> index 2831f44..567396c 100644
> --- a/default-configs/mips64el-softmmu.mak
> +++ b/default-configs/mips64el-softmmu.mak
> @@ -3,9 +3,11 @@
>  include pci.mak
>  CONFIG_ISA_MMIO=y
>  CONFIG_ESP=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_VGA_ISA=y
>  CONFIG_VGA_ISA_MM=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_SERIAL=y
>  CONFIG_PARALLEL=y
> diff --git a/default-configs/mipsel-softmmu.mak
> b/default-configs/mipsel-softmmu.mak
> index 14c949d..a8e421b 100644
> --- a/default-configs/mipsel-softmmu.mak
> +++ b/default-configs/mipsel-softmmu.mak
> @@ -3,9 +3,11 @@
>  include pci.mak
>  CONFIG_ISA_MMIO=y
>  CONFIG_ESP=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_VGA_ISA=y
>  CONFIG_VGA_ISA_MM=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_SERIAL=y
>  CONFIG_PARALLEL=y
> diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak
> index c85cdce..3277291 100644
> --- a/default-configs/ppc-softmmu.mak
> +++ b/default-configs/ppc-softmmu.mak
> @@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
>  CONFIG_ISA_MMIO=y
>  CONFIG_ESCC=y
>  CONFIG_M48T59=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_SERIAL=y
>  CONFIG_I8254=y
> diff --git a/default-configs/ppc64-softmmu.mak
> b/default-configs/ppc64-softmmu.mak
> index 8874115..f490368 100644
> --- a/default-configs/ppc64-softmmu.mak
> +++ b/default-configs/ppc64-softmmu.mak
> @@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
>  CONFIG_ISA_MMIO=y
>  CONFIG_ESCC=y
>  CONFIG_M48T59=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_SERIAL=y
>  CONFIG_I8254=y
> diff --git a/default-configs/ppcemb-softmmu.mak
> b/default-configs/ppcemb-softmmu.mak
> index 5db7205..829f462 100644
> --- a/default-configs/ppcemb-softmmu.mak
> +++ b/default-configs/ppcemb-softmmu.mak
> @@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y
>  CONFIG_ISA_MMIO=y
>  CONFIG_ESCC=y
>  CONFIG_M48T59=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_SERIAL=y
>  CONFIG_I8254=y
> diff --git a/default-configs/sparc64-softmmu.mak
> b/default-configs/sparc64-softmmu.mak
> index d8f17e7..c9a36c1 100644
> --- a/default-configs/sparc64-softmmu.mak
> +++ b/default-configs/sparc64-softmmu.mak
> @@ -4,7 +4,9 @@ include pci.mak
>  CONFIG_ISA_MMIO=y
>  CONFIG_M48T59=y
>  CONFIG_PTIMER=y
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_SERIAL=y
>  CONFIG_PARALLEL=y
>  CONFIG_PCKBD=y
> diff --git a/default-configs/x86_64-softmmu.mak
> b/default-configs/x86_64-softmmu.mak
> index b75757e..b445be2 100644
> --- a/default-configs/x86_64-softmmu.mak
> +++ b/default-configs/x86_64-softmmu.mak
> @@ -1,8 +1,10 @@
>  # Default configuration for x86_64-softmmu
> 
>  include pci.mak
> +CONFIG_VGA=y
>  CONFIG_VGA_PCI=y
>  CONFIG_VGA_ISA=y
> +CONFIG_VGA_CIRRUS=y
>  CONFIG_VMWARE_VGA=y
>  CONFIG_VMMOUSE=y
>  CONFIG_SERIAL=y
> diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c
> index 4a7de84..a031079 100644
> --- a/hw/cirrus_vga.c
> +++ b/hw/cirrus_vga.c
> @@ -250,6 +250,11 @@ typedef struct PCICirrusVGAState {
>      CirrusVGAState cirrus_vga;
>  } PCICirrusVGAState;
> 
> +typedef struct ISACirrusVGAState {
> +    ISADevice dev;
> +    CirrusVGAState cirrus_vga;
> +} ISACirrusVGAState;
> +
>  static uint8_t rop_to_index[256];
> 
>  /***************************************
> @@ -2879,23 +2884,35 @@ static void cirrus_init_common(CirrusVGAState
> * s, int device_id, int is_pci,
>   *
>   ***************************************/
> 
> -DeviceState *isa_cirrus_vga_init(MemoryRegion *system_memory)
> +static int vga_initfn(ISADevice *dev)
>  {
> -    CirrusVGAState *s;
> -
> -    s = g_malloc0(sizeof(CirrusVGAState));
> -
> -    vga_common_init(&s->vga, VGA_RAM_SIZE);
> -    cirrus_init_common(s, CIRRUS_ID_CLGD5430, 0, system_memory);
> -    s->vga.ds = graphic_console_init(s->vga.update, s->vga.invalidate,
> -                                     s->vga.screen_dump, s->vga.text_update,
> -                                     &s->vga);
> -    vmstate_register(NULL, 0, &vmstate_cirrus_vga, s);
> +    ISACirrusVGAState *d = DO_UPCAST(ISACirrusVGAState, dev, dev);
> +    VGACommonState *s = &d->cirrus_vga.vga;
> +
> +    vga_common_init(s, VGA_RAM_SIZE);
> +    cirrus_init_common(&d->cirrus_vga, CIRRUS_ID_CLGD5430, 0,
> +                       isa_address_space(dev));
> +    s->ds = graphic_console_init(s->update, s->invalidate,
> +                                 s->screen_dump, s->text_update,
> +                                 s);
>      rom_add_vga(VGABIOS_CIRRUS_FILENAME);
>      /* XXX ISA-LFB support */
>      /* FIXME not qdev yet */
> -    return NULL;
> +    return 0;
> +}
> +
> +static ISADeviceInfo isa_cirrus_vga_info = {
> +    .qdev.name     = "isa-cirrus-vga",
> +    .qdev.size     = sizeof(ISACirrusVGAState),
> +    .qdev.vmsd     = &vmstate_cirrus_vga,
> +    .init          = vga_initfn,
> +};
> +
> +static void isa_cirrus_vga_register(void)
> +{
> +    isa_qdev_register(&isa_cirrus_vga_info);
>  }
> +device_init(isa_cirrus_vga_register)
> 
>  /***************************************
>   *
> diff --git a/hw/pc.c b/hw/pc.c
> index 8cb78d9..b1fd4b0 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -1080,7 +1080,7 @@ DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus)
>          if (pci_bus) {
>              dev = pci_cirrus_vga_init(pci_bus);
>          } else {
> -            dev = isa_cirrus_vga_init(get_system_memory());
> +            dev = &isa_create_simple(isa_bus, "isa-cirrus-vga")->qdev;
>          }
>      } else if (vmsvga_enabled) {
>          if (pci_bus) {
> diff --git a/hw/pc.h b/hw/pc.h
> index 13e41f1..58a7ea9 100644
> --- a/hw/pc.h
> +++ b/hw/pc.h
> @@ -226,7 +226,6 @@ int isa_vga_mm_init(target_phys_addr_t vram_base,
> 
>  /* cirrus_vga.c */
>  DeviceState *pci_cirrus_vga_init(PCIBus *bus);
> -DeviceState *isa_cirrus_vga_init(MemoryRegion *address_space);
> 
>  /* ne2000.c */
>  static inline bool isa_ne2000_init(ISABus *bus, int base, int irq, NICInfo *nd)


Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] vga: make Cirrus ISA device optional
  2012-01-13 20:09 ` Jan Kiszka
@ 2012-01-13 22:16   ` Andreas Färber
  2012-01-21 18:49     ` Blue Swirl
  0 siblings, 1 reply; 4+ messages in thread
From: Andreas Färber @ 2012-01-13 22:16 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: Blue Swirl, qemu-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 13.01.2012 21:09, schrieb Jan Kiszka:
> This actually also converts it to a proper ISADevice - a value of 
> its own.

Could this by any chance help with eliminating the global
isa_mem_base? Don't see that in this patch.

Andreas

$ grep -r isa_mem_base .
./hw/ppc_prep.c:    isa_mem_base = 0xc0000000;
./hw/bonito.c:    isa_mem_base = s->bonito_pciio_start;
./hw/vga.c:        base += isa_mem_base;
./hw/vga.c:                                        isa_mem_base +
0x000a0000,
./hw/isa-bus.c:target_phys_addr_t isa_mem_base = 0;
./hw/cirrus_vga.c:                                        isa_mem_base
+ 0x000a0000,
./hw/isa.h:extern target_phys_addr_t isa_mem_base;
./hw/mips_jazz.c:    isa_mem_base = 0x11000000;
./hw/mips_r4k.c:    isa_mem_base = 0x10000000;
./hw/vga-isa.c:                                        isa_mem_base +
0x000a0000,
./hw/gt64xxx.c:      isa_mem_base = s->PCI0IO_start;
./hw/gt64xxx.c:    isa_mem_base = 0x10000000;

- -- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)

iQIcBAEBAgAGBQJPEK1HAAoJEPou0S0+fgE/9bYQAIMXlirZrps7KCArjbTiZHea
azvsPvLcNDPUbhN7GL4F26ahJV5cRnkHUD/pc6yQdil5sEK2TsPzncfPOQxhx0O0
FIgaaQhgYSYo9vDLJBQ5yKHmy2bv1sYTtUdvVszVKcyMzOPo8rLPwNr57PO8WmR8
fUzAjoL/bhA7w+j/N09phSE1xOTdxwye4fPmrJ7+1Ii+8muKa6mpvtHYM6stFNa4
DIM2x9lRx9qrdPJdRmBUkwTd5CkKk37jisdNUDQjFl6zRGBlHr3P/78m7MrB9I2Q
fBzcSjr6tcUS7TZWpkwkFlmVctwNHU8RFb9a6bMtiWs3+L6r5mDYNIQ0fV0oY7J7
UNNtoEo7B46WKx4xxG8bGa+Bs4V8U+v487XTvZpWZ1Xuap2y/fALE1SXLtdWVBGE
oE8mfCwtxh6c1c7w+l18LYCaSliGaZGj37cwdCsF0yy5LRYC6ypcMR6+INJwCGDV
CFbsxZdg08Ht1XGjQsNbwtT5LAUF4N1gGwjDScFB7I0Mx3nCER5wJCvd2GdKo9Km
nRzl4yyTdTAWT3GTyccc+XZ7I/TJdGT4GOE6vnjL5wn9hl5O+DHC5eCrCleKvZ97
AdJWFtocudZzlnEKtMsNV8EfrKWckejLoRcSRFgXVsUZkAkOOPSuWyQ4sAxcTK96
XqidOb4932mcJZZjjyXx
=kcX1
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] vga: make Cirrus ISA device optional
  2012-01-13 22:16   ` Andreas Färber
@ 2012-01-21 18:49     ` Blue Swirl
  0 siblings, 0 replies; 4+ messages in thread
From: Blue Swirl @ 2012-01-21 18:49 UTC (permalink / raw)
  To: Andreas Färber; +Cc: Jan Kiszka, qemu-devel

On Fri, Jan 13, 2012 at 22:16, Andreas Färber <afaerber@suse.de> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Am 13.01.2012 21:09, schrieb Jan Kiszka:
>> This actually also converts it to a proper ISADevice - a value of
>> its own.
>
> Could this by any chance help with eliminating the global
> isa_mem_base? Don't see that in this patch.

Not really. For that, memory API should be used to instead of a global variable.

> Andreas
>
> $ grep -r isa_mem_base .
> ./hw/ppc_prep.c:    isa_mem_base = 0xc0000000;
> ./hw/bonito.c:    isa_mem_base = s->bonito_pciio_start;
> ./hw/vga.c:        base += isa_mem_base;
> ./hw/vga.c:                                        isa_mem_base +
> 0x000a0000,
> ./hw/isa-bus.c:target_phys_addr_t isa_mem_base = 0;
> ./hw/cirrus_vga.c:                                        isa_mem_base
> + 0x000a0000,
> ./hw/isa.h:extern target_phys_addr_t isa_mem_base;
> ./hw/mips_jazz.c:    isa_mem_base = 0x11000000;
> ./hw/mips_r4k.c:    isa_mem_base = 0x10000000;
> ./hw/vga-isa.c:                                        isa_mem_base +
> 0x000a0000,
> ./hw/gt64xxx.c:      isa_mem_base = s->PCI0IO_start;
> ./hw/gt64xxx.c:    isa_mem_base = 0x10000000;
>
> - --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.18 (GNU/Linux)
>
> iQIcBAEBAgAGBQJPEK1HAAoJEPou0S0+fgE/9bYQAIMXlirZrps7KCArjbTiZHea
> azvsPvLcNDPUbhN7GL4F26ahJV5cRnkHUD/pc6yQdil5sEK2TsPzncfPOQxhx0O0
> FIgaaQhgYSYo9vDLJBQ5yKHmy2bv1sYTtUdvVszVKcyMzOPo8rLPwNr57PO8WmR8
> fUzAjoL/bhA7w+j/N09phSE1xOTdxwye4fPmrJ7+1Ii+8muKa6mpvtHYM6stFNa4
> DIM2x9lRx9qrdPJdRmBUkwTd5CkKk37jisdNUDQjFl6zRGBlHr3P/78m7MrB9I2Q
> fBzcSjr6tcUS7TZWpkwkFlmVctwNHU8RFb9a6bMtiWs3+L6r5mDYNIQ0fV0oY7J7
> UNNtoEo7B46WKx4xxG8bGa+Bs4V8U+v487XTvZpWZ1Xuap2y/fALE1SXLtdWVBGE
> oE8mfCwtxh6c1c7w+l18LYCaSliGaZGj37cwdCsF0yy5LRYC6ypcMR6+INJwCGDV
> CFbsxZdg08Ht1XGjQsNbwtT5LAUF4N1gGwjDScFB7I0Mx3nCER5wJCvd2GdKo9Km
> nRzl4yyTdTAWT3GTyccc+XZ7I/TJdGT4GOE6vnjL5wn9hl5O+DHC5eCrCleKvZ97
> AdJWFtocudZzlnEKtMsNV8EfrKWckejLoRcSRFgXVsUZkAkOOPSuWyQ4sAxcTK96
> XqidOb4932mcJZZjjyXx
> =kcX1
> -----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-01-21 18:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-08 21:11 [Qemu-devel] [PATCH 3/4] vga: make Cirrus ISA device optional Blue Swirl
2012-01-13 20:09 ` Jan Kiszka
2012-01-13 22:16   ` Andreas Färber
2012-01-21 18:49     ` Blue Swirl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).