Il 04/10/2012 19:37, Søren Sandmann ha scritto: > From: Søren Sandmann Pedersen <s...@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 <s...@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