]> xenbits.xensource.com Git - people/iwj/xen.git/commitdiff
libxl: Remove qxl support for the 4.3 release
authorGeorge Dunlap <george.dunlap@eu.citrix.com>
Fri, 24 May 2013 15:20:59 +0000 (16:20 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Thu, 30 May 2013 08:35:34 +0000 (09:35 +0100)
The qxl drivers for Windows and Linux end up calling instructions
that cannot be used for MMIO at the moment.  Just for the 4.3 release,
remove qxl support.

This patch should be reverted as soon as the 4.4 development window opens.

The issue in question:

(XEN) emulate.c:88:d18 bad mmio size 16
(XEN) io.c:201:d18 MMIO emulation failed @ 0033:7fd2de390430: f3 0f 6f
19 41 83 e8 403

The instruction in question is "movdqu (%rcx),%xmm3".  Xen knows how
to emulate it, but unfortunately %xmm3 is 16 bytes long, and the interface
between Xen and qemu at the moment would appear to only allow MMIO accesses
of 8 bytes.

It's too late in the release cycle to find a fix or a workaround.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
docs/man/xl.cfg.pod.5
tools/libxl/libxl_create.c
tools/libxl/libxl_dm.c
tools/libxl/libxl_types.idl
tools/libxl/xl_cmdimpl.c

index 4c92721953dd4e95ebf95c34e312abcf5a937655..b7d64a6d7de06e14345b4cf59ad875e884140bec 100644 (file)
@@ -1005,9 +1005,6 @@ the amount of video ram is fixed at 4MB which is sufficient
 for 1024x768 at 32 bpp and videoram option is currently working
 only when using the upstream qemu-xen device-model.
 
-For B<qxl> vga, the default is both default and minimal 128MB.
-If B<videoram> is set less than 128MB, an error will be triggered.
-
 =item B<stdvga=BOOLEAN>
 
 Select a standard VGA card with VBE (VESA BIOS Extensions) as the
@@ -1019,14 +1016,9 @@ This option is deprecated, use vga="stdvga" instead.
 
 =item B<vga="STRING">
 
-Selects the emulated video card (stdvga|cirrus|qxl).
+Selects the emulated video card (stdvga|cirrus).
 The default is cirrus.
 
-In general, QXL should work with the Spice remote display protocol
-for acceleration, and QXL driver is necessary in guest in this case.
-QXL can also work with the VNC protocol, but it will be like a standard
-VGA without acceleration.
-
 =item B<vnc=BOOLEAN>
 
 Allow access to the display via the VNC protocol.  This enables the
index cb9c8227858a594ae57f84b809b70c34c4551853..0c32d0b1438bcf6f34787b2bde86cdee2771882b 100644 (file)
@@ -213,22 +213,6 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
         if (b_info->shadow_memkb == LIBXL_MEMKB_DEFAULT)
             b_info->shadow_memkb = 0;
 
-        if (b_info->u.hvm.vga.kind == LIBXL_VGA_INTERFACE_TYPE_QXL) {
-            if (b_info->device_model_version ==
-               LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN) {
-                if (b_info->video_memkb == LIBXL_MEMKB_DEFAULT) {
-                    b_info->video_memkb = (128 * 1024);
-                } else if (b_info->video_memkb < (128 * 1024)) {
-                    LOG(ERROR,
-                        "128 Mib videoram is the minimum for qxl default");
-                    return ERROR_INVAL;
-                }
-            } else {
-                LOG(ERROR,"qemu upstream required for qxl vga");
-                return ERROR_INVAL;
-            }
-        }
-
         if (b_info->u.hvm.vga.kind == LIBXL_VGA_INTERFACE_TYPE_STD &&
             b_info->device_model_version ==
             LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN) {
index 1e3a9f4db86e0f7ae85f8f800c0ac814b007bf64..ac1f90e53147d5815743fa37e8a3358fc18bc720 100644 (file)
@@ -191,8 +191,6 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc,
             break;
         case LIBXL_VGA_INTERFACE_TYPE_CIRRUS:
             break;
-        case LIBXL_VGA_INTERFACE_TYPE_QXL:
-            break;
         }
 
         if (b_info->u.hvm.boot) {
@@ -479,17 +477,6 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
                     libxl__sizekb_to_mb(b_info->video_memkb)), NULL);
             }
             break;
-        case LIBXL_VGA_INTERFACE_TYPE_QXL:
-            /* QXL have 2 ram regions, ram and vram */
-            flexarray_vappend(dm_args, "-vga", "qxl", NULL);
-            if (b_info->video_memkb) {
-                flexarray_vappend(dm_args, "-global",
-                    GCSPRINTF("qxl-vga.vram_size_mb=%"PRIu64,
-                    (b_info->video_memkb/2/1024)), "-global",
-                    GCSPRINTF("qxl-vga.ram_size_mb=%"PRIu64,
-                    (b_info->video_memkb/2/1024)), NULL);
-            }
-            break;
         }
 
         if (b_info->u.hvm.boot) {
index 8262cba62312d1fbd66f567a8c26a74eeee4f350..d218a2d3d116bb62758a03dcdadb934fd1f5efb7 100644 (file)
@@ -130,7 +130,6 @@ libxl_shutdown_reason = Enumeration("shutdown_reason", [
 libxl_vga_interface_type = Enumeration("vga_interface_type", [
     (1, "CIRRUS"),
     (2, "STD"),
-    (3, "QXL"),
     ], init_val = 0)
 
 #
index c5292f40f74c2c688c189e8879d9de73dde319e7..8a478ba610e6f5a6fe52b1ce2a30fa0b85cf0b54 100644 (file)
@@ -1456,8 +1456,6 @@ skip_vfb:
                 b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_STD;
             } else if (!strcmp(buf, "cirrus")) {
                 b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_CIRRUS;
-            } else if (!strcmp(buf, "qxl")) {
-                b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_QXL;
             } else {
                 fprintf(stderr, "Unknown vga \"%s\" specified\n", buf);
                 exit(1);