qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 1/2] Add a generic vga device type for that spec


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 1/2] Add a generic vga device type for that specified by '-device'
Date: Fri, 28 Feb 2014 14:03:21 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

Il 28/02/2014 13:45, Mark Wu ha scritto:
Some machine (like ppc) initialization code determines if it has vga
configured according to vga_interface_type. In the original code,
vga_interface_type is evaluated to VGA_NONE even if a vga is added
by '-device VGA'. It causes the machine not aware of the graphics
device configured. This patch adds a new vga device type to indicate
that it has a vga device, but the machine code doesn't need to care
about its initialization.

Can you use memory_region_present and look (for example) for a device that owns I/O port 0x3d4?

Paolo

Signed-off-by: Mark Wu <address@hidden>
---
 include/sysemu/sysemu.h | 2 +-
 vl.c                    | 8 +++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 495dae8..a21205f 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -103,7 +103,7 @@ typedef enum DisplayType
 extern int autostart;

 typedef enum {
-    VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL,
+    VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL, VGA_DEVICE
 } VGAInterfaceType;

 extern int vga_interface_type;
diff --git a/vl.c b/vl.c
index 1d27b34..06a4253 100644
--- a/vl.c
+++ b/vl.c
@@ -226,6 +226,7 @@ static int default_floppy = 1;
 static int default_cdrom = 1;
 static int default_sdcard = 1;
 static int default_vga = 1;
+static int has_defaults = 1;

 static struct {
     const char *driver;
@@ -2066,7 +2067,11 @@ static void select_vgahw (const char *p)
             fprintf(stderr, "Error: QXL VGA not available\n");
             exit(0);
         }
-    } else if (!strstart(p, "none", &opts)) {
+    } else if (strstart(p, "none", &opts)) {
+        if (!has_defaults && !default_vga) {
+            vga_interface_type = VGA_DEVICE;
+        }
+    } else {
     invalid_vga:
         fprintf(stderr, "Unknown vga type: %s\n", p);
         exit(1);
@@ -3672,6 +3677,7 @@ int main(int argc, char **argv, char **envp)
                 default_cdrom = 0;
                 default_sdcard = 0;
                 default_vga = 0;
+                has_defaults = 0;
                 break;
             case QEMU_OPTION_xen_domid:
                 if (!(xen_available())) {





reply via email to

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