qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 2/2] warn about two vga cards


From: Gerd Hoffmann
Subject: [Qemu-devel] [PATCH v2 2/2] warn about two vga cards
Date: Mon, 2 Jul 2018 18:33:45 +0200

Two vga cards will try to register for the same legacy (isa) ioports.
Due to this conflict only one of the two cards will work correctly in
vga mode.

Print a warning message in that case.  Also try registering the ports
only once, so the first vga added to the system will work properly.

Signed-off-by: Gerd Hoffmann <address@hidden>
---
 hw/display/vga.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/hw/display/vga.c b/hw/display/vga.c
index c82e6d240a..e811571624 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -2273,6 +2273,7 @@ MemoryRegion *vga_init_io(VGACommonState *s, Object *obj,
 void vga_init(VGACommonState *s, Object *obj, MemoryRegion *address_space,
               MemoryRegion *address_space_io, bool init_vga_ports)
 {
+    static bool vgaports_registered;
     MemoryRegion *vga_io_memory;
     const MemoryRegionPortio *vga_ports, *vbe_ports;
 
@@ -2289,9 +2290,14 @@ void vga_init(VGACommonState *s, Object *obj, 
MemoryRegion *address_space,
                                         1);
     memory_region_set_coalescing(vga_io_memory);
     if (init_vga_ports) {
-        portio_list_init(&s->vga_port_list, obj, vga_ports, s, "vga");
-        portio_list_set_flush_coalesced(&s->vga_port_list);
-        portio_list_add(&s->vga_port_list, address_space_io, 0x3b0);
+        if (vgaports_registered) {
+            warn_report("multiple vga cards may not work as expected");
+        } else {
+            portio_list_init(&s->vga_port_list, obj, vga_ports, s, "vga");
+            portio_list_set_flush_coalesced(&s->vga_port_list);
+            portio_list_add(&s->vga_port_list, address_space_io, 0x3b0);
+            vgaports_registered = true;
+        }
     }
     if (vbe_ports) {
         portio_list_init(&s->vbe_port_list, obj, vbe_ports, s, "vbe");
-- 
2.9.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]