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>
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
=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
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) {
break;
case LIBXL_VGA_INTERFACE_TYPE_CIRRUS:
break;
- case LIBXL_VGA_INTERFACE_TYPE_QXL:
- break;
}
if (b_info->u.hvm.boot) {
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) {
libxl_vga_interface_type = Enumeration("vga_interface_type", [
(1, "CIRRUS"),
(2, "STD"),
- (3, "QXL"),
], init_val = 0)
#
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);