All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v9] tools/libxl: Add qxl vga interface support for upstream qemu
@ 2013-02-11 10:58 fantonifabio
  2013-02-15 12:27 ` Stefano Stabellini
  0 siblings, 1 reply; 8+ messages in thread
From: fantonifabio @ 2013-02-11 10:58 UTC (permalink / raw)
  To: xen-devel; +Cc: Zhou Peng, Fabio Fantoni, Ian.Campbell, Stefano.Stabellini

From: Fabio Fantoni <fabio.fantoni@heliman.it>

Usage:
  vga="qxl"

Changes from v8:
- vga=qxl instead of qxl=1 to use it.
- Show an error and exit if vga="qxl" without qemu upstream.
- Other small improvements.

Required patches:
- Improve videoram setting v5
- Added vga parameter for hvm domUs

Signed-off-by: Fabio Fantoni <fabio.fantoni@heliman.it>
Signed-off-by: Zhou Peng <zpengxen@gmail.com>
---
 docs/man/xl.cfg.pod.5       |   10 +++++++++-
 tools/libxl/libxl_create.c  |   17 +++++++++++++++++
 tools/libxl/libxl_dm.c      |   13 +++++++++++++
 tools/libxl/libxl_types.idl |    1 +
 tools/libxl/xl_cmdimpl.c    |    3 +++
 5 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
index 9862842..a3b3645 100644
--- a/docs/man/xl.cfg.pod.5
+++ b/docs/man/xl.cfg.pod.5
@@ -984,6 +984,9 @@ 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
@@ -995,9 +998,14 @@ This option is deprecated, use vga="stdvga" instead.
 
 =item B<vga="STRING">
 
-Selects the emulated video card (stdvga|cirrus).
+Selects the emulated video card (stdvga|cirrus|qxl).
 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
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index cf545ef..67b5e6e 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -197,6 +197,23 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
     case LIBXL_DOMAIN_TYPE_HVM:
         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->video_memkb == LIBXL_MEMKB_DEFAULT)
             b_info->video_memkb = 8 * 1024;
         else if (b_info->video_memkb < 8192){
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index a2c99bd..59fc86a 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -181,6 +181,8 @@ 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) {
@@ -440,6 +442,17 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
                 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",
+                libxl__sprintf(gc, "qxl-vga.vram_size_mb=%lu",
+                (b_info->video_memkb/2/1024)), "-global",
+                libxl__sprintf(gc, "qxl-vga.ram_size_mb=%lu",
+                (b_info->video_memkb/2/1024)), NULL);
+            }
+            break;
         }
 
         if (b_info->u.hvm.boot) {
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index acc4bc9..3f90f12 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -130,6 +130,7 @@ libxl_shutdown_reason = Enumeration("shutdown_reason", [
 libxl_vga_interface_type = Enumeration("vga_interface_type", [
     (1, "CIRRUS"),
     (2, "STD"),
+    (3, "QXL"),
     ], init_val = 0)
 
 #
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index f9101ba..b20c185 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1476,6 +1476,9 @@ skip_vfb:
             } 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);
-- 
1.7.9.5

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

end of thread, other threads:[~2013-02-20 15:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-11 10:58 [PATCH v9] tools/libxl: Add qxl vga interface support for upstream qemu fantonifabio
2013-02-15 12:27 ` Stefano Stabellini
2013-02-15 13:46   ` Ian Campbell
2013-02-16 12:40     ` Fabio Fantoni
2013-02-16 13:20       ` Ian Campbell
2013-02-19 18:26         ` Ian Jackson
2013-02-20 15:46           ` [PATCH v11] tools/libxl: Add qxl vga interface support for upstream qemu [and 1 more messages] Ian Jackson
2013-02-20 10:59         ` [PATCH v11] tools/libxl: Add qxl vga interface support for upstream qemu fantonifabio

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.