[Spice-commits] 5 commits - configure.ac spice/qxl_dev.h

Alon Levy alon at kemper.freedesktop.org
Sun Jul 17 04:05:23 PDT 2011


 configure.ac    |    2 +-
 spice/qxl_dev.h |   19 +++++++++++++++++--
 2 files changed, 18 insertions(+), 3 deletions(-)

New commits:
commit 2d7dde5a3fb92fa2cb1c7fcfd4dea618183c76f5
Author: Alon Levy <alevy at redhat.com>
Date:   Thu Jul 14 13:04:30 2011 +0300

    bump version to 0.8.1 for qxl_dev.h changes

diff --git a/configure.ac b/configure.ac
index 72278e9..989cb00 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ([2.57])
 
 m4_define([SPICE_MAJOR], 0)
 m4_define([SPICE_MINOR], 8)
-m4_define([SPICE_MICRO], 0)
+m4_define([SPICE_MICRO], 1)
 
 AC_INIT(spice-protocol, [SPICE_MAJOR.SPICE_MINOR.SPICE_MICRO], [], spice-protocol)
 
commit af687a1457ae09179d0861449909663270ccc14d
Author: Alon Levy <alevy at redhat.com>
Date:   Fri Jun 24 12:47:23 2011 +0200

    qxl_dev: add third revision V10
    
    The driver will check for this revision or higher to know that the device
    supports async io, the two S3 related ios, and the interrupts IO_CMD and ERROR.

diff --git a/spice/qxl_dev.h b/spice/qxl_dev.h
index 5ac2f46..5e6ce06 100644
--- a/spice/qxl_dev.h
+++ b/spice/qxl_dev.h
@@ -43,8 +43,12 @@
 
 /* 0x100-0x11f reserved for spice, 0x1ff used for unstable work */
 #define QXL_DEVICE_ID_STABLE 0x0100
-#define QXL_REVISION_STABLE_V04 0x01
-#define QXL_REVISION_STABLE_V06 0x02
+
+enum {
+    QXL_REVISION_STABLE_V04=0x01,
+    QXL_REVISION_STABLE_V06=0x02,
+    QXL_REVISION_STABLE_V10=0x03
+};
 
 #define QXL_DEVICE_ID_DEVEL 0x01ff
 #define QXL_REVISION_DEVEL 0x01
commit e80cd6b8f982aa7826441d917cab37bfca80b0a7
Author: Alon Levy <alevy at redhat.com>
Date:   Thu Jun 30 15:03:31 2011 +0200

    qxl_dev: add QXL_INTERRUPT_ERROR
    
    The interrupt is used to notify the guest driver it did an error in
    the last io operation. It can be left unhandled.

diff --git a/spice/qxl_dev.h b/spice/qxl_dev.h
index 82eb1c8..5ac2f46 100644
--- a/spice/qxl_dev.h
+++ b/spice/qxl_dev.h
@@ -223,6 +223,7 @@ SPICE_RING_DECLARE(QXLReleaseRing, uint64_t, QXL_RELEASE_RING_SIZE);
 #define QXL_INTERRUPT_DISPLAY (1 << 0)
 #define QXL_INTERRUPT_CURSOR (1 << 1)
 #define QXL_INTERRUPT_IO_CMD (1 << 2)
+#define QXL_INTERRUPT_ERROR  (1 << 3)
 
 /* qxl-1 compat: append only */
 typedef struct SPICE_ATTR_PACKED QXLRam {
commit fbf2cfb145783dd77df6fbb7056269e7756e8eb9
Author: Alon Levy <alevy at redhat.com>
Date:   Sun May 22 14:52:11 2011 +0300

    add QXL_IO_FLUSH_{SURFACES,RELEASE} for sleep (S3) support
    
    related RHBZ: 688883
    
    Guest initiated sleep looks like this:
    
     Guest:
      (0) stop putting new commands into the rings
      (1) QXL_IO_FLUSH_SURFACES
          qxl calls flush_surfaces(), spice-server flushes command rings and
          renders all surfaces, thereby flushing state to device memory.
      (2) QXL_IO_DESTROY_ALL_SURFACES
          zap surfaces
      (3) QXL_IO_FLUSH_RELEASE
          push release queue head into the release ring, so the guest
          will see it and can release everything.
      (4) tell acpi to reset
     Qemu:
      (5) qxl_reset_handler
     Guest:
      (6) sends surface create commands
    
    The QXL_IO_FLUSH_SURFACES is an optimization, to reduce vmexits. It is used to
     flush both command rings and update all surfaces at once (equivalent to
     UPDATE_AREA X NUM_ACTIVE_SURFACES)
    
     destroy all surfaces to release resources but not destroy the guest side surfaces
     get device to flush all server released resources to the release ring (could use multiple
      calls to OOM - but this is not well defined, would need to loop)
     After (1) there will be no memory allocated on the pci bars.

diff --git a/spice/qxl_dev.h b/spice/qxl_dev.h
index 10ecabd..82eb1c8 100644
--- a/spice/qxl_dev.h
+++ b/spice/qxl_dev.h
@@ -87,6 +87,8 @@ enum {
     QXL_IO_DESTROY_PRIMARY_ASYNC,
     QXL_IO_DESTROY_SURFACE_ASYNC,
     QXL_IO_DESTROY_ALL_SURFACES_ASYNC,
+    QXL_IO_FLUSH_SURFACES_ASYNC,
+    QXL_IO_FLUSH_RELEASE,
 
     QXL_IO_RANGE_SIZE
 };
commit 7e30df2a8a9269f8503d6995c9dbfba38f98e974
Author: Gerd Hoffmann <kraxel at redhat.com>
Date:   Wed Jun 22 10:46:18 2011 +0200

    Add async I/O commands.
    
    Add async versions of the I/O commands which do not block and instead
    raise the new QXL_INTERRUPT_IO_CMD when done.
    
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/spice/qxl_dev.h b/spice/qxl_dev.h
index e3e0696..10ecabd 100644
--- a/spice/qxl_dev.h
+++ b/spice/qxl_dev.h
@@ -80,6 +80,13 @@ enum {
     QXL_IO_DESTROY_PRIMARY,
     QXL_IO_DESTROY_SURFACE_WAIT,
     QXL_IO_DESTROY_ALL_SURFACES,
+    /* appended for qxl-3 */
+    QXL_IO_UPDATE_AREA_ASYNC,
+    QXL_IO_MEMSLOT_ADD_ASYNC,
+    QXL_IO_CREATE_PRIMARY_ASYNC,
+    QXL_IO_DESTROY_PRIMARY_ASYNC,
+    QXL_IO_DESTROY_SURFACE_ASYNC,
+    QXL_IO_DESTROY_ALL_SURFACES_ASYNC,
 
     QXL_IO_RANGE_SIZE
 };
@@ -213,6 +220,7 @@ SPICE_RING_DECLARE(QXLReleaseRing, uint64_t, QXL_RELEASE_RING_SIZE);
 
 #define QXL_INTERRUPT_DISPLAY (1 << 0)
 #define QXL_INTERRUPT_CURSOR (1 << 1)
+#define QXL_INTERRUPT_IO_CMD (1 << 2)
 
 /* qxl-1 compat: append only */
 typedef struct SPICE_ATTR_PACKED QXLRam {


More information about the Spice-commits mailing list