Patchwork Require spice-server 0.12.0 and spice-protocol 0.12.2

login
register
mail settings
Submitter Søren Sandmann
Date Oct. 4, 2012, 5:37 p.m.
Message ID <1349372231-26019-1-git-send-email-sandmann@cs.au.dk>
Download mbox | patch
Permalink /patch/189220/
State New
Headers show

Comments

Søren Sandmann - Oct. 4, 2012, 5:37 p.m.
From: Søren Sandmann Pedersen <ssp@redhat.com>

Set the default PCI revision to QXL_REVISION_STABLE_V12, and remove
the various #ifs on various subversions of spice-server 0.11.x.

Also set the revision to 3 for the PC 1.2 machine for compatibility.

Signed-off-by: Soren Sandmann <ssp@redhat.com>
---
 configure    |   10 ++--------
 hw/pc_piix.c |    8 ++++++++
 hw/qxl.c     |   29 -----------------------------
 hw/qxl.h     |    5 -----
 4 files changed, 10 insertions(+), 42 deletions(-)
Paolo Bonzini - Oct. 5, 2012, 7:25 a.m.
Il 04/10/2012 19:37, Søren Sandmann ha scritto:
> From: Søren Sandmann Pedersen <ssp@redhat.com>
> 
> Set the default PCI revision to QXL_REVISION_STABLE_V12, and remove
> the various #ifs on various subversions of spice-server 0.11.x.
> 
> Also set the revision to 3 for the PC 1.2 machine for compatibility.
> 
> Signed-off-by: Soren Sandmann <ssp@redhat.com>
> ---
>  configure    |   10 ++--------
>  hw/pc_piix.c |    8 ++++++++
>  hw/qxl.c     |   29 -----------------------------
>  hw/qxl.h     |    5 -----
>  4 files changed, 10 insertions(+), 42 deletions(-)
> 
> diff --git a/configure b/configure
> index 8f99b7b..317a6b0 100755
> --- a/configure
> +++ b/configure
> @@ -2685,20 +2685,14 @@ int main(void) { spice_server_new(); return 0; }
>  EOF
>    spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
>    spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
> -  if $pkg_config --atleast-version=0.8.2 spice-server >/dev/null 2>&1 && \
> -     $pkg_config --atleast-version=0.8.1 spice-protocol > /dev/null 2>&1 && \
> +  if $pkg_config --atleast-version=0.12.0 spice-server >/dev/null 2>&1 && \
> +     $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1 && \
>       compile_prog "$spice_cflags" "$spice_libs" ; then
>      spice="yes"
>      libs_softmmu="$libs_softmmu $spice_libs"
>      QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
>      spice_protocol_version=$($pkg_config --modversion spice-protocol)
>      spice_server_version=$($pkg_config --modversion spice-server)
> -    if $pkg_config --atleast-version=0.12.0 spice-protocol >/dev/null 2>&1; then
> -        spice_qxl_io_monitors_config_async="yes"
> -    fi
> -    if $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1; then
> -        spice_qxl_client_monitors_config="yes"
> -    fi
>    else
>      if test "$spice" = "yes" ; then
>        feature_not_found "spice"
> diff --git a/hw/pc_piix.c b/hw/pc_piix.c
> index fd5898f..82364ab 100644
> --- a/hw/pc_piix.c
> +++ b/hw/pc_piix.c
> @@ -371,6 +371,14 @@ static QEMUMachine pc_machine_v1_3 = {
>              .driver   = "ivshmem",\
>              .property = "use64",\
>              .value    = "0",\
> +        },{\
> +            .driver   = "qxl",\
> +            .property = "revision",\
> +            .value    = stringify(3),\
> +        },{\
> +            .driver   = "qxl-vga",\
> +            .property = "revision",\
> +            .value    = stringify(3),\
>          }
>  
>  static QEMUMachine pc_machine_v1_2 = {
> diff --git a/hw/qxl.c b/hw/qxl.c
> index 33169f3..c256bda 100644
> --- a/hw/qxl.c
> +++ b/hw/qxl.c
> @@ -29,11 +29,6 @@
>  
>  #include "qxl.h"
>  
> -#ifndef CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC
> -/* spice-protocol is too old, add missing definitions */
> -#define QXL_IO_MONITORS_CONFIG_ASYNC (QXL_IO_FLUSH_RELEASE + 1)
> -#endif
> -
>  /*
>   * NOTE: SPICE_RING_PROD_ITEM accesses memory on the pci bar and as
>   * such can be changed by the guest, so to avoid a guest trigerrable
> @@ -262,9 +257,6 @@ static void qxl_spice_destroy_surfaces(PCIQXLDevice *qxl, qxl_async_io async)
>  static void qxl_spice_monitors_config_async(PCIQXLDevice *qxl, int replay)
>  {
>      trace_qxl_spice_monitors_config(qxl->id);
> -/* 0x000b01 == 0.11.1 */
> -#if SPICE_SERVER_VERSION >= 0x000b01 && \
> -    defined(CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC)
>      if (replay) {
>          /*
>           * don't use QXL_COOKIE_TYPE_IO:
> @@ -286,10 +278,6 @@ static void qxl_spice_monitors_config_async(PCIQXLDevice *qxl, int replay)
>                  (uintptr_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
>                                            QXL_IO_MONITORS_CONFIG_ASYNC));
>      }
> -#else
> -    fprintf(stderr, "qxl: too old spice-protocol/spice-server for "
> -            "QXL_IO_MONITORS_CONFIG_ASYNC\n");
> -#endif
>  }
>  
>  void qxl_spice_reset_image_cache(PCIQXLDevice *qxl)
> @@ -948,8 +936,6 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
>      }
>  }
>  
> -#if SPICE_SERVER_VERSION >= 0x000b04
> -
>  /* called from spice server thread context only */
>  static void interface_set_client_capabilities(QXLInstance *sin,
>                                                uint8_t client_present,
> @@ -971,11 +957,6 @@ static void interface_set_client_capabilities(QXLInstance *sin,
>      qxl_send_events(qxl, QXL_INTERRUPT_CLIENT);
>  }
>  
> -#endif
> -
> -#if defined(CONFIG_QXL_CLIENT_MONITORS_CONFIG) \
> -    && SPICE_SERVER_VERSION >= 0x000b05
> -
>  static uint32_t qxl_crc32(const uint8_t *p, unsigned len)
>  {
>      /*
> @@ -1044,7 +1025,6 @@ static int interface_client_monitors_config(QXLInstance *sin,
>      qxl_send_events(qxl, QXL_INTERRUPT_CLIENT_MONITORS_CONFIG);
>      return 1;
>  }
> -#endif
>  
>  static const QXLInterface qxl_interface = {
>      .base.type               = SPICE_INTERFACE_QXL,
> @@ -1067,13 +1047,8 @@ static const QXLInterface qxl_interface = {
>      .flush_resources         = interface_flush_resources,
>      .async_complete          = interface_async_complete,
>      .update_area_complete    = interface_update_area_complete,
> -#if SPICE_SERVER_VERSION >= 0x000b04
>      .set_client_capabilities = interface_set_client_capabilities,
> -#endif
> -#if SPICE_SERVER_VERSION >= 0x000b05 && \
> -    defined(CONFIG_QXL_CLIENT_MONITORS_CONFIG)
>      .client_monitors_config = interface_client_monitors_config,
> -#endif
>  };
>  
>  static void qxl_enter_vga_mode(PCIQXLDevice *d)
> @@ -1971,14 +1946,10 @@ static int qxl_init_common(PCIQXLDevice *qxl)
>          pci_device_rev = QXL_REVISION_STABLE_V10;
>          io_size = 32; /* PCI region size must be pow2 */
>          break;
> -/* 0x000b01 == 0.11.1 */
> -#if SPICE_SERVER_VERSION >= 0x000b01 && \
> -        defined(CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC)
>      case 4: /* qxl-4 */
>          pci_device_rev = QXL_REVISION_STABLE_V12;
>          io_size = msb_mask(QXL_IO_RANGE_SIZE * 2 - 1);
>          break;
> -#endif
>      default:
>          error_report("Invalid revision %d for qxl device (max %d)",
>                       qxl->revision, QXL_DEFAULT_REVISION);
> diff --git a/hw/qxl.h b/hw/qxl.h
> index 5553824..e583cfb 100644
> --- a/hw/qxl.h
> +++ b/hw/qxl.h
> @@ -129,12 +129,7 @@ typedef struct PCIQXLDevice {
>          }                                                               \
>      } while (0)
>  
> -#if 0
> -/* spice-server 0.12 is still in development */
>  #define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V12
> -#else
> -#define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V10
> -#endif
>  
>  /* qxl.c */
>  void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id);
> 

Nice cleanup, thanks!

As a followup, there is some confusion between values of the revision
property (1-4) and PCI device revisions (QXL_REVISION_STABLE_Vxy).  They
are the same right now, but this means that you can do one of the following:

1) if they are always going to be the same, eliminate pci_device_rev
from qxl_init_common, just use qxl->revision instead;

2) if they might diverge, change the value of QXL_DEFAULT_REVISION from
QXL_REVISION_STABLE_V12 to 4.

Paolo
Søren Sandmann - Oct. 5, 2012, 2:02 p.m.
Paolo Bonzini <pbonzini@redhat.com> writes:

> Nice cleanup, thanks!
>
> As a followup, there is some confusion between values of the revision
> property (1-4) and PCI device revisions (QXL_REVISION_STABLE_Vxy).  They
> are the same right now, but this means that you can do one of the following:
>
> 1) if they are always going to be the same, eliminate pci_device_rev
> from qxl_init_common, just use qxl->revision instead;
>
> 2) if they might diverge, change the value of QXL_DEFAULT_REVISION from
> QXL_REVISION_STABLE_V12 to 4.

Without knowing why these names are separate, it's difficult to say
whether (1) or (2) is right. In any case, it seems like an orthogonal
issue from the revision bump itself.


Søren
Gerd Hoffmann - Oct. 8, 2012, 7:33 a.m.
On 10/04/12 19:37, Søren Sandmann wrote:
> From: Søren Sandmann Pedersen <ssp@redhat.com>
> 
> Set the default PCI revision to QXL_REVISION_STABLE_V12, and remove
> the various #ifs on various subversions of spice-server 0.11.x.

Simliar patch is in spice-next (see
http://cgit.freedesktop.org/spice/qemu/log/?h=rebase/spice-next) already.

> Also set the revision to 3 for the PC 1.2 machine for compatibility.

The revision change should be a separate patch.  I'll go handle it when
sending out the next spice pull request today or tomorrow.

cheers,
  Gerd

Patch

diff --git a/configure b/configure
index 8f99b7b..317a6b0 100755
--- a/configure
+++ b/configure
@@ -2685,20 +2685,14 @@  int main(void) { spice_server_new(); return 0; }
 EOF
   spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
   spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
-  if $pkg_config --atleast-version=0.8.2 spice-server >/dev/null 2>&1 && \
-     $pkg_config --atleast-version=0.8.1 spice-protocol > /dev/null 2>&1 && \
+  if $pkg_config --atleast-version=0.12.0 spice-server >/dev/null 2>&1 && \
+     $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1 && \
      compile_prog "$spice_cflags" "$spice_libs" ; then
     spice="yes"
     libs_softmmu="$libs_softmmu $spice_libs"
     QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
     spice_protocol_version=$($pkg_config --modversion spice-protocol)
     spice_server_version=$($pkg_config --modversion spice-server)
-    if $pkg_config --atleast-version=0.12.0 spice-protocol >/dev/null 2>&1; then
-        spice_qxl_io_monitors_config_async="yes"
-    fi
-    if $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1; then
-        spice_qxl_client_monitors_config="yes"
-    fi
   else
     if test "$spice" = "yes" ; then
       feature_not_found "spice"
diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index fd5898f..82364ab 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -371,6 +371,14 @@  static QEMUMachine pc_machine_v1_3 = {
             .driver   = "ivshmem",\
             .property = "use64",\
             .value    = "0",\
+        },{\
+            .driver   = "qxl",\
+            .property = "revision",\
+            .value    = stringify(3),\
+        },{\
+            .driver   = "qxl-vga",\
+            .property = "revision",\
+            .value    = stringify(3),\
         }
 
 static QEMUMachine pc_machine_v1_2 = {
diff --git a/hw/qxl.c b/hw/qxl.c
index 33169f3..c256bda 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -29,11 +29,6 @@ 
 
 #include "qxl.h"
 
-#ifndef CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC
-/* spice-protocol is too old, add missing definitions */
-#define QXL_IO_MONITORS_CONFIG_ASYNC (QXL_IO_FLUSH_RELEASE + 1)
-#endif
-
 /*
  * NOTE: SPICE_RING_PROD_ITEM accesses memory on the pci bar and as
  * such can be changed by the guest, so to avoid a guest trigerrable
@@ -262,9 +257,6 @@  static void qxl_spice_destroy_surfaces(PCIQXLDevice *qxl, qxl_async_io async)
 static void qxl_spice_monitors_config_async(PCIQXLDevice *qxl, int replay)
 {
     trace_qxl_spice_monitors_config(qxl->id);
-/* 0x000b01 == 0.11.1 */
-#if SPICE_SERVER_VERSION >= 0x000b01 && \
-    defined(CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC)
     if (replay) {
         /*
          * don't use QXL_COOKIE_TYPE_IO:
@@ -286,10 +278,6 @@  static void qxl_spice_monitors_config_async(PCIQXLDevice *qxl, int replay)
                 (uintptr_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
                                           QXL_IO_MONITORS_CONFIG_ASYNC));
     }
-#else
-    fprintf(stderr, "qxl: too old spice-protocol/spice-server for "
-            "QXL_IO_MONITORS_CONFIG_ASYNC\n");
-#endif
 }
 
 void qxl_spice_reset_image_cache(PCIQXLDevice *qxl)
@@ -948,8 +936,6 @@  static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
     }
 }
 
-#if SPICE_SERVER_VERSION >= 0x000b04
-
 /* called from spice server thread context only */
 static void interface_set_client_capabilities(QXLInstance *sin,
                                               uint8_t client_present,
@@ -971,11 +957,6 @@  static void interface_set_client_capabilities(QXLInstance *sin,
     qxl_send_events(qxl, QXL_INTERRUPT_CLIENT);
 }
 
-#endif
-
-#if defined(CONFIG_QXL_CLIENT_MONITORS_CONFIG) \
-    && SPICE_SERVER_VERSION >= 0x000b05
-
 static uint32_t qxl_crc32(const uint8_t *p, unsigned len)
 {
     /*
@@ -1044,7 +1025,6 @@  static int interface_client_monitors_config(QXLInstance *sin,
     qxl_send_events(qxl, QXL_INTERRUPT_CLIENT_MONITORS_CONFIG);
     return 1;
 }
-#endif
 
 static const QXLInterface qxl_interface = {
     .base.type               = SPICE_INTERFACE_QXL,
@@ -1067,13 +1047,8 @@  static const QXLInterface qxl_interface = {
     .flush_resources         = interface_flush_resources,
     .async_complete          = interface_async_complete,
     .update_area_complete    = interface_update_area_complete,
-#if SPICE_SERVER_VERSION >= 0x000b04
     .set_client_capabilities = interface_set_client_capabilities,
-#endif
-#if SPICE_SERVER_VERSION >= 0x000b05 && \
-    defined(CONFIG_QXL_CLIENT_MONITORS_CONFIG)
     .client_monitors_config = interface_client_monitors_config,
-#endif
 };
 
 static void qxl_enter_vga_mode(PCIQXLDevice *d)
@@ -1971,14 +1946,10 @@  static int qxl_init_common(PCIQXLDevice *qxl)
         pci_device_rev = QXL_REVISION_STABLE_V10;
         io_size = 32; /* PCI region size must be pow2 */
         break;
-/* 0x000b01 == 0.11.1 */
-#if SPICE_SERVER_VERSION >= 0x000b01 && \
-        defined(CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC)
     case 4: /* qxl-4 */
         pci_device_rev = QXL_REVISION_STABLE_V12;
         io_size = msb_mask(QXL_IO_RANGE_SIZE * 2 - 1);
         break;
-#endif
     default:
         error_report("Invalid revision %d for qxl device (max %d)",
                      qxl->revision, QXL_DEFAULT_REVISION);
diff --git a/hw/qxl.h b/hw/qxl.h
index 5553824..e583cfb 100644
--- a/hw/qxl.h
+++ b/hw/qxl.h
@@ -129,12 +129,7 @@  typedef struct PCIQXLDevice {
         }                                                               \
     } while (0)
 
-#if 0
-/* spice-server 0.12 is still in development */
 #define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V12
-#else
-#define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V10
-#endif
 
 /* qxl.c */
 void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id);