Patchwork [v3,1/2] qxl: stop using non revision 4 rom fields for revision < 4

login
register
mail settings
Submitter Alon Levy
Date Jan. 21, 2013, 12:48 p.m.
Message ID <1358772487-12396-1-git-send-email-alevy@redhat.com>
Download mbox | patch
Permalink /patch/214138/
State New
Headers show

Comments

Alon Levy - Jan. 21, 2013, 12:48 p.m.
Signed-off-by: Alon Levy <alevy@redhat.com>
---
 hw/qxl.c     | 11 +++++++++++
 trace-events |  2 ++
 2 files changed, 13 insertions(+)
Alon Levy - Jan. 21, 2013, 1:36 p.m.
Adding Gerd.

> Signed-off-by: Alon Levy <alevy@redhat.com>
> ---
>  hw/qxl.c     | 11 +++++++++++
>  trace-events |  2 ++
>  2 files changed, 13 insertions(+)
> 
> diff --git a/hw/qxl.c b/hw/qxl.c
> index 9dc44b9..0d81816 100644
> --- a/hw/qxl.c
> +++ b/hw/qxl.c
> @@ -945,6 +945,12 @@ static void
> interface_set_client_capabilities(QXLInstance *sin,
>  {
>      PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
>  
> +    if (qxl->revision < 4) {
> +
>        trace_qxl_set_client_capabilities_unsupported_by_revision(qxl->id,
> +
>                                                              qxl->revision);
> +        return;
> +    }
> +
>      if (runstate_check(RUN_STATE_INMIGRATE) ||
>          runstate_check(RUN_STATE_POSTMIGRATE)) {
>          return;
> @@ -979,6 +985,11 @@ static int
> interface_client_monitors_config(QXLInstance *sin,
>      QXLRom *rom = memory_region_get_ram_ptr(&qxl->rom_bar);
>      int i;
>  
> +    if (qxl->revision < 4) {
> +
>        trace_qxl_client_monitors_config_unsupported_by_device(qxl->id,
> +
>                                                               qxl->revision);
> +        return 0;
> +    }
>      /*
>       * Older windows drivers set int_mask to 0 when their ISR is
>       called,
>       * then later set it to ~0. So it doesn't relate to the actual
>       interrupts
> diff --git a/trace-events b/trace-events
> index 7de9106..09091e6 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -1029,8 +1029,10 @@ qxl_send_events_vm_stopped(int qid, uint32_t
> events) "%d %d"
>  qxl_set_guest_bug(int qid) "%d"
>  qxl_interrupt_client_monitors_config(int qid, int num_heads, void
>  *heads) "%d %d %p"
>  qxl_client_monitors_config_unsupported_by_guest(int qid, uint32_t
>  int_mask, void *client_monitors_config) "%d %X %p"
> +qxl_client_monitors_config_unsupported_by_device(int qid, int
> revision) "%d revision=%d"
>  qxl_client_monitors_config_capped(int qid, int requested, int limit)
>  "%d %d %d"
>  qxl_client_monitors_config_crc(int qid, unsigned size, uint32_t
>  crc32) "%d %u %u"
> +qxl_set_client_capabilities_unsupported_by_revision(int qid, int
> revision) "%d revision=%d"
>  
>  # hw/qxl-render.c
>  qxl_render_blit_guest_primary_initialized(void) ""
> --
> 1.8.0.1
> 
> 
>
Gerd Hoffmann - Jan. 21, 2013, 5:15 p.m.
On 01/21/13 14:36, Alon Levy wrote:
> Adding Gerd.
> 
>> Signed-off-by: Alon Levy <alevy@redhat.com>
>> ---
>>  hw/qxl.c     | 11 +++++++++++
>>  trace-events |  2 ++

Picked up the patches.

cheers,
  Gerd
Markus Armbruster - Jan. 22, 2013, 5:15 p.m.
Alon Levy <alevy@redhat.com> writes:

> Signed-off-by: Alon Levy <alevy@redhat.com>

Why do we want to stop supporting capabilities and monitors config with
old revisions?  A brief explanation would be nice to have in the commit
message.

Patch

diff --git a/hw/qxl.c b/hw/qxl.c
index 9dc44b9..0d81816 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -945,6 +945,12 @@  static void interface_set_client_capabilities(QXLInstance *sin,
 {
     PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
 
+    if (qxl->revision < 4) {
+        trace_qxl_set_client_capabilities_unsupported_by_revision(qxl->id,
+                                                              qxl->revision);
+        return;
+    }
+
     if (runstate_check(RUN_STATE_INMIGRATE) ||
         runstate_check(RUN_STATE_POSTMIGRATE)) {
         return;
@@ -979,6 +985,11 @@  static int interface_client_monitors_config(QXLInstance *sin,
     QXLRom *rom = memory_region_get_ram_ptr(&qxl->rom_bar);
     int i;
 
+    if (qxl->revision < 4) {
+        trace_qxl_client_monitors_config_unsupported_by_device(qxl->id,
+                                                               qxl->revision);
+        return 0;
+    }
     /*
      * Older windows drivers set int_mask to 0 when their ISR is called,
      * then later set it to ~0. So it doesn't relate to the actual interrupts
diff --git a/trace-events b/trace-events
index 7de9106..09091e6 100644
--- a/trace-events
+++ b/trace-events
@@ -1029,8 +1029,10 @@  qxl_send_events_vm_stopped(int qid, uint32_t events) "%d %d"
 qxl_set_guest_bug(int qid) "%d"
 qxl_interrupt_client_monitors_config(int qid, int num_heads, void *heads) "%d %d %p"
 qxl_client_monitors_config_unsupported_by_guest(int qid, uint32_t int_mask, void *client_monitors_config) "%d %X %p"
+qxl_client_monitors_config_unsupported_by_device(int qid, int revision) "%d revision=%d"
 qxl_client_monitors_config_capped(int qid, int requested, int limit) "%d %d %d"
 qxl_client_monitors_config_crc(int qid, unsigned size, uint32_t crc32) "%d %u %u"
+qxl_set_client_capabilities_unsupported_by_revision(int qid, int revision) "%d revision=%d"
 
 # hw/qxl-render.c
 qxl_render_blit_guest_primary_initialized(void) ""