mbox

[PULL] spice: async i/o for qxl

Message ID 1312367866-27508-1-git-send-email-kraxel@redhat.com
State New
Headers show

Pull-request

git://anongit.freedesktop.org/spice/qemu spice.v40

Message

Gerd Hoffmann Aug. 3, 2011, 10:37 a.m. UTC
Hi,

This spice/qxl pull fixes (for the most part) a design flaw in the qxl
device interface.

Some write operations to qxl I/O ports are blocking, i.e. they wait
for the spice server finish some work, then return to the guest.
Which adds noticable latencies.  This patch series adds non-blocking
versions of these operations which return without delay, then raise
a IRQ when complete.  The old ops remain functional for backward
compatibility reasons.  A guest driver update is needed to make use
of the new ops and get rid of the latencies.

The series also adds new ops which ask the spice server to process all
outstanding rendering commands.  This will effectively flush all spice
server state to qxl device memory and is needed for S3 support.

While being at extending the guest ABI we also add a error IRQ to the
qxl device.  Long-term plan is to convert all guest-triggerable asserts
in qxl.c into "ignore guest request and raise error IRQ".

All stuff listed above needs a new version of the spice server library,
thats why a bunch of ifdefs is needed so qxl continues to work with
older spice versions.  The plan is to raise the minimum required spice
server library when it is in widespread use (in a year or so), then
kill all the ugly #ifdefs.

Finally we raise the pci revision of the qxl device (with new
libspice-server) to signal the guest all the stuff listed above is
available.

please pull,
   Gerd

The following changes since commit 927d721777e73339f73719f36eaf400ab641366c:

  microblaze: Add missing call to qemu_init_vcpu. (2011-07-31 06:40:13 +0200)

are available in the git repository at:
  git://anongit.freedesktop.org/spice/qemu spice.v40

Alon Levy (5):
      qxl: add io_port_to_string
      qxl: make qxl_guest_bug take variable arguments
      qxl: only disallow specific io's in vga mode
      qxl: async io support using new spice api
      qxl: add QXL_IO_FLUSH_{SURFACES,RELEASE} for guest S3&S4 support

Gerd Hoffmann (6):
      spice: add worker wrapper functions.
      spice: add qemu_spice_display_init_common
      spice/qxl: move worker wrappers
      qxl: fix surface tracking & locking
      qxl: error handling fixes and cleanups.
      qxl: bump pci rev

 hw/qxl-render.c    |    4 +-
 hw/qxl.c           |  438 +++++++++++++++++++++++++++++++++++++++++++++-------
 hw/qxl.h           |   34 ++++-
 ui/spice-display.c |   93 ++++++++++--
 ui/spice-display.h |   28 ++++
 5 files changed, 528 insertions(+), 69 deletions(-)

Comments

Anthony Liguori Aug. 4, 2011, 10:43 p.m. UTC | #1
On 08/03/2011 05:37 AM, Gerd Hoffmann wrote:
>    Hi,
>
> This spice/qxl pull fixes (for the most part) a design flaw in the qxl
> device interface.
>
> Some write operations to qxl I/O ports are blocking, i.e. they wait
> for the spice server finish some work, then return to the guest.
> Which adds noticable latencies.  This patch series adds non-blocking
> versions of these operations which return without delay, then raise
> a IRQ when complete.  The old ops remain functional for backward
> compatibility reasons.  A guest driver update is needed to make use
> of the new ops and get rid of the latencies.
>
> The series also adds new ops which ask the spice server to process all
> outstanding rendering commands.  This will effectively flush all spice
> server state to qxl device memory and is needed for S3 support.
>
> While being at extending the guest ABI we also add a error IRQ to the
> qxl device.  Long-term plan is to convert all guest-triggerable asserts
> in qxl.c into "ignore guest request and raise error IRQ".
>
> All stuff listed above needs a new version of the spice server library,
> thats why a bunch of ifdefs is needed so qxl continues to work with
> older spice versions.  The plan is to raise the minimum required spice
> server library when it is in widespread use (in a year or so), then
> kill all the ugly #ifdefs.
>
> Finally we raise the pci revision of the qxl device (with new
> libspice-server) to signal the guest all the stuff listed above is
> available.

Pulled.  Thanks.

Regards,

Anthony Liguori

>
> please pull,
>     Gerd
>
> The following changes since commit 927d721777e73339f73719f36eaf400ab641366c:
>
>    microblaze: Add missing call to qemu_init_vcpu. (2011-07-31 06:40:13 +0200)
>
> are available in the git repository at:
>    git://anongit.freedesktop.org/spice/qemu spice.v40
>
> Alon Levy (5):
>        qxl: add io_port_to_string
>        qxl: make qxl_guest_bug take variable arguments
>        qxl: only disallow specific io's in vga mode
>        qxl: async io support using new spice api
>        qxl: add QXL_IO_FLUSH_{SURFACES,RELEASE} for guest S3&S4 support
>
> Gerd Hoffmann (6):
>        spice: add worker wrapper functions.
>        spice: add qemu_spice_display_init_common
>        spice/qxl: move worker wrappers
>        qxl: fix surface tracking&  locking
>        qxl: error handling fixes and cleanups.
>        qxl: bump pci rev
>
>   hw/qxl-render.c    |    4 +-
>   hw/qxl.c           |  438 +++++++++++++++++++++++++++++++++++++++++++++-------
>   hw/qxl.h           |   34 ++++-
>   ui/spice-display.c |   93 ++++++++++--
>   ui/spice-display.h |   28 ++++
>   5 files changed, 528 insertions(+), 69 deletions(-)
>
>