qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCHv5 09/12] qxl: async io support using new spice a


From: Gerd Hoffmann
Subject: Re: [Qemu-devel] [PATCHv5 09/12] qxl: async io support using new spice api
Date: Fri, 15 Jul 2011 10:12:14 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110617 Red Hat/3.1.11-2.el6_1 Thunderbird/3.1.11

      case QXL_IO_DESTROY_PRIMARY:
          if (val != 0) {
-            qxl_guest_bug(d, "QXL_IO_DESTROY_PRIMARY: val != 0");
-            break;
+            qxl_guest_bug(d, "QXL_IO_DESTROY_PRIMARY (async=%d): val != 0",
+                          async);
+            goto cancel_async;
+        }
+        dprint(d, 1, "QXL_IO_DESTROY_PRIMARY (async=%d) (%s)\n", async,
+               qxl_mode_to_string(d->mode));
+        qxl_destroy_primary(d, async);
+#if SPICE_INTERFACE_QXL_MINOR>= 1
+        if (d->mode == QXL_MODE_UNDEFINED&&  async == QXL_ASYNC) {
+            dprint(d, 1, "QXL_IO_DESTROY_PRIMARY_ASYNC in %s, ignored\n",
+                    qxl_mode_to_string(d->mode));
+            qxl_send_events(d, QXL_INTERRUPT_IO_CMD);
+            goto cancel_async;
          }

Hmm?  Why this is needed?

      default:
          fprintf(stderr, "%s: ioport=0x%x, abort()\n", __FUNCTION__, io_port);
          abort();
      }
+    return;
+cancel_async:
+#if SPICE_INTERFACE_QXL_MINOR>= 1
+    if (async) {
+        qemu_mutex_lock(&d->async_lock);
+        d->current_async = QXL_UNDEFINED_IO;
+        qemu_mutex_unlock(&d->async_lock);

Add "qxl_send_events(d, QXL_INTERRUPT_IO_CMD)" here?

  typedef struct PCIQXLDevice {
      PCIDevice          pci;
      SimpleSpiceDisplay ssd;
@@ -30,6 +32,11 @@ typedef struct PCIQXLDevice {
      int32_t            num_memslots;
      int32_t            num_surfaces;

+#if SPICE_INTERFACE_QXL_MINOR>= 1
+    uint32_t           current_async;
+    QemuMutex          async_lock;
+#endif

No need to ifdef this.

cheers,
  Gerd



reply via email to

[Prev in Thread] Current Thread [Next in Thread]